This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new 1ab0f36b2d6 CI: Upgrade important CI environment (#63976)
1ab0f36b2d6 is described below
commit 1ab0f36b2d664ab2f60f7b2170b43e6bb0196dd1
Author: Jarek Potiuk <[email protected]>
AuthorDate: Fri Mar 20 11:00:14 2026 +0100
CI: Upgrade important CI environment (#63976)
---
.github/actions/breeze/action.yml | 2 +-
.github/actions/install-prek/action.yml | 2 +-
.github/workflows/basic-tests.yml | 2 +-
.github/workflows/release_dockerhub_image.yml | 2 +-
.pre-commit-config.yaml | 2 +-
Dockerfile | 2 +-
Dockerfile.ci | 4 +-
airflow-core/docs/best-practices.rst | 2 +-
dev/breeze/doc/ci/02_images.md | 2 +-
.../commands/release_management_commands.py | 2 +-
dev/breeze/src/airflow_breeze/global_constants.py | 2 +-
dev/breeze/uv.lock | 98 +++++++++++-----------
devel-common/pyproject.toml | 2 +-
pyproject.toml | 2 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/ruff_format.py | 2 +-
scripts/tools/setup_breeze | 2 +-
17 files changed, 66 insertions(+), 66 deletions(-)
diff --git a/.github/actions/breeze/action.yml
b/.github/actions/breeze/action.yml
index 778b640ca5a..121cd2f1912 100644
--- a/.github/actions/breeze/action.yml
+++ b/.github/actions/breeze/action.yml
@@ -24,7 +24,7 @@ inputs:
default: "3.10"
uv-version:
description: 'uv version to use'
- default: "0.10.11" # Keep this comment to allow automatic replacement of
uv version
+ default: "0.10.12" # Keep this comment to allow automatic replacement of
uv version
outputs:
host-python-version:
description: Python version used in host
diff --git a/.github/actions/install-prek/action.yml
b/.github/actions/install-prek/action.yml
index 5affa63107b..87ccbb22ed7 100644
--- a/.github/actions/install-prek/action.yml
+++ b/.github/actions/install-prek/action.yml
@@ -24,7 +24,7 @@ inputs:
default: "3.10"
uv-version:
description: 'uv version to use'
- default: "0.10.11" # Keep this comment to allow automatic replacement of
uv version
+ default: "0.10.12" # Keep this comment to allow automatic replacement of
uv version
prek-version:
description: 'prek version to use'
default: "0.3.6" # Keep this comment to allow automatic replacement of
prek version
diff --git a/.github/workflows/basic-tests.yml
b/.github/workflows/basic-tests.yml
index fef52a285f5..52bf24310ca 100644
--- a/.github/workflows/basic-tests.yml
+++ b/.github/workflows/basic-tests.yml
@@ -66,7 +66,7 @@ on: # yamllint disable-line rule:truthy
type: string
uv-version:
description: 'uv version to use'
- default: "0.10.11" # Keep this comment to allow automatic replacement
of uv version
+ default: "0.10.12" # Keep this comment to allow automatic replacement
of uv version
type: string
platform:
description: 'Platform for the build - linux/amd64 or linux/arm64'
diff --git a/.github/workflows/release_dockerhub_image.yml
b/.github/workflows/release_dockerhub_image.yml
index 6b3e1a8f8f2..7a24778e2fb 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -58,7 +58,7 @@ jobs:
AIRFLOW_VERSION: ${{ github.event.inputs.airflowVersion }}
AMD_ONLY: ${{ github.event.inputs.amdOnly }}
LIMIT_PYTHON_VERSIONS: ${{ github.event.inputs.limitPythonVersions }}
- UV_VERSION: "0.10.11" # Keep this comment to allow automatic
replacement of uv version
+ UV_VERSION: "0.10.12" # Keep this comment to allow automatic
replacement of uv version
if: contains(fromJSON('[
"ashb",
"bugraoz93",
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index bfd00d9fc8a..0d122c138d4 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -420,7 +420,7 @@ repos:
types_or: [python, pyi]
args: [--fix]
require_serial: true
- additional_dependencies: ['ruff==0.15.6']
+ additional_dependencies: ['ruff==0.15.7']
exclude:
^airflow-core/tests/unit/dags/test_imports\.py$|^performance/tests/test_.*\.py$
- id: ruff-format
name: Run 'ruff format'
diff --git a/Dockerfile b/Dockerfile
index 5921bd5d03e..e97a544a1e7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -58,7 +58,7 @@ ARG AIRFLOW_PYTHON_VERSION="3.12.13"
# Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
ARG AIRFLOW_PIP_VERSION=26.0.1
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
-ARG AIRFLOW_UV_VERSION=0.10.11
+ARG AIRFLOW_UV_VERSION=0.10.12
ARG AIRFLOW_USE_UV="false"
ARG UV_HTTP_TIMEOUT="300"
ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow"
diff --git a/Dockerfile.ci b/Dockerfile.ci
index 5e521a8cc04..5f066813022 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -1633,7 +1633,7 @@ RUN SYSTEM=$(uname -s | tr '[:upper:]' '[:lower:]') \
&& chmod +x /usr/local/bin/helm
# Install mprocs - a modern process manager for managing multiple Airflow
components
-ARG MPROCS_VERSION="0.8.3"
+ARG MPROCS_VERSION="0.9.0"
RUN SYSTEM=$(uname -s | tr '[:upper:]' '[:lower:]') \
&& PLATFORM="$(uname -m)" \
@@ -1728,7 +1728,7 @@ COPY --from=scripts common.sh install_packaging_tools.sh
install_additional_depe
# Also use `force pip` label on your PR to swap all places we use `uv` to `pip`
ARG AIRFLOW_PIP_VERSION=26.0.1
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
-ARG AIRFLOW_UV_VERSION=0.10.11
+ARG AIRFLOW_UV_VERSION=0.10.12
ARG AIRFLOW_PREK_VERSION="0.3.6"
# UV_LINK_MODE=copy is needed since we are using cache mounted from the host
diff --git a/airflow-core/docs/best-practices.rst
b/airflow-core/docs/best-practices.rst
index 20dbc310407..be8edd12e94 100644
--- a/airflow-core/docs/best-practices.rst
+++ b/airflow-core/docs/best-practices.rst
@@ -310,7 +310,7 @@ Installing and Using ruff
.. code-block:: bash
- pip install "ruff>=0.15.6"
+ pip install "ruff>=0.15.7"
2. **Running ruff**: Execute ``ruff`` to check your Dags for potential issues:
diff --git a/dev/breeze/doc/ci/02_images.md b/dev/breeze/doc/ci/02_images.md
index bd5a6613338..3aa5855a438 100644
--- a/dev/breeze/doc/ci/02_images.md
+++ b/dev/breeze/doc/ci/02_images.md
@@ -443,7 +443,7 @@ can be used for CI images:
| `ADDITIONAL_DEV_APT_DEPS` | | Additional
apt dev dependencies installed in the first part of the image
|
| `ADDITIONAL_DEV_APT_ENV` | | Additional
env variables defined when installing dev deps
|
| `AIRFLOW_PIP_VERSION` | `26.0.1` | `pip`
version used.
|
-| `AIRFLOW_UV_VERSION` | `0.10.11` | `uv`
version used.
|
+| `AIRFLOW_UV_VERSION` | `0.10.12` | `uv`
version used.
|
| `AIRFLOW_PREK_VERSION` | `0.3.6` | `prek`
version used.
|
| `AIRFLOW_USE_UV` | `true` | Whether to
use UV for installation.
|
| `PIP_PROGRESS_BAR` | `on` | Progress
bar for PIP installation
|
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index bbf71105439..85064d021f1 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -254,7 +254,7 @@ class VersionedFile(NamedTuple):
AIRFLOW_PIP_VERSION = "26.0.1"
-AIRFLOW_UV_VERSION = "0.10.11"
+AIRFLOW_UV_VERSION = "0.10.12"
AIRFLOW_USE_UV = False
GITPYTHON_VERSION = "3.1.46"
RICH_VERSION = "14.3.3"
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py
b/dev/breeze/src/airflow_breeze/global_constants.py
index bff174df175..f68935623b7 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -213,7 +213,7 @@ if MYSQL_INNOVATION_RELEASE:
ALLOWED_INSTALL_MYSQL_CLIENT_TYPES = ["mariadb", "mysql"]
PIP_VERSION = "26.0.1"
-UV_VERSION = "0.10.11"
+UV_VERSION = "0.10.12"
DEFAULT_UV_HTTP_TIMEOUT = 300
DEFAULT_WSL2_HTTP_TIMEOUT = 900
diff --git a/dev/breeze/uv.lock b/dev/breeze/uv.lock
index e8d7f8e9074..b6db8753050 100644
--- a/dev/breeze/uv.lock
+++ b/dev/breeze/uv.lock
@@ -93,11 +93,11 @@ requires-dist = [
[[package]]
name = "attrs"
-version = "25.4.0"
+version = "26.1.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url =
"https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz",
hash =
"sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size
= 934251, upload-time = "2025-10-06T13:54:44.725Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz",
hash =
"sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size
= 952055, upload-time = "2026-03-19T14:22:25.026Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl",
hash =
"sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size
= 67615, upload-time = "2025-10-06T13:54:43.17Z" },
+ { url =
"https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl",
hash =
"sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size
= 67548, upload-time = "2026-03-19T14:22:23.645Z" },
]
[[package]]
@@ -260,30 +260,30 @@ wheels = [
[[package]]
name = "boto3"
-version = "1.42.69"
+version = "1.42.72"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "botocore" },
{ name = "jmespath" },
{ name = "s3transfer" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/1f/f3/26d800e4efe85e7d59c63ac11d02ab2fafed371bede567af7258eb7e4c1c/boto3-1.42.69.tar.gz",
hash =
"sha256:e59846f4ff467b23bae4751948298db554dbdda0d72b09028d2cacbeff27e1ad", size
= 112777, upload-time = "2026-03-16T20:35:30.77Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/ff/78/daf8d8950341f4596b2ffa8e69750569a6f567bcae8f2be0a8095a15fc71/boto3-1.42.72.tar.gz",
hash =
"sha256:932f023ea3b54fd85df453dcfff7d8c5a0f8be144c0ad57568943505c72c1e6a", size
= 112782, upload-time = "2026-03-19T21:03:35.786Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/f3/39/54ad87436c637de9f7bf83ba2a28cf3b15409cbb849401837fcc37fbd794/boto3-1.42.69-py3-none-any.whl",
hash =
"sha256:6823a4b59aa578c7d98124280a9b6d83cea04bdb02525cbaa79370e5b6f7f631", size
= 140556, upload-time = "2026-03-16T20:35:28.754Z" },
+ { url =
"https://files.pythonhosted.org/packages/30/c7/ac1e8d49b0cb5631410796dd439c621d50d9b241f98a79e38e8d466b8d00/boto3-1.42.72-py3-none-any.whl",
hash =
"sha256:2b5fdac4f202b2ccb9ed21f8b84229463b15573ea16941c2b1b8db1c69e08b63", size
= 140555, upload-time = "2026-03-19T21:03:34.165Z" },
]
[[package]]
name = "botocore"
-version = "1.42.69"
+version = "1.42.72"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "jmespath" },
{ name = "python-dateutil" },
{ name = "urllib3" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/42/d1/81a6e39c7d5419ba34bad8a1ac2c5360c26f21af698a481a8397d79134d1/botocore-1.42.69.tar.gz",
hash =
"sha256:0934f2d90403c5c8c2cba83e754a39d77edcad5885d04a79363edff3e814f55e", size
= 14997632, upload-time = "2026-03-16T20:35:18.533Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/ca/ff/36bfa472894648ded83cfe7bb09faabd0db113551dbe920589cfc9cadad7/botocore-1.42.72.tar.gz",
hash =
"sha256:491b75eb41d46cf99cf8d6cab89f2e2c3602ce8e90d738a1da217a5fb6b2b7ef", size
= 15004562, upload-time = "2026-03-19T21:03:24.45Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/f6/13/779f3427e17f9989fd0fa6651817c5f13b63e574f3541e460b8238883290/botocore-1.42.69-py3-none-any.whl",
hash =
"sha256:ef0e3d860a5d7bffc0ccb4911781c4c27d538557ed9a616ba1926c762d72e5f6", size
= 14670334, upload-time = "2026-03-16T20:35:14.543Z" },
+ { url =
"https://files.pythonhosted.org/packages/66/50/3297ba278a0d6644396011cc592ee88f628206599fc6cff25f5c83b629e7/botocore-1.42.72-py3-none-any.whl",
hash =
"sha256:038f34553da68df2ce70edc729f170cc198678daaad43f98649727c59f6404d4", size
= 14678727, upload-time = "2026-03-19T21:03:20.575Z" },
]
[[package]]
@@ -678,7 +678,7 @@ wheels = [
[[package]]
name = "google-api-python-client"
-version = "2.192.0"
+version = "2.193.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "google-api-core" },
@@ -687,9 +687,9 @@ dependencies = [
{ name = "httplib2" },
{ name = "uritemplate" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/85/d8/489052a40935e45b9b5b3d6accc14b041360c1507bdc659c2e1a19aaa3ff/google_api_python_client-2.192.0.tar.gz",
hash =
"sha256:d48cfa6078fadea788425481b007af33fe0ab6537b78f37da914fb6fc112eb27", size
= 14209505, upload-time = "2026-03-05T15:17:01.598Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/90/f4/e14b6815d3b1885328dd209676a3a4c704882743ac94e18ef0093894f5c8/google_api_python_client-2.193.0.tar.gz",
hash =
"sha256:8f88d16e89d11341e0a8b199cafde0fb7e6b44260dffb88d451577cbd1bb5d33", size
= 14281006, upload-time = "2026-03-17T18:25:29.415Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/e0/76/ec4128f00fefb9011635ae2abc67d7dacd05c8559378f8f05f0c907c38d8/google_api_python_client-2.192.0-py3-none-any.whl",
hash =
"sha256:63a57d4457cd97df1d63eb89c5fda03c5a50588dcbc32c0115dd1433c08f4b62", size
= 14783267, upload-time = "2026-03-05T15:16:58.804Z" },
+ { url =
"https://files.pythonhosted.org/packages/f0/6d/fe75167797790a56d17799b75e1129bb93f7ff061efc7b36e9731bd4be2b/google_api_python_client-2.193.0-py3-none-any.whl",
hash =
"sha256:c42aa324b822109901cfecab5dc4fc3915d35a7b376835233c916c70610322db", size
= 14856490, upload-time = "2026-03-17T18:25:26.608Z" },
]
[[package]]
@@ -872,14 +872,14 @@ wheels = [
[[package]]
name = "importlib-metadata"
-version = "8.7.1"
+version = "9.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "zipp", marker = "python_full_version < '3.13'" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz",
hash =
"sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size
= 57107, upload-time = "2025-12-21T10:00:19.278Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz",
hash =
"sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc", size
= 56405, upload-time = "2026-03-20T06:42:56.999Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl",
hash =
"sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size
= 27865, upload-time = "2025-12-21T10:00:18.329Z" },
+ { url =
"https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl",
hash =
"sha256:2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7", size
= 27789, upload-time = "2026-03-20T06:42:55.665Z" },
]
[[package]]
@@ -1272,17 +1272,17 @@ wheels = [
[[package]]
name = "protobuf"
-version = "6.33.5"
+version = "6.33.6"
source = { registry = "https://pypi.org/simple" }
-sdist = { url =
"https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz",
hash =
"sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size
= 444465, upload-time = "2026-01-29T21:51:33.494Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/66/70/e908e9c5e52ef7c3a6c7902c9dfbb34c7e29c25d2f81ade3856445fd5c94/protobuf-6.33.6.tar.gz",
hash =
"sha256:a6768d25248312c297558af96a9f9c929e8c4cee0659cb07e780731095f38135", size
= 444531, upload-time = "2026-03-18T19:05:00.988Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/b1/79/af92d0a8369732b027e6d6084251dd8e782c685c72da161bd4a2e00fbabb/protobuf-6.33.5-cp310-abi3-win32.whl",
hash =
"sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b", size
= 425769, upload-time = "2026-01-29T21:51:21.751Z" },
- { url =
"https://files.pythonhosted.org/packages/55/75/bb9bc917d10e9ee13dee8607eb9ab963b7cf8be607c46e7862c748aa2af7/protobuf-6.33.5-cp310-abi3-win_amd64.whl",
hash =
"sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c", size
= 437118, upload-time = "2026-01-29T21:51:24.022Z" },
- { url =
"https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl",
hash =
"sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size
= 427766, upload-time = "2026-01-29T21:51:25.413Z" },
- { url =
"https://files.pythonhosted.org/packages/4e/b1/c79468184310de09d75095ed1314b839eb2f72df71097db9d1404a1b2717/protobuf-6.33.5-cp39-abi3-manylinux2014_aarch64.whl",
hash =
"sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190", size
= 324638, upload-time = "2026-01-29T21:51:26.423Z" },
- { url =
"https://files.pythonhosted.org/packages/c5/f5/65d838092fd01c44d16037953fd4c2cc851e783de9b8f02b27ec4ffd906f/protobuf-6.33.5-cp39-abi3-manylinux2014_s390x.whl",
hash =
"sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd", size
= 339411, upload-time = "2026-01-29T21:51:27.446Z" },
- { url =
"https://files.pythonhosted.org/packages/9b/53/a9443aa3ca9ba8724fdfa02dd1887c1bcd8e89556b715cfbacca6b63dbec/protobuf-6.33.5-cp39-abi3-manylinux2014_x86_64.whl",
hash =
"sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0", size
= 323465, upload-time = "2026-01-29T21:51:28.925Z" },
- { url =
"https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl",
hash =
"sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size
= 170687, upload-time = "2026-01-29T21:51:32.557Z" },
+ { url =
"https://files.pythonhosted.org/packages/fc/9f/2f509339e89cfa6f6a4c4ff50438db9ca488dec341f7e454adad60150b00/protobuf-6.33.6-cp310-abi3-win32.whl",
hash =
"sha256:7d29d9b65f8afef196f8334e80d6bc1d5d4adedb449971fefd3723824e6e77d3", size
= 425739, upload-time = "2026-03-18T19:04:48.373Z" },
+ { url =
"https://files.pythonhosted.org/packages/76/5d/683efcd4798e0030c1bab27374fd13a89f7c2515fb1f3123efdfaa5eab57/protobuf-6.33.6-cp310-abi3-win_amd64.whl",
hash =
"sha256:0cd27b587afca21b7cfa59a74dcbd48a50f0a6400cfb59391340ad729d91d326", size
= 437089, upload-time = "2026-03-18T19:04:50.381Z" },
+ { url =
"https://files.pythonhosted.org/packages/5c/01/a3c3ed5cd186f39e7880f8303cc51385a198a81469d53d0fdecf1f64d929/protobuf-6.33.6-cp39-abi3-macosx_10_9_universal2.whl",
hash =
"sha256:9720e6961b251bde64edfdab7d500725a2af5280f3f4c87e57c0208376aa8c3a", size
= 427737, upload-time = "2026-03-18T19:04:51.866Z" },
+ { url =
"https://files.pythonhosted.org/packages/ee/90/b3c01fdec7d2f627b3a6884243ba328c1217ed2d978def5c12dc50d328a3/protobuf-6.33.6-cp39-abi3-manylinux2014_aarch64.whl",
hash =
"sha256:e2afbae9b8e1825e3529f88d514754e094278bb95eadc0e199751cdd9a2e82a2", size
= 324610, upload-time = "2026-03-18T19:04:53.096Z" },
+ { url =
"https://files.pythonhosted.org/packages/9b/ca/25afc144934014700c52e05103c2421997482d561f3101ff352e1292fb81/protobuf-6.33.6-cp39-abi3-manylinux2014_s390x.whl",
hash =
"sha256:c96c37eec15086b79762ed265d59ab204dabc53056e3443e702d2681f4b39ce3", size
= 339381, upload-time = "2026-03-18T19:04:54.616Z" },
+ { url =
"https://files.pythonhosted.org/packages/16/92/d1e32e3e0d894fe00b15ce28ad4944ab692713f2e7f0a99787405e43533a/protobuf-6.33.6-cp39-abi3-manylinux2014_x86_64.whl",
hash =
"sha256:e9db7e292e0ab79dd108d7f1a94fe31601ce1ee3f7b79e0692043423020b0593", size
= 323436, upload-time = "2026-03-18T19:04:55.768Z" },
+ { url =
"https://files.pythonhosted.org/packages/c4/72/02445137af02769918a93807b2b7890047c32bfb9f90371cbc12688819eb/protobuf-6.33.6-py3-none-any.whl",
hash =
"sha256:77179e006c476e69bf8e8ce866640091ec42e1beb80b213c3900006ecfba6901", size
= 170656, upload-time = "2026-03-18T19:04:59.826Z" },
]
[[package]]
@@ -1492,15 +1492,15 @@ wheels = [
[[package]]
name = "python-discovery"
-version = "1.1.3"
+version = "1.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "filelock" },
{ name = "platformdirs" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/d7/7e/9f3b0dd3a074a6c3e1e79f35e465b1f2ee4b262d619de00cfce523cc9b24/python_discovery-1.1.3.tar.gz",
hash =
"sha256:7acca36e818cd88e9b2ba03e045ad7e93e1713e29c6bbfba5d90202310b7baa5", size
= 56945, upload-time = "2026-03-10T15:08:15.038Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/9c/90/bcce6b46823c9bec1757c964dc37ed332579be512e17a30e9698095dcae4/python_discovery-1.2.0.tar.gz",
hash =
"sha256:7d33e350704818b09e3da2bd419d37e21e7c30db6e0977bb438916e06b41b5b1", size
= 58055, upload-time = "2026-03-19T01:43:08.248Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/e7/80/73211fc5bfbfc562369b4aa61dc1e4bf07dc7b34df7b317e4539316b809c/python_discovery-1.1.3-py3-none-any.whl",
hash =
"sha256:90e795f0121bc84572e737c9aa9966311b9fde44ffb88a5953b3ec9b31c6945e", size
= 31485, upload-time = "2026-03-10T15:08:13.06Z" },
+ { url =
"https://files.pythonhosted.org/packages/c2/3c/2005227cb951df502412de2fa781f800663cccbef8d90ec6f1b371ac2c0d/python_discovery-1.2.0-py3-none-any.whl",
hash =
"sha256:1e108f1bbe2ed0ef089823d28805d5ad32be8e734b86a5f212bf89b71c266e4a", size
= 31524, upload-time = "2026-03-19T01:43:07.045Z" },
]
[[package]]
@@ -2077,28 +2077,28 @@ wheels = [
[[package]]
name = "uv"
-version = "0.10.11"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url =
"https://files.pythonhosted.org/packages/8a/64/d343bfc5d003f05e1e75024cf7a65512a770fa2486d7a17137c93b723508/uv-0.10.11.tar.gz",
hash =
"sha256:90dfc315b64de977098c96f6dfa5f3957b04bf834d95f3451de8d741d78b128b", size
= 3979764, upload-time = "2026-03-16T23:58:43.918Z" }
-wheels = [
- { url =
"https://files.pythonhosted.org/packages/b8/22/05430892b4f2bf0408fb685d09760de912b3dc10cfd5151084bcadde2854/uv-0.10.11-py3-none-linux_armv6l.whl",
hash =
"sha256:0d9e0f3c4b2f2c79e8ab858d0dc3af1838f72a7c94ab71b80f7181811a80c995", size
= 22698415, upload-time = "2026-03-16T23:59:01.427Z" },
- { url =
"https://files.pythonhosted.org/packages/97/13/91c62bd8eb223ca68e93b46721ab17da1207219cfca4e694bcb87c8cf632/uv-0.10.11-py3-none-macosx_10_12_x86_64.whl",
hash =
"sha256:0972e20cccebc109f64d56165a9a1e8008051255d6c807e1b85f6ad29d5911e8", size
= 21756582, upload-time = "2026-03-16T23:59:11.609Z" },
- { url =
"https://files.pythonhosted.org/packages/a0/77/1d042e6cab3d92884af24a1a0f541133a83f4aeacc17c91b68af030d0e16/uv-0.10.11-py3-none-macosx_11_0_arm64.whl",
hash =
"sha256:77c95cb5ae27a9e317819e32f1e480ee3a2d5e010bc701a11a64ab03cd04ff8e", size
= 20442579, upload-time = "2026-03-16T23:58:46.166Z" },
- { url =
"https://files.pythonhosted.org/packages/95/0a/ff039a236a03f75202cce8487a0e9ae6b9750269c38f62eab95a4f6d0c4f/uv-0.10.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl",
hash =
"sha256:100181c4cefcb3619003d8dc74792abfbd62b7ea3efe16084428ca441975d8ad", size
= 22259215, upload-time = "2026-03-16T23:59:21.749Z" },
- { url =
"https://files.pythonhosted.org/packages/5c/aa/62ff2a7d2934757acee81ffae48459ab110bb882f08dfa3b9180caa0d242/uv-0.10.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl",
hash =
"sha256:ee2e362025f8877db447b5f2e97a087fcab7eedc0ad513c12579d9bf12f37d2d", size
= 22309653, upload-time = "2026-03-16T23:59:24.65Z" },
- { url =
"https://files.pythonhosted.org/packages/06/4c/025390923ef67c924e2a1f183670c5124703432786ccff52ca2fdb7f43ed/uv-0.10.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
hash =
"sha256:8a233112e38253617bd109ee2acc0b9127bad84e9bee0ba6d51cc4cab25ee585", size
= 22282173, upload-time = "2026-03-16T23:58:35.468Z" },
- { url =
"https://files.pythonhosted.org/packages/f5/ec/3e2daffa87dd0ec5c037a150fa03ffe1fcb355817b990991a993fd6f67d5/uv-0.10.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",
hash =
"sha256:bda3fcc4c32cd1ec2cd7638d3488ffe12b2b9e3d904567b1fe5be5b3864518d8", size
= 23670263, upload-time = "2026-03-16T23:59:04.765Z" },
- { url =
"https://files.pythonhosted.org/packages/9f/90/983dc5eaff2fc3c4b370906aa01a7732f1d1337a44c1e1bc431def3988b0/uv-0.10.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
hash =
"sha256:cac21ca1e4385a1e47e7fb1f68a01faebd661100f4d92681b0674e6685409cc4", size
= 24385168, upload-time = "2026-03-16T23:59:14.832Z" },
- { url =
"https://files.pythonhosted.org/packages/90/57/615b27c7f9e5ac7d849ba3ce995eb09d67c43c259f7b7017c2d7a257eef7/uv-0.10.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",
hash =
"sha256:d8b81e5c8110b2eb3ea0221c0edf7ad8744f6f9aa3e8dc0c10e1b8b9ac4c3b8a", size
= 23574771, upload-time = "2026-03-16T23:58:49.243Z" },
- { url =
"https://files.pythonhosted.org/packages/41/47/b5b99b243b82b49e33ccf07405d41ac571c238c4cb6c0ab59bf44ccfc0df/uv-0.10.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
hash =
"sha256:a0b807dcb997f44f9bbe3e8b99429a07d7c4b6e7bee39573d92c3a84170f18cf", size
= 23554550, upload-time = "2026-03-16T23:59:18.022Z" },
- { url =
"https://files.pythonhosted.org/packages/be/17/5ad53931895225622d28a31ecbe733bd118ee722a8a40a69284d6c1cb03d/uv-0.10.11-py3-none-manylinux_2_28_aarch64.whl",
hash =
"sha256:10030c66c1cf82da822d31c4fe1af602ffa678ab1769aeb056c59d637fd0e0ea", size
= 22384622, upload-time = "2026-03-16T23:58:28.836Z" },
- { url =
"https://files.pythonhosted.org/packages/3a/56/7ade77fc43ff1d438d629b7da695b00c04b17725f7cb7c7ba1186b4d475c/uv-0.10.11-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl",
hash =
"sha256:a00014bdbcc2672d295c7e83c55b62f5753e9c80ceb7b00110c185f8b5d6b043", size
= 23252663, upload-time = "2026-03-16T23:58:38.553Z" },
- { url =
"https://files.pythonhosted.org/packages/98/96/c2afcd21e12ce434bd1b038ee7e4b32940afb306227bb370cc9789306e8a/uv-0.10.11-py3-none-manylinux_2_31_riscv64.whl",
hash =
"sha256:96c9c5b4a3319468061aa8c1a04ecd75fab6fcd4e685a696507d1924e565909e", size
= 23256018, upload-time = "2026-03-16T23:59:08.101Z" },
- { url =
"https://files.pythonhosted.org/packages/92/a1/1098851d4d9f4d83f677662f1874c696f21c21e5c6bc0fea51c748464571/uv-0.10.11-py3-none-musllinux_1_1_i686.whl",
hash =
"sha256:4682966f42d0e0fdd700afa399726013c8c1c157bcfd7bfda280e6575cebe8b3", size
= 22840556, upload-time = "2026-03-16T23:58:32.211Z" },
- { url =
"https://files.pythonhosted.org/packages/55/8e/bf60c20788255adbf2996c999b3cfe4b218aa411abbb95e3d3a3192e1064/uv-0.10.11-py3-none-musllinux_1_1_x86_64.whl",
hash =
"sha256:b776c6b18a0ed1602bc47f74848ffb5684f380c8333ecb25e5deee9f4a36b6e7", size
= 23725174, upload-time = "2026-03-16T23:58:58.472Z" },
- { url =
"https://files.pythonhosted.org/packages/d8/3e/d95222563db28defa6e3d28ebd97e10d9830463a5d944c68180230aa62c6/uv-0.10.11-py3-none-win32.whl",
hash =
"sha256:a778e807361c40facf1e8005b4448ec2b281ec967debb2efb7991d9c38a1052d", size
= 21760653, upload-time = "2026-03-16T23:58:52.65Z" },
- { url =
"https://files.pythonhosted.org/packages/dc/82/bd12d31887d094e66844a966b078c8288d78d1b9b47b694343c5d8acd74d/uv-0.10.11-py3-none-win_amd64.whl",
hash =
"sha256:2a2663b6e02890aa3f57e14166d5dad67249208cdc0d4d3623915b437a7b0524", size
= 24195956, upload-time = "2026-03-16T23:58:41.764Z" },
- { url =
"https://files.pythonhosted.org/packages/93/21/6e910fb037a7e362dc6f8c1622f6ffe7950bdc478f7bd06d1afbbf890f7c/uv-0.10.11-py3-none-win_arm64.whl",
hash =
"sha256:68de2dad3674a9647a2da7d01ac35a276886e7723e855393a8a95cb12c9e3dcf", size
= 22509478, upload-time = "2026-03-16T23:58:55.555Z" },
+version = "0.10.12"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url =
"https://files.pythonhosted.org/packages/8d/b7/6a27678654caa7f2240d9c5be9bd032bfff90a58858f0078575e7a9b6d9f/uv-0.10.12.tar.gz",
hash =
"sha256:fa722691c7ae5c023778ad0b040ab8619367bcfe44fd0d9e05a58751af86cdf8", size
= 3988720, upload-time = "2026-03-19T21:50:41.015Z" }
+wheels = [
+ { url =
"https://files.pythonhosted.org/packages/fe/aa/dde1b7300f8e924606ab0fe192aa25ca79736c5883ee40310ba8a5b34042/uv-0.10.12-py3-none-linux_armv6l.whl",
hash =
"sha256:7099bdefffbe2df81accad52579657b8f9f870170caa779049c9fd82d645c9b3", size
= 22662810, upload-time = "2026-03-19T21:50:43.108Z" },
+ { url =
"https://files.pythonhosted.org/packages/5c/90/4fd10d7337a084847403cdbff288395a6a12adbaaac975943df4f46c2d31/uv-0.10.12-py3-none-macosx_10_12_x86_64.whl",
hash =
"sha256:e0f0ef58f0ba6fbfaf5f91b67aad6852252c49b8f78015a2a5800cf74c7538d5", size
= 21852701, upload-time = "2026-03-19T21:51:06.216Z" },
+ { url =
"https://files.pythonhosted.org/packages/ce/db/c41ace81b8ef5d5952433df38e321c0b6e5f88ce210c508b14f84817963f/uv-0.10.12-py3-none-macosx_11_0_arm64.whl",
hash =
"sha256:551f799d53e397843b6cde7e3c61de716fb487da512a21a954b7d0cbc06967e0", size
= 20454594, upload-time = "2026-03-19T21:50:53.693Z" },
+ { url =
"https://files.pythonhosted.org/packages/5d/07/a990708c5ba064b4eb1a289f1e9c484ebf5c1a0ea8cad049c86625f3b467/uv-0.10.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl",
hash =
"sha256:a5afe619e8a861fe4d49df8e10d2c6963de0dac6b79350c4832bf3366c8496cf", size
= 22212546, upload-time = "2026-03-19T21:51:08.76Z" },
+ { url =
"https://files.pythonhosted.org/packages/b7/26/7f5ac4af027846c24bd7bf0edbd48b805f9e7daec145c62c632b5ce94e5f/uv-0.10.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl",
hash =
"sha256:8dc352c93a47a4760cf824c31c55ce26511af780481e8f67c796d2779acaa928", size
= 22278457, upload-time = "2026-03-19T21:51:19.895Z" },
+ { url =
"https://files.pythonhosted.org/packages/02/00/c9043c73fb958482c9b42ad39ba81d1bd1ceffef11c4757412cb17f12316/uv-0.10.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
hash =
"sha256:bd84379292e3c1a1bf0a05847c7c72b66bb581dccf8da1ef94cc82bf517efa7c", size
= 22239751, upload-time = "2026-03-19T21:50:51.25Z" },
+ { url =
"https://files.pythonhosted.org/packages/5c/d1/31fe74bf2a049446dd95213890ffed98f733d0f5e3badafec59164951608/uv-0.10.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl",
hash =
"sha256:2ace05115bd9ee1b30d341728257fe051817c4c0a652c085c90d4bd4fb0bc8f2", size
= 23697005, upload-time = "2026-03-19T21:50:48.767Z" },
+ { url =
"https://files.pythonhosted.org/packages/8b/9a/dd58ef59e622a1651e181ec5b7d304ae482e591f28a864c474d09ea00aff/uv-0.10.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
hash =
"sha256:be85acae8f31c68311505cd96202bad43165cbd7be110c59222f918677e93248", size
= 24453680, upload-time = "2026-03-19T21:51:11.443Z" },
+ { url =
"https://files.pythonhosted.org/packages/09/26/b5920b43d7c91e720b72feaf81ea8575fa6188b626607695199fb9a0b683/uv-0.10.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl",
hash =
"sha256:2bb5893d79179727253e4a283871a693d7773c662a534fb897aa65496aa35765", size
= 23570067, upload-time = "2026-03-19T21:51:13.976Z" },
+ { url =
"https://files.pythonhosted.org/packages/8d/42/139e68d7d92bb90a33b5e269dbe474acb00b6c9797541032f859c5bf4c4d/uv-0.10.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
hash =
"sha256:101481a1f48db6becf219914a591a588c0b3bfd05bef90768a5d04972bd6455e", size
= 23498314, upload-time = "2026-03-19T21:50:36.104Z" },
+ { url =
"https://files.pythonhosted.org/packages/0c/75/40b237d005e4cdef9f960c215d3e2c0ab4f459ca009c3800cdcb07fbaa1d/uv-0.10.12-py3-none-manylinux_2_28_aarch64.whl",
hash =
"sha256:384b7f36a1ae50efe5f50fe299f276a83bf7acc8b7147517f34e27103270f016", size
= 22314017, upload-time = "2026-03-19T21:50:56.45Z" },
+ { url =
"https://files.pythonhosted.org/packages/d0/c3/e65a6d795d5baf6fc113ff764650cc6dd792d745ff23f657e4c302877365/uv-0.10.12-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl",
hash =
"sha256:2c21e1b36c384f75dd3fd4a818b04871158ce115efff0bb4fdcd18ba2df7bd48", size
= 23321597, upload-time = "2026-03-19T21:50:39.012Z" },
+ { url =
"https://files.pythonhosted.org/packages/65/ad/00f561b90b0ddfd1d591a78299fdeae68566e9cf82a4913548e4b700afef/uv-0.10.12-py3-none-manylinux_2_31_riscv64.whl",
hash =
"sha256:006812a086fce03d230fc987299f7295c7a73d17a1f1c17de1d1f327826f8481", size
= 23336447, upload-time = "2026-03-19T21:50:58.764Z" },
+ { url =
"https://files.pythonhosted.org/packages/f1/6e/ddf50c9ad12cffa99dbb6d1ab920da8ba95e510982cf53df3424e8cbc228/uv-0.10.12-py3-none-musllinux_1_1_i686.whl",
hash =
"sha256:2c5dfc7560453186e911c8c2e4ce95cd1c91e1c5926c3b34c5a825a307217be9", size
= 22855873, upload-time = "2026-03-19T21:51:01.13Z" },
+ { url =
"https://files.pythonhosted.org/packages/7a/9a/31a9c2f939849e56039bbe962aef6fb960df68c31bebd834d956876decfc/uv-0.10.12-py3-none-musllinux_1_1_x86_64.whl",
hash =
"sha256:b9ca1d264059cb016c853ebbc4f21c72d983e0f347c927ca29e283aec2f596cf", size
= 23675276, upload-time = "2026-03-19T21:51:17.262Z" },
+ { url =
"https://files.pythonhosted.org/packages/81/83/9225e3032f24fcb3b80ff97bbd4c28230de19f0f6b25dbad3ba6efda035e/uv-0.10.12-py3-none-win32.whl",
hash =
"sha256:cca36540d637c80d11d8a44a998a068355f0c78b75ec6b0f152ecbf89dfdd67b", size
= 21739726, upload-time = "2026-03-19T21:50:46.155Z" },
+ { url =
"https://files.pythonhosted.org/packages/b5/9c/1954092ce17c00a8c299d39f8121e4c8d60f22a69c103f34d8b8dc68444d/uv-0.10.12-py3-none-win_amd64.whl",
hash =
"sha256:76ebe11572409dfbe20ec25a823f9bc8781400ece5356aa33ec44903af7ec316", size
= 24219668, upload-time = "2026-03-19T21:51:03.591Z" },
+ { url =
"https://files.pythonhosted.org/packages/37/92/9ca420deb5a7b6716d8746e1b05eb2c35a305ff3b4aa57061919087d82dd/uv-0.10.12-py3-none-win_arm64.whl",
hash =
"sha256:6727e3a0208059cd4d621684e580d5e254322dacbd806e0d218360abd0d48a68", size
= 22544602, upload-time = "2026-03-19T21:51:22.678Z" },
]
[[package]]
diff --git a/devel-common/pyproject.toml b/devel-common/pyproject.toml
index 949647f10f1..70c8377f0d2 100644
--- a/devel-common/pyproject.toml
+++ b/devel-common/pyproject.toml
@@ -35,7 +35,7 @@ dependencies = [
"kgb>=7.2.0",
"requests_mock>=1.11.0",
"rich>=13.6.0",
- "ruff==0.15.6",
+ "ruff==0.15.7",
"semver>=3.0.2",
"typer-slim>=0.15.1",
# limited due to changes needed
https://github.com/apache/airflow/issues/58470
diff --git a/pyproject.toml b/pyproject.toml
index e6b6242afb2..7cd2722b1cb 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -530,7 +530,7 @@ packages = []
"apache-airflow-providers-amazon[s3fs]",
]
"uv" = [
- "uv>=0.10.11",
+ "uv>=0.10.12",
]
diff --git a/scripts/ci/prek/check_imports_in_providers.py
b/scripts/ci/prek/check_imports_in_providers.py
index 113e4479321..f48c4908d7d 100755
--- a/scripts/ci/prek/check_imports_in_providers.py
+++ b/scripts/ci/prek/check_imports_in_providers.py
@@ -19,7 +19,7 @@
# requires-python = ">=3.10,<3.11"
# dependencies = [
# "rich>=13.6.0",
-# "ruff==0.15.6",
+# "ruff==0.15.7",
# ]
# ///
from __future__ import annotations
diff --git a/scripts/ci/prek/ruff_format.py b/scripts/ci/prek/ruff_format.py
index 795f9f5f188..49f321917b0 100755
--- a/scripts/ci/prek/ruff_format.py
+++ b/scripts/ci/prek/ruff_format.py
@@ -18,7 +18,7 @@
# /// script
# requires-python = ">=3.10,<3.11"
# dependencies = [
-# "ruff==0.15.6",
+# "ruff==0.15.7",
# ]
# ///
diff --git a/scripts/tools/setup_breeze b/scripts/tools/setup_breeze
index 8c092ce314e..c39357d7b51 100755
--- a/scripts/tools/setup_breeze
+++ b/scripts/tools/setup_breeze
@@ -27,7 +27,7 @@ COLOR_YELLOW=$'\e[33m'
COLOR_BLUE=$'\e[34m'
COLOR_RESET=$'\e[0m'
-UV_VERSION="0.10.11"
+UV_VERSION="0.10.12"
function manual_instructions() {
echo