From 875b0e536617037dec54fdb618ff37d99a6c687b Mon Sep 17 00:00:00 2001 From: Charles Harris Date: Wed, 21 Feb 2018 09:42:05 -0700 Subject: [PATCH 1/2] MAINT: Update 1.14.1 release notes and changelog. [ci skip] --- doc/changelog/1.14.1-changelog.rst | 63 ++++++++++++++++++++++ doc/release/1.14.1-notes.rst | 87 +++++++++++++++++++++++++++--- doc/source/release.rst | 1 + 3 files changed, 143 insertions(+), 8 deletions(-) create mode 100644 doc/changelog/1.14.1-changelog.rst diff --git a/doc/changelog/1.14.1-changelog.rst b/doc/changelog/1.14.1-changelog.rst new file mode 100644 index 000000000000..71424cb15350 --- /dev/null +++ b/doc/changelog/1.14.1-changelog.rst @@ -0,0 +1,63 @@ + +Contributors +============ + +A total of 14 people contributed to this release. People with a "+" by their +names contributed a patch for the first time. + +* Allan Haldane +* Charles Harris +* Daniel Smith +* Dennis Weyland + +* Eric Larson +* Eric Wieser +* Jarrod Millman +* Kenichi Maehashi + +* Marten van Kerkwijk +* Mathieu Lamarre +* Sebastian Berg +* Simon Conseil +* Simon Gibbons +* xoviat + +Pull requests merged +==================== + +A total of 36 pull requests were merged for this release. + +* `#10339 `__: BUG: restrict the __config__ modifications to win32 +* `#10368 `__: MAINT: Adjust type promotion in linalg.norm +* `#10375 `__: BUG: add missing paren and remove quotes from repr of fieldless... +* `#10395 `__: MAINT: Update download URL in setup.py. +* `#10396 `__: BUG: fix einsum issue with unicode input and py2 +* `#10397 `__: BUG: fix error message not formatted in einsum +* `#10398 `__: DOC: add documentation about how to handle new array printing +* `#10403 `__: BUG: Set einsum optimize parameter default to `False`. +* `#10424 `__: ENH: Fix repr of np.record objects to match np.void types #10412 +* `#10425 `__: MAINT: Update zesty to artful for i386 testing +* `#10431 `__: REL: Add 1.14.1 release notes template +* `#10435 `__: MAINT: Use ValueError for duplicate field names in lookup (backport) +* `#10534 `__: BUG: Provide a better error message for out-of-order fields +* `#10536 `__: BUG: Resize bytes_ columns in genfromtxt (backport of #10401) +* `#10537 `__: BUG: multifield-indexing adds padding bytes: revert for 1.14.1 +* `#10539 `__: BUG: fix np.save issue with python 2.7.5 +* `#10540 `__: BUG: Add missing DECREF in Py2 int() cast +* `#10541 `__: TST: Add circleci document testing to maintenance/1.14.x +* `#10542 `__: BUG: complex repr has extra spaces, missing + (1.14 backport) +* `#10550 `__: BUG: Set missing exception after malloc +* `#10557 `__: BUG: In numpy.i, clear CARRAY flag if wrapped buffer is not C_CONTIGUOUS. +* `#10558 `__: DEP: Issue FutureWarning when malformed records detected. +* `#10559 `__: BUG: Fix einsum optimize logic for singleton dimensions +* `#10560 `__: BUG: Fix calling ufuncs with a positional output argument. +* `#10561 `__: BUG: Fix various Big-Endian test failures (ppc64) +* `#10562 `__: BUG: Make dtype.descr error for out-of-order fields. +* `#10563 `__: BUG: arrays not being flattened in `union1d` +* `#10607 `__: MAINT: Update sphinxext submodule hash. +* `#10608 `__: BUG: Revert sort optimization in np.unique. +* `#10609 `__: BUG: infinite recursion in str of 0d subclasses +* `#10610 `__: BUG: Align type definition with generated lapack +* `#10612 `__: BUG/ENH: Improve output for structured non-void types +* `#10622 `__: BUG: deallocate recursive closure in arrayprint.py (1.14 backport) +* `#10624 `__: BUG: Correctly identify comma seperated dtype strings +* `#10629 `__: BUG: deallocate recursive closure in arrayprint.py (backport... +* `#10630 `__: REL: Prepare for 1.14.1 release. diff --git a/doc/release/1.14.1-notes.rst b/doc/release/1.14.1-notes.rst index d0512f9b1caa..c280c94cd4cb 100644 --- a/doc/release/1.14.1-notes.rst +++ b/doc/release/1.14.1-notes.rst @@ -2,20 +2,91 @@ NumPy 1.14.1 Release Notes ========================== -This is a bugfix release for some problems found since 1.14.0. This release -includes fixes to the spacing in the str and repr of complex values. +This is a bugfix release for some problems reported following the 1.14.0 release. The major +problems fixed are the following. -The Python versions supported are 2.7 and 3.4 - 3.6. The Python 3.6 wheels -available from PIP are built with Python 3.6.2 and should be compatible with -all previous versions of Python 3.6. It was cythonized with Cython 0.26.1, -which should be free of the bugs found in 0.27 while also being compatible with -Python 3.7-dev. +* Problems with the new array printing, particularly the printing of complex + values, Please report any additional problems that may turn up. +* Problems with ``np.einsum`` due to the new ``optimized=True`` default. Some + fixes for optimization have been applied and ``optimize=False`` is now the + default. +* The sort order in ``np.unique`` when ``axis=`` will now always + be lexicographic in the subarray elements. In previous NumPy versions there + was an optimization that could result in sorting the subarrays as unsigned + byte strings. +* The change in 1.14.0 that multi-field indexing of structured arrays returns a + view instead of a copy has been reverted but remains on track for NumPy 1.15. + Affected users should read the 1.14.1 Numpy User Guide section + "basics/structured arrays/accessing multiple fields" for advice on how to + manage this transition. + +The Python versions supported in this release are 2.7 and 3.4 - 3.6. The Python +3.6 wheels available from PIP are built with Python 3.6.2 and should be +compatible with all previous versions of Python 3.6. The source releases were +cythonized with Cython 0.26.1, which is known to **not** support the upcoming +Python 3.7 release. People who wish to run Python 3.7 should check out the +NumPy repo and try building with the, as yet, unreleased master branch of +Cython. Contributors ============ -A total of xx people contributed to this release. People with a "+" by their +A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time. +* Allan Haldane +* Charles Harris +* Daniel Smith +* Dennis Weyland + +* Eric Larson +* Eric Wieser +* Jarrod Millman +* Kenichi Maehashi + +* Marten van Kerkwijk +* Mathieu Lamarre +* Sebastian Berg +* Simon Conseil +* Simon Gibbons +* xoviat + Pull requests merged ==================== + +A total of 36 pull requests were merged for this release. + +* `#10339 `__: BUG: restrict the __config__ modifications to win32 +* `#10368 `__: MAINT: Adjust type promotion in linalg.norm +* `#10375 `__: BUG: add missing paren and remove quotes from repr of fieldless... +* `#10395 `__: MAINT: Update download URL in setup.py. +* `#10396 `__: BUG: fix einsum issue with unicode input and py2 +* `#10397 `__: BUG: fix error message not formatted in einsum +* `#10398 `__: DOC: add documentation about how to handle new array printing +* `#10403 `__: BUG: Set einsum optimize parameter default to `False`. +* `#10424 `__: ENH: Fix repr of np.record objects to match np.void types #10412 +* `#10425 `__: MAINT: Update zesty to artful for i386 testing +* `#10431 `__: REL: Add 1.14.1 release notes template +* `#10435 `__: MAINT: Use ValueError for duplicate field names in lookup (backport) +* `#10534 `__: BUG: Provide a better error message for out-of-order fields +* `#10536 `__: BUG: Resize bytes_ columns in genfromtxt (backport of #10401) +* `#10537 `__: BUG: multifield-indexing adds padding bytes: revert for 1.14.1 +* `#10539 `__: BUG: fix np.save issue with python 2.7.5 +* `#10540 `__: BUG: Add missing DECREF in Py2 int() cast +* `#10541 `__: TST: Add circleci document testing to maintenance/1.14.x +* `#10542 `__: BUG: complex repr has extra spaces, missing + (1.14 backport) +* `#10550 `__: BUG: Set missing exception after malloc +* `#10557 `__: BUG: In numpy.i, clear CARRAY flag if wrapped buffer is not C_CONTIGUOUS. +* `#10558 `__: DEP: Issue FutureWarning when malformed records detected. +* `#10559 `__: BUG: Fix einsum optimize logic for singleton dimensions +* `#10560 `__: BUG: Fix calling ufuncs with a positional output argument. +* `#10561 `__: BUG: Fix various Big-Endian test failures (ppc64) +* `#10562 `__: BUG: Make dtype.descr error for out-of-order fields. +* `#10563 `__: BUG: arrays not being flattened in `union1d` +* `#10607 `__: MAINT: Update sphinxext submodule hash. +* `#10608 `__: BUG: Revert sort optimization in np.unique. +* `#10609 `__: BUG: infinite recursion in str of 0d subclasses +* `#10610 `__: BUG: Align type definition with generated lapack +* `#10612 `__: BUG/ENH: Improve output for structured non-void types +* `#10622 `__: BUG: deallocate recursive closure in arrayprint.py (1.14 backport) +* `#10624 `__: BUG: Correctly identify comma seperated dtype strings +* `#10629 `__: BUG: deallocate recursive closure in arrayprint.py (backport... +* `#10630 `__: REL: Prepare for 1.14.1 release. diff --git a/doc/source/release.rst b/doc/source/release.rst index 977369a7c14c..0bb759dce3e7 100644 --- a/doc/source/release.rst +++ b/doc/source/release.rst @@ -3,6 +3,7 @@ Release Notes ************* .. include:: ../release/1.15.0-notes.rst +.. include:: ../release/1.14.1-notes.rst .. include:: ../release/1.14.0-notes.rst .. include:: ../release/1.13.3-notes.rst .. include:: ../release/1.13.2-notes.rst From b5ead184123325c6e959bf9745142cdaa978e101 Mon Sep 17 00:00:00 2001 From: Charles Harris Date: Wed, 21 Feb 2018 11:53:32 -0700 Subject: [PATCH 2/2] DOC: Update RELEASE_WALKTHROUGH.rst.txt. [ci skip] --- doc/RELEASE_WALKTHROUGH.rst.txt | 116 ++++++++++++++++++-------------- 1 file changed, 66 insertions(+), 50 deletions(-) diff --git a/doc/RELEASE_WALKTHROUGH.rst.txt b/doc/RELEASE_WALKTHROUGH.rst.txt index 9d69eb2db64c..df8c9c45a383 100644 --- a/doc/RELEASE_WALKTHROUGH.rst.txt +++ b/doc/RELEASE_WALKTHROUGH.rst.txt @@ -11,8 +11,8 @@ Building the release Checkout the branch for the release, make sure it is up to date, and clean the repository:: - $ git checkout maintenance/1.12.x - $ git pull upstream maintenance/1.12.x + $ git checkout maintenance/1.14.x + $ git pull upstream maintenance/1.14.x $ git submodule update $ git clean -xdf @@ -20,12 +20,12 @@ Look at the git log to get the hash of the last commit in the release, then check it out:: $ git log - $ git checkout f59a2fbbd497dbaf3a2e405a41e52dc5e331bfa7 + $ git checkout 7849751173fb47a5f17761b3515b42b4d8ce1197 Edit pavement.py and setup.py as detailed in HOWTO_RELEASE:: $ gvim pavement.py setup.py - $ git commit -a -m"REL: NumPy 1.12.0 release." + $ git commit -a -m"REL: NumPy 1.14.1 release." Sanity check:: @@ -34,86 +34,102 @@ Sanity check:: Tag it,and build the source distribution archives:: - $ git tag -s v1.12.0 + $ git tag -s v1.14.1 $ paver sdist # sdist will do a git clean -xdf, so we omit that Check that the files in ``release/installers`` have the correct versions, then push the tag upstream; generation of the wheels for PyPI needs it:: - $ git push upstream v1.12.0 + $ git push upstream v1.14.1 Trigger the wheels build. This can take a while. The numpy-wheels repository is cloned from ``_. Start with a pull as the repo may have been accessed and changed by someone else and a push will -fail. The ``.travis.yml`` and ``appveyor.yml`` files need to be edited to make -sure they have the correct version, search for ``BUILD_COMMIT``. If you get -nervous at the amount of time taken -- the builds can take several hours-- you -can check the build progress by following the links provided at -``_ to check the travis and appveyor -build status. +fail. $ cd ../numpy-wheels $ git pull origin master + $ git branch # only when starting new numpy version + $ git checkout v1.14.x # v1.14.x already existed for the 1.14.1 release + +The ``.travis.yml`` and ``appveyor.yml`` files need to be edited to make +sure they have the correct version, search for ``BUILD_COMMIT``. + $ gvim .travis.yml appveyor.yml $ git commit -a $ git push origin HEAD -Upload to PyPI --------------- +Now wait. If you get nervous at the amount of time taken -- the builds can take +several hours-- you can check the build progress by following the links +provided at ``_ to check the travis +and appveyor build status. Check if all the needed wheels have been built and +uploaded before proceeding. There should currently be 22 of them at +``_, 4 for Mac, 8 for Windows, and 10 for Linux. -Upload to PyPI using the ``wheel-uploader``. The terryfy repository is -cloned from ``_. Uploading can be a -hassle due to the site itself having problems. If you get strange messages, put -it off for the next day. To begin, check if all the needed wheels have been -built. There should be 22 of them at ``_, 4 for Mac, -8 for Windows, and 10 for Linux. Here the wheelhouse directory is in the home -directory. Then upload the wheels. You will need to sign every file separately -in the process, keeping the pass phrase in the clipboard and pasting it in will -make that easier:: + +Download wheels +--------------- + +When the wheels have all been built, download them using the ``wheel-uploader`` +in the ``terryfy`` repository. The terryfy repository may be cloned from +``_ if you don't already have it. The +wheels can also be uploaded using the ``wheel-uploader``, but we prefer to +download all the wheels to the ``../numpy/release/installers`` directory and +upload later using ``twine``. $ cd ../terryfy $ git pull origin master $ CDN_URL=https://3f23b170c54c2533c070-1c8a9b3114517dc5fe17b7c3f8c63a43.ssl.cf2.rackcdn.com - $ ./wheel-uploader -r warehouse -u $CDN_URL -s -v -w ~/wheelhouse -t win numpy 1.12.0 - $ ./wheel-uploader -r warehouse -u $CDN_URL -s -v -w ~/wheelhouse -t manylinux1 numpy 1.12.0 - $ ./wheel-uploader -r warehouse -u $CDN_URL -s -v -w ~/wheelhouse -t macosx numpy 1.12.0 + $ NPY_WHLS=../numpy/release/installers + $ ./wheel-uploader -u $CDN_URL -n -v -w $NPY_WHLS -t win numpy 1.14.1 + $ ./wheel-uploader -u $CDN_URL -n -v -w $NPY_WHLS -t manylinux1 numpy 1.14.1 + $ ./wheel-uploader -u $CDN_URL -n -v -w $NPY_WHLS -t macosx numpy 1.14.1 + +If you do this often, consider making CDN_URL and NPY_WHLS part of your default +environment. -If one of the commands breaks in the middle, you may need to manually upload -the rest of the files using twine because wheel-uploader always starts from the -beginning and PyPI does not allow the same file to be uploaded twice. -The source files should be uploaded last to avoid problems. PyPI will only allow -a single source distribution, here it is the zip archive:: +Upload to PyPI +-------------- + +Upload to PyPI using ``twine``. The choice here is to sign the files, so will +need to sign every file separately when they are uploaded, keeping the gpg pass +phrase in the clipboard and pasting it in will make that easier. We may chose +to forgo the signing in the future:: $ cd ../numpy - $ twine upload -s release/installers/numpy-1.12.0.zip + $ twine upload -s release/installers/*.whl + $ twine upload -s release/installers/numpy-1.14.1.zip # Upload last. + +If one of the commands breaks in the middle, which is not uncommon, you may +need to selectively upload the remaining files becuase PyPI does not allow the +same file to be uploaded twice. The source file should be uploaded last to +avoid synchronization problems if pip users access the files while this is in +process. Note that PyPI only allows a single source distribution, here we have +chosen the zip archive. If this is not a final release, log into PyPI and hide the new directory while -making sure the last final release is visible. +making sure the last stable release is visible. -Upload tarballs to github -------------------------- -We want to post the hash values for the files uploaded to PyPI in the release -generated README file, so first copy the wheels into the installers directory -and remove the now unneeded signature files:: - $ cp ~/wheelhouse/numpy-1.12.0* release/installers - $ rm release/installers/*.asc +Upload files to github +---------------------- -Generate the ``release/Changelog`` and ``release/README`` files:: +Generate the ``release/README`` files:: + $ rm release/installers/*.asc $ paver write_release_and_log -Go to ``_, there should be a -``v1.12.0 tag``, hit the edit button for that tag. There are two ways to add -files, using an editable text window and as binary uploads. +Go to ``_, there should be a ``v1.14.1 +tag``, click on it and hit the edit button for that tag. There are two ways to +add files, using an editable text window and as binary uploads. -- Cut-and-paste the ``release/README.md`` file contents into the text window. +- Cut and paste the ``release/README.md`` file contents into the text window. - Upload ``release/installers/numpy-1.12.0.tar.gz`` as a binary file. - Upload ``release/installers/numpy-1.12.0.zip`` as a binary file. - Upload ``release/README`` as a binary file. -- Upload ``release/Changelog`` as a binary file (maybe). -- Check the pre-release button for pre-releases. +- Upload ``doc/changelog/1.14.1-changelog.rst`` as a binary file. +- Check the pre-release button if this is a pre-releases. - Hit the ``{Publish,Update} release`` button at the bottom. @@ -127,7 +143,7 @@ upload the documentation. Otherwise:: $ pushd doc $ make dist - $ make upload USERNAME= RELEASE=v1.12.0 + $ make upload USERNAME= RELEASE=v1.14.1 $ popd If the release series is a new one, you will need to rebuild and upload the @@ -148,7 +164,7 @@ This assumes that you have forked ``_:: $ cd ../scipy.org $ git checkout master $ git pull upstream master - $ git checkout -b numpy-1.12.0 + $ git checkout -b numpy-1.14.1 $ gvim www/index.rst # edit the News section $ git commit -a $ git push origin HEAD @@ -164,7 +180,7 @@ announcements for the basic template. The contributor list can be generated as follows:: $ cd ../numpy - $ ./tools/announce.py $GITHUB v1.11.0..v1.12.0 > tmp.rst + $ ./tools/changelog.py $GITHUB v1.14.0..v1.14.1 > tmp.rst The contents of ``tmp.rst`` can then be cut and pasted into the announcement email.