Skip to content

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,

  1. the version number in setup.py and src/normi/__init__.py are bumped,
  2. a new tag is created via git tag v0.*.* and pushed git push --tags, and
  3. 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.