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]"},

Reply via email to