How to Make a Release

  1. Make sure ProDy imports and passes all unit tests both Python 2 and Python 3, and using nose nosetests command:

    $ cd ProDy
    $ nosetests
    $ nosetests3
    

    See Testing ProDy for more on testing.

  2. Update the version number in:

    • prody/__init__.py
    • ./PKG-INFO

    Also, commend + '-dev' out, so that documentation will build for a stable release.

  3. Update the most recent changes and the latest release date in:

    • docs/release/vX.Y_series.rst.

    If there is a new incremental release, start a new file.

  4. Make sure the following files are up-to-date.

    • README.txt
    • MANIFEST.in
    • setup.py

    If there is a new file format, that is a new extensions not captured in MANIFEST.in, it should be included.

    If there is a new C extension, it should be listed in setup.py.

    After checking these files, commit change and push them to GitHub.

  5. Generate the source distributions:

    $ cd ..
    $ python setup.py sdist --formats=gztar,zip
    
  6. Prepare and test Python Wheels on Windows (see Making Windows Installers).

    Wheels should be prepared for the following versions of Python:

    $ C:\Python27\python setup.py bdist_wheel
    $ C:\Python35\python setup.py bdist_wheel
    $ C:\Python36\python setup.py bdist_wheel
    

    Alternatively, use bdist_wheel.bat to run these commands. When there is a newer Python major release, it should be added to this list. Don’t forget to pull most recent changes to your Windows machine.

    A good practice is installing ProDy using all newly created installers and checking that it works. ProDy script can be used to check that, e.g.:

    $ C:\Python33\Scripts\prody.bat anm 1ubi
    

    If this command runs for all supported Python versions, release is good to go.

  7. Put all installation source and executable in dist directory.

#. Upload the new release files to the PyPI using twine (NOTE: this step is irreversible! If there were to be a change to ProDy after this step, then it needs to be prepared as a whole new release):

  $ twine upload dist/*


This will offer a number of options. ProDy on PyPI is owned by user
``prody.devel``.
  1. Commit final changes, if there are any:

    $ cd ..
    $ git commit -a
    
  2. Tag the repository with the current version number and push new tag:

    $ git tag vX.Y
    $ git push --tags
    
  3. Rebase devel branch to master:

    $ git checkout master
    $ git rebase devel
    $ git push
    
  4. Update the documentation on ProDy website. See Documenting ProDy.

  5. Now that you made a release, you can go back to development. You may start with appending '-dev' to __release__ in prody/__init__.py.