.. _how_to_release:

==================================================
How to make a release
==================================================

Clone the code::

    ssh projects@pylearn.org
    hg clone hg/Theano Theano-0.X

Edit ``setup.py`` to contain the newest version number::

    cd Theano-0.X
    vi setup.py     # Edit the version "field"

The homepage must link to the download URL, for PyPi to correctly get the
code.
Edit ``doc/index.txt`` to contain a link to what will be the download URL::

    vi doc/index.txt    # Edit the link to downloads/Theano-0.X.tar.gz

Tag the release. The syntax is something like the following::

    hg tag Theano-0.X
    hg push

Now, package the release and move it to the static theano directory::

    rm -Rf .hg*
    cd ..
    tar cvf Theano-0.X.tar Theano-0.X
    gzip -9 Theano-0.X.tar
    mv Theano-0.X.tar.gz www/theano_static/downloads/
    ~/repos/theano/.hg/refresh-epydoc.sh

Also, copy the latest documentation to the static directory and the target
directory::

    cp www/theano/theano.pdf www/theano_static/downloads/Theano-0.X.pdf
    cp www/theano/theano.pdf www/theano/downloads/Theano-0.X.pdf

Finally, use setuptools to register and upload the release::

    cd Theano-0.X
    python setup.py register sdist bdist_egg upload
    # If you get an error message about needing to be identified, then store
    # your pypi information in ~/.pypirc
    # You can remove this file after upload.
    cd ..
    rm -Rf Theano-0.X

I wrote the above without actually running it. This needs to be
scrutinized when you are actually do a release.

