Skip to content

fix: pin deepdiff for compatibility test result comparison - #179

Open
yanw-bq wants to merge 1 commit into
mainfrom
fix/compat-pin-deepdiff
Open

yanw-bq wants to merge 1 commit into
mainfrom
fix/compat-pin-deepdiff

Conversation

@yanw-bq

@yanw-bq yanw-bq commented Oct 28, 2026

Copy link
Copy Markdown

Summary

Fix the macOS compatibility jobs failing at "Compare Test Results" by pinning deepdiff to a pure-Python release.

Description

The comparison steps ran pip3 install deepdiff, which now resolves to 9.1.0. That release added a required dependency on cachebox<6, a Rust/PyO3 extension. cachebox 5.x ships wheels only for Python 3.10–3.14 and builds with PyO3 0.27.1, which refuses to compile against Python 3.15.

On macOS, brew update && brew upgrade now installs Python 3.15, so pip builds cachebox from source and fails:

error: the configured Python version (3.15) is newer than PyO3's maximum supported version (3.14)

Linux and Windows still pass only because their runners use Python 3.12. They'll fail the same way once their default Python moves to 3.15. Upstream tracking: qlustered/deepdiff#601 and #645.

Changes:

  • Add test/compatibility/requirements.txt pinning deepdiff==9.0.0 (the newest release without cachebox, same major as the 9.1.0 the passing jobs use today) and its only dependency, orderly-set==5.5.0.
  • Install from that file in all 12 comparison steps of compatibility_test.yaml.

Why pin deepdiff rather than the Python version:

  • Pinning deepdiff removes the compiled dependency, so the step works on any Python from 3.10 up, on all three OSes. With Python pinned, deepdiff keeps floating, and the next release can break CI the same way.
  • DeepDiff(..., ignore_order=True) decides what passes, so pinning it stops results from changing with upstream releases.
  • Pinning Python would need an actions/setup-python step in every compatibility job, placed after brew upgrade, and another action to keep up to date.

Once deepdiff allows cachebox 6 (which ships cp315 wheels), the pin can be bumped. The comment in requirements.txt notes this.

Testing

  • On a local Python 3.15.2: pip install -r test/compatibility/requirements.txt installed with no native build, and compare_results.py exited 0 for matching results (rows in a different order) and exited 1 with a diff for a mismatch.
  • The Compatibility workflow runs on this branch's push and covers the macOS jobs on 3.15.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

deepdiff 9.1.0 added a dependency on cachebox, a Rust extension whose
5.x wheels stop at Python 3.14. The macOS runners' brew upgrade now
installs Python 3.15, so pip builds cachebox from source and fails on
PyO3's version check, failing both macOS compatibility jobs. Linux and
Windows will hit the same failure once their Python moves to 3.15.

Pin deepdiff 9.0.0, the newest pure-Python release, and its only
dependency orderly-set in test/compatibility/requirements.txt, and
install from it in all comparison steps. This also keeps the diff
semantics that decide pass/fail from changing with upstream releases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant