Contributing
February 16, 2026 ยท View on GitHub
All configuration for the project should be put into pyproject.toml.
Working locally
- Create a virtualenv using whatever method you like ( eg, virtualenvwrapper)
uv venv
- Sync venv
uv sync --all-extras --all-packages --all-groups
Running tests locally
To run a subset of the required tests, run the smoke test script
./scripts/smoke.bash
If on Windows, you should be able to just run the 'tox' commands in that file.
Updating/adding a dependency
-
Add or update the dependency in pyproject.toml
-
Update lock file
uv lock --upgrade
- Sync venv
uv sync --all-extras --all-packages --all-groups
- Run tests as above
Pre-commit
Basic checks (formatting, import order) are done with pre-commit and are controlled by the yaml file.
After installing dependencies, Run
# check it works
pre-commit run --all-files
pre-commit install
Run every so often to update the pre-commit hooks
pre-commit autoupdate
Fixing Python formatting issues
ruff format tavern/ tests/
ruff --fix tavern/ tests/
Fix yaml formatting issues
pre-commit run --all-files
Creating a new release
-
Setup
~/.pypircaccording to the official instructions -
Tag and push to git with
tbump <new-tag> --tag-message "<tag-message>" -
Upload to pypi with
flit publish
Building the documentation
Run this standalone for now: https://github.com/jupyter-book/mystmd/issues/2082
uv tool run --from mystmd myst build --html
Watching for changes
To automatically rebuild when files in the docs/ folder change:
uv tool run watchfiles "uv tool run --from mystmd myst build --html" --filter all docs myst.yml