Thank you for your interest in contributing to Tempo! We welcome contributions from everyone.
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/tempo.git cd tempo -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install development dependencies:
pip install -e .[dev]
We follow Test-Driven Development (TDD) strictly:
- RED: Write a failing test first
- GREEN: Write minimal code to make the test pass
- REFACTOR: Improve the code while keeping tests green
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=term-missing
# Run specific test file
pytest tests/unit/core/test_tracker.py
# Run in watch mode
pytest-watch- Minimum 80% coverage required
- Current coverage: 89%
- New features must include tests
-
Create a new branch for your feature:
git checkout -b feature/your-feature-name
-
Make your changes following TDD
-
Ensure all tests pass
-
Update documentation if needed
-
Commit with clear messages:
git commit -m "Add feature: description of what you added" -
Push to your fork and create a Pull Request
- Follow PEP 8
- Use type hints where appropriate
- Keep functions small and focused
- Write clear docstrings
- Use GitHub Issues
- Include steps to reproduce
- Provide system information (OS, Python version)
- Include error messages if applicable
- Open an issue with "Feature Request" label
- Describe the use case
- Explain expected behavior
- Consider implementing it yourself!
def test_component_action_expected_result():
# Arrange
setup_test_data()
# Act
result = perform_action()
# Assert
assert result == expected_value- Fast execution (< 100ms for unit tests)
- Independent (no test dependencies)
- Clear naming
- Good coverage of edge cases
- Update README.md for user-facing changes
- Update ROADMAP.md for progress tracking
- Add docstrings to all public functions
- Include usage examples
Feel free to open an issue for any questions about contributing!