Contributing to frequenz-channels¤
Build¤
You can use build to simply build the source and binary distribution:
python -m pip install build
python -m build
Local development¤
You can use editable installs to develop the project locally (it will install all the dependencies too):
python -m pip install -e .
You can also use nox to run the tests and other checks:
python -m pip install nox
nox
To build the documentation, first install the dependencies:
python -m pip install -e .[docs]
Then you can build the documentation (it will be written in the site/
directory):
mkdocs build
Or you can just serve the documentation without building it using:
mkdocs serve
Your site will be updated live when you change your files (provided that
you used pip install -e ., beware of a common pitfall of using pip install
without -e, in that case the API reference won't change unless you do a new
pip install).
To build multi-version documentation, we use mike. If you want to see how the multi-version sites looks like locally, you can use:
mike deploy my-version
mike set-default my-version
mike serve
mike works in mysterious ways. Some basic information:
mike deploywill do amike buildand write the results to your localgh-pagesbranch.my-versionis an arbitrary name for the local version you want to preview.mike set-defaultis needed so when you serve the documentation, it goes to your newly produced documentation by default.mike servewill serve the contents of your localgh-pagesbranch. Be aware that, unlikemkdocs serve, changes to the sources won't be shown live, as themike deploystep is needed to refresh them.
Be careful not to use --push with mike deploy, otherwise it will push your
local gh-pages branch to the origin remote.
That said, if you want to test the actual website in your fork, you can
always use mike deploy --push --remote your-fork-remote, and then access the
GitHub pages produced for your fork.
Releasing¤
These are the steps to create a new release:
-
Get the latest head you want to create a release from.
-
Update the
RELEASE_NOTES.mdfile if it is not complete, up to date, and clean from template comments (<!-- ... ->) and empty sections. Submit a pull request if an update is needed, wait until it is merged, and update the latest head you want to create a release from to get the new merged pull request. -
Create a new signed tag using the release notes and a semver compatible version number with a
vprefix, for example:
git tag -s -F RELEASE_NOTES.md v0.0.1
-
Push the new tag.
-
A GitHub action will test the tag and if all goes well it will create a GitHub Release, create a new announcement about the release, and upload a new package to PyPI automatically.
-
Once this is done, reset the
RELEASE_NOTES.mdwith the template:
cp .github/RELEASE_NOTES.template.md RELEASE_NOTES.md
Commit the new release notes and create a PR (this step should be automated eventually too).
- Celebrate!