This document provides guidelines for setting up your development environment and submitting contributions.
NetGraph-Core is a hybrid C++/Python project. You will need:
- Python 3.11+
- C++20 compatible compiler (GCC 10+, Clang 12+, MSVC 2019+)
- CMake 3.23+
- Ninja (recommended)
git clone https://github.com/networmix/NetGraph-Core.git
cd NetGraph-CoreWe use a Makefile to simplify development tasks.
make dev
source venv/bin/activateThis will:
- Create a virtual environment in
./venv - Install all development dependencies
- Install pre-commit hooks
Run all checks (linting + C++ tests + Python tests):
make checkRun specific test suites:
make cpp-test # C++ tests (GoogleTest)
make test # Python tests (pytest)- Python: We use
rufffor linting and formatting, andpyrightfor static type checking. - C++: We follow standard C++20 practices.
Auto-fix Python formatting:
make formatReleases are automated via GitHub Actions when a new tag is pushed.
-
Move the pending notes into a new
## [X.Y.Z] - YYYY-MM-DDsection inCHANGELOG.md, dated the day you tag. Mark anything that breaks consumers as BREAKING. -
Bump
versioninpyproject.tomlto the sameX.Y.Z. CI does not cross-check the tag against this value, so a mismatch publishes the wrong version silently. -
Commit and push.
-
Create and push a matching tag:
git tag v0.8.0 git push origin v0.8.0
-
The CI pipeline builds wheels and the sdist, tests them, and publishes to PyPI via Trusted Publishing.
make publish/make publish-testupload whatever is in your localdist/and are for Test PyPI or emergencies only -- real releases go through the tag.