Skip to content
This repository was archived by the owner on Oct 31, 2024. It is now read-only.

Conversation

@pyup-bot
Copy link

@pyup-bot pyup-bot commented Sep 2, 2019

Update biopython from 1.72 to 1.74.

The bot wasn't able to find a changelog for this release. Got an idea?

Links

Update click-plugins from 1.0.3 to 1.1.1.

Changelog

1.1.1

------------------

- Fixed a version mismatch in `click_plugins/__init__.py`  See `1.1`.

1.1

----------------

- Fix an issue where a broken command's traceback would not be emitted - https://github.com/click-contrib/click-plugins/issues/25
- Bump required click version to `click>=4` - https://github.com/click-contrib/click-plugins/pull/28
- Runs Travis tests for the latest release of click versions 4 -> 7 - https://github.com/click-contrib/click-plugins/pull/28

1.0.4

------------------

- Preemptive fix for a breaking change in Click v7.  CLI command names generated from functions with underscores will have dashes instead of underscores.  See https://github.com/click-contrib/click-plugins/issues/19.
Links

Update click from 6.7 to 7.0.

Changelog

7.0

-----------

Released 2018-09-25

-   Drop support for Python 2.6 and 3.3. (`967`_, `976`_)
-   Wrap ``click.Choice``'s missing message. (`202`_, `1000`_)
-   Add native ZSH autocompletion support. (`323`_, `865`_)
-   Document that ANSI color info isn't parsed from bytearrays in
 Python 2. (`334`_)
-   Document byte-stripping behavior of ``CliRunner``. (`334`_,
 `1010`_)
-   Usage errors now hint at the ``--help`` option. (`393`_, `557`_)
-   Implement streaming pager. (`409`_, `889`_)
-   Extract bar formatting to its own method. (`414`_)
-   Add ``DateTime`` type for converting input in given date time
 formats. (`423`_)
-   ``secho``'s first argument can now be ``None``, like in ``echo``.
 (`424`_)
-   Fixes a ``ZeroDivisionError`` in ``ProgressBar.make_step``, when the
 arg passed to the first call of ``ProgressBar.update`` is 0.
 (`447`_, `1012`_)
-   Show progressbar only if total execution time is visible. (`487`_)
-   Added the ability to hide commands and options from help. (`500`_)
-   Document that options can be ``required=True``. (`514`_, `1022`_)
-   Non-standalone calls to ``Context.exit`` return the exit code,
 rather than calling ``sys.exit``. (`533`_, `667`_, `1098`_)
-   ``click.getchar()`` returns Unicode in Python 3 on Windows,
 consistent with other platforms. (`537`_, `821`_, `822`_,
 `1088`_, `1108`_)
-   Added ``FloatRange`` type. (`538`_, `553`_)
-   Added support for bash completion of ``type=click.Choice`` for
 ``Options`` and ``Arguments``. (`535`_, `681`_)
-   Only allow one positional arg for ``Argument`` parameter
 declaration. (`568`_, `574`_, `1014`_)
-   Add ``case_sensitive=False`` as an option to Choice. (`569`_)
-   ``click.getchar()`` correctly raises ``KeyboardInterrupt`` on "^C"
 and ``EOFError`` on "^D" on Linux. (`583`_, `1115`_)
-   Fix encoding issue with ``click.getchar(echo=True)`` on Linux.
 (`1115`_)
-   ``param_hint`` in errors now derived from param itself. (`598`_,
 `704`_, `709`_)
-   Add a test that ensures that when an argument is formatted into a
 usage error, its metavar is used, not its name. (`612`_)
-   Allow setting ``prog_name`` as extra in ``CliRunner.invoke``.
 (`616`_, `999`_)
-   Help text taken from docstrings truncates at the ``\f`` form feed
 character, useful for hiding Sphinx-style parameter documentation.
 (`629`_, `1091`_)
-   ``launch`` now works properly under Cygwin. (`650`_)
-   Update progress after iteration. (`651`_, `706`_)
-   ``CliRunner.invoke`` now may receive ``args`` as a string
 representing a Unix shell command. (`664`_)
-   Make ``Argument.make_metavar()`` default to type metavar. (`675`_)
-   Add documentation for ``ignore_unknown_options``. (`684`_)
-   Add bright colors support for ``click.style`` and fix the reset
 option for parameters ``fg`` and ``bg``. (`703`_, `809`_)
-   Add ``show_envvar`` for showing environment variables in help.
 (`710`_)
-   Avoid ``BrokenPipeError`` during interpreter shutdown when stdout or
 stderr is a closed pipe. (`712`_, `1106`_)
-   Document customizing option names. (`725`_, `1016`_)
-   Disable ``sys._getframes()`` on Python interpreters that don't
 support it. (`728`_)
-   Fix bug in test runner when calling ``sys.exit`` with ``None``.
 (`739`_)
-   Clarify documentation on command line options. (`741`_, `1003`_)
-   Fix crash on Windows console. (`744`_)
-   Fix bug that caused bash completion to give improper completions on
 chained commands. (`754`_, `774`_)
-   Added support for dynamic bash completion from a user-supplied
 callback. (`755`_)
-   Added support for bash completions containing spaces. (`773`_)
-   Allow autocompletion function to determine whether or not to return
 completions that start with the incomplete argument. (`790`_,
 `806`_)
-   Fix option naming routine to match documentation and be
 deterministic. (`793`_, `794`_)
-   Fix path validation bug. (`795`_, `1020`_)
-   Add test and documentation for ``Option`` naming: functionality.
 (`799`_)
-   Update doc to match arg name for ``path_type``. (`801`_)
-   Raw strings added so correct escaping occurs. (`807`_)
-   Fix 16k character limit of ``click.echo`` on Windows. (`816`_,
 `819`_)
-   Overcome 64k character limit when writing to binary stream on
 Windows 7. (`825`_, `830`_)
-   Add bool conversion for "t" and "f". (`842`_)
-   ``NoSuchOption`` errors take ``ctx`` so that ``--help`` hint gets
 printed in error output. (`860`_)
-   Fixed the behavior of Click error messages with regards to Unicode
 on 2.x and 3.x. Message is now always Unicode and the str and
 Unicode special methods work as you expect on that platform.
 (`862`_)
-   Progress bar now uses stderr by default. (`863`_)
-   Add support for auto-completion documentation. (`866`_, `869`_)
-   Allow ``CliRunner`` to separate stdout and stderr. (`868`_)
-   Fix variable precedence. (`873`_, `874`_)
-   Fix invalid escape sequences. (`877`_)
-   Fix ``ResourceWarning`` that occurs during some tests. (`878`_)
-   When detecting a misconfigured locale, don't fail if the ``locale``
 command fails. (`880`_)
-   Add ``case_sensitive=False`` as an option to ``Choice`` types.
 (`887`_)
-   Force stdout/stderr writable. This works around issues with badly
 patched standard streams like those from Jupyter. (`918`_)
-   Fix completion of subcommand options after last argument (`919`_,
 `930`_)
-   ``_AtomicFile`` now uses the ``realpath`` of the original filename
 so that changing the working directory does not affect it.
 (`920`_)
-   Fix incorrect completions when defaults are present (`925`_,
 `930`_)
-   Add copy option attrs so that custom classes can be re-used.
 (`926`_, `994`_)
-   "x" and "a" file modes now use stdout when file is ``"-"``.
 (`929`_)
