Maintainer guide¶
Managing dependencies¶
Eradiate is managed using the Pixi project manager. It notably allows us to maintain a Conda-based setup with most dependencies sourced from PyPI, with layered requirements. Be sure to read the relevant entries in the Pixi documentation:
We use the following requirement groups, which manifest as features in the Pixi model:
optional: Only contains the Eradiate kernel package. This is needed to allow developers to install all dependencies except the kernel.recommended: Optional packages used by specific subcomponents of Eradiate.docs: Packages needed to compile the documentation.test: Packages needed to run the test suite.
When adding new requirements, be sure to:
Prioritize PyPI packages, using the
--pypioption.Register the new requirement to the appropriate group.
Check in the lock file after it is updated.
Note
Our Read The Docs build uses stock Python virtual environments and installs
dependencies with Pip. A specific requirement file is generated for that
purpose, using the docs-lock Pixi task. This task is automatically
executed upon committing, so the file is always up-to-date.
Making a release of Eradiate¶
Preparation
Make sure main is up-to-date and all tests pass.
If necessary, [1] start a Pixi shell:
pixi shell -e devIn your shell, set the variable
RELEASE_VERSIONto the target version value:export RELEASE_VERSION=X.Y.ZCreate a new branch for the release:
git checkout main && git pull upstream main && git checkout -b bump/prepare-v$RELEASE_VERSIONMake sure that dependencies are correct (check in particular the kernel version). Use the release checker utility for this:
pixi run release check-mitsubaBump the version number using Bump My Version:
pixi run bumpUpdate the change log.
Update the version and release date fields in
CITATION.cff:pixi run release update-citationUpdate the PyPI README content:
pixi run release update-pypi-readmeCommit the changes:
git commit -am "Bump version to $RELEASE_VERSION"Push the changes:
git push origin
Pull request
Create a pull request to check changes with peers.
Merge the pull request once everything is correct.
Release publication
Create a draft release on GitHub and update it.
Using release candidates on Test PyPI, make sure that built Pyhon wheels will work as expected. A typical installation command of a Test PyPI release is
python3 -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ 'eradiate[kernel]==0.30.0rc4'Finalize release notes and create the release tag. Make sure that the release commit is referenced only by one tag.
Build and upload Python wheels.
Post-release: Prepare the next development cycle
In your shell, set the variable
RELEASE_VERSIONto the target version value:export RELEASE_VERSION=X.Y.Z-dev0Bump the version number using:
pixi run bump