This guide provides onboarding information to external contributors and serve as a reference for maintainers.
DendroPy welcomes contributions from users to help improve the library and make it more useful for the community. Thanks for getting involved!
Filing a bug report or making a feature request — covered elsewhere in the documentation — can also be a great way to contribute to the project.
We use a static linter to help detect source quality issues like syntax errors in the code base. To perform linting,
To run all tests,
python setup.py test
To run an individual test file,
python -m unittest tests/test_example.py
We use Netlify to host the projects’ documentation.
We keep deployed documentation up-to-date with the
main branch through our Github Actions continuous integration.
Manual documentation builds aren’t usually necessary, unless you’re encountering a documentation-specific issue. To build the documentation locally,
make -C docs/ html
This requires the version of DendroPy you want to build for and requirements listed in
docs/requirements.txt to be installed.
Setting up a virtual environment can help you manage dependencies and isolate project-specific packages from your system’s global packages. This can prevent conflicts and ensure that your project runs smoothly and consistently on different machines.
To set up and enter a virtual environment
python -m venv env source env/bin/activate
CI will run tests and linting each time the main branch or an open pull request is pushed to. Note that tests are run across all supported Python versions. So, even if tests pass locally CI may flag incompatibilities with other Python versions.
Continuous integration configuration is handled in
We use the BumpVer tool to perform version bumping. To update the project to a new version, run of the following
bumpver --update patch bumpver --update minor bumpver --update major
This will create a tagged commit that updates the source (i.e.,
__version__) with the new version number
Only perform version bumping on the
Otherwise, you could create an inadvertent release.
Releasing to PyPi¶
Continuous integration will automatically release any git tag that begins with
So, after version bumping simply
git push origin --tags
to begin the release process.
Continuous integration will take it from there! After quality control checks pass (i.e., the usual continuous integration), the new package version will be published to PyPi. Note, though, that if quality control checks fail the release will be aborted.