Skip to content

pact-python/3.0.0a1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Aug 04:23
· 144 commits to main since this release
pact-python/3.0.0a1

[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