Finalize version 1.0.0 - #19
Merged
Merged
Conversation
cibuildwheel defaults the x86_64 macOS deployment target to 10.9, but nanobind's C++17 runtime uses aligned new/delete which requires macOS 10.13+. Every macOS wheel job failed to compile nanobind (nb_type.cpp: 'aligned deallocation function ... only available on macOS 10.13 or newer'). Pin the deployment target to 10.14 for the macOS builds.
cibuildwheel's default Linux image is manylinux2014 (glibc 2.17), but numpy/scipy only publish manylinux_2_27/_2_28 wheels. In the glibc 2.17 test container those wheels are incompatible, so pip falls back to compiling scipy from source, which needs OpenBLAS/Fortran that aren't present, and the wheel smoke-test fails. Our runtime deps already require glibc >= 2.27, so manylinux2014 wheels were never installable anyway. Build and test the x86_64 Linux wheels on manylinux_2_28 to match the dependencies' wheel floor. musllinux_1_2 (the cibuildwheel default) is pinned explicitly; it already has matching numpy/scipy wheels.
Resolve the two placeholder SHAs in sync/nns_source.json by matching the vendored bytes to upstream history: - r_commit 905b8bbd: the OVVO-Financial/NNS commit that introduced the exact vendored tools/NNS_13.0.tar.gz blob (parent carried a different tarball). Version 13.0 / Date 2026-06-10, Packaged 2026-06-11 03:14 UTC. - core_commit 7f93df9d: the OVVO-Financial/NNS-core commit that authored the exact vendored extern/NNS-core include/src/CMakeLists objects (its parent had different include/src). A later commit carries the identical core forward unchanged. The release provenance gate now passes for a real tagged release. test_unknown_provenance_fails_real_release previously ran the gate against the committed manifest and relied on it carrying placeholder provenance. Point it at a fixture manifest so it tests the unknown-provenance failure behavior without depending on the real manifest being unfilled.
Drop the pre-release suffix (1.0.0a0 -> 1.0.0) and update the trove classifier from Development Status :: 3 - Alpha to 5 - Production/Stable. Bump the hardcoded nns.__version__ to match; nothing enforced parity between it and pyproject before, so add tests/tools/test_version_sync.py to assert nns.__version__ equals the pyproject project.version. twine check --strict passes on the 1.0.0 sdist.
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.
What
Finalizes the release version for the first real PyPI publish:
pyproject.toml:version1.0.0a0→1.0.0; classifierDevelopment Status :: 3 - Alpha→5 - Production/Stable.src/nns/__init__.py: bump hardcoded__version__to1.0.0(it had drifted — nothing enforced parity).tests/tools/test_version_sync.pyto assertnns.__version__equalspyproject [project].version, so they can't silently diverge again.Validation
twine check --strictpasses on theovvo_nns-1.0.0.tar.gzsdist.check_release_provenance.py --tag v1.0.0passes (provenance from Record release provenance: resolve r_commit and core_commit #18 + matching tag).After merge, the real release is one tag away:
git tag v1.0.0 && git push origin v1.0.0(once the pypi.org Trusted Publisher +pypienvironment exist).https://claude.ai/code/session_012bjk4Y5eT1Sva8tNJjqUSw
Generated by Claude Code