Thank you for your interest in contributing! This document provides guidelines for contributing to this project.
- Python 3.11 or higher
uvpackage manager- Git
-
Clone the repository
git clone <repository-url> cd releases/tools
-
Install dependencies
uv sync --native-tls
-
Activate virtual environment
source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows
releases/tools/
├── release_notes_sync/ # Main package
│ ├── __init__.py
│ ├── constants.py # Configuration
│ ├── file_loader.py # File I/O
│ ├── comparator.py # Text comparison
│ ├── formatter.py # Output formatting
│ ├── validator.py # Validation logic
│ ├── sync_engine.py # Sync operations
│ └── git_helper.py # Git integration
├── tests/ # Test suite
├── docs/ # Documentation
├── sync_tool.py # CLI entry point
├── README.md # User guide
├── CONTRIBUTING.md # This file
└── pyproject.toml # Project config
- Follow PEP 8 style guide
- Use type hints for function parameters and returns
- Maximum line length: 88 characters (Black default)
- Write descriptive docstrings for all functions
- Simple over clever: Write readable code
- Functional over OOP: Use pure functions where possible
- Explicit over implicit: Clear naming, no magic
- Safe over fast: Correctness first, optimize later
Run tests before submitting:
uv run pytestAdd tests for new features:
- Unit tests in
tests/test_<module>.py - Integration tests for end-to-end workflows
- Update docs when changing functionality
- Include examples for new features
- Keep README.md up to date
-
Create a branch
git checkout -b feature/your-feature-name
-
Make changes
- Write code
- Add tests
- Update documentation
-
Test your changes
uv run pytest uv run ruff check . uv run black --check .
-
Commit
git add . git commit -m "feat: add feature description"
-
Push and create PR
git push origin feature/your-feature-name
Use conventional commits:
feat:New featurefix:Bug fixdocs:Documentation changestest:Test additions/changesrefactor:Code refactoringchore:Maintenance tasks
Examples:
feat: add support for multi-release sync
fix: handle missing JSON entries correctly
docs: update README with new examples
- Code follows style guidelines
- All tests pass
- Documentation is updated
- Commit messages are clear
- No unnecessary changes included
- Maintainer reviews code
- Address feedback
- Re-request review if needed
- Merge after approval
Include:
- Python version
- uv version
- Steps to reproduce
- Expected vs actual behavior
- Error messages/logs
Include:
- Use case description
- Proposed solution
- Alternative approaches considered
For questions about:
- Usage: See README.md
- Architecture: See docs/ARCHITECTURE.md
- Implementation: See docs/IMPLEMENTATION_GUIDE.md
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.