Contributions#
Contributions are welcome, bug fixes and SASL mechanisms in particular. If you want to contribute another feature, consider filing a feature request first, so that we can discuss things beforehand.
STANDARDS#
Please target Python version 3.9 and follow PEP 8, PEP 20, PEP 257 as well as the spirit of Robert Pike’s Notes on Programing in C. Code should pass linting and the test suite. But you are welcome to ask for help if you are stuck.
LINTERS#
SieveManager ships with configurations for:
It would be kind of you if you made sure that your code passes every linter before your submit it. However, feel free to skip as many of them as you like if you do not want to install that many applications. Bandit and MyPy are the important ones.
Install the above linters:
pip3 -r linters.txt
Run MyPy, Bandit, and vermin only:
make quicklint
Run all linters:
make lint
Set the sources macro to override which files are linted, for example:
make lint sources=sievemgr.py
TESTING#
Code should pass the test suite before being submitted. Please add tests for your code, too.
Run the test suite:
make check
Skip slow tests:
make quickcheck
Set the checks macro to override which tests are run, for example:
make checks=tests.test_acap check
AUTOMATION#
Run
git config core.hooksPath .githooks
to automatically run make quicklint and make quickcheck before each commit and make lint and make check before each push.
Note
.githooks
only ships with the Git respository.
It is not included in the tarball.
VERSION CONTROL#
SieveManager uses Git and follows the Git Flow branching model. The source code is hosted at Codeberg (primary) and NotABug (secondary).
PULL REQUESTS#
Fork SieveManager on Codeberg or NotABug.
Download the devel
branch of your fork:
git clone --branch devel "git@${host:?}:${username:?}/sievemgr.git"
Set up SieveManger as upstream source:
git remote add upstream git@codeberg.org:odkr/sievemgr.git
Create a branch for your changes:
git checkout -b feat-foo
Make your changes:
vi sievemgr.py
Commit, rebase, and push:
git add sievemgr.py
git commit -S -m 'feat: added support for foo'
git pull --rebase upstream devel
git push origin feat-foo
Important
Please sign your commits.
Finally, submit your pull request.
PATCHES#
You can also send a patch to the @zoho.com
address listed in my PGP key.
Download the devel
branch:
git clone --branch devel "git@codeberg.org:odkr/sievemgr.git"
Set up SieveManger as upstream source:
git remote add upstream git@codeberg.org:odkr/sievemgr.git
Create a branch for your changes:
git checkout -b feat-foo
Make your changes:
vi sievemgr.py
Commit and rebase:
git add sievemgr.py
git commit -S -m 'feat: added support for foo'
git pull --rebase upstream devel
Create a patch:
git diff HEAD HEAD~1 >foo.patch
Please sign your patch:
gpg -ab foo.patch