Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pact FFI Tracking Issue #396

Open
25 of 48 tasks
JP-Ellis opened this issue Sep 27, 2023 · 2 comments
Open
25 of 48 tasks

Pact FFI Tracking Issue #396

JP-Ellis opened this issue Sep 27, 2023 · 2 comments
Assignees
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

Comments

@JP-Ellis
Copy link
Contributor

JP-Ellis commented Sep 27, 2023

📝 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.

⤴️ Migration Plan

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)

  • The main Pact Python library remains the same. Bugs and minor features will continue to be added to the existing library, but no new major features will be added as the focus will be on the new library.
  • The new library is exposed within pact.v3 and can be used alongside the existing library. During this stage, no guarantees are made about the stability of the pact.v3 module.
  • Users are not recommended to use the new library in any production critical code at this stage, but are encouraged to try it out and provide feedback.
  • The existing library will raise PendingDeprecationWarning warnings when it is used (if these warnings are enabled).

🛠️ Stage 2 (from v2.3, tbc)

  • The library within pact.v3 is considered generally stable and users are encouraged to start migrating to it.
  • A detailed migration guide will be provided.
  • The existing library will raise DeprecationWarning warnings when it is used to help raise awareness of the upcoming change.
  • This stage will likely last a few months to give everyone the opportunity to migrate.

🚀 Stage 3 (from v3)

  • The pact.v3 module is renamed to pact
    • People who have previously migrated to pact.v3 should be able to do a s/pact.v3/pact/ and have everything work.
    • If the previous stage identifies any breaking changes as necessary, they will be made at this point and a detailed migration guide will be provided.
  • The existing library is moved to the pact.v2 scope.
    • ‼️ This will be a very major and breaking change. Previous code running against v2 of Pact Python will not work against v3 of Pact Python.
    • Users still wanting to use the v2 library will need to update their code to use the new pact.v2 module. A s/pact/pact.v2/ should be sufficient.
    • The 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

🔗 Prior/Related Work

This change has been a long time coming:

@JP-Ellis JP-Ellis added the smartbear-supported This issue is supported by SmartBear label Sep 27, 2023
@JP-Ellis JP-Ellis self-assigned this Sep 27, 2023
@github-actions
Copy link

👋 Hi! The 'smartbear-supported' label has just been added to this issue, which will create an internal tracking ticket in PactFlow's Jira (PACT-1353). We will use this to prioritise and assign a team member to this task. All activity will be public on this ticket. For now, sit tight and we'll update this ticket once we have more information on the next steps.

See our documentation for more information.

Copy link

canny bot commented Jun 26, 2024

This issue has been linked to a Canny post: Pact V3 Specification for Python 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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
Projects
Status: 🛠️ In Progress
Development

No branches or pull requests

1 participant