Thank you for your interest in contributing to the official Python implementation of TOON!
This project uses uv for dependency management.
# Clone the repository
git clone https://github.com/toon-format/toon-python.git
cd toon-python
# Install dependencies (uv will create a virtual environment automatically)
uv sync
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=src/toon_format --cov-report=term-missing- Fork the repository and create a feature branch
- Make your changes following the coding standards below
- Add tests for any new functionality
- Ensure all tests pass and coverage remains high
- Submit a pull request with a clear description
We support Python 3.8 and above (including Python 3.13 and 3.14).
- All code must include type hints
- Run
mypybefore committing:uv run mypy src/
- We use
rufffor linting and formatting - Run before committing:
uv run ruff check src/ tests/ uv run ruff format src/ tests/
- All new features must include tests
- Maintain test coverage at 85%+ line coverage
- Tests should cover edge cases and spec compliance
- Run the full test suite:
uv run pytest tests/ # Run with coverage report uv run pytest --cov=toon_format --cov-report=term --cov-fail-under=85
All implementations must comply with the TOON specification.
Before submitting changes that affect encoding/decoding behavior:
- Verify against the official SPEC.md
- Add tests for the specific spec sections you're implementing
- Document any spec version requirements
- Title: Use a clear, descriptive title
- Description: Explain what changes you made and why
- Tests: Include tests for your changes
- Documentation: Update README or documentation if needed
- Commits: Use clear commit messages (Conventional Commits preferred)
Your pull request will use our standard template which guides you through the required information.
- GitHub Issues: For bug reports and feature requests
- GitHub Discussions: For questions and general discussion
- Pull Requests: For code reviews and implementation discussion
This is a collaborative project. Current maintainers:
All maintainers have equal and consensual decision-making power. For major architectural decisions, please open a discussion issue first.
By contributing, you agree that your contributions will be licensed under the MIT License.