# Contributing to Turnstone Thanks for your interest in contributing! Here's what you need to know. ## Contributor License Agreement All contributors must agree to the [Contributor License Agreement](CLA.md) before their pull request can be merged. When you open your first PR, the CLA Assistant bot will ask you to sign by commenting on the PR. This is a one-time process. The CLA allows us to distribute Turnstone under both open-source and commercial licenses. Your contributions remain your own — you are granting a license, not transferring ownership. ## Getting Started 1. Fork the repository 2. Create a branch for your change 3. Make your changes 4. Run the tests: `pytest` 5. Open a pull request ## Development Setup ``` python -m venv .venv source .venv/bin/activate pip install -e ".[test,dev]" ``` The `dev` extra installs `ruff` and `mypy`. Before pushing, run: ``` ruff check turnstone tests mypy turnstone pytest ``` ## Guidelines - Keep pull requests focused — one change per PR - Add tests for new functionality - Follow existing code style and patterns - Update documentation if your change affects user-facing behavior ## Reporting Issues Open an issue at https://github.com/turnstonelabs/turnstone/issues with: - What you expected to happen - What actually happened - Steps to reproduce - Python version and OS ## License By contributing, you agree that your contributions will be licensed under the project's [Apache License 2.0](LICENSE).