The instructions collected here are intended to help with preparing a new ACME release. This file is mainly intended for internal use, for a detailed guide on how to contribute to ACME, please see our Contributing Guide
-
On your development machine, set up a new conda environment with the most recent Python version intended to be supported
conda create -n acme-py11 python=3.11
-
Update dependencies: open setup.cfg and install the most recent versions (not necessarily those stated) of all listed dependencies
conda install dask "dask-jobqueue>=0.8" h5py numpy "tqdm>=4.31" pytest-cov ipdb ipython mypy "scipy>= 1.5,<2.0" tox
-
Run the test-suite locally
cd /path/to/acme-repo/acme/tests ./run_tests.sh pytest
-
Update testing environment in tox.ini and run tox locally (IMPORTANT this also tests if ACME can be installed via pip!)
cd /path/to/acme-repo tox
-
Run mypy static type checker locally
cd /path/to/acme-repo mypy acme --allow-redefinition
-
Export your environment and re-recreate it on an x86 ESI HPC cluster node:
conda env export --from-history > acmepy11.yml scp acmepy11.yml esi-svhpc2:~/ ssh esi-svhpc2 module load conda conda env create --file acmepy11.yml
Create an identical environment (append "-ppc" to its name) on a ppc64le node:
ssh hub module load conda conda env create --file acmepy11.yml
-
Run ACME's test-suite on both architectures
ssh {hub,esi-svhpc2} module load conda conda activate acme-py11{-ppc} cd /path/to/acme-repo/acme/tests ./run_tests.sh pytest
If all tests are passing, merge changes into [dev]
branch.
Ensure you're working in
[dev]
, not[main]
!
-
Update dependencies/supported Python version in setup.cfg
-
Update build-system requirements in pyproject.toml
-
Bump version number in setup.py
-
Prepare release notes in CHANGELOG.md
-
Force-update environment file acme.yml as well as citation resource CITATION.cff:
python setup.py --version
-
Check proper licensing of all files (errors in setup.py and CITATION.cff can be ignored)
reuse lint
-
Create a release tag
git tag -a "202x.y" -m "202x.y" git push --tags
Finally, open a PR into [main]
. Once merged, wait for the CI pipeline
to finish and click the play button to publish to PyPi.
-
Checkout
[dev]
branch -
Prepare next
[Unreleased]
section with pre-defined headings inCHANGELOG.md
for next release:## [Unreleased] ### NEW ### CHANGED ### REMOVED ### DEPRECATED ### FIXED