Thank you for your interest in contributing to TreeTime. We welcome pull-requests that fix bugs or implement new features.
If you come across a bug or unexpected behavior, please file an issue.
Upon pushing a commit, GitHub Actions runs tests across supported Python versions and lint checks. Tests use data from the neherlab/treetime_examples repository.
- Add a
# Unreleasedheading at the top ofchangelog.mdfollowed by bullet points describing the changes. Commit to master (directly or via PR). - Run the release script from the repo root:
./release 0.x.y
- Review the diff shown by the script, then confirm to push.
- Watch CI complete at https://github.com/neherlab/treetime/actions. On success, the GitHub Release and the PyPI package are created automatically.
The release script:
- Validates the working tree: clean, on master, up-to-date with origin, tag absent,
# Unreleasedpresent in changelog. - Bumps the version in
treetime/__init__.py. - Renames the
# Unreleasedheading to# 0.x.yinchangelog.md. - Commits (
chore: release 0.x.y) and creates tagv0.x.y. - Pushes the commit and tag after confirmation.
The tag push triggers the release CI workflow, which:
-
Runs the full test matrix and lint.
-
Extracts the changelog section using
scripts/extract-release-notesand creates a GitHub Release. -
Builds and publishes the package to PyPI using the
PYPI_API_TOKENrepository secret.To verify the secret is present:
gh secret list
- indentation: 4 spaces
- docstrings: numpy style
- variable names: snake_case