Skip to content

Releases: pact-foundation/pact-python

pact-python/3.1.0

07 Oct 05:32
pact-python/3.1.0
2fd2cd0

Choose a tag to compare

🐛 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

Pull Requests

What's Changed

Full Changelog: pact-python/3.0.1...pact-python/3.1.0

pact-python/3.0.1

06 Oct 06:25
pact-python/3.0.1

Choose a tag to compare

📚 Documentation

  • Update changelog for pact-python/3.0.0

⚙️ Miscellaneous Tasks

  • Drop cffi dependency
  • (ci) Fix publish step

Contributors

Pull Requests

What's Changed

Full Changelog: pact-python/3.0.0...pact-python/3.0.1

pact-python/3.0.0

06 Oct 01:54
pact-python/3.0.0

Choose a tag to compare

This is a complete rework from version 2.x and will require manual changes. The below change log reflects only the changes since the 3.0.0a1 release only, and the work leading up to 3.0.0 has been spread across a number of releases.

Please refer to the migration guide for a complete guide on how to migrate to 3.x. The consumer and provider docs have also been update to use the new interface.

🚀 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

Pull Requests

What's Changed

Read more

pact-python-ffi/0.4.28.2

06 Oct 06:27
pact-python-ffi/0.4.28.2

Choose a tag to compare

📚 Documentation

  • Update changelog for pact-python-ffi/0.4.28.1
  • Fix CI badge links

⚙️ Miscellaneous Tasks

  • [breaking] Drop python 3.9 add 3.14

    Python 3.9 is no longer supported.

Contributors

Pull Requests

  • 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] in #1248
  • chore(deps): update ruff to v0.13.2 by @renovate[bot] in #1249
  • chore: move mascot file out of root by @JP-Ellis in #1250
  • chore: update uuid format names by @JP-Ellis in #1251
  • chore(deps): update taiki-e/install-action action to v2.62.13 by @renovate[bot] in #1252
  • chore(deps): update astral-sh/setup-uv action to v6.8.0 by @renovate[bot] in #1254
  • chore: remove logger from hatch_build by @JP-Ellis in #1256
  • docs: fix CI badge links by @JP-Ellis in #1257
  • chore(deps): update pre-commit hook crate-ci/typos to v1.37.1 by @renovate[bot] in #1255
  • chore(deps): update ruff to v0.13.3 by @renovate[bot] in #1258
  • chore: fix import warning by @JP-Ellis in #1259
  • chore: make Unset falsey by @JP-Ellis in #1260
  • feat!: default to v4 specification by @JP-Ellis in #1261
  • chore(deps): update pre-commit hook biomejs/pre-commit to v2.2.5 by @renovate[bot] in #1262
  • chore(deps): update pre-commit hook crate-ci/typos to v1.37.2 by @renovate[bot] in #1264
  • chore(deps): update softprops/action-gh-release action to v2.3.4 by @renovate[bot] in #1265
  • docs: update for v3 and add migration guide by @JP-Ellis in #1253
  • chore(deps): update taiki-e/install-action action to v2.62.20 by @renovate[bot] in #1268
  • chore!: drop python 3.9 add 3.14 by @JP-Ellis in #1263
  • 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-ffi/0.4.28.1...pact-python-ffi/0.4.28.2

pact-python-ffi/0.4.28.1

29 Aug 03:21
pact-python-ffi/0.4.28.1

Choose a tag to compare

🐛 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

Pull Requests

Full Changelog: pact-python-ffi/0.4.28.0...pact-python-ffi/0.4.28.1

pact-python-ffi/0.4.28.0

26 Aug 10:26
pact-python-ffi/0.4.28.0

Choose a tag to compare

