Making freud Releases¶
Documented below are the steps needed to make a new release of freud.
Create a release branch, numbered according to Sematic Versioning:
git checkout -b release/vX.Y.Z
Review headings (Added, Changed, Fixed, Deprecated, Removed) and ensure consistent formatting.
Update the release version and release date from
vX.Y.Z - YYYY-MM-DD.
Update git submodules (optional, but should be done regularly).
Reformat C++ code with
clang-format -style=file cpp/**/*
Generate Cythonized C++¶
Rebuild the project with
--ENABLE-CYTHONso that the files in
freud/*.cppare updated. Ideally, do this on a system with a relatively clean
PATHand a system-provided Python, or else some user paths (including usernames) may be included in the result.
Update the contributor list:
git shortlog -sne > contributors.txt
Commit previous changes before running
Use the bumpversion package to increase the version number and automatically generate a git tag:
bumpversion patch # for X.Y.Z bumpversion minor # for X.Y bumpversion major # for X
Push the release branch to the remote:
git push -u origin release/vX.Y.Z
Ensure that ReadTheDocs and continuous integration pass (you will need to manually enable the branch on ReadTheDocs’ web interface to test it). Then push the tag:
git push --tags
Pushing the tag will cause CircleCI to create a release for PyPI automatically (see automation in
.circleci/config.yml). Make sure this succeeds – it takes a while to run.
Create a pull request and merge the release branch into the
masterbranch. Delete the release branch on ReadTheDocs’ web interface, since there is now a tagged version.
The conda-forge autotick bot should discover that the PyPI source distribution has changed, and will create a pull request to the conda-forge feedstock. This pull request may take a few hours to appear. If other changes are needed in the conda-forge recipe (e.g. new dependencies), follow the conda-forge documentation to create a pull request from your own fork of the feedstock. Merge the pull request after all continuous integration passes to trigger release builds for conda-forge.