-   Fix missing comma in ``__all__`` list. (`935`_)
-   Clarify how parameters are named. (`949`_, `1009`_)
-   Stdout is now automatically set to non blocking. (`954`_)
-   Do not set options twice. (`962`_)
-   Move ``fcntl`` import. (`965`_)
-   Fix Google App Engine ``ImportError``. (`995`_)
-   Better handling of help text for dynamic default option values.
 (`996`_)
-   Fix ``get_winter_size()`` so it correctly returns ``(0,0)``.
 (`997`_)
-   Add test case checking for custom param type. (`1001`_)
-   Allow short width to address cmd formatting. (`1002`_)
-   Add details about Python version support. (`1004`_)
-   Added deprecation flag to commands. (`1005`_)
-   Fixed issues where ``fd`` was undefined. (`1007`_)
-   Fix formatting for short help. (`1008`_)
-   Document how ``auto_envvar_prefix`` works with command groups.
 (`1011`_)
-   Don't add newlines by default for progress bars. (`1013`_)
-   Use Python sorting order for ZSH completions. (`1047`_, `1059`_)
-   Document that parameter names are converted to lowercase by default.
 (`1055`_)
-   Subcommands that are named by the function now automatically have
 the underscore replaced with a dash. If you register a function
 named ``my_command`` it becomes ``my-command`` in the command line
 interface.
-   Hide hidden commands and options from completion. (`1058`_,
 `1061`_)
-   Fix absolute import blocking Click from being vendored into a
 project on Windows. (`1068`_, `1069`_)
-   Fix issue where a lowercase ``auto_envvar_prefix`` would not be
 converted to uppercase. (`1105`_)

.. _202: https://github.com/pallets/click/issues/202
.. _323: https://github.com/pallets/click/issues/323
.. _334: https://github.com/pallets/click/issues/334
.. _393: https://github.com/pallets/click/issues/393
.. _409: https://github.com/pallets/click/issues/409
.. _414: https://github.com/pallets/click/pull/414
.. _423: https://github.com/pallets/click/pull/423
.. _424: https://github.com/pallets/click/pull/424
.. _447: https://github.com/pallets/click/issues/447
.. _487: https://github.com/pallets/click/pull/487
.. _500: https://github.com/pallets/click/pull/500
.. _514: https://github.com/pallets/click/issues/514
.. _533: https://github.com/pallets/click/pull/533
.. _535: https://github.com/pallets/click/issues/535
.. _537: https://github.com/pallets/click/issues/537
.. _538: https://github.com/pallets/click/pull/538
.. _553: https://github.com/pallets/click/pull/553
.. _557: https://github.com/pallets/click/pull/557
.. _568: https://github.com/pallets/click/issues/568
.. _569: https://github.com/pallets/click/issues/569
.. _574: https://github.com/pallets/click/issues/574
.. _583: https://github.com/pallets/click/issues/583
.. _598: https://github.com/pallets/click/issues/598
.. _612: https://github.com/pallets/click/pull/612
.. _616: https://github.com/pallets/click/issues/616
.. _629: https://github.com/pallets/click/pull/629
.. _650: https://github.com/pallets/click/pull/650
.. _651: https://github.com/pallets/click/issues/651
.. _664: https://github.com/pallets/click/pull/664
.. _667: https://github.com/pallets/click/issues/667
.. _675: https://github.com/pallets/click/pull/675
.. _681: https://github.com/pallets/click/pull/681
.. _684: https://github.com/pallets/click/pull/684
.. _703: https://github.com/pallets/click/issues/703
.. _704: https://github.com/pallets/click/issues/704
.. _706: https://github.com/pallets/click/pull/706
.. _709: https://github.com/pallets/click/pull/709
.. _710: https://github.com/pallets/click/pull/710
.. _712: https://github.com/pallets/click/pull/712
.. _719: https://github.com/pallets/click/issues/719
.. _725: https://github.com/pallets/click/issues/725
.. _728: https://github.com/pallets/click/pull/728
.. _739: https://github.com/pallets/click/pull/739
.. _741: https://github.com/pallets/click/issues/741
.. _744: https://github.com/pallets/click/issues/744
.. _754: https://github.com/pallets/click/issues/754
.. _755: https://github.com/pallets/click/pull/755
.. _773: https://github.com/pallets/click/pull/773
.. _774: https://github.com/pallets/click/pull/774
.. _790: https://github.com/pallets/click/issues/790
.. _793: https://github.com/pallets/click/issues/793
.. _794: https://github.com/pallets/click/pull/794
.. _795: https://github.com/pallets/click/issues/795
.. _799: https://github.com/pallets/click/pull/799
.. _801: https://github.com/pallets/click/pull/801
.. _806: https://github.com/pallets/click/pull/806
.. _807: https://github.com/pallets/click/pull/807
.. _809: https://github.com/pallets/click/pull/809
.. _816: https://github.com/pallets/click/pull/816
.. _819: https://github.com/pallets/click/pull/819
.. _821: https://github.com/pallets/click/issues/821
.. _822: https://github.com/pallets/click/issues/822
.. _825: https://github.com/pallets/click/issues/825
.. _830: https://github.com/pallets/click/pull/830
.. _842: https://github.com/pallets/click/pull/842
.. _860: https://github.com/pallets/click/issues/860
.. _862: https://github.com/pallets/click/issues/862
.. _863: https://github.com/pallets/click/pull/863
.. _865: https://github.com/pallets/click/pull/865
.. _866: https://github.com/pallets/click/issues/866
.. _868: https://github.com/pallets/click/pull/868
.. _869: https://github.com/pallets/click/pull/869
.. _873: https://github.com/pallets/click/issues/873
.. _874: https://github.com/pallets/click/pull/874
.. _877: https://github.com/pallets/click/pull/877
.. _878: https://github.com/pallets/click/pull/878
.. _880: https://github.com/pallets/click/pull/880
.. _883: https://github.com/pallets/click/pull/883
.. _887: https://github.com/pallets/click/pull/887
.. _889: https://github.com/pallets/click/pull/889
.. _918: https://github.com/pallets/click/pull/918
.. _919: https://github.com/pallets/click/issues/919
.. _920: https://github.com/pallets/click/pull/920
.. _925: https://github.com/pallets/click/issues/925
.. _926: https://github.com/pallets/click/issues/926
.. _929: https://github.com/pallets/click/pull/929
.. _930: https://github.com/pallets/click/pull/930
.. _935: https://github.com/pallets/click/pull/935
.. _949: https://github.com/pallets/click/issues/949
.. _954: https://github.com/pallets/click/pull/954
.. _962: https://github.com/pallets/click/pull/962
.. _965: https://github.com/pallets/click/pull/965
.. _967: https://github.com/pallets/click/pull/967
.. _976: https://github.com/pallets/click/pull/976
.. _990: https://github.com/pallets/click/pull/990
.. _991: https://github.com/pallets/click/pull/991
.. _993: https://github.com/pallets/click/pull/993
.. _994: https://github.com/pallets/click/pull/994
.. _995: https://github.com/pallets/click/pull/995
.. _996: https://github.com/pallets/click/pull/996
.. _997: https://github.com/pallets/click/pull/997
.. _999: https://github.com/pallets/click/pull/999
.. _1000: https://github.com/pallets/click/pull/1000
.. _1001: https://github.com/pallets/click/pull/1001
.. _1002: https://github.com/pallets/click/pull/1002
.. _1003: https://github.com/pallets/click/pull/1003
.. _1004: https://github.com/pallets/click/pull/1004
.. _1005: https://github.com/pallets/click/pull/1005
.. _1007: https://github.com/pallets/click/pull/1007
.. _1008: https://github.com/pallets/click/pull/1008
.. _1009: https://github.com/pallets/click/pull/1009
.. _1010: https://github.com/pallets/click/pull/1010
.. _1011: https://github.com/pallets/click/pull/1011
.. _1012: https://github.com/pallets/click/pull/1012
.. _1013: https://github.com/pallets/click/pull/1013
.. _1014: https://github.com/pallets/click/pull/1014
.. _1016: https://github.com/pallets/click/pull/1016
.. _1020: https://github.com/pallets/click/pull/1020
.. _1022: https://github.com/pallets/click/pull/1022
.. _1027: https://github.com/pallets/click/pull/1027
.. _1047: https://github.com/pallets/click/pull/1047
.. _1055: https://github.com/pallets/click/pull/1055
.. _1058: https://github.com/pallets/click/pull/1058
.. _1059: https://github.com/pallets/click/pull/1059
.. _1061: https://github.com/pallets/click/pull/1061
.. _1068: https://github.com/pallets/click/issues/1068
.. _1069: https://github.com/pallets/click/pull/1069
.. _1088: https://github.com/pallets/click/issues/1088
.. _1091: https://github.com/pallets/click/pull/1091
.. _1098: https://github.com/pallets/click/pull/1098
.. _1105: https://github.com/pallets/click/pull/1105
.. _1106: https://github.com/pallets/click/pull/1106
.. _1108: https://github.com/pallets/click/pull/1108
.. _1115: https://github.com/pallets/click/pull/1115
Links

