Development¶
Set up the checkout¶
git clone https://github.com/jasoncpit/dynamic-street-network.git
cd dynamic-street-network/spatialdeform
uv sync --dev --group docs
To build and test the optional PyO3 extension, install Rust and add
--extra rust:
Run checks¶
The test suite covers both embedding backends, the reusable constrained SMACOF solver, CRS round trips, endpoint identity, MultiLineString deformation, scikit-learn cloning, fixed scenario scale, invalid costs, and disconnected graphs.
Preview documentation¶
Open http://127.0.0.1:8000 and edit files under docs/. MkDocs reloads the
page automatically.
Build distributions¶
Test both artifacts independently:
uv run --isolated --no-project \
--with dist/spatialdeform-0.1.0a1-py3-none-any.whl \
tests/smoke_test.py
uv run --isolated --no-project \
--with dist/spatialdeform-0.1.0a1.tar.gz \
tests/smoke_test.py
Release process¶
- update the version in
pyproject.tomlandsrc/spatialdeform/__init__.py; - run tests, formatting, strict docs build, and artifact smoke tests;
- create the matching PyPI trusted publisher and GitHub
pypienvironment; - tag the commit
spatialdeform-v<version>; - push the tag; the release workflow builds and publishes with
uv.
The documentation workflow publishes the site after documentation or package
source changes land on main.