Pact FFI Tracking Issue #396
Labels
area:v3
Relating to the pact.v3 module
smartbear-supported
This issue is supported by SmartBear
type:feature
New feature
type:tracking
Tracks a more complicated task's progress across a number of other issues
📝 Background
Pact Python at present makes use of the Ruby executables. The main functionality of the Ruby executables has been replaced by a core library written in Rust (pact-foundation/pact-reference). This library exposes a foreign function interface which other languages can leverage without the need to re-implement a lot of the logic. The core library helps to maintain parity across the different clients and helps with the adoption of new features.
This change will introduce some breaking changes where needed, but it will be done in a staged manner to give everyone the opportunity to migrate.
🚧 Stage 1 (from
v2.2
)pact.v3
and can be used alongside the existing library. During this stage, no guarantees are made about the stability of thepact.v3
module.PendingDeprecationWarning
warnings when it is used (if these warnings are enabled).🛠️ Stage 2 (from
v2.3
, tbc)pact.v3
is considered generally stable and users are encouraged to start migrating to it.DeprecationWarning
warnings when it is used to help raise awareness of the upcoming change.🚀 Stage 3 (from
v3
)pact.v3
module is renamed topact
pact.v3
should be able to do as/pact.v3/pact/
and have everything work.pact.v2
scope.v2
of Pact Python will not work againstv3
of Pact Python.v2
library will need to update their code to use the newpact.v2
module. As/pact/pact.v2/
should be sufficient.pact.v2
module will be considered deprecated, and will eventually be removed in a future release. No new features and only critical bug fixes will be made to this part of the library.✅ Tasks
PendingDeprecationWarning
to the existing library #397Pact
#418Interaction
#419v1/http_consumer.feature
#473v2/http_consumer.feature
#474v3/http_consumer.feature
#475v4/http_consumer.feature
#476v1/http_provider.feature
#469v2/http_provider.feature
#470v3/http_provider.feature
#471v4/http_provider.feature
#472v3/message_consumer.feature
v4/message_consumer.feature
v3/message_provider.feature
v4/message_provider.feature
Matcher
interface #746v3/http_matching.feature
#759v3/matching_rules.feature
v4/matching_rules.feature
Generator
interface #747v3/http_generators.feature
v3/generators.feature
v4/generators.feature
This may be covered in HTTP consumer/provider implementation above
v4/synchronous_message_consumer.feature
v4/v4.feature
pact.v3
, releasev2.3
of Pact PythonPendingDeprecationWarning
withDeprecationWarning
v3
of Pact Pythonv3
🔗 Prior/Related Work
This change has been a long time coming:
Feat/ffi - load full ffi namespace, initial ffi verifier #357
Feat/ffi consumer #366
Feature: PactV3 / VerifierV3 / MessageProvider interface (powered by pact_ffi) #367
These PRs are all quite large, especially the last with 177 commits and 6.7k lines added. These PRs form the prior attempts to migrate Pact Python to make use of Rust library. While I would have loved to take Feature: PactV3 / VerifierV3 / MessageProvider interface (powered by pact_ffi) #367 on and add to it, I think there's too much in there for a single PR.
Having said that, a lot of the work done will be re-used in the tasks above.
Replace ruby plugin #234
Migrating away from the Ruby executable will resolve this issue.
Implement FFI interface for Provider #243
Supplanted by this issue
Feat/ffi provider #245
feat: ffi verifier cli #265
Additional (and very early) PRs with some work on implementing the FFI.
Contributors wanted: support V3+ of the pact specification (via the pact rust core) #88
A very early issue detailing the need to implement the FFI core.
The text was updated successfully, but these errors were encountered: