Contributing
wspkit is an open-source Python project. Contributions are welcome — bug
reports, documentation fixes, new features, and performance improvements
are all in scope.
Development setup
The project uses Hatch for environment management.
Install Hatch (e.g. pipx install hatch), clone the repo, and you're
ready:
git clone https://github.com/pythonomenology/wspkit.git
cd wspkit
Hatch creates and caches isolated environments on demand. There is no
top-level pip install step.
Test, lint, type-check
# Run the full test suite on every supported Python (3.10–3.14).
hatch test
# Or just on one version.
hatch test --python 3.12
# Lint.
hatch check code
# Type-check.
hatch check types
The test environment is intentionally separate from the project's runtime
dependencies. pytest, hypothesis, and friends live only in
[tool.hatch.envs.hatch-test], so they cannot leak into a downstream
consumer that installs wspkit.
Documentation
# Preview the docs on http://localhost:8000.
hatch run docs:serve
# Build the static site into ./site.
hatch run docs:build
The site is built with Zensical — see
zensical.toml
for the configuration and docs/
for the source.
Code style
- Absolute imports only. Anything inside
wspkit.*imports its dependencies viafrom wspkit.X import Y, neverfrom .X import Y. - The project uses Hatch's default ruff rule set (no project-level
overrides). When you add new code, run
hatch check codeto make sure it passes. - Type-checked with
pyreflyin strict mode. Runhatch check typesbefore sending a change. - The codebase is
from __future__ import annotationseverywhere, so PEP 604 union syntax (X | Y) is fine on every supported Python.
Pull request flow
- Fork the repo and create a topic branch.
- Make your change. If it's user-visible, update the docs under
docs/. If it changes the public API, updatedocs/reference/api.md. - Run
hatch test,hatch check code, andhatch check types. - Commit with a focused message; small, reviewable PRs land faster.
- Open the PR. CI runs the same three checks across the supported Python versions.
Reporting issues
File issues at https://github.com/pythonomenology/wspkit/issues. Useful details:
- The Python version and operating system.
- The exact command you ran (
wsp ...) or a minimal reproduction script. - The full output, including stderr.
- For protocol-level reports, the framed bytes you sent (you can capture
them by piping through
teeand a small inspector).