8000 ci: consumer-test the wheels, before tagging and after publishing by adityamukho · Pull Request #10 · project-minigraf/minigraf-python · GitHub
[go: up one dir, main page]

Skip to content

ci: consumer-test the wheels, before tagging and after publishing - #10

Merged
adityamukho merged 1 commit into
mainfrom
ci/consumer-tests
Oct 21, 2026
Merged

adityamukho merged 1 commit into
mainfrom
ci/consumer-tests

Conversation

@adityamukho
@adityamukho adityamukho commented Oct 20, 2026 •
Copy link
Copy Markdown
Contributor

Plan step 5 of the core binding consumer-test spec (docs/superpowers/specs/2026-10-20-binding-consumer-tests-design.md).

Changes

  • package.yml: builds the four wheels as the release did, and is now the only place they're built. The version is PEP 440 (0.0.0.dev0 in CI). Each wheel is checked for both the generated bindings and the native library.

  • consumer-test/: run.sh installs into a new venv, either the built wheel with --no-index (local mode) or minigraf==<version> from PyPI (registry mode). It checks the installed version, then runs:

    • the README quick start;
    • the consumer contract: in memory, file-backed across a reopen, and MiniGrafError on invalid Datalog.

    readme_sync.py checks the README.

  • ci.yml: package, a consumer test on Linux x64 and arm64, macOS and Windows, and readme-sync.

  • release.yml:

    • The test job builds and consumer-tests the wheels at the release version.
    • publish uploads exactly those four wheels.
    • verify-published installs from PyPI on the four platforms, and opens a release-broken issue if it fails.

Change to the plan

The plan lowers the Linux floor to glibc 2.17 with maturin --zig --compatibility manylinux2014. I tried it locally. maturin reports success, but the wheel has no Python bindings (import minigraf fails). The wheel check now catches that. The floor stays at manylinux_2_34, and #9 tracks a container-based fix.

Verified

CI is green: the consumer test passes on all four platforms (Windows included).

Codex review raised two points, neither applicable. On Windows the script falls through to venv/Scripts/python.exe, which is correct; CI passes there. PEP 440 versions cannot contain the backslashes that would confuse the re.sub stamp.
Locally, the consumer test passes against a built wheel, and against 2.0.8 from PyPI (Python 2.0.8 is fine).

🤖 Generated with Claude Code

https://claude.ai/code/session_01PtCdzbJMSS1V8qEPaJ4jXz

- package.yml builds the four wheels as the release did (now the only
  place they are built) at the given PEP 440 version, and checks each
  holds both the generated bindings and the native library: maturin can
  build a wheel without the bindings and report success (#9).
- consumer-test/: run.sh installs the wheel into a new venv with
  --no-index (local) or minigraf==<version> from PyPI (registry), checks
  the installed version, then runs the README quick start and the
  consumer contract (in memory, file-backed reopen, MiniGrafError).
  readme_sync.py checks the README.
- ci.yml: package, consumer test on the four platforms, readme-sync.
- release.yml: the test job builds and consumer-tests the wheels at the
  release version; publish uploads exactly those; verify-published
  installs from PyPI on the four platforms and opens a release-broken
  issue on failure.

The plan's manylinux2014 floor via zig is not in: it produces wheels
without bindings (#9).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PtCdzbJMSS1V8qEPaJ4jXz
@adityamukho
adityamukho merged commit a6a07f4 into main Oct 21, 2026
13 checks passed
@adityamukho
adityamukho deleted the ci/consumer-tests branch October 21, 2026 04:10
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.

1 participant

0