Skip to content

Commit 6025476

Browse files
committed
Add Python 3.14 Support
Un-exclude the amazon provider from py3.14
1 parent be1fb80 commit 6025476

6 files changed

Lines changed: 30 additions & 32 deletions

File tree

dev/breeze/tests/test_selective_checks.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1383,7 +1383,6 @@ def test_excluded_providers():
13831383
"excluded-providers-as-string": json.dumps(
13841384
{
13851385
"3.14": [
1386-
"amazon", # Depends on lxml<6
13871386
"apache.cassandra", # Enable when the next release after 3.29.3 is available
13881387
],
13891388
}

providers/amazon/provider.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,6 @@ versions:
119119
- 1.1.0
120120
- 1.0.0
121121

122-
excluded-python-versions:
123-
- "3.14"
124-
125122
integrations:
126123
- integration-name: Amazon Athena
127124
external-doc-url: https://aws.amazon.com/athena/

providers/amazon/pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ classifiers = [
4949
"Programming Language :: Python :: 3.11",
5050
"Programming Language :: Python :: 3.12",
5151
"Programming Language :: Python :: 3.13",
52+
"Programming Language :: Python :: 3.14",
5253
"Topic :: System :: Monitoring",
5354
]
54-
requires-python = ">=3.10,!=3.14.*"
55+
requires-python = ">=3.10"
5556

5657
# The dependencies should be modified in place in the generated file.
5758
# Any change in the dependencies is preserved when the file is regenerated

pyproject.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ packages = []
101101
"apache-airflow-providers-alibaba>=3.0.0"
102102
]
103103
"amazon" = [
104-
"apache-airflow-providers-amazon>=9.0.0; python_version !=\"3.14\""
104+
"apache-airflow-providers-amazon>=9.0.0"
105105
]
106106
"apache.cassandra" = [
107107
"apache-airflow-providers-apache-cassandra>=3.7.0; python_version !=\"3.14\""
@@ -393,7 +393,7 @@ packages = []
393393
"apache-airflow-core[all]",
394394
"apache-airflow-providers-airbyte>=5.0.0",
395395
"apache-airflow-providers-alibaba>=3.0.0",
396-
"apache-airflow-providers-amazon>=9.0.0; python_version !=\"3.14\"",
396+
"apache-airflow-providers-amazon>=9.0.0",
397397
"apache-airflow-providers-apache-cassandra>=3.7.0; python_version !=\"3.14\"",
398398
"apache-airflow-providers-apache-drill>=2.8.1",
399399
"apache-airflow-providers-apache-druid>=3.12.0",
@@ -496,7 +496,7 @@ packages = []
496496
# TODO: We can remove it once boto3 and aiobotocore both have compatible botocore version or
497497
# boto3 have native aync support and we move away from aio aiobotocore
498498
"aiobotocore" = [
499-
"apache-airflow-providers-amazon[aiobotocore]>=9.6.0; python_version !=\"3.14\"",
499+
"apache-airflow-providers-amazon[aiobotocore]>=9.6.0",
500500
]
501501
"apache-atlas" = [
502502
"atlasclient>=0.1.2",
@@ -505,7 +505,7 @@ packages = []
505505
"apache-airflow-providers-apache-hdfs",
506506
]
507507
"amazon-aws-auth" = [
508-
"apache-airflow-providers-amazon[python3-saml]; python_version !=\"3.14\"",
508+
"apache-airflow-providers-amazon[python3-saml]",
509509
]
510510
"cloudpickle" = [
511511
"cloudpickle>=2.2.1",
@@ -536,7 +536,7 @@ packages = []
536536
"s3fs" = [
537537
# This is required for support of S3 file system which uses aiobotocore
538538
# which can have a conflict with boto3 as mentioned in aiobotocore extra
539-
"apache-airflow-providers-amazon[s3fs]; python_version !=\"3.14\"",
539+
"apache-airflow-providers-amazon[s3fs]",
540540
]
541541
"uv" = [
542542
"uv>=0.10.12",
@@ -1340,7 +1340,7 @@ leveldb = [
13401340
[tool.uv]
13411341
required-version = ">=0.6.3"
13421342
no-build-isolation-package = ["sphinx-redoc"]
1343-
constraint-dependencies = ["lxml==6.0.2"]
1343+
constraint-dependencies = ["lxml==6.0.2"] # Remove after https://github.com/aws/amazon-redshift-python-driver/pull/272
13441344

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

scripts/tests/ci/prek/test_check_excluded_provider_markers.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,42 @@
1919
import pytest
2020
from check_excluded_provider_markers import _check_dependency
2121

22-
EXCLUDED = {
23-
"apache-airflow-providers-amazon": ["3.14"],
24-
}
25-
2622

2723
class TestCheckDependency:
24+
EXCLUDED = {
25+
"apache-airflow-providers-amazon": ["3.14"],
26+
"apache-airflow-providers-google": ["3.14"],
27+
}
28+
2829
def test_no_error_when_marker_present(self):
2930
dep = 'apache-airflow-providers-amazon>=9.0.0; python_version !="3.14"'
30-
assert _check_dependency(dep, EXCLUDED) == []
31+
assert _check_dependency(dep, self.EXCLUDED) == []
3132

3233
def test_error_when_marker_missing(self):
3334
dep = "apache-airflow-providers-amazon>=9.0.0"
34-
errors = _check_dependency(dep, EXCLUDED)
35+
errors = _check_dependency(dep, self.EXCLUDED)
3536
assert len(errors) == 1
3637
assert '!="3.14"' in errors[0]
3738

3839
def test_error_when_no_marker_with_extras(self):
3940
dep = "apache-airflow-providers-amazon[aiobotocore]>=9.6.0"
40-
errors = _check_dependency(dep, EXCLUDED)
41+
errors = _check_dependency(dep, self.EXCLUDED)
4142
assert len(errors) == 1
4243

4344
def test_no_error_with_extras_and_marker(self):
4445
dep = 'apache-airflow-providers-amazon[aiobotocore]>=9.6.0; python_version !="3.14"'
45-
assert _check_dependency(dep, EXCLUDED) == []
46+
assert _check_dependency(dep, self.EXCLUDED) == []
4647

4748
def test_no_error_for_non_excluded_provider(self):
4849
dep = "apache-airflow-providers-celery>=1.0.0"
49-
assert _check_dependency(dep, EXCLUDED) == []
50+
assert _check_dependency(dep, self.EXCLUDED) == []
5051

5152
def test_no_error_for_non_provider_dependency(self):
5253
dep = "requests>=2.28"
53-
assert _check_dependency(dep, EXCLUDED) == []
54+
assert _check_dependency(dep, self.EXCLUDED) == []
5455

5556
def test_invalid_requirement_ignored(self):
56-
assert _check_dependency("not a valid requirement!!!", EXCLUDED) == []
57+
assert _check_dependency("not a valid requirement!!!", self.EXCLUDED) == []
5758

5859
@pytest.mark.parametrize(
5960
"excluded_versions",

uv.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)