----------------
*Release date: 2019-11-12*
Project Updates
~~~~~~~~~~~~~~~
- Bottleneck has a new maintainer, Christopher Whelan (``qwhelan`` on 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. (:issue:`211`, :issue:`268`)
- The ``LICENSE`` file 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 (:issue:`247`)
Enhancements
~~~~~~~~~~~~
- Remove ``numpydoc`` package from Bottleneck source distribution
- :func:`bottleneck.slow.reduce.nansum` and :func:`bottleneck.slow.reduce.ss` now longer coerce output to have the same dtype as input
- Test (tox, travis, appveyor) against latest ``numpy`` (in conda)
- Performance benchmarking also available via ``asv``
- ``versioneer`` now used for versioning (:issue:`213`)
- Test suite now uses ``pytest`` as ``nose`` is deprecated (:issue:`222`)
- ``python setup.py build_ext --inplace`` is now incremental (:issue:`224`)
- ``python setup.py clean`` now cleans all artifacts (:issue:`226`)
- Compiler feature support now identified by testing rather than hardcoding (:issue:`227`)
- The ``BN_OPT_3`` macro allows selective use of ``-O3`` at the function level (:issue:`223`)
- Contributors are now automatically cited in the release notes (:issue:`244`)
Performance
~~~~~~~~~~~
- Speed up :func:`bottleneck.reduce.anynan` and :func:`bottleneck.reduce.allnan` by 2x via ``BN_OPT_3`` (:issue:`223`)
- All functions covered by ``asv`` benchmarks
- :func:`bottleneck.nonreduce.replace` speedup of 4x via more explicit typing (:issue:`239`)
- :func:`bottleneck.reduce.median` up to 2x faster for Fortran-ordered arrays (:issue:`248`)
Bug Fixes
~~~~~~~~~
- Documentation fails to build on Python 3 (:issue:`170`)
- :func:`bottleneck.benchmark.bench` crashes on python 3.6.3, numpy 1.13.3 (:issue:`175`)
- :func:`bottleneck.nonreduce_axis.push` raises when :code:`n=None` is explicitly passed (:issue:`178`)
- :func:`bottleneck.reduce.nansum` wrong output when :code:`a = np.ones((2, 2))[..., np.newaxis]`
same issue of other reduce functions (:issue:`183`)
- Silenced FutureWarning from NumPy in the slow version of move functions (:issue:`194`)
- Installing bottleneck onto a system that does not already have Numpy (:issue:`195`)
- Memory leaked when input was not a NumPy array (:issue:`201`)
- Tautological comparison in :func:`bottleneck.move.move_rank` removed (:issue:`207`, :issue:`212`)
Cleanup
~~~~~~~
- The ``ez_setup.py`` module is no longer packaged (:issue:`211`)
- Building documentation is now self-contained in ``make doc`` (:issue:`214`)
- Codebase now ``flake8`` compliant and run on every commit
- Codebase now uses ``black`` for autoformatting (:issue:`253`)
Contributors
~~~~~~~~~~~~
.. contributors:: v1.2.1..v1.3.0