Skip to content

Release workflow

jnsbck edited this page Feb 21, 2025 · 9 revisions

TLDR; We have an automatic release pipeline, so the only thing you need to do is bump the version in jaxley/__version__.py, make a PR and merge it, once all tests passed.


Decide what will be the upcoming version number

  • Jaxley currently uses the Semver 2.0.0 convention.
  • Edit the version number in the tuple at jaxley/jaxley/__version__.py and in the pyproject.toml

Collect a list of relevant changes

  • If CHANGELOG.md does not already list all relevant changes, add a new version number header and report changes below it.

  • Use one line per change, include links to the pull requests that implemented each of the changes.

  • Credit contributors!

  • If there are new package dependencies or updated version constraints for the existing dependencies, add/modify the corresponding entries in pyproject.toml.

Run tests locally and make sure they pass

  • Run the full test suite:
pytest tests
  • Run tests that are marked as additional_neuron_tests (these are not run by default). To run these tests:
nrnivmodl tests/nrn_mechanisms
pytest tests -m "additional_neuron_tests"

Make a PR

  • A PR that introduces changes to __version__.py automatically gets flagged as a release PR and triggers additional tests. Make sure all tests pass before merging.
  • Merging the PR will:
    • tag the commit with the version found in pyproject.toml
    • build the binaries
    • publish to PyPI
    • Make a release and add the list of changes from CHANGELOG.md to the release description.
  • Please check if the release was created successfully and is listed on PyPI.
  • In case for whatever reason, the automatic release fails, open an issue and make the release manually (see below).

Fallback: Upload via the command line.

You need access to the Jaxley PyPi account for doing this (talk to the maintainers).

  • Install build and twine: pip install build twine
  • Use the build module to create the source distribution (.tar.gz) and the wheel (.whl) files:
    • python -m build
    • This will generate distribution archives (usually located in the dist/ directory).
  • Once the package is built, you can upload it to PyPI using twine:
    • twine upload dist/*

Update the documentation to the new version

  • The mkdocs docs available at jaxleyverse.github.io/jaxley/ are built automatically. You do not have to do anything. We will remove those docs in the future (they are only there because they are linked in the paper).
  • Similarly, readthedocs docs should build automatically. Ideally double-check though.