Skip to content

[CHORE](ci) Test dep floors via lowest-direct matrix#505

Merged
Victor Schappert (vcschapp) merged 1 commit intodevfrom
ci-lowest-direct-matrix
May 6, 2026
Merged

[CHORE](ci) Test dep floors via lowest-direct matrix#505
Victor Schappert (vcschapp) merged 1 commit intodevfrom
ci-lowest-direct-matrix

Conversation

@sethfitz
Copy link
Copy Markdown
Collaborator

Summary

  • Adds a CI matrix cell that re-resolves to lowest-direct before make check, exercising the declared dependency floors instead of whatever the lock happens to pin.
  • Adds a Python minor-version matrix (3.10–3.14) for the default cell so version-specific regressions surface.
  • Bumps the floors that today's code already requires (pydantic ≥2.12, ruff ≥0.13, deepdiff ≥8.6) and pins per-package dev deps that were unpinned.

Closes #504.

How it works

UV_RESOLUTION=lowest-direct makes the existing make uv-sync re-resolve from pyproject.toml instead of following the committed lock. No second lockfile, no constraints file. A failure in that cell means a declared minimum is wrong.

The default cell behaves as before (committed lock, newest matching) but now spans Python 3.10 through 3.14.

Test plan

  • UV_RESOLUTION=lowest-direct make check passes locally (1900 tests)
  • make check (default resolution) passes locally
  • CI: both matrix cells green across Python 3.10–3.14

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 4, 2026

🗺️ Schema reference docs preview is live!

🌍 Preview https://staging.overturemaps.org/schema/pr/505/schema/index.html
🕐 Updated May 04, 2026 23:13 UTC
📝 Commit 050966e
🔧 env SCHEMA_PREVIEW true

Note

♻️ This preview updates automatically with each push to this PR.

The check-python-code workflow now runs across the supported Python
minor versions (3.10-3.14), and adds a lowest-direct cell that re-
resolves every direct dependency to its declared floor before running
make check. Failures in that cell mean a declared minimum is wrong --
either the code uses a feature newer than the floor admits, or the
pin needs to be raised.

Setting UV_RESOLUTION=lowest-direct causes the existing make uv-sync
to re-resolve from the lockfile rather than follow it, so no separate
lock or constraints file is needed.

The declared floors lie about the actual minimums in several places.
Bump them to what the code requires today:

- pydantic >= 2.12: optionality.py imports
  pydantic.experimental.missing_sentinel, which only exists in 2.12+.
  feature.py imports ModelWrapValidatorHandler at the top level
  (re-exported in 2.10.4) and Tag (added in 2.5).
- ruff >= 0.13: 0.12.x still fires the deprecated UP038 rule under
  select = ["UP"], which the workspace config selects.
- deepdiff >= 8.6: first version shipping a py.typed marker, without
  which mypy errors on import-untyped.

Per-package dev deps that were unpinned (ruff, mypy, pytest in
overture-schema-cli and overture-schema-system; pyyaml, deepdiff in
overture-schema) now match the workspace dev-group floors. uv warns
about unpinned direct deps under lowest-direct resolution; pinning
silences the warnings and makes the floor explicit.

Signed-off-by: Seth Fitzsimmons <seth@mojodna.net>
Comment thread .github/workflows/check-python-code.yaml
Copy link
Copy Markdown
Contributor

@lowlydba John McCall (lowlydba) left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a question on how far back we want to support non-Active versions, otherwise LGTM

@vcschapp Victor Schappert (vcschapp) merged commit 6345edf into dev May 6, 2026
20 of 21 checks passed
@vcschapp Victor Schappert (vcschapp) deleted the ci-lowest-direct-matrix branch May 6, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automation 🦾 Change/enhance automation of a process

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test declared dependency floors via lowest-direct CI matrix

3 participants