==================
Releasing Numexpr
==================

:Author: Francesc Alted
:Contact: faltet@gmail.com
:Date: 2009-06-02


Following are notes useful for releasing Numexpr.

Preliminaries
-------------

- Make sure that ``RELEASE_NOTES.txt`` and ``ANNOUNCE.txt`` are up to
  date with the latest news in the release.

- Remove the `.devN` suffix in ``numexpr/version.py``.

- Do a commit and a push:

  $ git commit -a -m"Getting ready for release X.Y.Z"

Testing
-------

- Run the test suite in different platforms (at least Linux and
  Windows) and make sure that all tests passes.

- Re-compile with MKL support and see if all tests passes as well.

- Run all the benchmarks in ``bench/`` directory and see if the
  speed-ups are the expected ones.

Packaging
---------

- Make the tarball with the command:

  $ python setup.py sdist

  Do a quick check that the tarball is sane.

Releasing
---------

- Create a tag ``vX.Y.Z`` from ``master``.  Use the next message:

  $ git tag -a vX.Y.Z -m "Tagging version X.Y.Z"

- Push the tag to the github repo:

  $ git push
  $ git push --tags

- If you happen to have to delete the tag, for example if the `manywheels` builds 
  demonstrates a fault, first delete it locally,

      git tag --delete vX.Y.Z
  
  and then remotely on Github,

      git push --delete origin vX.Y.Z

Build wheels
------------

Matthew Brett has a repository for building for hosting wheels at
http://github.com/MacPython/numexpr-wheels). For the procedure to trigger and
upload the built wheels, see the README at that repo.

Build and upload the wheels before uploading the source distribution, to make
sure that people who do not have compilers do not get breakage while the
release is being uploaded.

Any problems, feel free to ask @matthew-brett for help - or indeed, pass the
whole task to him.

Uploading the source distribution
---------------------------------

- Upload it in the PyPi repository:

  $ python setup.py sdist upload


Announcing
----------

- Send an announcement to the NumPy list, PyData and python-announce
  list.  Use the ``ANNOUNCE.rst`` file as skeleton (or possibly as the
  definitive version).


Post-release actions
--------------------

- Edit ``numexpr/version.py`` to bump the version revision
  (i.e. X.Y.Z --> X.Y.(Z+1).dev0).

- Create new headers for adding new features in ``RELEASE_NOTES.txt``
  and add this place-holder:

  #XXX version-specific blurb XXX#

  Don't forget to update header to the next version in those files.

- Commit your changes:

  $ git commit -a -m"Post X.Y.Z release actions done"
  $ git push


That's all folks!


.. Local Variables:
.. mode: rst
.. coding: utf-8
.. fill-column: 70
.. End:
