Release Process#

The release process for Roentgen is as follows:

  1. Update the CHANGELOG.rst file with the new version number and a summary of changes.

  2. Commit the changes to the CHANGELOG.rst file and make sure that there are no other uncommitted changes.

  3. Determine the new version number according to semantic versioning.

  4. Create a new local git tag for the release using the format vX.Y.Z, where X.Y.Z is the new version number.

    git tag vX.Y.Z

  5. Clean out the dist/ directory to remove any previous build artifacts.

  6. Build the distribution packages using uv build.

  7. Test the distribution packages by installing them in a clean virtual environment and running the test suite.

    uv run --isolated --no-project --with dist/*.whl pytest

  8. Test that the distribution package can be installed and imported and that the version number is correct.

    uv run --isolated --no-project --with dist/*.whl python -c "import roentgen; print(roentgen.__version__)"

  9. Upload the distribution packages to TestPyPI using `uv publish –index testpypi –token <TESTPYPI_TOKEN> `.

  10. Verify the release on TestPyPI (https://test.pypi.org/project/roentgen/)

  11. If you need to make changes, delete the local git tag using git tag -d vX.Y.Z, make the necessary changes, and repeat steps above.

  12. Push the git tag to the remote repository. This will trigger the GitHub Actions workflow to build and upload the package to PyPI.