Development¶
Prerequisites¶
Linux or macOS
C compiler (gcc, clang)
CMake 3.15 or later
Python 3.10 and later
NumPy 1.20 or later
Quick instructions¶
- Clone the repository
git clone https://github.com/rayference/nanodisort.git cd nanodisort
- Setup development environment
uv sync --dev uv pip install -ve .
- (Re)build C++ module
uv pip install -ve.- Run tests
uv run poe test- Run benchmarks
uv run poe benchmark- Run linting
uv run poe lint- Format code
uv run poe format- Build documentation
uv run poe docs # static build uv run poe docs-serve # server with auto-rebuild
Release sequence¶
Make sure all CI checks pass.
Set the
$RELEASE_VERSIONenvironment variable to the target value:export RELEASE_VERSION=X.Y.ZBump the version to the target value:
uv version $RELEASE_VERSIONUpdate the release notes (CHANGELOG.md).
Commit and push the changes:
git commit -am "Bump version to $RELEASE_VERSION" git push origin main
Create a tag for the target release and push it:
git tag v$RELEASE_VERSION git push origin v$RELEASE_VERSION
This will automatically run the GitHub Actions build job and publish the package to PyPI. Proceed with care!
Bump the version to the next development version:
uv version --bump minor --bump devUse the
--dry-runflag in case of doubt.Commit and push the changes:
git commit -am "Ready for next development cycle" git push origin main