From af11e61ea993dce6f937ca620d52d784b0e30ae2 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 13 Jun 2026 20:31:28 +0000 Subject: [PATCH 1/2] Harden release: twine metadata check with pinned modern tooling Add a check_metadata job that runs 'twine check --strict' over the built wheels + sdist before publishing, with pinned twine>=6.1 / packaging>=24.2 so PEP 639 License-Expression (Metadata 2.4) validates regardless of any stale system 'packaging'. publish_testpypi and publish_pypi now gate on it. --- .github/workflows/release.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 29fd7cd3..ebbebc88 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -80,8 +80,26 @@ jobs: name: sdist path: dist/*.tar.gz - publish_testpypi: + check_metadata: needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + path: dist + merge-multiple: true + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Validate metadata and README rendering (twine check) + run: | + # Pin modern tooling so PEP 639 License-Expression / Metadata 2.4 is + # recognized regardless of any preinstalled system 'packaging'. + python -m pip install -U pip "twine>=6.1" "packaging>=24.2" + python -m twine check --strict dist/* + + publish_testpypi: + needs: [build_wheels, build_sdist, check_metadata] if: github.event_name == 'workflow_dispatch' && inputs.publish == 'testpypi' runs-on: ubuntu-latest environment: testpypi @@ -97,7 +115,7 @@ jobs: repository-url: https://test.pypi.org/legacy/ publish_pypi: - needs: [build_wheels, build_sdist] + needs: [build_wheels, build_sdist, check_metadata] if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.publish == 'pypi') runs-on: ubuntu-latest environment: pypi From ee658c8e4e175f14100ed8bdff06960e4196958b Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 13 Jun 2026 20:37:03 +0000 Subject: [PATCH 2/2] Add matplotlib as a core dependency for the upcoming plotting API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plotting is coming and should ship with the base install, so matplotlib moves into [project].dependencies — 'pip install ovvo-nns' will include the R-colored nns.plotting layer with no extra step (no optional [plot] extra needed). --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 5e8c93b1..7e9f483b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,7 @@ urls = { "Homepage" = "https://github.com/OVVO-Financial/NNS-python", "Repositor dependencies = [ "numpy", "scipy", + "matplotlib>=3.7", ] [dependency-groups]