Skip to content

fix(deps): cap untested future azure-functions SDK majors - #648

Open
bfs2021 wants to merge 1 commit into
yeongseon:mainfrom
bfs2021:fix/cap-azure-functions-majors
Open

bfs2021 wants to merge 1 commit into
yeongseon:mainfrom
bfs2021:fix/cap-azure-functions-majors

Conversation

@bfs2021

@bfs2021 bfs2021 commented Oct 28, 2026

Copy link
Copy Markdown

Problem

pyproject.toml declares azure-functions>=1.21.0 with no upper bound, so a
future 2.x or 3.x release can be selected even though this repository has only
certified the 1.x SDK line. Fixes #646.

Root cause

The requirement and the compatibility policy test both assumed an open bound.
azure-functions 2.x declares Requires-Python >=3.13, so a single unbounded
requirement also lets the resolver pick a major that cannot run on the
interpreters the current wheel and host lanes use.

Fix

  • Split [project].dependencies by interpreter, matching the sibling packages:
    >=1.21.0,<2.0.0 on Python < 3.13 and >=1.21.0,<3.0.0 on Python >= 3.13.
    Neither marker permits a 3.x release.
  • Point the artifact-python311 and host-smoke "latest" cells at
    azure-functions>=1.21.0,<2.0.0, so those lanes resolve the newest allowed
    1.x SDK instead of being open-ended.
  • Extend tests/test_sdk_compatibility_policy.py to assert the two matrix
    entries and to parse both requirements, checking that 3.11 resolves to the
    1.x bound, 3.13 permits 2.x, and no environment can resolve 3.0.0.
  • Update docs/sdk-compatibility.md to state the split and to record the gap:
    the 2.x allowance is metadata-only until a wheel-based 2.x lane runs on
    Python 3.13/3.14.

Testing

  • pytest -q tests/test_sdk_compatibility_policy.py: 2 passed.
  • Both tests fail on the parent commit (the old matrix list and the old
    unbounded requirement), and pass with this change.
  • ruff check and ruff format --check on the policy test: clean.
  • I did not run the full suite locally: this machine lacks the project's SDK
    and dev extras. make lint typecheck test is left to CI, which provides the
    3.11 and 3.13 interpreters.

Split the runtime requirement by interpreter: Python < 3.13 stays
>=1.21.0,<2.0.0 (2.x is uninstallable there), while Python >= 3.13 is
allowed onto 2.x but capped below 3.0.0 so an uncertified 3.x is never
resolved silently.

Point the oldest/latest wheel and host smoke lanes at the 1.x bound and
extend the compatibility policy test to check both markers and the
matrix entries. Document that the 2.x allowance is metadata-only until a
wheel-based 2.x lane runs.

This branch has not been deployed

No deployments
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.

fix(deps): cap untested future azure-functions SDK majors

1 participant