.. currentmodule:: pop2net .. highlight:: shell =================== 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: 1. Create a new feature branch based on ``dev``. 2. Create a PR from your feature branch to ``dev``. 3. Once we release a new version, we set it up in ``dev`` and create a relase PR from ``dev`` to ``main``. 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.