Thank you for your interest in contributing to PyWebTransport. This document defines the technical standards for contributors.
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
Please do not report security vulnerabilities via public GitHub issues. For reporting instructions and disclosure policies, consult the Security Policy.
To ensure legal compliance, we enforce the Developer Certificate of Origin (DCO) 1.1. By contributing, you certify that you have the right to submit the patch. You must sign off every commit by adding a Signed-off-by line.
Before contributing, review our Implementation Philosophy. All contributions must align with the architectural principles defined therein.
- Clang: Required for C-bindings generation.
- Git: Version control.
- pyenv: Python version management.
- rustup: Rust toolchain management.
- tox: Automated testing suite.
-
Fork and Clone:
git clone https://github.com/<your-username>/pywebtransport.git cd pywebtransport git remote add upstream https://github.com/wtransport/pywebtransport.git
-
Environment:
pyenv install python -m venv .venv source .venv/bin/activate -
Dependencies:
pip install -r dev-requirements.txt pip install -e .
All contributions must adhere to the following style requirements:
- formatting:
black,cargo fmt - imports:
isort - linting:
flake8,clippy - typing:
mypy - documentation: Concise single-line docstrings and mandatory type hints for public APIs.
Execute pytest to validate full-stack behavior including the underlying Rust engine, and cargo test for internal state machine correctness. Full matrix validation via tox is mandatory before submission.
Requirement: New features must include positive, negative, and edge-case tests.
- Commit: Sign-off is mandatory (
git commit -s). Follow Conventional Commits. - Changelog: Add a user-facing entry to
CHANGELOG.mdunderUnreleased. - Submission: Open a PR against
mainwith technical rationale.
(Maintainers Only)
Releases follow Semantic Versioning. Update the version source of truth and finalize CHANGELOG.md before merging to main.
Contributions must adhere to the IETF WebTransport specifications: