Skip to content

PyPI release pipeline + official ovvo-nns package name - #10

Merged
OVVO-Financial merged 3 commits into
mainfrom
claude/serene-goodall-dx2o3d
Jun 13, 2026
Merged

PyPI release pipeline + official ovvo-nns package name#10
OVVO-Financial merged 3 commits into
mainfrom
claude/serene-goodall-dx2o3d

Conversation

@OVVO-Financial

@OVVO-Financial OVVO-Financial commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Builds the publish path for the native (C++17 / nanobind) package and sets
the official distribution name to ovvo-nns.

Official name: ovvo-nns

Publish under the new, unencumbered PyPI name rather than taking over the legacy
NNS project. Distribution name only — the import package stays nns:

pip install ovvo-nns
import nns

So there's zero code/test/vignette churn (same pattern as scikit-learn
import sklearn). Changed in pyproject.toml, README.md, and docs/releasing.md
(claim ovvo-nns via a pending Trusted Publisher — no NNS takeover needed;
legacy NNS noted as an optional later alias).

Release pipeline

  • 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; scikit-build-core fetches CMake/Ninja.
  • .github/workflows/release.yml — build all wheels + sdist, publish via
    PyPI Trusted Publishing (OIDC) (no stored token, PEP 740 attestations).
    Tag v* → PyPI; workflow_dispatchnone | testpypi | pypi. Uses GitHub
    environments pypi / testpypi.
  • scripts/check_release_provenance.py + test — gate: tag matches pyproject
    version and sync/nns_source.json records non-placeholder r_commit /
    core_commit. --allow-unknown for 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 dist ovvo-nns and import nns works; ruff clean;
release.yml + pyproject parse; provenance gate behaves; 11/11 tools tests pass.

https://claude.ai/code/session_017KnASettwNxUdYJzchRLux

claude added 2 commits June 13, 2026 18:55
…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.
@OVVO-Financial OVVO-Financial changed the title Add PyPI release pipeline: multi-platform wheels + Trusted Publishing PyPI release pipeline + official ovvo-nns package name Jun 13, 2026
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.
@OVVO-Financial
OVVO-Financial merged commit 868b2cf into main Jun 13, 2026
4 checks passed
@OVVO-Financial
OVVO-Financial deleted the claude/serene-goodall-dx2o3d branch June 13, 2026 19:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants