Thank you for your interest in contributing to Glazing! We welcome contributions from the community.
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/glazing.git - Create a branch:
git checkout -b feature/your-feature - Install development dependencies:
pip install -e ".[dev]" - Make your changes with tests
- Run tests:
pytest - Submit a pull request
# Create virtual environment
python3.13 -m venv venv
source venv/bin/activate
# Install in development mode
pip install -e ".[dev,docs]"
# Install pre-commit hooks
pre-commit install
# Initialize test data
glazing initWe use ruff for code quality and mypy for type checking:
# Format code
ruff format src/ tests/
# Lint code
ruff check src/ tests/
# Type checking (strict mode required)
mypy --strict src/# Run all tests with verbose output
pytest tests/ -v
# Run with coverage
pytest tests/ -v --cov=src/glazing --cov-report=term-missing
# Run specific test module
pytest tests/test_verbnet/test_models.py -v
# Run specific test with debugging output
pytest tests/test_base.py::TestBaseModel::test_model_validation -xvs- All new features must have tests
- Tests should cover edge cases and error conditions
- Use descriptive test names that explain what is being tested
- Mock external dependencies and file I/O where appropriate
- Maintain or improve code coverage (aim for >90%)
# Build and serve docs
mkdocs serve
# Build static docs
mkdocs build- Ensure tests pass
- Update documentation if needed
- Add entry to CHANGELOG.md
- Create PR with clear description
- Link related issues
src/glazing/- Main package codetests/- Test suitedocs/- Documentation sourcepyproject.toml- Project configuration
- Bug fixes - Check issues labeled
bug - Features - See
enhancementissues - Documentation - Improve clarity, add examples
- Tests - Increase coverage, add edge cases
- Performance - Optimize data loading/searching
- Be respectful and inclusive
- Welcome newcomers
- Accept constructive feedback
- Focus on project improvement
- Open an issue for bugs
- Start a discussion for questions
- Check existing issues first
By contributing, you agree that your contributions will be licensed under the MIT License.
For more detailed information, see the full contributing guide.