Update coverage from 4.5.1 to 4.5.4.

Changelog

4.5.4

---------------------------

- Multiprocessing support in Python 3.8 was broken, but is now fixed.  Closes
`issue 828`_.

.. _issue 828: https://github.com/nedbat/coveragepy/issues/828


.. _changes_453:

4.5.3

---------------------------

- Only packaging metadata changes.


.. _changes_452:

4.5.2

----------------------------

- Namespace packages are supported on Python 3.7, where they used to cause
TypeErrors about path being None. Fixes `issue 700`_.

- Python 3.8 (as of today!) passes all tests.  Fixes `issue 707`_ and
`issue 714`_.

- Development moved from `Bitbucket`_ to `GitHub`_.

.. _issue 700: https://github.com/nedbat/coveragepy/issues/700
.. _issue 707: https://github.com/nedbat/coveragepy/issues/707
.. _issue 714: https://github.com/nedbat/coveragepy/issues/714

.. _Bitbucket: https://bitbucket.org/ned/coveragepy
.. _GitHub: https://github.com/nedbat/coveragepy


.. _changes_451:
Links

Update kiwisolver from 1.0.1 to 1.1.0.

The bot wasn't able to find a changelog for this release. Got an idea?

Links

Update matplotlib from 3.0.0 to 3.1.1.

Changelog

3.1.1

The first bug-fix release of the 3.1 series

* Locator.nonsingular return order API change

Lots of backports of various bug fixes.
Links

Update numpy from 1.15.2 to 1.17.1.

Changelog

1.17.1

==========================

This release contains a number of fixes for bugs reported against NumPy 1.17.0
along with a few documentation and build improvements.  The Python versions
supported are 3.5-3.7, note that Python 2.7 has been dropped.  Python 3.8b3
should work with the released source packages, but there are no future
guarantees.

Downstream developers should use Cython >= 0.29.13 for Python 3.8 support and
OpenBLAS >= 3.7 to avoid problems on the Skylake architecture. The NumPy wheels
on PyPI are built from the OpenBLAS development branch in order to avoid those
problems.


Contributors
============

A total of 17 people contributed to this release.  People with a "+" by their
names contributed a patch for the first time.

* Alexander Jung +
* Allan Haldane
* Charles Harris
* Eric Wieser
* Giuseppe Cuccu +
* Hiroyuki V. Yamazaki
* Jérémie du Boisberranger
* Kmol Yuan +
* Matti Picus
* Max Bolingbroke +
* Maxwell Aladago +
* Oleksandr Pavlyk
* Peter Andreas Entschev
* Sergei Lebedev
* Seth Troisi +
* Vladimir Pershin +
* Warren Weckesser


Pull requests merged
====================

A total of 24 pull requests were merged for this release.

