Thanks for your interest in contributing! This guide will help you get started.
- Fork this repo (top-right button on GitHub)
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/fft_pipeline.git - Add upstream remote:
git remote add upstream https://github.com/nhsengland/fft_pipeline.git - Create a branch:
git checkout -b my-feature - Make changes, commit with clear messages
- Push to your fork:
git push origin my-feature - Open a Pull Request from your fork to
main
You likely don't have push access to this repo. Forking creates your own copy where you can push freely, then propose changes via Pull Request.
- Check existing Issues and Pull Requests to avoid duplicates
- For large changes, open an issue first to discuss
- Keep PRs focused — one feature or fix per PR
- Write clear commit messages:
Add X/Fix Y/Update Z - Test your changes locally before submitting
- Update documentation if needed
git fetch upstream
git checkout main
git merge upstream/main
git push origin mainThen rebase your feature branch if needed: git rebase main
This project follows the Google Python Style Guide with Ruff for linting/formatting and Ty for type checking:
- Style guide: Google Python Style Guide
- Line length: 90 characters
- Python version: 3.13+
- Quote style: Double quotes
- Indentation: 4 spaces (no tabs)
- Docstrings: Google-style format
# Format code
uv run ruff format
# Check linting
uv run ruff check
# Type check
uv run ty
# Run doctests
uv run python -m doctest $(find src/fft/ -name "*.py" -not -name "__main__.py")- Primary testing: Doctests (inline with functions)
- No pytest - use doctests for documentation + testing
- Validation:
uv run python -m fft --validate
Open an issue or start a discussion. We're happy to help!