Contributing¶
Contributing¶
We welcome contributions to Autobahn|Python! This guide explains how to get involved.
Getting in Touch¶
GitHub Issues: Report bugs or request features at https://github.com/crossbario/autobahn-python/issues
GitHub Discussions: Ask questions and discuss at https://github.com/crossbario/autobahn-python/discussions
Mailing List: Join the Autobahn mailing list at https://groups.google.com/forum/#!forum/autobahnws
Chat: Join us on the WAMP community channels
Reporting Issues¶
When reporting issues, please include:
Python version (
python --version)Autobahn version (
python -c "import autobahn; print(autobahn.__version__)")Operating system and version
Framework being used (Twisted or asyncio)
Minimal code example reproducing the issue
Full traceback if applicable
Network configuration if relevant (proxy, firewall, etc.)
Contributing Code¶
Fork the repository on GitHub
Create a feature branch from
masterMake your changes following the code style
Add tests for new functionality
Add a changelog entry to
docs/changelog.rstfor any user-visible change (kept in the PR so the branch is self-contained)Run the test suite to ensure nothing is broken
Submit a pull request referencing any related issues
Development Setup¶
git clone https://github.com/crossbario/autobahn-python.git
cd autobahn-python
pip install -e .[dev,twisted,asyncio]
Running Tests¶
# Run all tests
tox
# Run tests for specific Python version
tox -e py312
# Run specific test file
pytest autobahn/test/test_websocket.py
Code Style¶
Follow PEP 8
Use meaningful variable and function names
Add docstrings for public APIs
Keep lines under 100 characters
Use type hints where appropriate
Documentation¶
Documentation uses reStructuredText
Build docs locally:
cd docs && make htmlView at
docs/_build/html/index.html
Testing Both Frameworks¶
Autobahn|Python supports both Twisted and asyncio. When contributing:
Test changes on both frameworks if applicable
Use
txaiofor framework-agnostic codeDon’t break compatibility with either framework
WebSocket Conformance¶
For WebSocket changes, run the Autobahn|Testsuite:
# See docs/websocket/conformance.rst for details
Versioning¶
This project uses CalVer with PEP 440 development
releases: YY.M.PATCH[.devN] — for example, 26.7.1 for a stable release and
26.7.1.dev1 while in development. Between releases the working tree always
carries a .devN suffix.
The version is stored in two files kept in sync — pyproject.toml and
src/autobahn/_version.py — and managed with just:
just file-version— show the current version (from both files)just bump-dev— bump to the next dev version for the current month (YY.M.1.dev1)just bump-next 26.7.2.dev1— set a specific next dev versionjust prep-release— strip the.devNsuffix to cut a stable release
Git tags and releases are created by maintainers only.
License¶
By contributing to Autobahn|Python, you agree that your contributions will be licensed under the MIT License.