Contributing¶
Thank you for your interest in contributing to Graph ID!
Development Setup¶
Prerequisites¶
- Python 3.10+
- C++ compiler (for building the extension)
- Git
Installation¶
- Clone the repository:
- Initialize git submodules:
- Install with Poetry:
- Install pre-commit hooks:
Running Tests¶
After C++ Changes¶
If you modify C++ code, reinstall the package:
Then run tests again.
Code Style¶
This project uses:
- Ruff for Python linting
- Black for Python formatting
- isort for import sorting
Pre-commit hooks will automatically check these.
Pull Request Process¶
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run tests:
poetry run pytest - Commit with a descriptive message
- Push to your fork
- Open a Pull Request
Reporting Issues¶
When reporting issues, please include:
- Python version
- Operating system
- Minimal reproducible example
- Full error traceback
Architecture Overview¶
graph-id-core/
├── cpp/ # C++ source code
│ ├── graph_id.cpp # Main C++ implementation
│ └── ...
├── graph_id/ # Python package
│ ├── app/ # High-level interfaces
│ ├── core/ # Core implementations
│ └── analysis/ # Analysis utilities
├── library/ # Git submodules
│ ├── pybind11/ # Python-C++ bindings
│ ├── eigen/ # Linear algebra
│ └── gtl/ # Graph template library
└── tests/ # Test suite
Questions?¶
Feel free to open an issue for questions or discussion.