1Releasing NumExpr
2==================
3
4* Author: Robert A. McLeod
5* Contact: robbmcleod@gmail.com
6* Date: 2020-12-28
7
8Following are notes for releasing NumExpr.
9
10Preliminaries
11-------------
12
13* Make sure that `RELEASE_NOTES.rst` and `ANNOUNCE.rst` are up to date with the latest news in the release.
14* Ensure that `branch = ''` in `setup.py`.
15* Do a commit and a push:
16
17    `git commit -a -m "Getting ready for release X.Y.Z"`
18
19* If the directories `dist` or `artifact` exist delete them.
20
21Local Testing
22-------------
23
24* Re-compile locally with MKL support and see if all tests passes as well.
25* Run all the benchmarks in `bench/` directory and see if the
26  speed-ups are the expected ones.
27
28Tagging
29-------
30
31* Create a tag `vX.Y.Z` from `master` and push the tag to GitHub:
32
33    `git tag -a vX.Y.Z -m "Tagging version X.Y.Z"`
34    `git push`
35    `git push --tags`
36
37* If you happen to have to delete the tag, such as artifacts demonstrates a fault, first delete it locally,
38
39    `git tag --delete vX.Y.Z`
40
41  and then remotely on Github,
42
43    `git push --delete origin vX.Y.Z`
44
45Build Wheels
46------------
47
48* Check on GitHub Actions `github.com/pydata/numexpr` that all the wheels built successfully.
49* Download `artifacts.zip` and unzip.
50* Make the source tarball with the command
51
52    `python setup.py sdist`
53
54Releasing
55---------
56
57* Upload the built wheels to PyPi via Twine.
58
59    `twine upload artifact/numexpr*.whl`
60
61* Upload the source distribution.
62
63    `twine upload dist/numexpr-X.Y.Z.tar.gz`
64
65* Check on `pypi.org/project/numexpr/#files` that the wheels and source have uploaded as expected.
66
67Announcing
68----------
69
70* Send an announcement to the NumPy list, PyData and python-announce
71  list.  Use the `ANNOUNCE.rst` file as skeleton (or possibly as the
72  definitive version). Email should be addressed to the following lists:
73  * python-announce-list@python.org
74  * numpy-discussion@python.org
75  * pydata@googlegroups.com
76
77Post-release actions
78--------------------
79
80* Bump the `nano` version number in `setup.py`, including setting `branch = 'dev0'`.
81* Create new headers for adding new features in `RELEASE_NOTES.rst`
82  and add this place-holder:
83
84  `* **Under development.**`
85
86  Don't forget to update header to the next version in those files.
87
88* Commit your changes:
89
90  `git commit -a -m "Post X.Y.Z release actions done"`
91  `git push`
92
93Fin.
94