potiuk opened a new pull request, #73657:
URL: https://github.com/apache/airflow/pull/73657
Lower bounds of fast-moving SDKs are only ever raised by hand, and in
practice not at all: the amazon
provider still declares `boto3>=1.41.0` despite a comment asking to raise it
"regularly". Ancient floors
widen the resolver's backtracking space and make the lowest-direct
dependency tests exercise versions
nobody runs any more.
This adds a step to `breeze ci upgrade` ("Upgrade important CI environment")
that raises the floors of a
curated set of dependencies, following ADR 0018
(`dev/breeze/doc/adr/0018-raise-dependency-floors-automatically.md`):
- The policy lives in `[tool.airflow.dependency-floors]` in the root
`pyproject.toml`: curated packages
(boto3/botocore as a group, `google-cloud-*`, `google-api-python-client`,
`azure-*`), `min-age = "180 days"`
and an explicit `exclude` table seeded from past caps and reverts.
- A floor is raised to the newest final, non-yanked release uploaded at
least 180 days ago, and never lowered.
- Packages held back anywhere (`<`, `<=`, `!=`, `==`, `~=`, including the
root `[tool.uv]` constraint and
override tables) or listed in `exclude` are skipped.
- After applying the bumps, `uv lock --dry-run` runs with both the highest
and the lowest-direct
resolution. Bumps that break either are found by bisection and rolled
back. Workspace members with their
own `uv.lock` (`dev/breeze`) are not touched, because that lock is not
covered by the check.
- The upgrade PR body gets a report of raised, rolled-back and skipped
floors, and an already-open upgrade
PR has its body refreshed on every run.
The step runs after `upgrade-important-versions` and before `uv lock
--upgrade`, and can be switched off
with `--no-upgrade-dependency-floors`.
Heads-up: the first run will be large. A local run against current `main`
raised 58 floors (several of
them across major versions, e.g. `google-cloud-storage` 2.9 → 3.10), rolled
back none and skipped 2,
in about 30 seconds. Those edits are not part of this PR; they will arrive
through the next scheduled
upgrade PR, where the lowest-dependency CI jobs exercise them.
Testing:
- `uv run --project scripts pytest
scripts/tests/ci/prek/test_upgrade_dependency_floors.py` (69 passed)
- `uv run --project dev/breeze pytest dev/breeze/tests/test_ci_upgrade.py`
(11 passed)
- `prek run mypy-dev mypy-scripts --all-files` passed
- Pre-commit hooks passed on every commit (`lychee-docker` skipped locally:
Docker credential helper unavailable)
- One real run of the manual `upgrade-dependency-floors` hook, edits
discarded
---
##### Was generative AI tooling used to co-author this PR?
- [X] Yes (please specify the tool below)
Generated-by: Claude Code (Opus 5) following [the
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
---
* Read the **[Pull Request
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
for more information. Note: commit author/co-author name and email in commits
become permanently public when merged.
* For fundamental code changes, an Airflow Improvement Proposal
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
is needed.
* When adding dependency, check compliance with the [ASF 3rd Party License
Policy](https://www.apache.org/legal/resolved.html#category-x).
* For significant user-facing changes create newsfragment:
`{pr_number}.significant.rst`, in
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
You can add this file in a follow-up commit after the PR is created so you
know the PR number.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]