https://pact.io logo
Join Slack
Powered by
# pact-python
  • g

    GitHub

    08/29/2025, 3:21 AM
    Release - pact-python-ffi/0.4.28.1 New release published by github-actions[bot] ## [pact-python-ffi/0.4.28.1] 2025-08-28 ### 🐛 Bug Fixes • (ffi) Make version dynamic ### 📚 Documentation • Update changelog for pact-python-ffi/0.4.28.0 ### ⚙️ Miscellaneous Tasks • Fix sub-project git cliff config • (ffi) Clean up data directory ### Contributors • @JP-Ellis ## Pull Requests ## What's Changed • docs: update ffi changelog by @JP-Ellis in #1207 • chore: hide import from traceback by @JP-Ellis in #1208 • chore(ffi): clean up data directory by @JP-Ellis in #1209 Full Changelog: pact-python-ffi/0.4.28.0...pact-python-ffi/0.4.28.1 pact-foundation/pact-python
    🎉 1
  • p

    Paul

    09/12/2025, 5:17 AM
    @Paul has left the channel
  • e

    Elson Ho

    09/18/2025, 10:08 AM
    Hi, As part of learning, I am converting the PactFlow CI/CD workshop from JavaScript to Python and using the Pact Python v3 verifier. In Pact JS, the verifier accepts
    pactUrls
    so you can verify directly from a URL. What will be the equivalent in Pact Python? Any pointers or examples would be appreciated, Thank you. Workshop step: https://docs.pactflow.io/docs/workshops/ci-cd/workshop/implementing-the-provider-changes Workshop repo reference: https://github.com/pactflow/example-provider/blob/master/src/product/product.consumerChange.pact.test.js#L32 Pact JS core repo reference: https://github.com/pact-foundation/pact-js-core/blob/master/src/verifier/types.ts#L31
    nice 7771 1
    y
    j
    • 3
    • 9
  • g

    GitHub

    10/06/2025, 1:54 AM
    Release - pact-python/3.0.0 New release published by github-actions[bot] ## [pact-python/3.0.0] 2025-10-06 ### 🚀 Features • [breaking] Default to v4 specification
    Pact instances default to version 4 of the Pact specification (previously used version 3). This should be mostly backwards compatible, but can be reverted by using
    with_specification("V3")
    .
    • Populate broker source from env ### 🚜 Refactor • (ci) If statement ### 🎨 Styling • (tests) Add sections ### 📚 Documentation • Update changelog for pact-python/3.0.0a1 • Add mascot • Give mascot outline • Set mascot width and height • (examples) Add requests and fastapi • Generate llms.txt • Update mkdocs material features • Fix CI badge links • Update matcher docs • Improve matchers • Improve generators • Update for v3 and add migration guide ### ⚙️ Miscellaneous Tasks • (ci) Remove spelling check • (examples) Minor improvements • Store hatch venv in .venv • Update mismatch repr • Save mismatches before exiting the server • (examples) Remove old http example • Fix sub-project git cliff config • Hide import from traceback • Fix flask integer coercion • Add v3 matching rules test • Add v4 matching rules tests • (ci) Add publish as completion dependency • (tests) Add generators to interaction defn • (tests) Test v3 generators • (test) Add v4 generators tests • Re-add pytest rerunfailrure • (tests) Add v3 http generators • Prefer prek over pre-commit • Disable reruns in vscode • (ci) Fix prek caching • (ci) Generate junit xml files • Move mascot file out of root • Update uuid format names • Fix import warning • Make Unset falsey • [breaking] Rename abstract matcher class
    The abstract
    pact.match.Matcher
    class has been renamed to
    pact.match.AbstractMatcher
    .
    • [breaking] Rename abstract generator
    The abstract
    pact.generate.Generator
    class has been renamed to
    pact.generate.AbstractGenerator
    .
    • Clarify explanation of given • [breaking] Drop python 3.9 add 3.14
    Python 3.9 is no longer supported.
    • (ci) Disable 3.14 tests using pydantic ### Contributors • @JP-Ellis ## Pull Requests ## What's Changed • docs: update ffi changelog by @JP-Ellis in #1212 • chore(deps): update ruff to v0.12.11 by @renovate[bot] in #1214 • chore(deps): update pre-commit hook crate-ci/typos to v1.35.6 by @renovate[bot] in #1213 • chore(ci): add publish as completion dependency by @JP-Ellis in #1215 • chore(tests): add generators to interaction defn by @JP-Ellis in #1217 • chore: re-add pytest rerunfailrure by @JP-Ellis in #1219 • chore(deps): update astral-sh/setup-uv action to v6.6.1 by @renovate[bot] in #1218 • chore(deps): update pre-commit hook crate-ci/typos to v1.36.1 by @renovate[bot] in #1216 • chore(tests): add v3 http generators by @JP-Ellis in #1221 • chore(deps): update codecov/codecov-action action to v5.5.1 by @renovate[bot] in #1223 • chore(deps): update ruff to v0.12.12 by @renovate[bot] in #1224 • chore(deps): update pre-commit hook crate-ci/typos to v1.36.2 by @renovate[bot] in #1225 • chore(deps): update pypa/gh-action-pypi-publish action to v1.13.0 by @renovate[bot] in #1220 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.2.3 by @renovate[bot] in #1226 • chore(deps): update softprops/action-gh-release action to v2.3.3 by @renovate[bot] in #1227 • chore(deps): update taiki-e/install-action action to v2.59.1 by @renovate[bot] in #1228 • chore(deps): update dependency cffi to v2 by @renovate[bot] in #1229 • chore(deps): update dependency pytest-cov to v7 by @renovate[bot] in #1230 • chore: prefer prek over pre-commit by @JP-Ellis in #1232 • chore: disable reruns in vscode by @JP-Ellis in #1233 • chore(deps): update ruff to v0.13.0 by @renovate[bot] in #1231 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.2.4 by @renovate[bot] in #1234 • chore(deps): update dependency mypy to v1.18.1 by @renovate[bot] in #1235 • chore(deps): update astral-sh/setup-uv action to v6.7.0 by @renovate[bot] in #1236 • chore(deps): update taiki-e/install-action action to v2.61.3 by @renovate[bot] in #1237 • docs: generate llms.txt by @JP-Ellis in #1244 • docs: update mkdocs material features by @JP-Ellis in #1243 • chore(cli): use new standalone repo path by @JP-Ellis in #1241 • chore(deps): update dependency mypy to v1.18.2 by @renovate[bot] in #1239 • chore(deps): update taiki-e/install-action action to v2.62.5 by @renovate[bot] in #1240 • chore(deps): update ruff to v0.13.1 by @renovate[bot] in #1238 • chore(deps): update pypa/cibuildwheel action to v3.2.0 by @renovate[bot] in #1242 • chore(ci): fix prek caching by @JP-Ellis in #1246 • chore(ci): generate junit xml files by @JP-Ellis in #1247 • chore(deps): update actions/cache action to v4.3.0 by @renovate[bot] in #1245 • chore(deps): update pre-commit hook crate-ci/typos to v1.36.3 by @renovate[bot] … pact-foundation/pact-python
    🚀 2
  • g

    GitHub

    10/06/2025, 6:25 AM
    Release - pact-python/3.0.1 New release published by github-actions[bot] Warning No changelog generated. To be filled in. ## Pull Requests ## What's Changed • docs: update changelog by @JP-Ellis in #1269 • chore: drop cffi dependency by @JP-Ellis in #1270 • chore(ci): fix publish step by @JP-Ellis in #1271 Full Changelog: pact-python/3.0.0...pact-python/3.0.1 pact-foundation/pact-python
  • g

    GitHub

    10/06/2025, 6:27 AM
    Release - pact-python-ffi/0.4.28.2 New release published by github-actions[bot] Warning No changelog generated. To be filled in. ## Pull Requests ## What's Changed • docs: update changelog by @JP-Ellis in #1269 • chore: drop cffi dependency by @JP-Ellis in #1270 • chore(ci): fix publish step by @JP-Ellis in #1271 Full Changelog: pact-python/3.0.0...pact-python-ffi/0.4.28.2 pact-foundation/pact-python
  • g

    GitHub

    10/07/2025, 5:32 AM
    Release - pact-python/3.1.0 New release published by github-actions[bot] ## [pact-python/3.1.0] 2025-10-07 ### 🐛 Bug Fixes • [breaking] Replace v2 extra with compat-v2
    Installing Pact Python with v2 compatibility requires
    pip install 'pact-python[compat-v2]'
    , and the old
    pip install 'pact-python[v2]'
    is no longer supported.
    ### 📚 Documentation • Update changelogs ### ⚙️ Miscellaneous Tasks • (ci) Add area-core label • (ci) Fix labels workflow permissions • Remove no longer relevant todo • (docs) Use normalized project url keys ### Contributors • @JP-Ellis ## Pull Requests ## What's Changed • docs: update ffi changelog by @JP-Ellis in #1273 • chore(ci): add area-core label by @JP-Ellis in #1276 • chore(ci): fix labels workflow permissions by @JP-Ellis in #1277 • chore(deps): update pre-commit hook crate-ci/typos to v1.38.0 by @renovate[bot] in #1278 • chore: remove no longer relevant todo by @JP-Ellis in #1281 • chore(docs): use normalized project url keys by @JP-Ellis in #1282 • fix!: replace v2 extra with compat-v2 by @JP-Ellis in #1280 • chore(deps): update softprops/action-gh-release action to v2.4.0 by @renovate[bot] in #1279 Full Changelog: pact-python/3.0.1...pact-python/3.1.0 pact-foundation/pact-python
  • d

    David Mason

    10/09/2025, 8:22 AM
    Hi! Since the release of pact v3, and upgrading our imports from
    pact.v3
    to just
    pact
    we are starting to see can-i-merge failures saying that there are no versions of any of our pacts. We're using pactflow, but looking at the ui of pactflow shows everything is greena nd OK, can-i-merge success. So I suspect this is either a pact-python issue, or a skill issue. The only thing is we've not changed anything other than
    s/pact.v3/pact/
    and have been running pact v3 for months without this problem... I'm going to try blindly re-running the tests first, maybe overnight the issue has fixed itself!
    m
    s
    j
    • 4
    • 12
  • k

    Kieran McCarthy

    10/11/2025, 10:49 AM
    @Kieran McCarthy has left the channel
  • k

    Kevin Chang

    10/18/2025, 4:27 PM
    Hi! I'm trying to get started with pact-python, and having issues with the verifier making requests successfully. I was wondering whether there is a way to enable or view logging of the stuff that happens after we leave the python libraries in order to get a more specific error than I'm getting here:
    j
    • 2
    • 4
  • p

    Patrick

    11/11/2025, 9:24 AM
    Hi, we are migrating our contract test from pact-python version 2.3.3 to 3.1.0 (in these tests we already use V3) and we are getting an error when we run our tests against our pact-broker (2.116.0). We receive a Fatal Python error: Segmentation fault when we are trying to connect to our pact broker. When I run the same test against a local docker instance from Pact Broker (also 2.116.0) the test succeeds without any errors. The only difference between these two pact-brokers is that we use "https" for the pact-broker in our network, while I use "http" for my local docker instance. I don't know if this is the reason for this error, but it's something I like to share with you 😉. I also got some debug log info for you and a colleague of my also got some stack trace info for you. Hopefully you can help us with this error. Debug log info Fatal Python error: Segmentation fault Thread 0x000074ef42ffd640 (most recent call first): File "/location/miniconda3/envs/python312/lib/python3.12/selectors.py", line 415 in select File "/location/miniconda3/envs/python312/lib/python3.12/socketserver.py", line 235 in serve_forever File "/location/miniconda3/envs/python312/lib/python3.12/threading.py", line 1012 in run File "/location/miniconda3/envs/python312/lib/python3.12/threading.py", line 1075 in _bootstrap_inner File "/location/miniconda3/envs/python312/lib/python3.12/threading.py", line 1032 in _bootstrap Thread 0x000074ef437fe640 (most recent call first): File "/location/miniconda3/envs/python312/lib/python3.12/asyncio/runners.py", line 118 in run File "/location/miniconda3/envs/python312/lib/python3.12/asyncio/runners.py", line 195 in run File "/location/git/project/venv/lib/python3.12/site-packages/uvicorn/server.py", line 67 in run File "/location/git/project/venv/lib/python3.12/site-packages/uvicorn/main.py", line 593 in run File "/location/miniconda3/envs/python312/lib/python3.12/threading.py", line 1012 in run File "/location/miniconda3/envs/python312/lib/python3.12/threading.py", line 1075 in _bootstrap_inner File "/location/miniconda3/envs/python312/lib/python3.12/threading.py", line 1032 in _bootstrap Current thread 0x000074ef4bd3d440 (most recent call first): File "/location/git/project/venv/lib/python3.12/site-packages/pact_ffi/__init__.py", line 7316 in verifier_execute File "/location/git/project/venv/lib/python3.12/site-packages/pact/verifier.py", line 1313 in verify File "/location/git/project/tests/contract_tests/test_pact_backend.py", line 63 in test_provider_with_broker File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/python.py", line 157 in pytest_pyfunc_call File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_callers.py", line 121 in _multicall File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120 in _hookexec File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512 in call File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/python.py", line 1671 in runtest File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/runner.py", line 178 in pytest_runtest_call File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_callers.py", line 121 in _multicall File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120 in _hookexec File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512 in call File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/runner.py", line 246 in <lambda> File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/runner.py", line 344 in from_call File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/runner.py", line 245 in call_and_report File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/runner.py", line 136 in runtestprotocol File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/runner.py", line 117 in pytest_runtest_protocol File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_callers.py", line 121 in _multicall File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120 in _hookexec File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512 in call File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/main.py", line 367 in pytest_runtestloop File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_callers.py", line 121 in _multicall File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120 in _hookexec File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512 in call File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/main.py", line 343 in _main File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/main.py", line 289 in wrap_session File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/main.py", line 336 in pytest_cmdline_main File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_callers.py", line 121 in _multicall File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120 in _hookexec File "/location/git/project/venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 512 in call File "/location/git/project/venv/lib/python3.12/site-packages/_pytest/config/__init__.py", line 175 in main File "/location/.vscode-server/extensions/ms-python.python-2025.16.0-linux-x64/python_files/vscode_pytest/run_pytest_script.py", line 64 in <module>
    m
    j
    • 3
    • 9
  • a

    Antonio Blandón Torres

    11/20/2025, 8:06 PM
    Hello, someone could share me an example using
    consumer_versions
    . I'm trying to migrate from 2.0.0 to 3.1.0 but I haven't been able to reach it.
    y
    j
    • 3
    • 6
  • a

    Antonio Blandón Torres

    11/24/2025, 5:39 PM
    Hello everyone. I'd like to know if we have a method to publish contract programmatically in Pact V3. I have the below code in Pact V2, but I haven't find out an example to do the same in V3.
    Copy code
    pact: 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.
    y
    • 2
    • 1
  • g

    GitHub

    12/02/2025, 11:51 PM
    Release - pact-python/3.2.0 New release published by github-actions[bot] ## [pact-python/3.2.0] 2025-12-02 ### 🚀 Features • Add consumer_version method • Add content type matcher • Add 'and' matcher ### 🐛 Bug Fixes • Use correct matching rule serialisation ### 📚 Documentation • Update changelog for pact-python/3.1.0 • Add agents.md • Update configuration • Add logging documentation • Add multipart/form-data matching rule example • Add consumer_version ### ⚙️ Miscellaneous Tasks • Add llm instructions • Update non-compliant docstrings and types • Upgrade pymdownx extensions • Set telemetry environment variables • (docs) Api docs link on pact-python site is case sensitive • Fix json schema url • (tests) Fix skipped tests on windows • (ci) Update macos runners • Remove unused pytest config • Remove ruff sub-configs • Switch to markdownlint-cli2 • Rerun flaky tests • Remove unused function • Don't except AssertionError • (devcontainer) Add multi-arch development container support ### Contributors • @Nikhil172913832 • @JP-Ellis • @YOU54F • @Copilot ## Pull Requests ## What's Changed • docs: update changelog by @JP-Ellis in #1283 • chore(deps): update astral-sh/setup-uv action to v7 by @renovate[bot] in #1286 • chore(deps): update pre-commit hook crate-ci/typos to v1.38.1 by @renovate[bot] in #1284 • chore(deps): update ruff to v0.14.0 by @renovate[bot] in #1285 • chore: add llm instructions by @JP-Ellis in #1287 • chore(deps): update softprops/action-gh-release action to v2.4.1 by @renovate[bot] in #1288 • chore(deps): update pypa/cibuildwheel action to v3.2.1 by @renovate[bot] in #1289 • chore(deps): update astral-sh/setup-uv action to v7.1.0 by @renovate[bot] in #1290 • chore(deps): update taiki-e/install-action action to v2.62.28 by @renovate[bot] in #1291 • docs: add agents.md by @JP-Ellis in #1292 • chore: update non-compliant docstrings and types by @JP-Ellis in #1293 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.2.6 by @renovate[bot] in #1294 • chore(deps): update ruff to v0.14.1 by @renovate[bot] in #1296 • chore(deps): update pre-commit hook google/yamlfmt to v0.18.1 by @renovate[bot] in #1295 • docs: update configuration by @JP-Ellis in #1297 • chore(deps): update pre-commit hook google/yamlfmt to v0.19.0 by @renovate[bot] in #1298 • chore(deps): update astral-sh/setup-uv action to v7.1.1 by @renovate[bot] in #1299 • chore(deps): update taiki-e/install-action action to v2.62.33 by @renovate[bot] in #1300 • Document how to configure FFI logging by @Copilot in #1303 • chore(deps): update pre-commit hook google/yamlfmt to v0.20.0 by @renovate[bot] in #1301 • chore: upgrade pymdownx extensions by @JP-Ellis in #1304 • chore(deps): update ruff to v0.14.2 by @renovate[bot] in #1306 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.2.7 by @renovate[bot] in #1305 • chore(deps): update github artifact actions (major) by @renovate[bot] in #1307 • chore(deps): update astral-sh/setup-uv action to v7.1.2 by @renovate[bot] in #1309 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.3.0 by @renovate[bot] in #1308 • chore(deps): update taiki-e/install-action action to v2.62.38 by @renovate[bot] in #1310 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.3.1 by @renovate[bot] in #1311 • feat: set telemetry environment variables for Pact CLI execution by @Nikhil172913832 in #1312 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.3.2 by @renovate[bot] in #1313 • chore(deps): update ruff to v0.14.3 by @renovate[bot] in #1314 • chore(deps): update pre-commit hook crate-ci/typos to v1.39.0 by @renovate[bot] in #1317 • chore(docs): api docs link on pact-python site is case sensitive by @YOU54F in #1316 • chore(deps): update taiki-e/install-action action to v2.62.45 by @renovate[bot] in #1318 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.3.3 by @renovate[bot] in #1320 • chore(deps): update softprops/action-gh-release action to v2.4.2 by @renovate[bot] in #1324 • chore: fix json schema url by @JP-Ellis in #1326 • chore(deps): update pre-commit hook biomejs/pre-commit to v2.3.4 by @renovate[bot] in #1321 • chore(deps): update ruff to v0.14.4 by @renovate[bot] in #1322 • chore(deps): update taiki-e/install-action action to v2.62.49 by @renovate[bot] in #1325 • chore(deps): update astral-sh/setup-uv action to v7.1.3 by @renovate[… pact-foundation/pact-python
    smooth parrot 1
  • m

    Martin Konir

    12/03/2025, 2:22 PM
    Hi @Yousaf Nabi (pactflow.io) and @Matt (pactflow.io / pact-js / pact-go) ralph wave I wanted to ask if anyone has experience using the
    pact-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:
    Copy code
    /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.
    y
    m
    • 3
    • 5
  • j

    Joshua Ellis

    12/04/2025, 11:51 PM
    Hello blobwave I wrote a blog post for the Pact Python v3 announcement, and shared it over in the r/Python subreddit. Feel free to upvote and share more broadly 🚀
    🎉 2
  • k

    Kevin Chang

    12/05/2025, 4:50 PM
    Hi, sorry for the stupid question, but when I use e.g.
    generate.provider_state("${akey}")
    in the consumer side test, how do I specify what
    ${akey}
    is on the provider/verifier side?
  • p

    Patrick

    12/09/2025, 7:25 AM
    Hi, One of our teams want to update to pact-python 3.2.0, but after updating their pyproject.toml to pact-python[compat-v2]==3.2.0" (there are still using v2 because of issue 1333 ) they receive the following error. We are using the latest version of pact-python-cli (2.4.26.2) but in this version these changes aren't available yet. Did we forget something or is this a issue in version 3.2.0?? Traceback: from pact.v2.verifier import Verifier ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ venv/lib/python3.12/site-packages/pact/v2/__init__.py4 in <module> from pact.v2.broker import Broker venv/lib/python3.12/site-packages/pact/v2/broker.py9 in <module> from pact_cli import _telemetry_env E ImportError: cannot import name '_telemetry_env' from 'pact_cli' (/home/user/git/app/venv/lib/python3.12/site-packages/pact_cli/__init__.py)
    j
    • 2
    • 4
  • g

    GitHub

    12/10/2025, 8:02 AM
    Release - pact-python-cli/2.5.7.0 New release published by github-actions[bot] ## [pact-python-cli/2.5.7.0] 2025-12-10 ### 🚀 Features • (ffi) Add standalone ffi package • (v3) [breaking] Remove pact.v3.ffi module
    pact.v3.ffi
    is removed, and to be replaced by
    pact_ffi
    . That is,
    pact.v3.ffi.$fn
    should be replaced by
    pact_ffi.$fn
    .
    • (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.14
    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
  • g

    GitHub

    12/10/2025, 8:12 AM
    Release - pact-python/3.2.1 New release published by github-actions[bot] ## [pact-python/3.2.1] 2025-12-10 ### 📚 Documentation • Update changelog for pact-python/3.2.0 • Fix internal references • Add v3 blog post • Fix partial url highlight • Fix tooltips in code • Remove redundant header from blog post ### ⚙️ Miscellaneous Tasks • (ci) Use strict docs building • Switch to versioningit ### Contributors • @JP-Ellis ## Pull Requests ## What's Changed • fix(deps): update minimum cli version by @JP-Ellis in #1396 Full Changelog: pact-python-cli/2.5.7.0...pact-python/3.2.1 pact-foundation/pact-python
  • b

    Benjamin Aduo

    03/20/2026, 9:50 AM
    Hey everyone 👋 I've just opened a PR (#1507) to address issue #372 — adding a complete XML contract testing example to the repo. It covers: A consumer using xml.etree.ElementTree to parse XML responses A FastAPI provider returning application/xml 2 consumer tests + 1 provider verification test, all passing locally Would love a review from any maintainers when you get a chance. PR: https://github.com/pact-foundation/pact-python/pull/1507 Thanks!
    thankyou 1
    j
    • 2
    • 2
  • n

    Norbert Gulácsi

    03/25/2026, 12:17 PM
    @Norbert Gulácsi has left the channel
  • g

    GitHub

    04/16/2026, 11:07 PM
    Release - pact-python-cli/2.6.0.0 New release published by github-actions[bot] 🐛 Bug Fixes • Bundle both ruby and rust CLIs 📚 Documentation • Update changelog for pact-python-cli/2.5.7.0 ⚙️ Miscellaneous Tasks • Remove versioningit, switch to static version in pyproject.toml • Minor update to cliff config • Replace taplo with tombi • Allow windows arm cli builds to proceed Contributors • @JP-Ellis pact-foundation/pact-python
  • g

    GitHub

    04/17/2026, 5:48 AM
    Release - pact-python-ffi/0.5.3.0 New release published by github-actions[bot] 🚀 Features • Removed: •
    create_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-python
  • g

    GitHub

    04/17/2026, 6:04 AM
    Release - pact-python/3.3.0 New release published by github-actions[bot] 🚀 Features • Add xml matching A new
    pact.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-python
    🚀 4
  • g

    GitHub

    04/22/2026, 7:09 AM
    Release - pact-python/3.3.1 New release published by github-actions[bot] 🐛 Bug Fixes • Avoid rare port clash ⚙️ Miscellaneous Tasks • Simplify find_free_port • Replace pre-commit with prek Contributors • @JP-Ellis pact-foundation/pact-python
  • g

    GitHub

    05/04/2026, 9:39 AM
    Release - pact-python-ffi/0.5.4.0 New release published by github-actions[bot] • Added
    add_interaction_reference
    pact-foundation/pact-python
    🎉 1
  • g

    GitHub

    05/04/2026, 9:39 AM
    Release - pact-python/3.4.0 New release published by github-actions[bot] 🚀 Features • Add external reference dsl Contributors • @rholshausen • @JP-Ellis pact-foundation/pact-python
  • g

    GitHub

    06/02/2026, 6:54 AM
    Release - pact-python-cli/2.6.0.1 New release published by github-actions[bot] 🚀 Features • Bump Rust CLI to 0.10.2. See Pact CLI releases for details. Contributors • @JP-Ellis pact-foundation/pact-python
  • g

    GitHub

    07/08/2026, 2:39 AM
    Release - pact-python-ffi/0.5.4.1 New release published by github-actions[bot] • No changes within the FFI; manual bump to create a new wheel with latest
    delvewheel
    version. See #1640. Contributors pact-foundation/pact-python
    🙌 1