Thank you for your interest in contributing to GNN! This project benefits from contributions of all kinds — from bug reports and documentation improvements to new pipeline modules and framework integrations.
- Python 3.11+
- UV package manager (installation)
- Git for version control
# Fork and clone the repository
git clone https://github.com/<your-username>/GeneralizedNotationNotation.git
cd GeneralizedNotationNotation
# Install dependencies
uv sync
# Run the test suite to verify your setup
uv run pytest src/tests/ -vSee SETUP_GUIDE.md for detailed installation instructions including optional dependency groups.
- Search existing issues first.
- If no existing issue matches, open a new one with:
- A clear, descriptive title
- Steps to reproduce
- Expected vs. actual behavior
- Python version, OS, and relevant dependency versions
Open a GitHub Discussion or issue describing:
- The problem the feature would solve
- Your proposed approach
- Any relevant examples or references
-
Fork the repository and create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following the conventions below.
-
Run the tests to ensure nothing is broken:
uv run pytest src/tests/ -v
-
Commit with clear, descriptive messages:
git commit -m "Add support for new matrix type in GNN parser" -
Push to your fork and open a Pull Request against
main.
All pipeline modules follow the thin orchestrator pattern:
- Numbered scripts (
src/N_module.py): Handle CLI args, logging, and delegation only (<150 lines) - Module directories (
src/module/): Contain all domain logic inprocessor.py, public API in__init__.py
- Type hints for all public functions
- Exit codes: 0 = success, 1 = error, 2 = warnings
- No mocks in tests — all tests must exercise real code paths
- Follow existing patterns — read neighboring modules before writing new ones
Every module must include:
src/module_name/
__init__.py # Public API
processor.py # Core logic
AGENTS.md # Module documentation
mcp.py # MCP tool registration (if applicable)
- Tests go in
src/tests/test_{module}_*.py - Run module-specific tests:
uv run pytest src/tests/test_gnn_*.py -v - Check coverage:
uv run pytest --cov=src --cov-report=term-missing - Aim for >80% test coverage on new code
- Update
AGENTS.mdin the relevant module directory - If adding a pipeline step, update
AGENTS.md,DOCS.md, andREADME.md - Use concrete examples and real outputs over promotional language
- Keep PRs focused on a single change
- Include a description of what changed and why
- Reference any related issues (e.g., "Fixes #42")
- Ensure all tests pass before requesting review
- Update documentation if your change affects user-facing behavior
Follow the project Style Guide for formatting and naming conventions. Key points:
- Python code follows PEP 8
- GNN files use Markdown with structured sections (see GNN Syntax)
- Commit messages should be imperative ("Add feature" not "Added feature")
If you discover a security vulnerability, please follow the reporting process in SECURITY.md. Do not open a public issue for security vulnerabilities.
Please review and follow our Code of Conduct. We are committed to providing a welcoming and inclusive experience for everyone.
Contributors are recognized in release notes, the CHANGELOG, and the contributors graph.
- Check the documentation
- Open a GitHub Discussion
- See SUPPORT.md for additional help channels