Skip to content

chore(cli): remove pact-python-cli - #1723

Merged
JP-Ellis merged 2 commits into
mainfrom
remove-cli
Oct 15, 2026
Merged

JP-Ellis merged 2 commits into
mainfrom
remove-cli

Conversation

@JP-Ellis

@JP-Ellis JP-Ellis commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

📝 Summary

Removes pact-python-cli from this repository. The package continues on PyPI. Its future releases will be built in pact-foundation/pact-cli from the Rust pact binary, under a new version epoch (1!…). 2.6.4.0, released via #1609, is the last version built here.

This PR has two commits:

  1. test: get the Pact CLI for the compatibility suite from mise
    • The compatibility suite used pact_cli.BROKER_CLIENT_PATH (the Ruby pact-broker) to publish pacts.
    • It now runs pact broker publish, which accepts the same flags.
    • A new root mise.toml pins github:pact-foundation/pact-cli.
    • The test job installs it with jdx/mise-action.
    • CONTRIBUTING.md tells contributors to run mise install.
  2. chore(cli): remove pact-python-cli
    • Deletes the package and release-cli.yml.
    • Removes the CLI test, format, lint and typecheck steps, the cli entry in scripts/release.py, the docs-site pages, the uv workspace member, and the prek.toml and cliff.toml path references.
    • docs/consumer.md, docs/releases.md and three Verifier docstrings now refer to pact broker subcommands.

🔥 Motivation

Alternatives considered:

  • Keep the package here with a Rust-only, epoch-1 build. This keeps the build matrix in this repository, and it needs release-script support for epochs and for tag names containing !.
  • Retire the package entirely. This leaves existing pip install pact-python-cli users without upgrades.

🔨 Test Plan

  • ruff, ruff format and mypy (examples/, src/, tests/, scripts/) pass.
  • The core test suite passes with pact from mise on PATH: 528 passed, 14 skipped.
  • uv lock succeeds and drops pact-python-cli.
  • mise's GitHub backend picked the correct asset (pact-aarch64-apple-darwin.tar.xz).
  • The four broker scenarios only run with --container, which CI doesn't pass. To cover them, I ran the helper's exact pact broker publish invocation against the suite's broker container, and the broker served the published pact.

Those --container scenarios currently hang for an unrelated reason. pactfoundation/pact-broker:latest no longer ships curl, so the healthcheck in tests/compatibility_suite/util/pact-broker.yml never passes. That fix will go in a separate PR.

🔗 Related issues/PRs

Stack: #1721 → #1722 → #1723.

  • Merge only after pact-python-cli 2.6.4.0 is on PyPI. This PR deletes the release workflow.
  • After merging, close any leftover release/pact-python-cli PR and branch.
  • Follow-ups:
    • The pact-cli PR that publishes pact-python-cli under the epoch.
    • Managing Python, uv and hatch through mise.

@JP-Ellis
JP-Ellis added this pull request to stack #1724 October 14, 2026 21:57
@JP-Ellis JP-Ellis changed the title remove cli chore(cli): remove pact-python-cli Oct 14, 2026
@JP-Ellis
JP-Ellis force-pushed the remove-cli branch 2 times, most recently from 02fe0a1 to 128ff38 Compare October 14, 2026 22:31
Base automatically changed from remove-pact-v2 to main October 14, 2026 23:05
The compatibility suite publishes pacts to a broker through
`pact_cli.BROKER_CLIENT_PATH`, the Ruby `pact-broker` bundled by the
workspace's pact-python-cli. That package is leaving this repository, so
the suite now runs `pact broker publish` from the Rust Pact CLI, which
accepts the same flags.

`mise.toml` pins the CLI through mise's GitHub backend, and the test job
installs it with `jdx/mise-action`.

Assisted-by: Claude Code:claude-opus-5-5
`pact-python-cli` bundled the Ruby standalone for `pact.v2`, which is
gone. Its future releases repackage the Rust Pact CLI and are published
from pact-foundation/pact-cli, alongside the binaries they wrap.
2.6.4.0 is the last release built here.

Removes the package, its release workflow, its CI steps, the `cli`
entry in `scripts/release.py`, its docs pages, and its uv workspace
membership. User-facing docs now point at the `pact broker` subcommand
of the Pact CLI.

Assisted-by: Claude Code:claude-opus-5-5
@JP-Ellis
JP-Ellis marked this pull request as ready for review October 14, 2026 23:08
@codecov

codecov Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68%. Comparing base (ea3ad2d) to head (cb91029).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@         Coverage Diff          @@
##           main   #1723   +/-   ##
====================================
- Coverage    69%     68%   -1%     
====================================
  Files        22      20    -2     
  Lines      3355    3260   -95     
====================================
- Hits       2333    2247   -86     
+ Misses     1022    1013    -9     
Flag Coverage Δ
examples 52% <ø> (ø)
tests 67% <ø> (-1%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@JP-Ellis
JP-Ellis merged commit 0d51107 into main Oct 15, 2026
43 of 44 checks passed
@JP-Ellis
JP-Ellis deleted the remove-cli branch October 15, 2026 00:07
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