This is an automated email from the ASF dual-hosted git repository.
shahar1 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 de147260bee Unexclude Cassandra on Python 3.14 (#74696)
de147260bee is described below
commit de147260bee7f86f337a74cadad81a1ccb587e83
Author: Dev-iL <[email protected]>
AuthorDate: Sat Nov 7 22:27:07 2026 +0200
Unexclude Cassandra on Python 3.14 (#74696)
#74559 marked the provider unavailable on 3.14 because no cassandra-driver
release then carried cp314 wheels. 3.30.0 was the first that did, and the
floor here is 3.30.1: opening a provider to a new interpreter is a fine
moment to take the intervening bugfixes with it.
The floor moves only for 3.14 and up, so 3.11-3.13 keep the drivers they
already resolve, and the topmost line stays open-ended so 3.15 resolves a
driver rather than installing the provider without one.
The meta-package floor stays at >=3.7.0. Raising it to the release that
will carry 3.14 support cannot work before that release is on PyPI: the
constraints job pins every provider at its newest published version, so
any higher floor contradicts the pin. The floor follows the wave instead.
---
dev/breeze/tests/test_selective_checks.py | 1 -
providers/apache/cassandra/README.rst | 3 ++-
providers/apache/cassandra/docs/changelog.rst | 6 ++++++
providers/apache/cassandra/docs/index.rst | 1 +
providers/apache/cassandra/provider.yaml | 3 ---
providers/apache/cassandra/pyproject.toml | 4 +++-
pyproject.toml | 4 ++--
uv.lock | 11 ++++++-----
8 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/dev/breeze/tests/test_selective_checks.py
b/dev/breeze/tests/test_selective_checks.py
index fa31f782b16..38f2955ccc1 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -2597,7 +2597,6 @@ def test_excluded_providers():
"excluded-providers-as-string": json.dumps(
{
"3.14": [
- "apache.cassandra", # Enable when the next release
after 3.29.3 is available
"apache.tinkerpop",
],
}
diff --git a/providers/apache/cassandra/README.rst
b/providers/apache/cassandra/README.rst
index 1c4f13f5187..06644d11e2e 100644
--- a/providers/apache/cassandra/README.rst
+++ b/providers/apache/cassandra/README.rst
@@ -45,7 +45,7 @@ You can install this package on top of an existing Airflow
installation (see ``R
for the minimum Airflow version supported) via
``pip install apache-airflow-providers-apache-cassandra``
-The package supports the following python versions: 3.11,3.12,3.13
+The package supports the following python versions: 3.11,3.12,3.13,3.14
Requirements
------------
@@ -55,6 +55,7 @@ PIP package Version required
==========================================
==================================================================
``apache-airflow`` ``>=2.11.0``
``apache-airflow-providers-common-compat`` ``>=1.8.0``
+``cassandra-driver`` ``>=3.30.1; python_version >=
"3.14"``
``cassandra-driver`` ``>=3.29.3; python_version >=
"3.13" and python_version < "3.14"``
``cassandra-driver`` ``>=3.29.2; python_version >=
"3.12" and python_version < "3.13"``
``cassandra-driver`` ``>=3.29.1; python_version <
"3.12"``
diff --git a/providers/apache/cassandra/docs/changelog.rst
b/providers/apache/cassandra/docs/changelog.rst
index 31324bb9fc3..a5da9ed9c45 100644
--- a/providers/apache/cassandra/docs/changelog.rst
+++ b/providers/apache/cassandra/docs/changelog.rst
@@ -26,6 +26,12 @@
Changelog
---------
+.. note::
+ The provider now supports Python 3.14. On 3.14 it requires
``cassandra-driver>=3.30.1``: 3.30.0 was
+ the first release to ship cp314 wheels, and the absence of a driver whose C
extension built on 3.14
+ was why the provider was excluded from it. Python 3.11-3.13 keep the driver
minimums they already
+ resolved, so nothing is forced to upgrade there.
+
3.10.1
......
diff --git a/providers/apache/cassandra/docs/index.rst
b/providers/apache/cassandra/docs/index.rst
index e4415104328..d8a87935274 100644
--- a/providers/apache/cassandra/docs/index.rst
+++ b/providers/apache/cassandra/docs/index.rst
@@ -101,6 +101,7 @@ PIP package Version required
==========================================
==================================================================
``apache-airflow`` ``>=2.11.0``
``apache-airflow-providers-common-compat`` ``>=1.8.0``
+``cassandra-driver`` ``>=3.30.1; python_version >=
"3.14"``
``cassandra-driver`` ``>=3.29.3; python_version >=
"3.13" and python_version < "3.14"``
``cassandra-driver`` ``>=3.29.2; python_version >=
"3.12" and python_version < "3.13"``
``cassandra-driver`` ``>=3.29.1; python_version <
"3.12"``
diff --git a/providers/apache/cassandra/provider.yaml
b/providers/apache/cassandra/provider.yaml
index b5b8be41753..1b5a4e41186 100644
--- a/providers/apache/cassandra/provider.yaml
+++ b/providers/apache/cassandra/provider.yaml
@@ -65,9 +65,6 @@ versions:
- 1.0.1
- 1.0.0
-excluded-python-versions:
- - "3.14"
-
integrations:
- integration-name: Apache Cassandra
external-doc-url: https://cassandra.apache.org/
diff --git a/providers/apache/cassandra/pyproject.toml
b/providers/apache/cassandra/pyproject.toml
index c0a42e1f2ad..d7760548998 100644
--- a/providers/apache/cassandra/pyproject.toml
+++ b/providers/apache/cassandra/pyproject.toml
@@ -48,9 +48,10 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Topic :: System :: Monitoring",
]
-requires-python = ">=3.11,!=3.14.*"
+requires-python = ">=3.11"
# The dependencies should be modified in place in the generated file.
# Any change in the dependencies is preserved when the file is regenerated
@@ -59,6 +60,7 @@ requires-python = ">=3.11,!=3.14.*"
dependencies = [
"apache-airflow>=2.11.0",
"apache-airflow-providers-common-compat>=1.8.0",
+ "cassandra-driver>=3.30.1; python_version >= '3.14'",
"cassandra-driver>=3.29.3; python_version >= '3.13' and python_version <
'3.14'",
"cassandra-driver>=3.29.2; python_version >= '3.12' and python_version <
'3.13'",
"cassandra-driver>=3.29.1; python_version < '3.12'",
diff --git a/pyproject.toml b/pyproject.toml
index 70796cb43e3..58716ef1fbc 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -119,7 +119,7 @@ apache-airflow = "airflow.__main__:main"
"apache-airflow-providers-apache-beam>=5.8.1"
]
"apache.cassandra" = [
- "apache-airflow-providers-apache-cassandra>=3.7.0; python_version
!=\"3.14\""
+ "apache-airflow-providers-apache-cassandra>=3.7.0"
]
"apache.drill" = [
"apache-airflow-providers-apache-drill>=2.8.1"
@@ -431,7 +431,7 @@ apache-airflow = "airflow.__main__:main"
"apache-airflow-providers-anthropic>=0.1.0",
"apache-airflow-providers-apache-arrow>=0.1.0",
"apache-airflow-providers-apache-beam>=5.8.1",
- "apache-airflow-providers-apache-cassandra>=3.7.0; python_version
!=\"3.14\"",
+ "apache-airflow-providers-apache-cassandra>=3.7.0",
"apache-airflow-providers-apache-drill>=2.8.1",
"apache-airflow-providers-apache-druid>=3.12.0",
"apache-airflow-providers-apache-flink>=1.6.0",
diff --git a/uv.lock b/uv.lock
index 940523be09d..bb6963fd7f3 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1069,7 +1069,7 @@ all = [
{ name = "apache-airflow-providers-anthropic" },
{ name = "apache-airflow-providers-apache-arrow" },
{ name = "apache-airflow-providers-apache-beam" },
- { name = "apache-airflow-providers-apache-cassandra", marker =
"python_full_version != '3.14.*'" },
+ { name = "apache-airflow-providers-apache-cassandra" },
{ name = "apache-airflow-providers-apache-drill" },
{ name = "apache-airflow-providers-apache-druid" },
{ name = "apache-airflow-providers-apache-flink" },
@@ -1201,7 +1201,7 @@ apache-beam = [
{ name = "apache-airflow-providers-apache-beam" },
]
apache-cassandra = [
- { name = "apache-airflow-providers-apache-cassandra", marker =
"python_full_version != '3.14.*'" },
+ { name = "apache-airflow-providers-apache-cassandra" },
]
apache-drill = [
{ name = "apache-airflow-providers-apache-drill" },
@@ -1660,8 +1660,8 @@ requires-dist = [
{ name = "apache-airflow-providers-apache-arrow", marker = "extra ==
'apache-arrow'", editable = "providers/apache/arrow" },
{ name = "apache-airflow-providers-apache-beam", marker = "extra ==
'all'", editable = "providers/apache/beam" },
{ name = "apache-airflow-providers-apache-beam", marker = "extra ==
'apache-beam'", editable = "providers/apache/beam" },
- { name = "apache-airflow-providers-apache-cassandra", marker =
"python_full_version != '3.14.*' and extra == 'all'", editable =
"providers/apache/cassandra" },
- { name = "apache-airflow-providers-apache-cassandra", marker =
"python_full_version != '3.14.*' and extra == 'apache-cassandra'", editable =
"providers/apache/cassandra" },
+ { name = "apache-airflow-providers-apache-cassandra", marker = "extra ==
'all'", editable = "providers/apache/cassandra" },
+ { name = "apache-airflow-providers-apache-cassandra", marker = "extra ==
'apache-cassandra'", editable = "providers/apache/cassandra" },
{ name = "apache-airflow-providers-apache-drill", marker = "extra ==
'all'", editable = "providers/apache/drill" },
{ name = "apache-airflow-providers-apache-drill", marker = "extra ==
'apache-drill'", editable = "providers/apache/drill" },
{ name = "apache-airflow-providers-apache-druid", marker = "extra ==
'all'", editable = "providers/apache/druid" },
@@ -3541,7 +3541,7 @@ source = { editable = "providers/apache/cassandra" }
dependencies = [
{ name = "apache-airflow" },
{ name = "apache-airflow-providers-common-compat" },
- { name = "cassandra-driver", marker = "python_full_version < '3.14'" },
+ { name = "cassandra-driver" },
]
[package.dev-dependencies]
@@ -3562,6 +3562,7 @@ requires-dist = [
{ name = "cassandra-driver", marker = "python_full_version < '3.12'",
specifier = ">=3.29.1" },
{ name = "cassandra-driver", marker = "python_full_version == '3.12.*'",
specifier = ">=3.29.2" },
{ name = "cassandra-driver", marker = "python_full_version == '3.13.*'",
specifier = ">=3.29.3" },
+ { name = "cassandra-driver", marker = "python_full_version >= '3.14'",
specifier = ">=3.30.1" },
]
[package.metadata.requires-dev]