- Fork and clone the repository
- Install dependencies:
uv sync - Make your changes
- Run checks:
uvx tox -e all-checks - Run tests:
uvx tox -e pytest - Submit a pull request
- Create a feature branch:
git checkout -b feat/your-feature-name - Write clear commit messages that explain what and why
- Add tests for any new functionality
- Update documentation as needed
- Ensure all checks pass before submitting
- Type hints: Required for all functions and methods
- Docstrings: Use Google style for public APIs
- Line length: 100 characters (enforced by ruff)
- Formatting: Run
uvx tox -e fixto auto-format
New subspecs belong in src/lean_spec/subspecs/. Follow the pattern of existing subspecs like poseidon2:
mkdir -p src/lean_spec/subspecs/my_new_subspec
touch src/lean_spec/subspecs/my_new_subspec/__init__.py
mkdir -p tests/subspecs/my_new_subspec- Write tests that mirror the source structure
- Use
pytest.mark.parametrizefor multiple test cases - Mark slow tests with
@pytest.mark.slow