Contributing¶
We love your input! We want to make contributing to QueryMate as easy and transparent as possible.
Development Setup¶
Fork the repository and clone your fork:
git clone https://github.com/yourusername/querymate.git cd querymate
Create a virtual environment and install dependencies:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install -e ".[dev]"
Create a branch for your changes:
git checkout -b feature/your-feature-name
Development Workflow¶
Make your changes
Run the test suite:
pytest
Run code quality checks:
make lint make format python -m mypy .
Update documentation if needed:
cd docs make html
Commit your changes:
git add . git commit -m "Description of your changes" git push origin feature/your-feature-name
Submit a Pull Request
Pull Request Process¶
Update the README.md and documentation with details of changes if needed
Update the CHANGELOG.md with a note describing your changes
The PR will be merged once you have the sign-off of the maintainers
Code Style¶
Follow PEP 8 guidelines
Use type hints
Write docstrings for all public functions and classes
Keep functions focused and small
Write meaningful commit messages
Running Tests¶
The test suite can be run with pytest:
# Run all tests
pytest
# Run tests with coverage
pytest --cov=querymate
# Run a specific test
pytest tests/test_querymate.py -k test_name
Building Documentation¶
The documentation is built using Sphinx:
cd docs
make html
The built documentation will be in docs/_build/html/.
Reporting Issues¶
When reporting issues:
Check if the issue already exists
Include: - Your Python version - QueryMate version - Minimal code example that reproduces the issue - Full error traceback if applicable - What you expected to happen - What actually happened
Feature Requests¶
We’re always looking for suggestions to improve QueryMate. Feel free to:
Open an issue with the tag “enhancement”
Describe the feature you’d like to see
Why you need it
How it should work
Code of Conduct¶
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.