Kevin Chang
10/18/2025, 4:27 PMPatrick
11/11/2025, 9:24 AMAntonio Blandón Torres
11/20/2025, 8:06 PMconsumer_versions. I'm trying to migrate from 2.0.0 to 3.1.0 but I haven't been able to reach it.Antonio Blandón Torres
11/24/2025, 5:39 PMpact: Pact = Consumer(
name=self.consumer_name,
version=self.pact_version_manager.get_publish_version(),
branch=self.pact_version_manager.get_branch_version(),
tags=self.tags,
).has_pact_with(
Provider(self.provider_name),
publish_to_broker=True,
broker_base_url=self.pact_settings.get_host(),
broker_username=self.pact_settings.get_username(),
broker_password=self.pact_settings.get_password(),
pact_dir="./pacts",
)
Thanks in advance.GitHub
12/02/2025, 11:51 PMMartin Konir
12/03/2025, 2:22 PMpact-python-cli library in a Docker image based on Alpine Linux (specifically, I’m using python:3.13-alpine3.22).
When I try to run pact-broker command in such container, I get the following error:
/app # pact-broker
/usr/local/lib/python3.13/site-packages/pact_cli/lib/ruby/bin/ruby: exec: line 6: /usr/local/lib/python3.13/site-packages/pact_cli/lib/ruby/bin.real/ruby: not found
My understanding is that the pact-python-cli package contains Ruby binaries compiled for glibc but also provides musl-compatible binaries - I found a musllinux wheel on PyPI. From the source distributions (image below), it seems like it should work on Alpine
Has anyone successfully run pact-python-cli on Alpine? Any tips or workarounds would be appreciated.Joshua Ellis
12/04/2025, 11:51 PMKevin Chang
12/05/2025, 4:50 PMgenerate.provider_state("${akey}") in the consumer side test, how do I specify what ${akey} is on the provider/verifier side?Patrick
12/09/2025, 7:25 AMGitHub
12/10/2025, 8:02 AM• (ffi) Upgrade lib to 0.4.28 ### 🐛 Bug Fixes • Allow none in with_metadata • (ffi) Make version dynamic ### 📚 Documentation • Update changelog for pact-python-ffi/0.4.22.0 • (ffi) Fix old references to pact.v3.ffi • V3 review • Update git cliff configuration • Update changelog for pact-python-ffi/0.4.28.0 • Update changelog for pact-python-ffi/0.4.28.1 • Fix CI badge links • Update changelogs ### ⚙️ Miscellaneous Tasks • (ffi) Cleanup build script • Ignore extensions • Split out dependencies and tests • Support pre and post release tags • Remove reference count checks • Store hatch venv in .venv • Fix sub-project git cliff config • (ffi) Clean up data directory • [breaking] Drop python 3.9 add 3.14is removed, and to be replaced bypact.v3.ffi. That is,pact_ffishould be replaced bypact.v3.ffi.$fn.pact_ffi.$fn
Python 3.9 is no longer supported.• Update non-compliant docstrings and types • Upgrade pymdownx extensions • Fix json schema url • Remove ruff sub-configs • Switch to versioningit ### Contributors • @JP-Ellis ## Pull Requests ## What's Changed • docs: update changelog by @JP-Ellis in #1377 • chore(deps): update python docker tag to v3.14 by @renovate[bot] in #1375 • chore(deps): update python:3.14-slim docker digest to 4451352 by @renovate[bot] in #1378 • chore(deps): update python:3.14-slim docker digest to b823ded by @renovate[bot] in #1379 • docs: fix internal references by @JP-Ellis in #1381 • chore(ci): use strict docs building by @JP-Ellis in #1382 • docs: add v3 blog post by @JP-Ellis in #1380 • docs: fix partial url highlight by @JP-Ellis in #1383 • chore(deps): update ruff to v0.14.8 by @renovate[bot] in #1384 • docs: remove redundant header from blog post by @JP-Ellis in #1385 • chore(deps): update peter-evans/create-pull-request action to v7.0.11 by @renovate[bot] in #1386 • chore(deps): update pre-commit hook davidanson/markdownlint-cli2 to v0.20.0 by @renovate[bot] in #1387 • chore(deps): update astral-sh/setup-uv action to v7.1.5 by @renovate[bot] in #1388 • chore(deps): update taiki-e/install-action action to v2.62.63 by @renovate[bot] in #1389 • chore(deps): update python:3.14-slim docker digest to fd2aff3 by @renovate[bot] in #1390 • feat(cli): update to 2.5 by @JP-Ellis in #1394 • fix(cli)!: remove 32-bit wheels by @JP-Ellis in #1398 • chore(deps): update codecov/codecov-action action to v5.5.2 by @renovate[bot] in #1392 • chore(deps): update peter-evans/create-pull-request action to v8 by @renovate[bot] in #1393 • chore: switch to versioningit by @JP-Ellis in #1397 Full Changelog: pact-python/3.2.0...pact-python-cli/2.5.7.0 pact-foundation/pact-python
GitHub
12/10/2025, 8:12 AMBenjamin Aduo
03/20/2026, 9:50 AMNorbert Gulácsi
03/25/2026, 12:17 PMGitHub
04/16/2026, 11:07 PMGitHub
04/17/2026, 5:48 AMcreate_mock_server (use create_mock_server_for_transport instead)
• create_mock_server_for_pact (use create_mock_server_for_pact_and_transport instead)
• verify
• verifier_cli_args
• Added:
• verifier_set_follow_redirects
• using_plugin_with_delay
• Allow iteration over all interactions
• Implement the Pact class
• Add handle to pointer conversion
• Add casting interaction to subtypes
• Add iterator over all interactions
🐛 Bug Fixes
• Incorrect sync http deletion
📚 Documentation
• Update changelogs
⚙️ Miscellaneous Tasks
• Update non-compliant docstrings and types
• Upgrade pymdownx extensions
• Fix json schema url
• Remove ruff sub-configs
• Switch to versioningit
• Ensure pact interactions get deleted
• Add ruff ignores for tests
• Refactor ffi tests
• Remove versioningit, switch to static version in pyproject.toml
• Minor update to cliff config
• Replace taplo with tombi
Contributors
• @JP-Ellis
• @Nikhil172913832
pact-foundation/pact-pythonGitHub
04/17/2026, 6:04 AMpact.xml module provides builder functions for constructing XML request and response bodies with embedded Pact matchers. Use xml.element() to describe the XML structure and attach matchers where needed, then wrap the result with xml.body() before passing it to `with_body(..., content_type="application/xml")`:
from pact import match, xml
response = xml.body(
xml.element(
"user",
xml.element("id", match.int(123)),
xml.element("name", match.str("Alice")),
)
)
interaction.with_body(response, content_type="application/xml")
Repeating elements are supported via .each(min=1, examples=2) on any XmlElement. Attributes (including namespace declarations) can be passed via the attrs keyword argument.
• Allow iteration over all interactions
• Use common PactInteraction type
• Can toggle follow redirects
• Allow plugin loading delay
📚 Documentation
• Update changelog for pact-python/3.2.1
• (examples) Add http+xml example
• Update xml example to use new matcher
• (examples) Add service consumer/provider HTTP example
⚙️ Miscellaneous Tasks
• (ci) Re-enable 3.14 tests
• Upgrade stable python version
• Add .worktrees to .gitignore
• (ci) Reduce ci usage
• (ci) Downgrade stable python version
• (ci) Remove unused workflows
• Remove versioningit, switch to static version in pyproject.toml
• Add release script
• Minor update to cliff config
• Authenticate gh api calls
• Remove release label
• Replace taplo with tombi
• (ci) Have wheel target 310
• (ci) Avoid most of CI on draft PRs
• Fix hatch env workspaces
• Remove connect test
� Other
• Fix coverage upload overwrite and add example coverage
Contributors
• @JP-Ellis
• @adityagiri3600
• @benaduo
• @Nikhil172913832
pact-foundation/pact-pythonGitHub
04/22/2026, 7:09 AMGitHub
05/04/2026, 9:39 AMadd_interaction_reference
pact-foundation/pact-pythonGitHub
05/04/2026, 9:39 AMGitHub
06/02/2026, 6:54 AMGitHub
07/08/2026, 2:39 AMdelvewheel version. See #1640.
Contributors
pact-foundation/pact-pythonGitHub
09/17/2026, 10:51 AMGitHub
09/17/2026, 10:51 AMGitHub
10/14/2026, 10:29 PMGitHub
10/15/2026, 1:57 AM• Update bindings to Pact FFI 0.5.10 📚 Documentation • (ffi) Remove duplicated docstring sections ⚙️ Miscellaneous Tasks • Require python 3.11 or newer Contributors • @JP-Ellis pact-foundation/pact-python, thepact.v2extra and thecompat-v2console script are removed. Migrate to thepact-verifierAPI (see MIGRATION.md) or pinpact.pact-python<4
GitHub
10/15/2026, 2:04 AM🐛 Bug Fixes • (cli) Use renamed macOS standalone assets 📚 Documentation • Add pact-python-cli 1!x migration guide • (blog) Fix functional arguments examples • (blog) Fix asynchronous message examples • (blog) Update rust ffi post to pact-python-ffi • (blog) Fix v3 release examples • (blog) Fix typo in sneak peek post • (blog) Fix grammar in functional arguments note • (blog) Note the removal of pact.v2 in v4 🧪 Testing • Get the Pact CLI for the compatibility suite from mise 🛠️ Miscellaneous Tasks • (ci) Standardize renovate config • Require python 3.11 or newer • (release) Pact-python-cli v2.6.4.0 • (cli) Remove pact-python-cli Contributors • @JP-Ellis pact-foundation/pact-python, thepact.v2extra and thecompat-v2console script are removed. Migrate to thepact-verifierAPI (see MIGRATION.md) or pinpact.pact-python<4
GitHub
10/16/2026, 6:23 AMpact attributes bound under lazy imports
🚜 Refactor
• (verifier) [breaking] Accept only str URLs
• [breaking] Replace yarl.URL with a str-based URLandVerifier.state_handleraccept onlyVerifier.add_sourceURLs, and raisestrfor a `yarl.URL`; passTypeErrorinstead.str(url)is now an alias ofpact.types.StateHandlerUrl.str
⚡ Performance • Write the version file at build time • Import the message and state servers on demand 🧪 Testing • Run the suite with lazy Pact imports on Python 3.15 Contributors • @JP-Ellis pact-foundation/pact-pythonandPactServer.urlreturnPactServer / str, apact.types.URLsubclass that supportsstrand the/,scheme,hostandportattributes. Otherpathmethods, such asyarl.URL, are gone; pass query parameters to the HTTP client instead.with_queryis no longer a dependency.yarl
GitHub
10/21/2026, 12:48 AMffi and __version__ bound under lazy imports
⚡ Performance
• (ffi) Write the version file at build time
⚙️ Miscellaneous Tasks
• (ffi) Download pact_ffi from the dist-built release
Contributors
• @JP-Ellis
pact-foundation/pact-pythonGitHub
10/23/2026, 1:20 AMGitHub
10/23/2026, 1:22 AM