PyPI release pipeline + official ovvo-nns package name - #10
Merged
Conversation
…ance gate Builds the actual publish path for the native (C++17/nanobind) package. - pyproject.toml: [tool.cibuildwheel] — CPython 3.11-3.13 wheels for Linux (manylinux+musllinux x86_64), macOS (x86_64+arm64), Windows (AMD64); each wheel smoke-tested by importing the native extension. PyPy/32-bit skipped. - .github/workflows/release.yml: build all wheels + sdist, then publish via PyPI Trusted Publishing (OIDC, no stored token, PEP 740 attestations). Tag v* publishes to PyPI; workflow_dispatch can target none/testpypi/pypi for a TestPyPI dry run. Uses GitHub environments pypi/testpypi. - scripts/check_release_provenance.py: release gate — tag must match pyproject version and sync/nns_source.json must record non-placeholder r_commit/ core_commit (so every published release is traceable). --allow-unknown for dry runs. - tests/tools/test_release_provenance.py: covers the gate. - docs/releasing.md: one-time Trusted Publisher/env setup and the release flow. Build/CI only; no runtime/package behavior changes. Nothing publishes until a Trusted Publisher is configured and a tag is cut.
Publish under the new, unencumbered PyPI name ovvo-nns instead of taking over the legacy NNS project. Distribution name only; the import package remains nns (pip install ovvo-nns -> import nns), so no code/test/vignette churn. - pyproject.toml: name NNS -> ovvo-nns - README.md: distribution name + install command - docs/releasing.md: claim ovvo-nns via pending Trusted Publisher (no NNS takeover required); legacy NNS noted as an optional later alias Verified: pip install -e . resolves dist 'ovvo-nns', import nns works, ruff and tools tests pass.
Populate [project].authors (Fred Viole + contributors Roberto Spadim, Rasheed Khoshnaw) and maintainers (Fred Viole) from the R NNS DESCRIPTION so the PyPI project page shows proper authorship.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds the publish path for the native (C++17 / nanobind) package and sets
the official distribution name to
ovvo-nns.Official name:
ovvo-nnsPublish under the new, unencumbered PyPI name rather than taking over the legacy
NNSproject. Distribution name only — the import package staysnns:So there's zero code/test/vignette churn (same pattern as
scikit-learn→import sklearn). Changed inpyproject.toml,README.md, anddocs/releasing.md(claim
ovvo-nnsvia a pending Trusted Publisher — noNNStakeover needed;legacy
NNSnoted as an optional later alias).Release pipeline
pyproject.toml→[tool.cibuildwheel]— CPython 3.11–3.13 wheels forLinux (manylinux + musllinux
x86_64), macOS (x86_64+arm64), Windows(
AMD64); each wheel smoke-tested by importing the native extension. PyPy /32-bit skipped;
scikit-build-corefetches CMake/Ninja..github/workflows/release.yml— build all wheels + sdist, publish viaPyPI Trusted Publishing (OIDC) (no stored token, PEP 740 attestations).
Tag
v*→ PyPI;workflow_dispatch→none | testpypi | pypi. Uses GitHubenvironments
pypi/testpypi.scripts/check_release_provenance.py+ test — gate: tag matchespyprojectversion and
sync/nns_source.jsonrecords non-placeholderr_commit/core_commit.--allow-unknownfor dry runs.docs/releasing.md— one-time Trusted Publisher / environment setup + flow.Safety & validation
Build/CI only; no runtime behavior changes. Nothing publishes until the
Trusted Publisher + environments are configured and a tag is cut. Verified:
pip install -e .resolves distovvo-nnsandimport nnsworks;ruffclean;release.yml+pyprojectparse; provenance gate behaves; 11/11 tools tests pass.https://claude.ai/code/session_017KnASettwNxUdYJzchRLux