Welcome to the normi Maintenance Guideline¶
This guide will give you an overview of how to publish a new version of normi. In the following we will refer to the new version as v0.*.*. This needs to be substituted to the current version, e.g. v0.1.3.
Prepare New Release¶
Please ensure that,
- the version number in
setup.pyandsrc/normi/__init__.pyare bumped, - a new tag is created via
git tag v0.*.*and pushedgit push --tags, and - the changelog includes the new tag and all changes of the release.
As an example see for e.g. the commit of v0.1.1, c2582ed.
Upload to PyPI¶
There is an CI to publish new versions automatically. Therefore, a new release
needs to be published. Please ensure that each release is based on a tag.
Build and Upload to PyPI (preferred)¶
It is as simple as creating a new release from the new tag. The Github action
will do the rest.
Build and Upload to PyPI (admin only)¶
For an introduction, please take a look at the PyPI manual.
First ensure that all needed dependencies are installed
python -m pip install --upgrade pip
python -m pip install --upgrade build
python -m pip install --upgrade twine
To create the build, please ensure first that the directory dist does not exist. Otherwise delete it,
rm dist
Then, execute
python3 -m build
which will create the directory
dist including the source distributions:dist/
├── normi-0.*.*-py3-none-any.whl
└── normi-0.*.*.tar.gz
To upload the new files, run
python3 -m twine upload dist/*
Documentation¶
The documentation is built with Zensical and
configured in zensical.toml. To preview it locally, run
uv run --group docs zensical serve
The site is deployed automatically by the github pages CI on every push to
main.
The tutorial pages are written as Jupyter notebooks in docs/tutorial/. After
changing a notebook, re-run it and regenerate the Markdown page via
uvx --from nbconvert --with ipython jupyter-nbconvert --to markdown docs/tutorial/measures.ipynb
and commit both files together.
Update on Conda-Forge¶
Once a new version is published on PyPI, the conda-forge bot will automatically create a pull request on normi-feedstock.