This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new e7cf65045a2 Consistently exclude Python 3.14 (#58657)
e7cf65045a2 is described below
commit e7cf65045a2b2bdaf97321d203160090723c36bf
Author: Jarek Potiuk <[email protected]>
AuthorDate: Tue Nov 25 01:36:48 2025 +0100
Consistently exclude Python 3.14 (#58657)
Since UV and other installers essentially ignore < limit in the
python-requires, a good practice is to simply exclude current Python
versions that we **know** we are not compatible with rather than
using <.
Python 3.14 is a thing now and people will get it by default as
latest versions, but we do not run our tests with Python 3.14
yet (not until March/April 2026). Providers have all
upper-bind exclusion except those that do not support Python 3.13,
but that's ok because they are actually limited by Airflow they
can be installed on. But for distributions like airflow-ctl,
we should explicitly exclude 3.14 until we support and test it.
This PR synchronizes all python-requires in non-provider
distribution to consistently exclude Python 3.14 with !=.
---
airflow-core/pyproject.toml | 2 +-
airflow-ctl-tests/pyproject.toml | 2 +-
airflow-ctl/pyproject.toml | 2 +-
airflow-e2e-tests/pyproject.toml | 2 +-
chart/pyproject.toml | 2 +-
clients/python/pyproject.toml | 2 +-
dev/breeze/pyproject.toml | 2 +-
dev/pyproject.toml | 2 +-
docker-stack-docs/pyproject.toml | 2 +-
docker-tests/pyproject.toml | 2 +-
helm-tests/pyproject.toml | 2 +-
kubernetes-tests/pyproject.toml | 2 +-
performance/pyproject.toml | 2 +-
providers-summary-docs/pyproject.toml | 2 +-
pyproject.toml | 7 +------
task-sdk-integration-tests/pyproject.toml | 2 +-
task-sdk/pyproject.toml | 2 +-
17 files changed, 17 insertions(+), 22 deletions(-)
diff --git a/airflow-core/pyproject.toml b/airflow-core/pyproject.toml
index 1775cbb018d..e82c6068111 100644
--- a/airflow-core/pyproject.toml
+++ b/airflow-core/pyproject.toml
@@ -41,7 +41,7 @@ license-files = ["LICENSE", "NOTICE"]
# proactively. This way we also have a chance to test it with Python 3.14 and
bump the upper binding
# and manually mark providers that do not support it yet with !-3.14 - until
they support it - which will
# also exclude resolving uv workspace dependencies for those providers.
-requires-python = ">=3.10,<3.14"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/airflow-ctl-tests/pyproject.toml b/airflow-ctl-tests/pyproject.toml
index 24c7f561ed1..8adbe1f6285 100644
--- a/airflow-ctl-tests/pyproject.toml
+++ b/airflow-ctl-tests/pyproject.toml
@@ -26,7 +26,7 @@ description = "Airflow CTL tests for Apache Airflow"
classifiers = [
"Private :: Do Not Upload",
]
-requires-python = ">=3.10,!=3.13"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/airflow-ctl/pyproject.toml b/airflow-ctl/pyproject.toml
index 8c2fe12a7c5..b917c804b20 100644
--- a/airflow-ctl/pyproject.toml
+++ b/airflow-ctl/pyproject.toml
@@ -26,7 +26,7 @@ license-files = ["LICENSE", "NOTICE"]
# out-of-the box. Airflow-ctl is a small tool that does not have many
dependencies and does not use
# sophisticated features of Python, so it should work with Python 3.14+ once
all it's dependencies are
# updated to support it.
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
dependencies = [
# TODO there could be still missing deps such as airflow-core
"argcomplete>=1.10",
diff --git a/airflow-e2e-tests/pyproject.toml b/airflow-e2e-tests/pyproject.toml
index a9406aa2a6f..992b69d09f7 100644
--- a/airflow-e2e-tests/pyproject.toml
+++ b/airflow-e2e-tests/pyproject.toml
@@ -25,7 +25,7 @@ description = "E2E tests for Apache Airflow"
classifiers = [
"Private :: Do Not Upload",
]
-requires-python = ">=3.10,!=3.13"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/chart/pyproject.toml b/chart/pyproject.toml
index 35816e6abc9..1953e48fa15 100644
--- a/chart/pyproject.toml
+++ b/chart/pyproject.toml
@@ -24,7 +24,7 @@ build-backend = "hatchling.build"
[project]
name = "apache-airflow-helm-chart"
description = "Programmatically author, schedule and monitor data pipelines"
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/clients/python/pyproject.toml b/clients/python/pyproject.toml
index 59593b1d8dd..cee362194aa 100644
--- a/clients/python/pyproject.toml
+++ b/clients/python/pyproject.toml
@@ -26,7 +26,7 @@ description = "Apache Airflow API (Stable)"
readme = "README.md"
license = "Apache-2.0"
license-files = ["LICENSE", "NOTICE"]
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/dev/breeze/pyproject.toml b/dev/breeze/pyproject.toml
index 15f53dd7b00..3cf6686831c 100644
--- a/dev/breeze/pyproject.toml
+++ b/dev/breeze/pyproject.toml
@@ -40,7 +40,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
-requires-python = ">=3.10, !=3.13"
+requires-python = ">=3.10,!=3.14"
dependencies = [
"black>=25.0.0",
diff --git a/dev/pyproject.toml b/dev/pyproject.toml
index d4c58fa3b88..e3a9722c33c 100644
--- a/dev/pyproject.toml
+++ b/dev/pyproject.toml
@@ -26,7 +26,7 @@ description = "Development tools for Apache Airflow"
classifiers = [
"Private :: Do Not Upload",
]
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/docker-stack-docs/pyproject.toml b/docker-stack-docs/pyproject.toml
index d29f32bda3b..c1a5ce513ab 100644
--- a/docker-stack-docs/pyproject.toml
+++ b/docker-stack-docs/pyproject.toml
@@ -24,7 +24,7 @@ build-backend = "hatchling.build"
[project]
name = "docker-stack"
description = "Programmatically author, schedule and monitor data pipelines"
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/docker-tests/pyproject.toml b/docker-tests/pyproject.toml
index fe2ced2cb36..ff646d8da67 100644
--- a/docker-tests/pyproject.toml
+++ b/docker-tests/pyproject.toml
@@ -26,7 +26,7 @@ description = "Docker tests for Apache Airflow"
classifiers = [
"Private :: Do Not Upload",
]
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/helm-tests/pyproject.toml b/helm-tests/pyproject.toml
index 799fc4cebb7..1cac48c8b68 100644
--- a/helm-tests/pyproject.toml
+++ b/helm-tests/pyproject.toml
@@ -26,7 +26,7 @@ description = "Helm tests for Apache Airflow"
classifiers = [
"Private :: Do Not Upload",
]
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/kubernetes-tests/pyproject.toml b/kubernetes-tests/pyproject.toml
index bced4f3384d..0caddfb394f 100644
--- a/kubernetes-tests/pyproject.toml
+++ b/kubernetes-tests/pyproject.toml
@@ -24,7 +24,7 @@ description = "Kubernetes tests for Apache Airflow"
classifiers = [
"Private :: Do Not Upload",
]
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/performance/pyproject.toml b/performance/pyproject.toml
index 958467e4f25..35a3e0846b3 100644
--- a/performance/pyproject.toml
+++ b/performance/pyproject.toml
@@ -21,7 +21,7 @@ build-backend = "flit_core.buildapi"
[project]
name = "apache-airflow-performance"
version = "0.1.0"
-requires-python = ">=3.10,!=3.13"
+requires-python = ">=3.10,!=3.14"
description = "Performance testing utilities and DAGs for Apache Airflow"
readme = { file = "README.md", content-type = "text/markdown" }
license = "Apache-2.0"
diff --git a/providers-summary-docs/pyproject.toml
b/providers-summary-docs/pyproject.toml
index 710625e15c2..f507506e585 100644
--- a/providers-summary-docs/pyproject.toml
+++ b/providers-summary-docs/pyproject.toml
@@ -24,7 +24,7 @@ build-backend = "hatchling.build"
[project]
name = "apache-airflow-providers"
description = "Programmatically author, schedule and monitor data pipelines"
-requires-python = ">=3.10"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/pyproject.toml b/pyproject.toml
index 7a7b707f669..89958976947 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -35,12 +35,7 @@ description = "Programmatically author, schedule and monitor
data pipelines"
readme = { file = "generated/PYPI_README.md", content-type = "text/markdown" }
license = "Apache-2.0"
license-files = ["LICENSE", "NOTICE"]
-# We know that it will take a while before we can support Python 3.14 because
of all our dependencies
-# It takes about 4-7 months after Python release before we can support it, so
we limit it to <3.14
-# proactively. This way we also have a chance to test it with Python 3.14 and
bump the upper binding
-# and manually mark providers that do not support it yet with !-3.14 - until
they support it - which will
-# also exclude resolving uv workspace dependencies for those providers.
-requires-python = ">=3.10, <3.14"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/task-sdk-integration-tests/pyproject.toml
b/task-sdk-integration-tests/pyproject.toml
index 100ed5ee9dd..1c7d3595099 100644
--- a/task-sdk-integration-tests/pyproject.toml
+++ b/task-sdk-integration-tests/pyproject.toml
@@ -26,7 +26,7 @@ description = "Task SDK integration tests for Apache Airflow"
classifiers = [
"Private :: Do Not Upload",
]
-requires-python = ">=3.10,!=3.13"
+requires-python = ">=3.10,!=3.14"
authors = [
{ name = "Apache Software Foundation", email = "[email protected]" },
]
diff --git a/task-sdk/pyproject.toml b/task-sdk/pyproject.toml
index a8bb72c0ce3..6334373c3d7 100644
--- a/task-sdk/pyproject.toml
+++ b/task-sdk/pyproject.toml
@@ -26,7 +26,7 @@ license-files = ["LICENSE", "NOTICE"]
# in all our providers - and usually it will take a while before we can
support it for majority of
# providers, so we proactively limit it to <3.14.
# It takes about 4-7 months after Python release before we can support it
-requires-python = ">=3.10, <3.14"
+requires-python = ">=3.10,!=3.14"
authors = [
{name="Apache Software Foundation", email="[email protected]"},