* `14156 <https://github.com/numpy/numpy/pull/14156>`__: TST: Allow fuss in testing strided/non-strided exp/log loops
* `14157 <https://github.com/numpy/numpy/pull/14157>`__: BUG: avx2_scalef_ps must be static
* `14158 <https://github.com/numpy/numpy/pull/14158>`__: BUG: Remove stray print that causes a SystemError on python 3.7.
* `14159 <https://github.com/numpy/numpy/pull/14159>`__: BUG: Fix DeprecationWarning in python 3.8.
* `14160 <https://github.com/numpy/numpy/pull/14160>`__: BLD: Add missing gcd/lcm definitions to npy_math.h
* `14161 <https://github.com/numpy/numpy/pull/14161>`__: DOC, BUILD: cleanups and fix (again) 'build dist'
* `14166 <https://github.com/numpy/numpy/pull/14166>`__: TST: Add 3.8-dev to travisCI testing.
* `14194 <https://github.com/numpy/numpy/pull/14194>`__: BUG: Remove the broken clip wrapper (Backport)
* `14198 <https://github.com/numpy/numpy/pull/14198>`__: DOC: Fix hermitian argument docs in svd.
* `14199 <https://github.com/numpy/numpy/pull/14199>`__: MAINT: Workaround for Intel compiler bug leading to failing test
* `14200 <https://github.com/numpy/numpy/pull/14200>`__: TST: Clean up of test_pocketfft.py
* `14201 <https://github.com/numpy/numpy/pull/14201>`__: BUG: Make advanced indexing result on read-only subclass writeable...
* `14236 <https://github.com/numpy/numpy/pull/14236>`__: BUG: Fixed default BitGenerator name
* `14237 <https://github.com/numpy/numpy/pull/14237>`__: ENH: add c-imported modules for freeze analysis in np.random
* `14296 <https://github.com/numpy/numpy/pull/14296>`__: TST: Pin pytest version to 5.0.1
* `14301 <https://github.com/numpy/numpy/pull/14301>`__: BUG: Fix leak in the f2py-generated module init and `PyMem_Del`...
* `14302 <https://github.com/numpy/numpy/pull/14302>`__: BUG: Fix formatting error in exception message
* `14307 <https://github.com/numpy/numpy/pull/14307>`__: MAINT: random: Match type of SeedSequence.pool_size to DEFAULT_POOL_SIZE.
* `14308 <https://github.com/numpy/numpy/pull/14308>`__: BUG: Fix numpy.random bug in platform detection
* `14309 <https://github.com/numpy/numpy/pull/14309>`__: ENH: Enable huge pages in all Linux builds
* `14330 <https://github.com/numpy/numpy/pull/14330>`__: BUG: Fix segfault in `random.permutation(x)` when x is a string.
* `14338 <https://github.com/numpy/numpy/pull/14338>`__: BUG: don't fail when lexsorting some empty arrays (14228)
* `14339 <https://github.com/numpy/numpy/pull/14339>`__: BUG: Fix misuse of .names and .fields in various places (backport...
* `14345 <https://github.com/numpy/numpy/pull/14345>`__: BUG: fix behavior of structured_to_unstructured on non-trivial...
* `14350 <https://github.com/numpy/numpy/pull/14350>`__: REL: Prepare 1.17.1 release


==========================

1.17.0

==========================

This NumPy release contains a number of new features that should substantially
improve its performance and usefulness, see Highlights below for a summary. The
Python versions supported are 3.5-3.7, note that Python 2.7 has been dropped.
Python 3.8b2 should work with the released source packages, but there are no
future guarantees.

Downstream developers should use Cython >= 0.29.11 for Python 3.8 support and
OpenBLAS >= 3.7 (not currently out) to avoid problems on the Skylake
architecture. The NumPy wheels on PyPI are built from the OpenBLAS development
branch in order to avoid those problems.


Highlights
==========

* A new extensible `random` module along with four selectable `random number
generators <random.BitGenerators>` and improved seeding designed for use in parallel
processes has been added. The currently available bit generators are `MT19937
<random.mt19937.MT19937>`, `PCG64 <random.pcg64.PCG64>`, `Philox
<random.philox.Philox>`, and `SFC64 <random.sfc64.SFC64>`. See below under
New Features.

* NumPy's `FFT <fft>` implementation was changed from fftpack to pocketfft,
resulting in faster, more accurate transforms and better handling of datasets
of prime length. See below under Improvements.

* New radix sort and timsort sorting methods. It is currently not possible to
choose which will be used. They are hardwired to the datatype and used
when either ``stable`` or ``mergesort`` is passed as the method. See below
under Improvements.

* Overriding numpy functions is now possible by default,
see ``__array_function__`` below.


New functions
=============

* `numpy.errstate` is now also a function decorator


Deprecations
============

`numpy.polynomial` functions warn when passed ``float`` in place of ``int``
---------------------------------------------------------------------------
Previously functions in this module would accept ``float`` values provided they
were integral (``1.0``, ``2.0``, etc). For consistency with the rest of numpy,
doing so is now deprecated, and in future will raise a ``TypeError``.

Similarly, passing a float like ``0.5`` in place of an integer will now raise a
``TypeError`` instead of the previous ``ValueError``.

Deprecate `numpy.distutils.exec_command` and ``temp_file_name``
---------------------------------------------------------------
The internal use of these functions has been refactored and there are better
alternatives. Replace ``exec_command`` with `subprocess.Popen` and
`temp_file_name <numpy.distutils.exec_command>` with `tempfile.mkstemp`.

Writeable flag of C-API wrapped arrays
--------------------------------------
When an array is created from the C-API to wrap a pointer to data, the only
indication we have of the read-write nature of the data is the ``writeable``
flag set during creation. It is dangerous to force the flag to writeable.
In the future it will not be possible to switch the writeable flag to ``True``
from python.
This deprecation should not affect many users since arrays created in such
a manner are very rare in practice and only available through the NumPy C-API.

`numpy.nonzero` should no longer be called on 0d arrays
-------------------------------------------------------
The behavior of `numpy.nonzero` on 0d arrays was surprising, making uses of it
almost always incorrect. If the old behavior was intended, it can be preserved
without a warning by using ``nonzero(atleast_1d(arr))`` instead of
``nonzero(arr)``.  In a future release, it is most likely this will raise a
``ValueError``.

Writing to the result of `numpy.broadcast_arrays` will warn
-----------------------------------------------------------

Commonly `numpy.broadcast_arrays` returns a writeable array with internal
overlap, making it unsafe to write to. A future version will set the
``writeable`` flag to ``False``, and require users to manually set it to
``True`` if they are sure that is what they want to do. Now writing to it will
emit a deprecation warning with instructions to set the ``writeable`` flag
``True``.  Note that if one were to inspect the flag before setting it, one
would find it would already be ``True``.  Explicitly setting it, though, as one
will need to do in future versions, clears an internal flag that is used to
produce the deprecation warning. To help alleviate confusion, an additional
`FutureWarning` will be emitted when accessing the ``writeable`` flag state to
clarify the contradiction.

Note that for the C-side buffer protocol such an array will return a
readonly buffer immediately unless a writable buffer is requested. If
a writeable buffer is requested a warning will be given. When using
cython, the ``const`` qualifier should be used with such arrays to avoid
the warning (e.g. ``cdef const double[::1] view``).


Future Changes
==============

Shape-1 fields in dtypes won't be collapsed to scalars in a future version
--------------------------------------------------------------------------

Currently, a field specified as ``[(name, dtype, 1)]`` or ``"1type"`` is
interpreted as a scalar field (i.e., the same as ``[(name, dtype)]`` or
``[(name, dtype, ()]``). This now raises a FutureWarning; in a future version,
it will be interpreted as a shape-(1,) field, i.e. the same as ``[(name,
dtype, (1,))]`` or ``"(1,)type"`` (consistently with ``[(name, dtype, n)]``
/ ``"ntype"`` with ``n>1``, which is already equivalent to ``[(name, dtype,
(n,)]`` / ``"(n,)type"``).


Compatibility notes
===================

``float16`` subnormal rounding
------------------------------
Casting from a different floating point precision to ``float16`` used incorrect
rounding in some edge cases. This means in rare cases, subnormal results will
now be rounded up instead of down, changing the last bit (ULP) of the result.

Signed zero when using divmod
-----------------------------
Starting in version `1.12.0`, numpy incorrectly returned a negatively signed zero
when using the ``divmod`` and ``floor_divide`` functions when the result was
zero. For example::

>>> np.zeros(10)//1
array([-0., -0., -0., -0., -0., -0., -0., -0., -0., -0.])

With this release, the result is correctly returned as a positively signed
zero::

>>> np.zeros(10)//1
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

``MaskedArray.mask`` now returns a view of the mask, not the mask itself
------------------------------------------------------------------------
Returning the mask itself was unsafe, as it could be reshaped in place which
would violate expectations of the masked array code. The behavior of `mask
<ma.MaskedArray.mask>` is now consistent with `data <ma.MaskedArray.data>`,
which also returns a view.

The underlying mask can still be accessed with ``._mask`` if it is needed.
Tests that contain ``assert x.mask is not y.mask`` or similar will need to be
updated.

Do not lookup ``__buffer__`` attribute in `numpy.frombuffer`
------------------------------------------------------------
Looking up ``__buffer__`` attribute in `numpy.frombuffer` was undocumented and
non-functional. This code was removed. If needed, use
``frombuffer(memoryview(obj), ...)`` instead.

``out`` is buffered for memory overlaps in `take`, `choose`, `put`
------------------------------------------------------------------
If the out argument to these functions is provided and has memory overlap with
the other arguments, it is now buffered to avoid order-dependent behavior.

Unpickling while loading requires explicit opt-in
-------------------------------------------------
The functions `load`, and ``lib.format.read_array`` take an
``allow_pickle`` keyword which now defaults to ``False`` in response to
`CVE-2019-6446 <https://nvd.nist.gov/vuln/detail/CVE-2019-6446>`_.


.. currentmodule:: numpy.random.mtrand

Potential changes to the random stream in old random module
-----------------------------------------------------------
Due to bugs in the application of ``log`` to random floating point numbers,
the stream may change when sampling from `~RandomState.beta`, `~RandomState.binomial`,
`~RandomState.laplace`, `~RandomState.logistic`, `~RandomState.logseries` or
`~RandomState.multinomial` if a ``0`` is generated in the underlying `MT19937
<~numpy.random.mt11937.MT19937>` random stream.  There is a ``1`` in
:math:`10^{53}` chance of this occurring, so the probability that the stream
changes for any given seed is extremely small. If a ``0`` is encountered in the
underlying generator, then the incorrect value produced (either `numpy.inf` or
`numpy.nan`) is now dropped.

.. currentmodule:: numpy

`i0` now always returns a result with the same shape as the input
-----------------------------------------------------------------
Previously, the output was squeezed, such that, e.g., input with just a single
element would lead to an array scalar being returned, and inputs with shapes
such as ``(10, 1)`` would yield results that would not broadcast against the
input.

Note that we generally recommend the SciPy implementation over the numpy one:
it is a proper ufunc written in C, and more than an order of magnitude faster.

`can_cast` no longer assumes all unsafe casting is allowed
----------------------------------------------------------
Previously, `can_cast` returned `True` for almost all inputs for
``casting='unsafe'``, even for cases where casting was not possible, such as
from a structured dtype to a regular one.  This has been fixed, making it
more consistent with actual casting using, e.g., the `.astype <ndarray.astype>`
method.

``ndarray.flags.writeable`` can be switched to true slightly more often
-----------------------------------------------------------------------

In rare cases, it was not possible to switch an array from not writeable
to writeable, although a base array is writeable. This can happen if an
intermediate `ndarray.base` object is writeable. Previously, only the deepest
base object was considered for this decision. However, in rare cases this
object does not have the necessary information. In that case switching to
writeable was never allowed. This has now been fixed.


C API changes
=============

dimension or stride input arguments are now passed by ``npy_intp const*``
-------------------------------------------------------------------------
Previously these function arguments were declared as the more strict
``npy_intp*``, which prevented the caller passing constant data.
This change is backwards compatible, but now allows code like::

 npy_intp const fixed_dims[] = {1, 2, 3};
 // no longer complains that the const-qualifier is discarded
 npy_intp size = PyArray_MultiplyList(fixed_dims, 3);


New Features
============

.. currentmodule:: numpy.random

New extensible `numpy.random` module with selectable random number generators
-----------------------------------------------------------------------------
A new extensible `numpy.random` module along with four selectable random number
generators and improved seeding designed for use in parallel processes has been
added. The currently available :ref:`Bit Generators <bit_generator>` are
`~mt19937.MT19937`, `~pcg64.PCG64`, `~philox.Philox`, and `~sfc64.SFC64`.
``PCG64`` is the new default while ``MT19937`` is retained for backwards
compatibility. Note that the legacy random module is unchanged and is now
frozen, your current results will not change. More information is available in
the :ref:`API change description <new-or-different>` and in the `top-level view
<numpy.random>` documentation.

.. currentmodule:: numpy

libFLAME
--------
Support for building NumPy with the libFLAME linear algebra package as the LAPACK,
implementation, see
`libFLAME <https://www.cs.utexas.edu/~flame/web/libFLAME.html>`_ for details.

User-defined BLAS detection order
---------------------------------
`distutils` now uses an environment variable, comma-separated and case
insensitive, to determine the detection order for BLAS libraries.
By default ``NPY_BLAS_ORDER=mkl,blis,openblas,atlas,accelerate,blas``.
However, to force the use of OpenBLAS simply do::

NPY_BLAS_ORDER=openblas python setup.py build

which forces the use of OpenBLAS.
This may be helpful for users which have a MKL installation but wishes to try
out different implementations.

User-defined LAPACK detection order
-----------------------------------
``numpy.distutils`` now uses an environment variable, comma-separated and case
insensitive, to determine the detection order for LAPACK libraries.
By default ``NPY_LAPACK_ORDER=mkl,openblas,flame,atlas,accelerate,lapack``.
However, to force the use of OpenBLAS simply do::

NPY_LAPACK_ORDER=openblas python setup.py build

which forces the use of OpenBLAS.
This may be helpful for users which have a MKL installation but wishes to try
out different implementations.

`ufunc.reduce` and related functions now accept a ``where`` mask
----------------------------------------------------------------
`ufunc.reduce`, `sum`, `prod`, `min`, `max` all
now accept a ``where`` keyword argument, which can be used to tell which
elements to include in the reduction.  For reductions that do not have an
identity, it is necessary to also pass in an initial value (e.g.,
``initial=np.inf`` for `min`).  For instance, the equivalent of
`nansum` would be ``np.sum(a, where=~np.isnan(a))``.

Timsort and radix sort have replaced mergesort for stable sorting
-----------------------------------------------------------------
Both radix sort and timsort have been implemented and are now used in place of
mergesort. Due to the need to maintain backward compatibility, the sorting
``kind`` options ``"stable"`` and ``"mergesort"`` have been made aliases of
each other with the actual sort implementation depending on the array type.
Radix sort is used for small integer types of 16 bits or less and timsort for
the remaining types.  Timsort features improved performace on data containing
already or nearly sorted data and performs like mergesort on random data and
requires :math:`O(n/2)` working space.  Details of the timsort algorithm can be
found at `CPython listsort.txt
<https://github.com/python/cpython/blob/3.7/Objects/listsort.txt>`_.

`packbits` and `unpackbits` accept an ``order`` keyword
-------------------------------------------------------
The ``order`` keyword defaults to ``big``, and will order the **bits**
accordingly. For ``'order=big'`` 3 will become ``[0, 0, 0, 0, 0, 0, 1, 1]``,
and ``[1, 1, 0, 0, 0, 0, 0, 0]`` for ``order=little``

`unpackbits` now accepts a ``count`` parameter
----------------------------------------------
``count`` allows subsetting the number of bits that will be unpacked up-front,
rather than reshaping and subsetting later, making the `packbits` operation
invertible, and the unpacking less wasteful. Counts larger than the number of
available bits add zero padding. Negative counts trim bits off the end instead
of counting from the beginning. None counts implement the existing behavior of
unpacking everything.

`linalg.svd` and `linalg.pinv` can be faster on hermitian inputs
----------------------------------------------------------------
These functions now accept a ``hermitian`` argument, matching the one added
to `linalg.matrix_rank` in 1.14.0.

divmod operation is now supported for two ``timedelta64`` operands
------------------------------------------------------------------
The divmod operator now handles two ``timedelta64`` operands, with
type signature ``mm->qm``.

`fromfile` now takes an ``offset`` argument
-------------------------------------------
This function now takes an ``offset`` keyword argument for binary files,
which specifics the offset (in bytes) from the file's current position.
Defaults to ``0``.

New mode "empty" for `pad`
--------------------------
This mode pads an array to a desired shape without initializing the new
entries.

`empty_like` and related functions now accept a ``shape`` argument
------------------------------------------------------------------
`empty_like`, `full_like`, `ones_like` and `zeros_like` now accept a ``shape``
keyword argument, which can be used to create a new array
as the prototype, overriding its shape as well. This is particularly useful
when combined with the ``__array_function__`` protocol, allowing the creation
of new arbitrary-shape arrays from NumPy-like libraries when such an array
is used as the prototype.

Floating point scalars implement ``as_integer_ratio`` to match the builtin float
--------------------------------------------------------------------------------
This returns a (numerator, denominator) pair, which can be used to construct a
`fractions.Fraction`.

Structured ``dtype`` objects can be indexed with multiple fields names
----------------------------------------------------------------------
``arr.dtype[['a', 'b']]`` now returns a dtype that is equivalent to
``arr[['a', 'b']].dtype``, for consistency with
``arr.dtype['a'] == arr['a'].dtype``.

Like the dtype of structured arrays indexed with a list of fields, this dtype
has the same ``itemsize`` as the original, but only keeps a subset of the fields.

This means that ``arr[['a', 'b']]`` and ``arr.view(arr.dtype[['a', 'b']])`` are
equivalent.

``.npy`` files support unicode field names
------------------------------------------
A new format version of 3.0 has been introduced, which enables structured types
with non-latin1 field names. This is used automatically when needed.


Improvements
============

Array comparison assertions include maximum differences
-------------------------------------------------------
Error messages from array comparison tests such as
`testing.assert_allclose` now include "max absolute difference" and
"max relative difference," in addition to the previous "mismatch" percentage.
This information makes it easier to update absolute and relative error
tolerances.

Replacement of the fftpack based `fft` module by the pocketfft library
----------------------------------------------------------------------
Both implementations have the same ancestor (Fortran77 FFTPACK by Paul N.
Swarztrauber), but pocketfft contains additional modifications which improve
both accuracy and performance in some circumstances. For FFT lengths containing
large prime factors, pocketfft uses Bluestein's algorithm, which maintains
:math:`O(N log N)` run time complexity instead of deteriorating towards
:math:`O(N*N)` for prime lengths. Also, accuracy for real valued FFTs with near
prime lengths has improved and is on par with complex valued FFTs.

Further improvements to ``ctypes`` support in `numpy.ctypeslib`
---------------------------------------------------------------
A new `numpy.ctypeslib.as_ctypes_type` function has been added, which can be
used to converts a `dtype` into a best-guess `ctypes` type. Thanks to this
new function, `numpy.ctypeslib.as_ctypes` now supports a much wider range of
array types, including structures, booleans, and integers of non-native
endianness.

`numpy.errstate` is now also a function decorator
-------------------------------------------------
Currently, if you have a function like::

 def foo():
     pass

and you want to wrap the whole thing in `errstate`, you have to rewrite it
like so::

 def foo():
     with np.errstate(...):
         pass

but with this change, you can do::

 np.errstate(...)
 def foo():
     pass

thereby saving a level of indentation

`numpy.exp` and `numpy.log` speed up for float32 implementation
---------------------------------------------------------------
float32 implementation of `exp` and `log` now benefit from AVX2/AVX512
instruction set which are detected during runtime. `exp` has a max ulp
error of 2.52 and `log` has a max ulp error or 3.83.

Improve performance of `numpy.pad`
----------------------------------
The performance of the function has been improved for most cases by filling in
a preallocated array with the desired padded shape instead of using
concatenation.

`numpy.interp` handles infinities more robustly
-----------------------------------------------
In some cases where `interp` would previously return `nan`, it now
returns an appropriate infinity.

Pathlib support for `fromfile`, `tofile` and `ndarray.dump`
-----------------------------------------------------------
`fromfile`, `ndarray.ndarray.tofile` and `ndarray.dump` now support
the `pathlib.Path` type for the ``file``/``fid`` parameter.

Specialized `isnan`, `isinf`, and `isfinite` ufuncs for bool and int types
--------------------------------------------------------------------------
The boolean and integer types are incapable of storing `nan` and `inf` values,
which allows us to provide specialized ufuncs that are up to 250x faster than
the previous approach.

`isfinite` supports ``datetime64`` and ``timedelta64`` types
-----------------------------------------------------------------
Previously, `isfinite` used to raise a `TypeError` on being used on these
two types.

New keywords added to `nan_to_num`
----------------------------------
`nan_to_num` now accepts keywords ``nan``, ``posinf`` and ``neginf``
allowing the user to define the value to replace the ``nan``, positive and
negative ``np.inf`` values respectively.

MemoryErrors caused by allocated overly large arrays are more descriptive
-------------------------------------------------------------------------
Often the cause of a MemoryError is incorrect broadcasting, which results in a
very large and incorrect shape. The message of the error now includes this
shape to help diagnose the cause of failure.

`floor`, `ceil`, and `trunc` now respect builtin magic methods
--------------------------------------------------------------
These ufuncs now call the ``__floor__``, ``__ceil__``, and ``__trunc__``
methods when called on object arrays, making them compatible with
`decimal.Decimal` and `fractions.Fraction` objects.

`quantile` now works on `fraction.Fraction` and `decimal.Decimal` objects
-------------------------------------------------------------------------
In general, this handles object arrays more gracefully, and avoids floating-
point operations if exact arithmetic types are used.

Support of object arrays in `matmul`
------------------------------------
It is now possible to use `matmul` (or the ` operator) with object arrays.
For instance, it is now possible to do::

 from fractions import Fraction
 a = np.array([[Fraction(1, 2), Fraction(1, 3)], [Fraction(1, 3), Fraction(1, 2)]])
 b = a  a


Changes
=======

`median` and `percentile` family of functions no longer warn about ``nan``
--------------------------------------------------------------------------
`numpy.median`, `numpy.percentile`, and `numpy.quantile` used to emit a
``RuntimeWarning`` when encountering an `nan`. Since they return the
``nan`` value, the warning is redundant and has been removed.

``timedelta64 % 0`` behavior adjusted to return ``NaT``
-------------------------------------------------------
The modulus operation with two ``np.timedelta64`` operands now returns
``NaT`` in the case of division by zero, rather than returning zero

NumPy functions now always support overrides with ``__array_function__``
------------------------------------------------------------------------
NumPy now always checks the ``__array_function__`` method to implement overrides
of NumPy functions on non-NumPy arrays, as described in `NEP 18`_. The feature
was available for testing with NumPy 1.16 if appropriate environment variables
are set, but is now always enabled.

.. _`NEP 18` : http://www.numpy.org/neps/nep-0018-array-function-protocol.html

``lib.recfunctions.structured_to_unstructured`` does not squeeze single-field views
-----------------------------------------------------------------------------------
Previously ``structured_to_unstructured(arr[['a']])`` would produce a squeezed
result inconsistent with ``structured_to_unstructured(arr[['a', b']])``. This
was accidental. The old behavior can be retained with
``structured_to_unstructured(arr[['a']]).squeeze(axis=-1)`` or far more simply,
``arr['a']``.

`clip` now uses a ufunc under the hood
--------------------------------------
This means that registering clip functions for custom dtypes in C via
``descr->f->fastclip`` is deprecated - they should use the ufunc registration
mechanism instead, attaching to the ``np.core.umath.clip`` ufunc.

It also means that ``clip`` accepts ``where`` and ``casting`` arguments,
and can be override with ``__array_ufunc__``.

A consequence of this change is that some behaviors of the old ``clip`` have
been deprecated:

* Passing ``nan`` to mean "do not clip" as one or both bounds. This didn't work
in all cases anyway, and can be better handled by passing infinities of the
appropriate sign.
* Using "unsafe" casting by default when an ``out`` argument is passed. Using
``casting="unsafe"`` explicitly will silence this warning.

Additionally, there are some corner cases with behavior changes:

* Padding ``max < min`` has changed to be more consistent across dtypes, but
should not be relied upon.
* Scalar ``min`` and ``max`` take part in promotion rules like they do in all
other ufuncs.

``__array_interface__`` offset now works as documented
------------------------------------------------------
The interface may use an ``offset`` value that was mistakenly ignored.

Pickle protocol in `savez` set to 3 for ``force zip64`` flag
-----------------------------------------------------------------
`savez` was not using the ``force_zip64`` flag, which limited the size of
the archive to 2GB. But using the flag requires us to use pickle protocol 3 to
write ``object`` arrays. The protocol used was bumped to 3, meaning the archive
will be unreadable by Python2.

Structured arrays indexed with non-existent fields raise ``KeyError`` not ``ValueError``
----------------------------------------------------------------------------------------
``arr['bad_field']`` on a structured type raises ``KeyError``, for consistency
with ``dict['bad_field']``.



=========================

1.16.4

==========================

The NumPy 1.16.4 release fixes bugs reported against the 1.16.3 release, and
also backports several enhancements from master that seem appropriate for a
release series that is the last to support Python 2.7. The wheels on PyPI are
linked with OpenBLAS v0.3.7-dev, which should fix issues on Skylake series
cpus.

Downstream developers building this release should use Cython >= 0.29.2 and,
if using OpenBLAS, OpenBLAS > v0.3.7. The supported Python versions are 2.7 and
3.5-3.7.


New deprecations
================
Writeable flag of C-API wrapped arrays
--------------------------------------
When an array is created from the C-API to wrap a pointer to data, the only
indication we have of the read-write nature of the data is the ``writeable``
flag set during creation. It is dangerous to force the flag to writeable.  In
the future it will not be possible to switch the writeable flag to ``True``
from python.  This deprecation should not affect many users since arrays
created in such a manner are very rare in practice and only available through
the NumPy C-API.


Compatibility notes
===================

Potential changes to the random stream
--------------------------------------
Due to bugs in the application of log to random floating point numbers,
the stream may change when sampling from ``np.random.beta``, ``np.random.binomial``,
``np.random.laplace``, ``np.random.logistic``, ``np.random.logseries`` or
``np.random.multinomial`` if a 0 is generated in the underlying MT19937 random stream.
There is a 1 in :math:`10^{53}` chance of this occurring, and so the probability that
the stream changes for any given seed is extremely small. If a 0 is encountered in the
underlying generator, then the incorrect value produced (either ``np.inf``
or ``np.nan``) is now dropped.


Changes
=======

`numpy.lib.recfunctions.structured_to_unstructured` does not squeeze single-field views
---------------------------------------------------------------------------------------
Previously ``structured_to_unstructured(arr[['a']])`` would produce a squeezed
result inconsistent with ``structured_to_unstructured(arr[['a', b']])``. This
was accidental. The old behavior can be retained with
``structured_to_unstructured(arr[['a']]).squeeze(axis=-1)`` or far more simply,
``arr['a']``.


Contributors
============

A total of 10 people contributed to this release.  People with a "+" by their
names contributed a patch for the first time.

* Charles Harris
* Eric Wieser
* Dennis Zollo +
* Hunter Damron +
* Jingbei Li +
* Kevin Sheppard
* Matti Picus
* Nicola Soranzo +
* Sebastian Berg
* Tyler Reddy


Pull requests merged
====================

A total of 16 pull requests were merged for this release.

* `13392 <https://github.com/numpy/numpy/pull/13392>`__: BUG: Some PyPy versions lack PyStructSequence_InitType2.
* `13394 <https://github.com/numpy/numpy/pull/13394>`__: MAINT, DEP: Fix deprecated ``assertEquals()``
* `13396 <https://github.com/numpy/numpy/pull/13396>`__: BUG: Fix structured_to_unstructured on single-field types (backport)
* `13549 <https://github.com/numpy/numpy/pull/13549>`__: BLD: Make CI pass again with pytest 4.5
* `13552 <https://github.com/numpy/numpy/pull/13552>`__: TST: Register markers in conftest.py.
* `13559 <https://github.com/numpy/numpy/pull/13559>`__: BUG: Removes ValueError for empty kwargs in arraymultiter_new
* `13560 <https://github.com/numpy/numpy/pull/13560>`__: BUG: Add TypeError to accepted exceptions in crackfortran.
* `13561 <https://github.com/numpy/numpy/pull/13561>`__: BUG: Handle subarrays in descr_to_dtype
* `13562 <https://github.com/numpy/numpy/pull/13562>`__: BUG: Protect generators from log(0.0)
* `13563 <https://github.com/numpy/numpy/pull/13563>`__: BUG: Always return views from structured_to_unstructured when...
* `13564 <https://github.com/numpy/numpy/pull/13564>`__: BUG: Catch stderr when checking compiler version
* `13565 <https://github.com/numpy/numpy/pull/13565>`__: BUG: longdouble(int) does not work
* `13587 <https://github.com/numpy/numpy/pull/13587>`__: BUG: distutils/system_info.py fix missing subprocess import (13523)
* `13620 <https://github.com/numpy/numpy/pull/13620>`__: BUG,DEP: Fix writeable flag setting for arrays without base
* `13641 <https://github.com/numpy/numpy/pull/13641>`__: MAINT: Prepare for the 1.16.4 release.
* `13644 <https://github.com/numpy/numpy/pull/13644>`__: BUG: special case object arrays when printing rel-, abs-error

1.16.3

==========================

The NumPy 1.16.3 release fixes bugs reported against the 1.16.2 release, and
also backports several enhancements from master that seem appropriate for a
release series that is the last to support Python 2.7. The wheels on PyPI are
linked with OpenBLAS v0.3.4+,  which should fix the known threading issues
found in previous OpenBLAS versions.

Downstream developers building this release should use Cython >= 0.29.2 and,
if using OpenBLAS, OpenBLAS > v0.3.4.

The most noticeable change in this release is that unpickling object arrays
when loading ``*.npy`` or ``*.npz`` files now requires an explicit opt-in.
This backwards incompatible change was made in response to
`CVE-2019-6446 <https://nvd.nist.gov/vuln/detail/CVE-2019-6446>`_.


Compatibility notes
===================

Unpickling while loading requires explicit opt-in
-------------------------------------------------
The functions ``np.load``, and ``np.lib.format.read_array`` take an
`allow_pickle` keyword which now defaults to ``False`` in response to
`CVE-2019-6446 <https://nvd.nist.gov/vuln/detail/CVE-2019-6446>`_.


Improvements
============

Covariance in `random.mvnormal` cast to double
----------------------------------------------
This should make the tolerance used when checking the singular values of the
covariance matrix more meaningful.


Changes
=======

``__array_interface__`` offset now works as documented
------------------------------------------------------
The interface may use an ``offset`` value that was previously mistakenly
ignored.



=========================

1.16.2

==========================

NumPy 1.16.2 is a quick release fixing several problems encountered on Windows.
The Python versions supported are 2.7 and 3.5-3.7. The Windows problems
addressed are:

- DLL load problems for NumPy wheels on Windows,
- distutils command line parsing on Windows.

There is also a regression fix correcting signed zeros produced by divmod, see
below for details.

Downstream developers building this release should use Cython >= 0.29.2 and, if
using OpenBLAS, OpenBLAS > v0.3.4.

If you are installing using pip, you may encounter a problem with older
installed versions of NumPy that pip did not delete becoming mixed with the
current version, resulting in an ``ImportError``. That problem is particularly
common on Debian derived distributions due to a modified pip.  The fix is to
make sure all previous NumPy versions installed by pip have been removed. See
`12736 <https://github.com/numpy/numpy/issues/12736>`__ for discussion of the
issue.


Compatibility notes
===================

Signed zero when using divmod
-----------------------------
Starting in version 1.12.0, numpy incorrectly returned a negatively signed zero
when using the ``divmod`` and ``floor_divide`` functions when the result was
zero. For example::

>>> np.zeros(10)//1
array([-0., -0., -0., -0., -0., -0., -0., -0., -0., -0.])

With this release, the result is correctly returned as a positively signed
zero::

>>> np.zeros(10)//1
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])


Contributors
============

A total of 5 people contributed to this release.  People with a "+" by their
names contributed a patch for the first time.

* Charles Harris
* Eric Wieser
* Matti Picus
* Tyler Reddy
* Tony LaTorre +


Pull requests merged
====================

A total of 7 pull requests were merged for this release.

* `12909 <https://github.com/numpy/numpy/pull/12909>`__: TST: fix vmImage dispatch in Azure
* `12923 <https://github.com/numpy/numpy/pull/12923>`__: MAINT: remove complicated test of multiarray import failure mode
* `13020 <https://github.com/numpy/numpy/pull/13020>`__: BUG: fix signed zero behavior in npy_divmod
* `13026 <https://github.com/numpy/numpy/pull/13026>`__: MAINT: Add functions to parse shell-strings in the platform-native...
* `13028 <https://github.com/numpy/numpy/pull/13028>`__: BUG: Fix regression in parsing of F90 and F77 environment variables
* `13038 <https://github.com/numpy/numpy/pull/13038>`__: BUG: parse shell escaping in extra_compile_args and extra_link_args
* `13041 <https://github.com/numpy/numpy/pull/13041>`__: BLD: Windows absolute path DLL loading


==========================

1.16.1

==========================

The NumPy 1.16.1 release fixes bugs reported against the 1.16.0 release, and
also backports several enhancements from master that seem appropriate for a
release series that is the last to support Python 2.7. The wheels on PyPI are
linked with OpenBLAS v0.3.4+,  which should fix the known threading issues
found in previous OpenBLAS versions.

Downstream developers building this release should use Cython >= 0.29.2 and, if
using OpenBLAS, OpenBLAS > v0.3.4.

If you are installing using pip, you may encounter a problem with older
installed versions of NumPy that pip did not delete becoming mixed with the
current version, resulting in an ``ImportError``. That problem is particularly
common on Debian derived distributions due to a modified pip.  The fix is to
make sure all previous NumPy versions installed by pip have been removed. See
`12736 <https://github.com/numpy/numpy/issues/12736>`__ for discussion of the
issue. Note that previously this problem resulted in an ``AttributeError``.


Contributors
============

A total of 16 people contributed to this release.  People with a "+" by their
names contributed a patch for the first time.

* Antoine Pitrou
* Arcesio Castaneda Medina +
* Charles Harris
* Chris Markiewicz +
* Christoph Gohlke
* Christopher J. Markiewicz +
* Daniel Hrisca +
* EelcoPeacs +
* Eric Wieser
* Kevin Sheppard
* Matti Picus
* OBATA Akio +
* Ralf Gommers
* Sebastian Berg
* Stephan Hoyer
* Tyler Reddy


Enhancements
============

* `12767 <https://github.com/numpy/numpy/pull/12767>`__: ENH: add mm->q floordiv
* `12768 <https://github.com/numpy/numpy/pull/12768>`__: ENH: port np.core.overrides to C for speed
* `12769 <https://github.com/numpy/numpy/pull/12769>`__: ENH: Add np.ctypeslib.as_ctypes_type(dtype), improve `np.ctypeslib.as_ctypes`
* `12773 <https://github.com/numpy/numpy/pull/12773>`__: ENH: add "max difference" messages to np.testing.assert_array_equal...
* `12820 <https://github.com/numpy/numpy/pull/12820>`__: ENH: Add mm->qm divmod
* `12890 <https://github.com/numpy/numpy/pull/12890>`__: ENH: add _dtype_ctype to namespace for freeze analysis


Compatibility notes
===================

* The changed error message emited by array comparison testing functions may
affect doctests. See below for detail.

* Casting from double and single denormals to float16 has been corrected.  In
some rare cases, this may result in results being rounded up instead of down,
changing the last bit (ULP) of the result.


New Features
============

divmod operation is now supported for two ``timedelta64`` operands
------------------------------------------------------------------
The divmod operator now handles two ``np.timedelta64`` operands, with
type signature ``mm->qm``.


Improvements
============

Further improvements to ``ctypes`` support in ``np.ctypeslib``
--------------------------------------------------------------
A new `numpy.ctypeslib.as_ctypes_type` function has been added, which can be
used to converts a `dtype` into a best-guess `ctypes` type. Thanks to this
new function, `numpy.ctypeslib.as_ctypes` now supports a much wider range of
array types, including structures, booleans, and integers of non-native
endianness.

Array comparison assertions include maximum differences
-------------------------------------------------------
Error messages from array comparison tests such as
`np.testing.assert_allclose` now include "max absolute difference" and
"max relative difference," in addition to the previous "mismatch" percentage.
This information makes it easier to update absolute and relative error
tolerances.


Changes
=======

``timedelta64 % 0`` behavior adjusted to return ``NaT``
-------------------------------------------------------
The modulus operation with two ``np.timedelta64`` operands now returns
``NaT`` in the case of division by zero, rather than returning zero





==========================

1.16.0

==========================

This NumPy release is the last one to support Python 2.7 and will be maintained
as a long term release with bug fixes until 2020.  Support for Python 3.4 been
dropped, the supported Python versions are 2.7 and 3.5-3.7. The wheels on PyPI
are linked with OpenBLAS v0.3.4+,  which should fix the known threading issues
found in previous OpenBLAS versions.

Downstream developers building this release should use Cython >= 0.29 and, if
using OpenBLAS, OpenBLAS > v0.3.4.

This release has seen a lot of refactoring and features many bug fixes, improved
code organization, and better cross platform compatibility. Not all of these
improvements will be visible to users, but they should help make maintenance
easier going forward.


Highlights
==========

* Experimental (opt-in only) support for overriding numpy functions,
see ``__array_function__`` below.

* The ``matmul`` function is now a ufunc. This provides better
performance and allows overriding with ``__array_ufunc__``.

* Improved support for the ARM and POWER architectures.

* Improved support for AIX and PyPy.

* Improved interop with ctypes.

* Improved support for PEP 3118.



New functions
=============

* New functions added to the `numpy.lib.recfuntions` module to ease the
structured assignment changes:

 * ``assign_fields_by_name``
 * ``structured_to_unstructured``
 * ``unstructured_to_structured``
 * ``apply_along_fields``
 * ``require_fields``

See the user guide at <https://docs.scipy.org/doc/numpy/user/basics.rec.html>
for more info.


New deprecations
================

* The type dictionaries `numpy.core.typeNA` and `numpy.core.sctypeNA` are
deprecated. They were buggy and not documented and will be removed in the
1.18 release. Use`numpy.sctypeDict` instead.

* The `numpy.asscalar` function is deprecated. It is an alias to the more
powerful `numpy.ndarray.item`, not tested, and fails for scalars.

* The `numpy.set_array_ops` and `numpy.get_array_ops` functions are deprecated.
As part of `NEP 15`, they have been deprecated along with the C-API functions
:c:func:`PyArray_SetNumericOps` and :c:func:`PyArray_GetNumericOps`. Users
who wish to override the inner loop functions in built-in ufuncs should use
:c:func:`PyUFunc_ReplaceLoopBySignature`.

* The `numpy.unravel_index` keyword argument ``dims`` is deprecated, use
``shape`` instead.

* The `numpy.histogram` ``normed`` argument is deprecated.  It was deprecated
previously, but no warning was issued.

* The ``positive`` operator (``+``) applied to non-numerical arrays is
deprecated. See below for details.

* Passing an iterator to the stack functions is deprecated


Expired deprecations
====================

* NaT comp

@pyup-bot
Copy link
Author

pyup-bot commented Sep 9, 2019

Closing this in favor of #49

@pyup-bot pyup-bot closed this Sep 9, 2019
@joelb123 joelb123 deleted the pyup-scheduled-update-2019-09-02 branch September 9, 2019 17:53
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants