Skip to content

Commit 696aacd

Browse files
committed
Bump uv floor to 0.11.8, override cooldown for uv
Pins `[tool.uv] required-version` (and the matching marker-tagged constants in breeze) to 0.11.8 to pick up the timestamp-elision fix from astral-sh/uv#19022 (closes astral-sh/uv#18708 — relative `exclude-newer` no longer writes a churning timestamp into uv.lock that two branches collide on). Drops uv's per-package cooldown to "12 hours" in both [tool.uv.exclude-newer-package] and [tool.uv.pip.exclude-newer-package]; without the override the project-wide 4-day window blocks a freshly-released uv from being adopted as the floor. The override is flagged "REMOVE BY 2026-05-01" — once 0.11.8 is older than the global 4-day cooldown the override is redundant. Bumps AIRFLOW_UV_VERSION across Dockerfiles, breeze constants, and the image-args doc to match. The `# sync-uv-min-version`-tagged test fixtures were auto-rewritten by the prek hook of the same name. uv.lock confirms the upstream fix is engaged: `exclude-newer` reads as the no-op `0001-01-01T00:00:00Z` placeholder.
1 parent dbf558c commit 696aacd

9 files changed

Lines changed: 53 additions & 35 deletions

File tree

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ ARG PYTHON_LTO="true"
7373
# Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
7474
ARG AIRFLOW_PIP_VERSION=26.0.1
7575
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
76-
ARG AIRFLOW_UV_VERSION=0.11.7
76+
ARG AIRFLOW_UV_VERSION=0.11.8
7777
ARG AIRFLOW_USE_UV="false"
7878
ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow"
7979
ARG AIRFLOW_IMAGE_README_URL="https://raw.githubusercontent.com/apache/airflow/main/docs/docker-stack/README.md"

Dockerfile.ci

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1825,7 +1825,7 @@ COPY --from=scripts common.sh install_packaging_tools.sh install_additional_depe
18251825
# Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
18261826
ARG AIRFLOW_PIP_VERSION=26.0.1
18271827
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
1828-
ARG AIRFLOW_UV_VERSION=0.11.7
1828+
ARG AIRFLOW_UV_VERSION=0.11.8
18291829
ARG AIRFLOW_PREK_VERSION="0.3.10"
18301830

18311831
# UV_LINK_MODE=copy is needed since we are using cache mounted from the host

dev/breeze/doc/ci/02_images.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ can be used for CI images:
443443
| `ADDITIONAL_DEV_APT_DEPS` | | Additional apt dev dependencies installed in the first part of the image |
444444
| `ADDITIONAL_DEV_APT_ENV` | | Additional env variables defined when installing dev deps |
445445
| `AIRFLOW_PIP_VERSION` | `26.0.1` | `pip` version used. |
446-
| `AIRFLOW_UV_VERSION` | `0.11.7` | `uv` version used. |
446+
| `AIRFLOW_UV_VERSION` | `0.11.8` | `uv` version used. |
447447
| `AIRFLOW_PREK_VERSION` | `0.3.10` | `prek` version used. |
448448
| `AIRFLOW_USE_UV` | `true` | Whether to use UV for installation. |
449449
| `PIP_PROGRESS_BAR` | `on` | Progress bar for PIP installation |

dev/breeze/src/airflow_breeze/commands/release_management_commands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ class VersionedFile(NamedTuple):
264264

265265

266266
AIRFLOW_PIP_VERSION = "26.0.1"
267-
AIRFLOW_UV_VERSION = "0.11.7"
267+
AIRFLOW_UV_VERSION = "0.11.8"
268268
AIRFLOW_USE_UV = False
269269
GITPYTHON_VERSION = "3.1.47"
270270
RICH_VERSION = "15.0.0"

dev/breeze/src/airflow_breeze/global_constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@
241241
ALLOWED_INSTALL_MYSQL_CLIENT_TYPES = ["mariadb"]
242242

243243
PIP_VERSION = "26.0.1"
244-
UV_VERSION = "0.11.7"
244+
UV_VERSION = "0.11.8"
245245

