Contributing¶
How to help¶
Markus is used in production in a few places, but I’d love to know how you use Markus and how Markus’ API works for you. Is it easy? Are there thing that are hard?
If you encounter any bugs, please write up an issue in the issue tracker.
Writing up issues¶
Please write up issues in the issue tracker.
If the issue is about a bug in Markus, please specify:
the version of Markus that you’re using
the version of Python that you’re using
the traceback and error message if applicable
These things will help me figure out the problem faster.
Install for hacking¶
Run:
# Clone the repository
$ git clone https://github.com/willkg/markus
# Create a virtualenvironment
...
# Install Markus and dev requirements
$ pip install -r requirements-dev.txt
Documentation¶
Documentation is written in reStructuredText and is in the docs/
directory. We use Sphinx
to build documentation.
Tests¶
Run tests with tox. This will run all tests across all supported Python versions.
Tests are located in the tests/
directory.
Release process¶
Checkout main tip and create a prep branch like
2_0_0_prep
.Check to make sure
setup.py
and requirements are updated.Update dev dependencies:
make checkrot
Update version numbers in
src/markus/__init__.py
.Set
__version__
to something like0.4.0
(use semver).Set
__releasedate__
to something like20120731
.
Update
HISTORY.rst
Set the date for the release.
Make sure to note any backwards incompatible changes.
Verify correctness.
Check manifest:
check-manifest
Run tests:
make test
Lint:
make lint
Build docs (this runs example code).
Push that branch and create a PR. If that passes, then merge it.
Check out and update main branch locally.
Tag the release:
$ git tag -s v0.4.0
Copy details from
HISTORY.rst
into the tag comment.Update PyPI–do this in a Python3 virtualenv:
$ rm -rf dist/* $ python setup.py sdist bdist_wheel $ twine upload dist/*
Push everything:
$ git push --tags origin main
Announce the release with a blog post and tweet.