🚀 Features

  • (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

📚 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

⚙️ 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

Contributors

Pull Requests

New Contributors

Full Changelog: pact-python-ffi/0.4.22.0...pact-python-ffi/0.4.28.0

pact-python/3.0.0a1

12 Aug 04:23
pact-python/3.0.0a1

Choose a tag to compare

pact-python/3.0.0a1 Pre-release
Pre-release

[pact-python/3.0.0a1] 2025-08-12

🚀 Features

  • Create pact-python-cli package
  • (cli) Build abi-agnostic wheels
  • (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.

  • [breaking] Prepare for v3 release

    This prepares for version 3. Pact Python v2 will be still accessible under pact.v2 and all imports should be appropriate renamed. Everyone is encouraged to migrate to Pact Python v3.

  • [breaking] Simplify given

    The signature of Interaction.given has been updated. The following changes are required: - Change given("state", key="user_id", value=123) to given("state", user_id=123). This can take an arbitrary number of keyword arguments. If the key is not a valid Python keyword argument, use the dictionary input below. - Change given("state", parameters={"user_id": 123}) to given("state", {"user_id": 123}).

  • [breaking] Deserialize metadata values

    As the metadata values are now deserialised, the type of the metadata values may change. For example, setting metadata user_id=123 will now pass {"user_id": 123} through to the function handler. Previously, this would have been {"user_id": "123"}.

🐛 Bug Fixes

  • Matcher type variance
  • With metadata function signature
  • [breaking] Use correct datetime default format

    If you relied on the previous default (undocumented) behaviour, prefer specifying the format explicitly now: match.datetime(regex="%Y-%m-%dT%H:%M:%S.%f%z").

  • Handle empty state callback
  • (verifier) [breaking] Propagate branch

    If a branch is set through either set_publish_options or provider_branch, the value will be saved and used as a default for both in subsequent calls.

🚜 Refactor

  • Functional state handler

📚 Documentation

  • Update changelog for v2.3.3
  • (blog) Fix v3 references
  • Fix v3 references
  • V3 review
  • Update git cliff configuration

⚙️ Miscellaneous Tasks

  • Update pre-commit hooks
  • Use the new pact_cli package
  • Remove packaging of pact cli
  • (ci) Incorporate tests of pact cli
  • (ci) Use new pact-python/* tags
  • (ci) Add build cli pipeline
  • Exclude hatch_build from mypy checks
  • (ci) Narrow token permissions
  • Remove macosx deployment target
  • (ci) Fix cli publish permissions
  • Properly extract tag version
  • Update gitignore
  • (ci) Fix core package build
  • Split out dependencies and tests
  • (ci) Update labels
  • (ci) Fix labels
  • (tests) Re-organise tests
  • Fix bad copy-paste in tests
  • Log exceptions from apply_args
  • Improve logging from apply_args
  • (examples) Start examples overhaul
  • (ci) Use new examples
  • Update protobuf examples
  • (ci) Cancel ci on PRs
  • Add vscode settings and extensions
  • Add envrc
  • Replace yamlfix with yamlfmt
  • Remove deptry config
  • Support pre and post release tags
  • Fix typo

Contributors

Pull Requests

New Contributors

Full Changelog: pact-python-ffi/0.4.22.0...pact-python/3.0.0a1

pact-python-ffi/0.4.22.0

29 Jul 10:29
pact-python-ffi/0.4.22.0

Choose a tag to compare

🚀 Features

  • (ffi) Add standalone ffi package

⚙️ Miscellaneous Tasks

  • Create cli and ffi packages

Contributors

Pull Requests

  • chore(deps): update astral-sh/setup-uv action to v6.4.2 by @renovate[bot] in #1123
  • chore: update gitignore by @JP-Ellis in #1124
  • docs: update cli changelog by @JP-Ellis in #1122
  • chore(deps): update astral-sh/setup-uv action to v6.4.3 by @renovate[bot] in #1125
  • docs(cli): update readme and ensure it is on pypi by @JP-Ellis in #1126
  • chore(deps): update pactfoundation/pact-broker:latest docker digest to 05b05a1 by @renovate[bot] in #1127
  • chore(deps): update taiki-e/install-action action to v2.57.1 by @renovate[bot] in #1130
  • feat(ffi): add standalone ffi package by @JP-Ellis in #1129

Full Changelog: pact-python-cli/2.4.26.2...pact-python-ffi/0.4.22.0

pact-python-cli/2.4.26.2

23 Jul 11:31
pact-python-cli/2.4.26.2

Choose a tag to compare

[pact-python-cli/2.4.26.2] 2025-07-23

🚀 Features

  • (cli) Build abi-agnostic wheels

Contributors

Pull Requests

Full Changelog: pact-python-cli/2.4.26.1...pact-python-cli/2.4.26.2

pact-python-cli/2.4.26.1

22 Jul 06:17
pact-python-cli/2.4.26.1

Choose a tag to compare

⚙️ Miscellaneous Tasks

  • Properly extract tag version

Contributors

Pull Requests

Full Changelog: v2.3.3...pact-python-cli/2.4.26.1