Notes to Developers
These are notes to developers.
Installation
To install pop2net for development, it is strongly advised to use poetry.
This has to be installed outside the virtual environment.
The recommended way to have poetry installed, generally is via pipx.
Once poetry is installed, just run poetry install
from within the repository to install the package, all dependencies as well as all test and development dependencies.
Testing
We use pytest for testing and ship pytest as a dev dependency.
That after installation, the tests can be run with poetry run pytest
Versioning
We use a semantic versioning approach of MAJOR.MINOR.PATCH.
MAJOR versions are not guaranteed to be backwards compatible,
MINOR versions indicate the addition of new functionality, and
PATCH versions only fix bugs and do not otherwise influence the functionality of the package.
Branches
The main
branch is locked and can only be modified via PRs.
The general idea for a development workflow is:
Create a new feature branch based on
dev
.Create a PR from your feature branch to
dev
.Once we release a new version, we set it up in
dev
and create a relase PR fromdev
tomain
.
If your are not a member of the core development team, PRs are generally always welcome. Please fork the repository, create a new branch and create your PRs from there to pop2net/dev
.
How to Release
The release process is triggered manually as a GitHub Action that is called “Release New Version”.
In a dropdown menu, you can select how much you want to increment the version.
The parameters that are selectable are directly passed to a poetry version
command, so to see how the version changes, best check poetry’s documentation directly here.
Note
It is important to note, that all releases will be published on GitHub, but only stable releases (i.e., not prereleases -> there is no letter in the version number) will be released on pypi. That ensures that users of the package can rely on PyPi to always have a up-to-date stable version, whereas developers can easily get pre-releases to test new functionality.