Development

These instructions are geared towards people who want to help develop this library.

Preparing for development

All required tooling and libraries can be installed using the requirements-dev.txt file:

pip install -r requirements-dev.txt

Running tests

pytest is used to run tests. Run all tests with coverage and formatting checks:

py.test test_schedule.py --flake8 schedule -v --cov schedule --cov-report term-missing

Formatting the code

This project uses black formatter. To format the code, run:

black .

Make sure you use version 20.8b1 of black.

Compiling documentation

The documentation is written in reStructuredText. It is processed using Sphinx using the alabaster theme. After installing the development requirements it is just a matter of running:

cd docs
make html

The resulting html can be found in docs/_build/html

Publish a new version

Update the HISTORY.rst and AUTHORS.rst files. Bump the version in setup.py and docs/conf.py. Merge these changes into master. Finally:

git tag X.Y.Z -m "Release X.Y.Z"
git push --tags

pip install --upgrade setuptools twine wheel
python setup.py sdist bdist_wheel --universal
twine upload --repository schedule dist/*

This project follows semantic versioning.`