All notable changes to this project will be documented in this file.
- (v3) Defer setting pact broker source
- @JP-Ellis
- (v3) Add message relay and callback servers
- (v3) [breaking] Integrate message relay server
The provider name must be given as an argument of the
Verifier
constructor, instead of the first argument of theset_info
method. - (v3) [breaking] Add state handler server
set_state
has been renamed tostate_handler
. If using a URL still, thebody
keyword argument is now a required parameter. - (v3) [breaking] Further simplify message interface
message_handler
signature has been changed and expanded.
- Lint
- Lint
- Fix minor typos
- (blog) Add functional arguments post
- Fix url
- (ci) Pin full version
- Add yamlfix
- Remove docker files and scripts
- Update biome version
- Rename master to main
- (ci) Pin typos to version
- (ci) Pin minor version of checkout action
- Silence unset default fixture loop scope
- (ci) Replace pre-commit/action
- (v3) [breaking] Remove unnecessary underscores
The PactServer
__exit__
arguments no longer have leading underscores. This is typically handled by Python itself and therefore is unlikely to be a change for any user, unless the end user was calling the__exit__
method explicitly and using keyword arguments. - (v3) [breaking] Make util module private
pact.v3.util
has been renamed topact.v3._util
and is now private. - (ci) Upgrade macos-12 to macos-13
- (c) Specify full action version
- Add pytest-xdist
- (ci) Remove condition on examples
- Update tests to use new message/state fns
- Adapt examples to use function handlers
- Move matchers test out of examples
- Adjust tests based on new implementation
- Remove dead code
- Fix compatibility with 3.9, 3.10
- Add pytest-rerunfailures
- Fix windows compatibility
- (ci) Automerge renovate PRs
- @JP-Ellis
- (examples) Add post and delete
- Add matchable typevar
- Add strftime to java date format converter
- Add match aliases
- Add uuid matcher
- Add each key/value matchers
- Add ArrayContainsMatcher
- [breaking] Improve mismatch error
The
srv.mismatches
is changed from alist[dict[str, Any]]
to alist[Mismatch]
. - [breaking] Add Python 3.13, drop 3.8
Python 3.8 support dropped
- Missing typing arguments
- Incompatible override
- Kwargs typing
- Ensure matchers optionally use generators
- (examples) Do not overwrite pact file on every test
- (examples) Use wget for broker healthcheck
- (examples) Correct URL for healthcheck
- (examples) Do not publish postgres port
- Typing annotations
- ISO 8601 incompatibility
- Prefer
|
over Optional and Union - Rename matchers to match
- Split types into stub
- Matcher
- Rename generators to generate
- Generate module in style of match module
- Create pact.v3.types module
- Generators module
- Match module
- (blog) Don't use footnote numbers
- (blog) Add async message blog post
- Update example docs
- Add matcher module preamble
- Add module docstring
- (ci) Use pypi trusted publishing
- Fix typo in previous blog post
- (ci) Update docs on push to master
- Regroup ruff in renovate
- Add extra checks
- Added v3 http interaction examples
- (ci) Add codecov
- Refactor tests
- Prefer ABC over ABCMeta
- Re-organise match module
- Split stdlib and 3rd party types
- Silence a few mypy complaints
- Add pyi to editor config
- Add test for full ISO 8601 date
- Minor improvements to match.matcher
- Align generator with matcher
- Remove MatchableT
- Get test to run again
- Add boolean alias
- Fix compatibility with Python <= 3.9
- Fix match tests
- Remove unused generalisation
- Use matchers in v3 examples
- Use native Python datetime object
- Adjust tests to use new Mismatch class
- Disable wait
- (ci) Switch to uv fully
- (ci) Disable docs workflow on tags
- (ci) Tweak build conditions
- Disable pypy builds
- @JP-Ellis
- @individual-it
- @valkolovos
- @amit828as
- (ffi) Upgrade ffi 0.4.21
- (v3) Add enum type aliases
- (v3) Improve exception types
- (v3) Remove deprecated messages iterator
- (v3) Implement message verification
- (v3) Add async message provider
- (ffi) Upgrade ffi to 0.4.22
- (ffi) Use
with_binary_body
- (v3) New interaction iterators
- (tests) Make
_add_body
a method of Body - (tests) Move InteractionDefinition in own module
- (CONTRIBUTING.md) Update installation steps
- Add additional code capabilities
- Add blog post about rust ffi
- (ffi) Properly document exceptions
- Minor refinements
- (example) Clarify purpose of fs interface
- Group renovate updates
- Use uv to install packages
- (v3) Re-export Pact and Verifier at root
- (ffi) Disable private usage lint
- (ffi) Implement AsynchronousMessage
- (ffi) Implement Generator
- (ffi) Implement MatchingRule
- (ffi) Remove old message and message handle
- (ffi) Implement MessageContents
- (ffi) Implement MessageMetadataPair and Iterator
- (ffi) Implement ProviderState and related
- (ffi) Implement SynchronousHttp
- (ffi) Implement SynchronousMessage
- (ffi) Bump links to 0.4.21
- (tests) Implement v3/v4 consumer message compatibility suite
- (examples) Add v3 message consumer examples
- Update GitHub templates
- (examples) Add asynchronous message
- (tests) Replace stderr with logger
- (tests) Increase message shown by
truncate
- Minor typing fix
- (tests) Significant refactor of InteractionDefinition
- (tests) Add v4 message provider compatibility suite
- (tests) Skip windows tests
- (ci) Disable windows arm wheels
- Fix macos-latest
- Narrow when docs are built and published
- @JP-Ellis
- @valkolovos
- @qmg-drettie
- (v3) Add verifier class
- (v3) Add verbose mismatches
- Upgrade FFI to 0.4.19
- Delay pytest 8.1
- (v3) Allow optional publish options
- (v3) Strip embedded user/password from urls
- (tests) Move parse_headers/matching_rules out of class
- Remove relative imports
- Setup mkdocs
- Update README
- Rework mkdocs-gen-files scripts
- Ignore private python modules
- Overhaul readme
- Update v3 docs
- Fix links to docs/
- Add social image support
- Add blog post about v2.2
- (ci) Remove cirrus
- (ffi) Implement verifier handle
- (v3) Add basic verifier tests
- Unskip tests
- Fix missed s/test/devel-test/
- (v3) Improve body representation
- (test) Improve test logging
- (tests) Update log formatting
- (test) Add state to interaction definition
- (test) Adapt InteractionDefinition for provider
- (test) Add serialize function
- (test) Add provider utilities
- (tests) Add v1 provider compatibility suite
- (tests) Fixes for lower python versions
- (tests) Re-enable warning check
- (tests) Improve logging from provider
- (test) Strip authentication from url
- (tests) Use long-lived pact broker
- (test) Apply a temporary diff to compatibility suite
- (test) Refactor v1 bdd steps
- (test) Fix misspelling in step name
- (tests) Improve logging
- (tests) Allow multiple states with parameters
- (tests) Implement http provider compatibility suite
- (tests) Fix compatibility with py38
- (docs) Update emoji indices/generators
- (docs) Fix typos
- (docs) Enforce fenced code blocks
- (docs) Minor fixes in examples/
- Remove redundant all
- (docs) Update examples/readme.md
- (ci) Update environment variables
- (docs) Only publish from master
- (test) Disable failing tests on windows
- @JP-Ellis
- @JosephBJoyce
- Avoid wheel bloat
- Fix repository link typo
- Fix links to
CONTRIBUTING.md
- (ci) Fix pypy before-build
- (ci) Pin os to older versions
- (ci) Set osx deployment target
- (ci) Replace hatch clean with rm
- (ci) Update concurrency group
- (ci) Adapt before-build for windows
- @JP-Ellis
- (v3) Add v3.ffi module
- (v3) Implement pact class
- (v3) Implement interaction methods
- (ffi) Add OwnedString class
- (v3) Implement Pact Handle methods
- (v3) Add mock server mismatches
- (v3) Implement server log methods
- Add python 3.12 support
- (v3) Add with_matching_rules
- Determine version from vcs
- (v3) Upgrade ffi to 0.4.18
- (v3) Add specification attribute to pacts
- Add support for musllinux_aarch64
- (ci) Add missing environment
- (test) Ignore internal deprecation warnings
- (v3) Unconventional repr implementation
- (v3) Add next implementation
- (example) Unknown action
- (example) Publish_verification_results typo
- (example) Publish message pact
- (v3) Rename
with_binary_file
- (v3) Incorrect arg order
- Clean pact interactions on exception
- (v3) Split interactions into modules
- Fix pre-commit lints
- [breaking] Refactor constants
The public functions within the constants module have been removed. If you previously used them, please make use of the constants. For example, instead of
pact.constants.broker_client_exe()
usepact.constants.BROKER_CLIENT_PATH
instead.
- (v3) Update ffi documentation
- (readme) Fix links to examples
- Add git submodule init
- Fix typos
- Add future deprecation warnings
- (ci) Disable on draft pull requests
- (ci) Separate concurrency groups for builds
- Fix hatch test scripts
- (test) Add pytest options in root
- (build) Update packaging to build ffi
- (tests) Add ruff.toml for tests directory
- (ci) Update build targets
- (v3) Create ffi.py
- (tests) Remove empty file
- (v3) Add str and repr to enums
- (test) Move pytest cli args definition
- Add label sync
- (test) Automatically generated xml coverage
- Enable lints fully
- (pre-commit) Add mypy
- (ffi) Add typing
- (labels) Fix incorrect label alias
- Exclude python 3.12
- Fix wheel builds
- (ci) Revise pypi publishing
- (tests) Reduce log verbosity
- Fix ruff lints
- (tests) Add compatibility suite as submodule
- (ruff) Disable TD002
- Allow None content type
- (tests) Implement consumer v1 feature
- (ci) Checkout submodules
- (ci) Fix examples testing
- (ci) Clone submodules in Cirrus
- (tests) Automatic submodule init
- Fix lints
- Update submodule
- (ci) Set hatch to be verbose
- (ci) Add test conclusion step
- (ci) Breaking changes with for artifacts
- (ci) Re-enable pypy builds on Windows
- (dev) Replace black with ruff
- (dev) Add markdownlint pre-commit
- (ci) Fix pypy linux builds
- (test/v3) Move bdd steps into shared module
- (test/v3) Add v2 consumer compatibility suite
- (tests) Add v3 consumer compatibility suite
- Update metadata
- (tests) Move the_pact_file_for_the_test_is_generated to share util
- (tests) Add v4 http consumer compatibility suite
- (ci) Speed up wheels building on prs
- (ci) Add caching
- Migrate from flat to src layout
- (docs) Update changelog
- (ci) Automate release process
- (v3) Add warning on pact.v3 import
- (ci) Remove check of wheels
- (ci) Speed up build pipeline
- (ci) Another build pipeline fix
- (ci) Typo
- Add g++ to cirrus linux image
- @JP-Ellis
- @YOU54F
- @dryobates
- @filipsnastins
- @neringaalt
- (example) Simplify docker-compose
- Bump pact standalone to 2.0.7
- (github) Fix typo in template
- (ci) Pypi publish
- Add pre-commit hooks and editorconfig
- Rewrite contributing.md
- Add issue and pr templates
- Incorporate suggestions from @YOU54F
- Add pact-foundation triage automation
- Update pre-commit config
- [breaking] Migrate to pyproject.toml and hatch
Drop support for Python 3.6 and 3.7
- (ci) Migrate cicd to hatch
- (example) Migrate consumer example
- (example) Migrate fastapi provider example
- (example) Migrate flask provider example
- (example) Update readme
- (example) Migrate message pact example
- (ci) Split tests examples and lints
- (example) Avoid changing python path
- Address pr comments
- (gitignore) Update from upstream templates
- V2.1.0
- @JP-Ellis
- @mefellows
- Update standalone to 2.0.3
- Update MANIFEST file to note 2.0.2 standalone
- (examples) Update docker setup for non linux os
- Releasing version 2.0.1
- @YOU54F
- Describe classifiers and python version for pypi package
- (test) Add docker images for Python 3.9-3.11 for testing purposes
- Add matchers for ISO 8601 date format
- Support arm64 osx/linux
- Support x86 and x86_64 windows
- Use pact-ruby-standalone 2.0.0 release
- Actualize doc on how to make contributions
- Remove dead code
- Fix cors parameter not doing anything
- Add missing newline/linefeed
- Add Python 3.11 to CONTRIBUTING.md
- Fix link for GitHub badge
- Fix instruction to build python 3.11 image
- Paraphrase the instructions for running the tests
- Rephrase the instructions for running the tests
- Reformat releasing documentation
- V2.0.1 (pact-2.0.1) - pact-ruby-standalone
- Releasing version 1.7.0
- Do not add merge commits to the change log
- (docs) Update provider verifier options table
- (docs) Correct table
- (docs) Improve table alignment and abs links
- Update to 2.0.2 pact-ruby-standalone
- Releasing version 2.0.0
- Correct links in contributing manual
- Improve commit messages guide
- Add python 3.11 to test matrix
- Use compatible dependency versions for Python 3.6
- Use a single Dockerfile, providing args for the Python version instead of multiple files
- Test arm64 on cirrus-ci / test win/osx on gh
- Skip 3.6 python arm64 failing in cirrus, passing locally with cirrus run
- (deps) Bump flask from 2.2.2 to 2.2.5 in /examples/message
- (deps) Bump flask from 2.2.2 to 2.2.5 in /examples/flask_provider
- (deps-dev) Bump flask from 2.2.2 to 2.2.5
- @YOU54F
- @sergeyklay
- @Lukas-dev-threads
- @elliottmurray
- @mikegeeves
- Enhance provider states for pact-message (#322)
- Requirements_dev.txt to reduce vulnerabilities (#317)
- Setup security issue (#318)
- Add workflow to create a jira issue for pactflow team when smartbear-supported label added to github issue
- /s/Pactflow/PactFlow
- Releasing version 1.7.0
- @elliottmurray
- @YOU54F
- @nsfrias
- @bethesque
- @mefellows
- Support publish pact with branch (#300)
- Support verify with branch (#302)
- Update docs to reflect usage for native Python
- (test) Fix consumer message test (#301)
- Releasing version 1.6.0
- Correct download logic when installing. Add a helper target to setup a pyenv via make (#297)
- @elliottmurray
- @YOU54F
- @B3nnyL
- @mikegeeves
- @jnfang
- Update PACT_STANDALONE_VERSION to 1.88.83
- Releasing version 1.5.2
- @elliottmurray
- @YOU54F
- Message_pact -> with_metadata() updated to accept term (#289)
- (examples-consumer) Add pip install requirements to the consumer… (#291)
- (examples) Move shared fixtures to a common folder so they can b… (#280)
- Releasing version 1.5.1
- @elliottmurray
- @sunsathish88
- @mikegeeves
- No include pending (#284)
- Releasing version 1.5.0
- Python36-support-removed (#283)
- @elliottmurray
- @abgora
- @mikegeeves
- (matcher) Allow bytes type in from_term function (#281)
- (consumer) Ensure a description is provided for all interactions
- Docs/examples (#273)
- (examples-fastapi) Tidy FastAPI example, making consistent with Flask (#274)
- Flake8 config to ignore direnv
- Releasing version 1.4.6
- @elliottmurray
- @joshua-badger
- @mikegeeves
- Update standalone to 1.88.77 to fix Let's Encrypt CA issue
- Releasing version 1.4.5
- @mefellows
- (ruby) Update ruby standalone to support disabling SSL verification via an environment variable
- Releasing version 1.4.4
- @mefellows
- @m-aciek
- Added support for message provider using pact broker (#257)
- Releasing version 1.4.3
- @elliottmurray
- @pulphix
- Bundle Ruby standalones into dist artifact. (#256)
- Releasing version 1.4.2
- @elliottmurray
- @taj-p
- Make uvicorn versions over 0.14
- Releasing version 1.4.1
- @elliottmurray
- Added support for message provider (#251)
- Issue originating from snyk with requests and urllib
- (snyk) Update fastapi
- Releasing version 1.4.0
- @elliottmurray
- @pulphix
- Change default from empty string to empty list (#235)
- (ruby) Update ruby standalen
- Releasing version 1.3.9
- @elliottmurray
- @tephe
- Fix datetime serialization issues in Format
- Example uses date matcher
- Releasing version 1.3.8
- @elliottmurray
- @DawoudSheraz
- (broker) Token added to verify steps
- Releasing version 1.3.7
- @elliottmurray
- Docker/py36.Dockerfile to reduce vulnerabilities
- Docker/py38.Dockerfile to reduce vulnerabilities
- Docker/py37.Dockerfile to reduce vulnerabilities
- Publish verification results was wrong (#222)
- Releasing version 1.3.6
- Revert docker36 back
- @elliottmurray
- @snyk-bot
- (publish) Fixing the fix. Pact Python api uses only publish_version and ensures it follows that
- Releasing version 1.3.5
- @elliottmurray
- Verifier should now publish
- Releasing version 1.3.4
- @elliottmurray
- Pass pact_dir to publish()
- Releasing version 1.3.3
- @elliottmurray
- @
- Ensure path is passed to broker and allow running from root rather than test file
- Remove pacts from examples
- Move from nose to pytests as we are now 3.6+
- Update ci stuff
- More clean up
- Wip on using test containers on examples
- Spiking testcontainers
- Added some docs about how to use the e2e example
- Releasing version 1.3.2
- @elliottmurray
- Introduced and renamed specification version
- Releasing version 1.3.1
- @elliottmurray
- Initial interface
- Add MessageConsumer
- Single message flow
- Create basic tests for single pact message
- Update MessageConsumer and tests
- Add constants test
- Add pact-message integration
- Add pact-message integration test
- Add more test
- Update message pact tests
- Change dummy handler to a message handler
- Update handler to handle error exceptions
- Move publish function to broker class
- Update message handler to be independent of pact
- Address PR comments
- Send to cli pact_files with the pact_dir in their path
- Add e2e example test into ci back in
- Remove publish fn for now
- Linting
- Add missing conftest
- Try different way to mock
- Flake8 warning
- Revert changes to quotes
- Improve test coverage
- Few more tests to improve coverage
- Add readme for message consumer
- Update readme
- Create external dummy handler in test
- Update message handler condition based on content
- Remove mock and check generated json file
- Consider publish to broker with no pact_dir argument
- Remove python35 and 34 and add 39
- Fix bad merge
- Add missing files in src
- Add generate_pact_test
- Remove log_dir, refactor test
- Flake8 revert
- Remove test param for provider
- Flake8, clean up deadcode
- Pydocstyle
- Add missing import
- Releasing version 1.3.0
- Pr not triggering workflow
- @elliottmurray
- @williaminfante
- @tuan-pham
- @cdambo
- Not creating wheel
- Releasing version 1.2.11
- @elliottmurray
- Fix small typo in
with_request
doc string - (example) Created example and have relative imports kinda working. Provider not working as it cant find one of our urls
- Typo in pact-verifier help string: PUT -> POST for --provider-states-setup-url
- Added badge to README
- (upgrade) Upgrade python version to 3.8
- Wqshell script to run flask in examples
- Added run test to travis
- Releasing version 1.2.10
- (github actions) Added Github Actions configuration for build and test
- Removed Travis CI configuration
- Add publishing actions
- @elliottmurray
- @matthewbalvanz-wf
- @noelslice
- @hstoebel
- (verifier) Allow setting consumer_version_selectors on Verifier
- Fix flaky tests using OrderedDict
- Fix linting issues
- Fix one more linting issue
- Releasing version 1.2.9
- @elliottmurray
- @thatguysimon
- (verifier) Support include-wip-pacts-since in CLI
- Fix command building bug
- Extract input validation in call_verify out into a dedicated method
- Fix linting
- (examples) Tweak to readme
- (examples) Changed provider example to use atexit
- Releasing version 1.2.8
- @elliottmurray
- @thatguysimon
- (verifier) Headers not propagated properly
- (examples) Removed manual publish to broker
- Releasing version 1.2.7
- @elliottmurray
- (verifier) Allow to use unauthenticated brokers
- Releasing version 1.2.6
- @elliottmurray
- @copalco
- (verifier) Add enable_pending argument handling in verify wrapper
- (verifier) Pass enable_pending flag in Verifier's methods
- (verifier) Support --enable-pending flag in CLI
- (verifier) Remove superfluous option from verify CLI command
- (verifier) Remove superfluous verbose mentions
- (verifier) Add enable_pending to signature of verify methods
- Bump mock to 3.0.5
- Releasing version 1.2.5
- (pre-commit) Add commitizen to pre-commit configuration
- @elliottmurray
- @
- @m-aciek
- (cli) Add consumer-version-selector option
- Update README.md with relevant option documentation
- (cli) Improve cli help grammar
- Releasing version 1.2.4
- @elliottmurray
- @alecgerona
- Update standalone to 1.88.3
- Script now uses gh over hub
- Release script updates version automatically now
- Fix release script
- Releasing version 1.2.3
- @elliottmurray
- Added env vars for broker verify
- Https svg
- Releasing version 1.2.2
- @elliottmurray
- Custom headers had a typo
- Example code verifier
- Merged 2 examples
- Releasing version 1.2.1
- @elliottmurray
- Create beta verifier class and api
- Fixing up tests and examples and code for provider class
- Change to head from master
- Update links for rendering page correctly in docs.pact.io
- Update stackoverflow link
- Contributing md updated for commit messages
- Add workflow to trigger pact docs update when markdown files change
- Added semantic yml for git messages
- Releasing version 1.2.0
- Releasing with fix version v1.2.0
- Add check for commit messages
- Tweak to regex
- Temporary fix for testing purposes of messages:
- Remove commit message as it is breaking releases
- @elliottmurray
- @bethesque
- Update standalone to 1.86.0
- Removed some files and moved a few things around
- @elliottmurray
- @bethesque
- @hstoebel
- Update standalone to 1.84.0
- Update RELEASING.md
- Add script to create a PR to update the pact-ruby-standalone version
- @pyasi
- @elliottmurray
- @bethesque
- @
- Support using environment variables to set pact broker configuration
- Update to pact-ruby-standalone-1.79.0
- @bethesque
- @matthewbalvanz-wf
- @elliottmurray
- @mikahjc
- @mefellows
- @dlmiddlecote
- @ejrb
- (docs) Update contact information
- @matthewbalvanz-wf
- @mefellows
- Remove reference to v3 pact in provider-states-setup-url
- @matthewbalvanz-wf
- @bethesque
- @