246246
# packages that providers docs
247247
REGULAR_DOC_PACKAGES = [

dev/breeze/src/airflow_breeze/utils/check_release_files.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# Must satisfy the `[tool.uv] required-version` floor in the root pyproject.toml
2626
# that gets COPY'd into the PMC image. Kept in lockstep with that floor by the
2727
# `sync-uv-min-version-markers` prek hook.
28-
_PROVIDERS_DOCKER_UV_MIN_VERSION = "0.11.7" # sync-uv-min-version
28+
_PROVIDERS_DOCKER_UV_MIN_VERSION = "0.11.8" # sync-uv-min-version
2929

3030
PROVIDERS_DOCKER = f"""\
3131
FROM ghcr.io/apache/airflow/main/ci/python3.10

dev/breeze/tests/test_environment_check.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
# `# sync-uv-min-version` marker is auto-rewritten when required-version is bumped
2828
# manually. Tests that exercise the success path set both the mocked floor AND the
2929
# mocked "actual uv" to this value so the ok-case keeps passing after a bump.
30-
_MIN_UV = "0.11.7" # sync-uv-min-version
30+
_MIN_UV = "0.11.8" # sync-uv-min-version
3131

3232

3333
@mock.patch("airflow_breeze.utils.environment_check._read_required_uv_version")

pyproject.toml

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ apache-airflow = "airflow.__main__:main"
551551
"apache-airflow-providers-amazon[s3fs]",
552552
]
553553
"uv" = [
554-
"uv>=0.11.7",
554+
"uv>=0.11.8",
555555
]
556556

557557
[project.urls]
@@ -1360,7 +1360,7 @@ leveldb = [
13601360
# with AIRFLOW_UV_VERSION would force everyone to upgrade uv on every release. The
13611361
# breeze/prek uv version checks read this value dynamically and tolerate a stale
13621362
# floor; `scripts/ci/prek/upgrade_important_versions.py` deliberately skips it.
1363-
required-version = ">=0.11.7"
1363+
required-version = ">=0.11.8"
13641364
no-build-isolation-package = ["sphinx-redoc"]
13651365
# Synchroonize with scripts/ci/prek/upgrade_important_versions.py
13661366
exclude-newer = "4 days"
@@ -1499,6 +1499,18 @@ apache-airflow-task-sdk-integration-tests = false
14991499
apache-aurflow-docker-stack = false
15001500
# End of automatically generated exclude-newer-package entries
15011501

1502+
# Manual overrides (kept outside the auto-generated block above so the
1503+
# update_airflow_pyproject_toml.py script doesn't clobber them).
1504+
# uv 0.11.8 lifted the timestamp from `uv.lock` for relative `exclude-newer`
1505+
# (https://github.com/astral-sh/uv/issues/18708, fixed in
1506+
# https://github.com/astral-sh/uv/pull/19022) — we want that fix, but the
1507+
# global 4-day cooldown above would otherwise block a freshly-published uv
1508+
# from being adopted as the floor. Drop uv's cooldown to 12 hours so the
1509+
# pinned `required-version` floor isn't gated by the project-wide window.
1510+
# REMOVE BY 2026-05-01 — once 0.11.8 is older than the global 4-day cooldown
1511+
# this override is redundant and should be deleted along with the line below.
1512+
uv = "12 hours"
1513+
15021514
[tool.uv.pip]
15031515
# Synchroonize with scripts/ci/prek/upgrade_important_versions.py
15041516
exclude-newer = "4 days"
@@ -1637,6 +1649,11 @@ apache-airflow-task-sdk-integration-tests = false
16371649
apache-aurflow-docker-stack = false
16381650
# End of automatically generated exclude-newer-package-pip entries
16391651

1652+
# Manual overrides — see the matching block under
1653+
# `[tool.uv.exclude-newer-package]` above for rationale.
1654+
# REMOVE BY 2026-05-01 along with the matching entry above.
1655+
uv = "12 hours"
1656+
16401657

16411658
[tool.uv.sources]
16421659
# These names must match the names as defined in the pyproject.toml of the workspace items,

0 commit comments

Comments
 (0)