Bottleneck 1.3.0¶
Release date: 2019-11-12
Project Updates¶
Bottleneck has a new maintainer, Christopher Whelan (
@qwhelanon GitHub).Documentation now hosted at https://bottleneck.readthedocs.io
1.3.x will be the last release to support Python 2.7
Bottleneck now supports and is tested against Python 3.7 and 3.8. (#211, #268)
The
LICENSEfile has been restructured to only include the license for the Bottleneck project to aid license audit tools. There has been no change to the licensing of Bottleneck.Licenses for other projects incorporated by Bottleneck are now reproduced in full in separate files in the
LICENSES/directory (eg,LICENSES/NUMPY_LICENSE)All licenses have been updated. Notably, setuptools is now MIT licensed and no longer under the ambiguous dual PSF/Zope license.
Bottleneck now uses PEP 518 for specifying build dependencies, with per Python version specifications (#247)
Enhancements¶
Remove
numpydocpackage from Bottleneck source distributionbottleneck.slow.reduce.nansum()andbottleneck.slow.reduce.ss()now longer coerce output to have the same dtype as inputTest (tox, travis, appveyor) against latest
numpy(in conda)Performance benchmarking also available via
asvversioneernow used for versioning (#213)Test suite now uses
pytestasnoseis deprecated (#222)python setup.py build_ext --inplaceis now incremental (#224)python setup.py cleannow cleans all artifacts (#226)Compiler feature support now identified by testing rather than hardcoding (#227)
The
BN_OPT_3macro allows selective use of-O3at the function level (#223)Contributors are now automatically cited in the release notes (#244)
Performance¶
Speed up
bottleneck.reduce.anynan()andbottleneck.reduce.allnan()by 2x viaBN_OPT_3(#223)All functions covered by
asvbenchmarksbottleneck.nonreduce.replace()speedup of 4x via more explicit typing (#239)bottleneck.reduce.median()up to 2x faster for Fortran-ordered arrays (#248)
Bug Fixes¶
Documentation fails to build on Python 3 (#170)
bottleneck.benchmark.bench()crashes on python 3.6.3, numpy 1.13.3 (#175)bottleneck.nonreduce_axis.push()raises whenn=Noneis explicitly passed (#178)bottleneck.reduce.nansum()wrong output whena = np.ones((2, 2))[..., np.newaxis]same issue of other reduce functions (#183)Silenced FutureWarning from NumPy in the slow version of move functions (#194)
Installing bottleneck onto a system that does not already have Numpy (#195)
Memory leaked when input was not a NumPy array (#201)
Tautological comparison in
bottleneck.move.move_rank()removed (#207, #212)