Skip to content

Commit 71cbff2

Browse files
committed
Attempt to add Python 3.11 support
Python 3.11 has been released as scheduled on October 25, 2022 and this is the first attempt to see how far Airflow (mostly dependencies) are from being ready to officially support 3.11. So far we had to exclude the following dependencies: - [ ] Pyarrow dependency: apache/arrow#14499 - [ ] Google Provider: #27292 and googleapis/python-bigquery#1386 - [ ] Databricks Provider: databricks/databricks-sql-python#59 - [ ] Papermill Provider: nteract/papermill#700 - [ ] Azure Provider: Azure/azure-uamqp-python#334 and Azure/azure-sdk-for-python#27066 - [ ] Apache Beam Provider: apache/beam#23848 - [ ] Snowflake Provider: snowflakedb/snowflake-connector-python#1294 - [ ] JDBC Provider: jpype-project/jpype#1087 - [ ] Hive Provider: cloudera/python-sasl#30 We might decide to release Airflow in 3.11 with those providers disabled in case they are lagging behind eventually, but for the moment we want to work with all the projects in concert to be able to release all providers (Google Provider requires quite a lot of work and likely Google Team stepping up and community helping with migration to latest Goofle cloud libraries)
1 parent 55f8a63 commit 71cbff2

File tree

80 files changed

+2936
-2695
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+2936
-2695
lines changed

CI.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Container Registry used as cache
5959
We are using GitHub Container Registry to store the results of the ``Build Images``
6060
workflow which is used in the ``Tests`` workflow.
6161

62-
Currently in main version of Airflow we run tests in 4 different versions of Python (3.7, 3.8, 3.9, 3.10)
62+
Currently in main version of Airflow we run tests in those versions of Python (3.7, 3.8, 3.9, 3.10, 3.11)
6363
which means that we have to build 8 images (4 CI ones and 4 PROD ones). Yet we run around 12 jobs
6464
with each of the CI images. That is a lot of time to just build the environment to run. Therefore
6565
we are utilising ``pull_request_target`` feature of GitHub Actions.

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1215,7 +1215,7 @@ ARG ADDITIONAL_PYTHON_DEPS=""
12151215
# are compatible with the new protobuf version. All the google python client libraries need
12161216
# to be upgraded to >=2.0.0 in order to able to lift that limitation
12171217
# https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
1218-
ARG EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS="dill<0.3.3 pyarrow>=6.0.0 protobuf<4.21.0"
1218+
ARG EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS="dill<0.3.3 pyarrow>=6.0.0;python_version==\"3.10\" protobuf<4.21.0"
12191219

12201220
ENV ADDITIONAL_PYTHON_DEPS=${ADDITIONAL_PYTHON_DEPS} \
12211221
INSTALL_PACKAGES_FROM_CONTEXT=${INSTALL_PACKAGES_FROM_CONTEXT} \

Dockerfile.ci

+1-1
Original file line numberDiff line numberDiff line change
@@ -1142,7 +1142,7 @@ RUN echo "Airflow version: ${AIRFLOW_VERSION}"
11421142
# are compatible with the new protobuf version. All the google python client libraries need
11431143
# to be upgraded to >= 2.0.0 in order to able to lift that limitation
11441144
# https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
1145-
ARG EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS="dill<0.3.3 pyarrow>=6.0.0 protobuf<4.21.0"
1145+
ARG EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS="dill<0.3.3 pyarrow>=6.0.0;python_version==\"3.10\" protobuf<4.21.0"
11461146
ARG UPGRADE_TO_NEWER_DEPENDENCIES="false"
11471147
ENV EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS=${EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS} \
11481148
UPGRADE_TO_NEWER_DEPENDENCIES=${UPGRADE_TO_NEWER_DEPENDENCIES}

LOCAL_VIRTUALENV.rst

+6-6
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Required Software Packages
5151
Use system-level package managers like yum, apt-get for Linux, or
5252
Homebrew for macOS to install required software packages:
5353

54-
* Python (One of: 3.7, 3.8, 3.9, 3.10)
54+
* Python (One of: 3.7, 3.8, 3.9, 3.10, 3.11)
5555
* MySQL 5.7+
5656
* libxml
5757

@@ -102,7 +102,7 @@ Creating a Local virtualenv
102102

103103
To use your IDE for Airflow development and testing, you need to configure a virtual
104104
environment. Ideally you should set up virtualenv for all Python versions that Airflow
105-
supports (3.7, 3.8, 3.9, 3.10).
105+
supports (3.7, 3.8, 3.9, 3.10, 3.11).
106106

107107
To create and initialize the local virtualenv:
108108

@@ -122,7 +122,7 @@ To create and initialize the local virtualenv:
122122

123123
.. code-block:: bash
124124
125-
conda create -n airflow python=3.7 # or 3.8, 3.9, 3.10
125+
conda create -n airflow python=3.7 # or 3.8, 3.9, 3.10, 3.11
126126
conda activate airflow
127127
128128
2. Install Python PIP requirements:
@@ -150,7 +150,7 @@ for different python versions). For development on current main source:
150150

151151
.. code-block:: bash
152152
153-
# use the same version of python as you are working with, 3.7, 3.8, 3.9, or 3.10
153+
# use the same version of python as you are working with, 3.7, 3.8, 3.9, 3.10 or 3.11
154154
pip install -e ".[devel,<OTHER EXTRAS>]" \
155155
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-source-providers-3.7.txt"
156156
@@ -163,7 +163,7 @@ You can also install Airflow in non-editable mode:
163163

164164
.. code-block:: bash
165165
166-
# use the same version of python as you are working with, 3.7, 3.8, 3.9, or 3.10
166+
# use the same version of python as you are working with, 3.7, 3.8, 3.9, 3.10 or 3.11
167167
pip install ".[devel,<OTHER EXTRAS>]" \
168168
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-source-providers-3.7.txt"
169169
@@ -173,7 +173,7 @@ sources, unless you set ``INSTALL_PROVIDERS_FROM_SOURCES`` environment variable
173173

174174
.. code-block:: bash
175175
176-
# use the same version of python as you are working with, 3.7, 3.8, 3.9, or 3.10
176+
# use the same version of python as you are working with, 3.7, 3.8, 3.9, 3.10 or 3.11
177177
INSTALL_PROVIDERS_FROM_SOURCES="true" pip install ".[devel,<OTHER EXTRAS>]" \
178178
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-source-providers-3.7.txt"
179179

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Apache Airflow is tested with:
8787

8888
| | Main version (dev) | Stable version (2.4.2) |
8989
|---------------------|------------------------------|------------------------------|
90-
| Python | 3.7, 3.8, 3.9, 3.10 | 3.7, 3.8, 3.9, 3.10 |
90+
| Python | 3.7, 3.8, 3.9, 3.10, 3.11 | 3.7, 3.8, 3.9, 3.10, 3.11 |
9191
| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) |
9292
| Kubernetes | 1.21, 1.22, 1.23, 1.24, 1.25 | 1.21, 1.22, 1.23, 1.24, 1.25 |
9393
| PostgreSQL | 10, 11, 12, 13, 14 | 10, 11, 12, 13, 14 |

airflow/providers/apache/beam/provider.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ dependencies:
3838
- apache-airflow>=2.3.0
3939
- apache-beam>=2.39.0
4040

41+
# Excluded because apache-beam and a number of dependent libraries are not
42+
# compatible with 3.11 yet. See https://github.com/apache/beam/issues/23848
43+
excluded-python-versions:
44+
- "3.11"
45+
4146
integrations:
4247
- integration-name: Apache Beam
4348
external-doc-url: https://beam.apache.org/

airflow/providers/apache/hive/provider.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ dependencies:
5353
- sasl>=0.3.1; python_version>="3.9"
5454
- thrift>=0.9.2
5555

56+
# Excluded because SASL is not yet compatible
57+
# with 3.11. See https://github.com/cloudera/python-sasl/issues/30
58+
excluded-python-versions:
59+
- "3.11"
60+
5661
integrations:
5762
- integration-name: Apache Hive
5863
external-doc-url: https://hive.apache.org/

airflow/providers/databricks/provider.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ dependencies:
4646
- databricks-sql-connector>=2.0.0, <3.0.0
4747
- aiohttp>=3.6.3, <4
4848

49+
# Excluded because databricks-sql-connector and a number of dependent libraries are not compatible
50+
# with 3.11 yet See https://pyreadiness.org/3.11/. (Pyarrow is one of the important ones)
51+
# See https://github.com/databricks/databricks-sql-python/issues/59 for issue that tracks it
52+
excluded-python-versions:
53+
- "3.11"
54+
4955
integrations:
5056
- integration-name: Databricks
5157
external-doc-url: https://databricks.com/

airflow/providers/google/provider.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,12 @@ dependencies:
117117
# Google bigtable client require protobuf <= 3.20.0. We can remove the limitation
118118
# when this limitation is removed
119119
- protobuf<=3.20.0
120+
# Excluded because bigquery and a number of dependent libraries are not compatible with 3.11 yet
121+
# See https://pyreadiness.org/3.11/. Also some of Google libraries are in pretty ancient
122+
# version (pre 2.0.0) and they MUST be migrated in order to add 3.11 support
123+
# This is tracked in https://github.com/apache/airflow/issues/27292
124+
excluded-python-versions:
125+
- "3.11"
120126

121127
integrations:
122128
- integration-name: Google Analytics360

airflow/providers/jdbc/provider.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ dependencies:
4040
- apache-airflow-providers-common-sql>=1.3.0
4141
- jaydebeapi>=1.1.1
4242

43+
# Excluded because Jpype1 is not yet compatible
44+
# with 3.11 yet. See https://github.com/jpype-project/jpype/pull/1087
45+
excluded-python-versions:
46+
- "3.11"
47+
4348
integrations:
4449
- integration-name: Java Database Connectivity (JDBC)
4550
external-doc-url: https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/

airflow/providers/microsoft/azure/provider.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ dependencies:
6565
- azure-servicebus>=7.6.1; platform_machine != "aarch64"
6666
- azure-synapse-spark
6767

68+
# Excluded because azure-uamqp-python and azure-core and a number of dependent libraries are not compatible
69+
# with 3.11 yet See https://pyreadiness.org/3.11/.
70+
# See for issues that track it:
71+
# * https://github.com/Azure/azure-uamqp-python/issues/334
72+
# * https://github.com/Azure/azure-sdk-for-python/issues/27066
73+
excluded-python-versions:
74+
- "3.11"
75+
6876
integrations:
6977
- integration-name: Microsoft Azure Batch
7078
external-doc-url: https://azure.microsoft.com/en-us/services/batch/

airflow/providers/papermill/provider.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ dependencies:
3939
- papermill[all]>=1.2.1
4040
- scrapbook[all]
4141

42+
# Excluded because papermill and a number of dependent libraries are not compatible
43+
# with 3.11 yet See https://pyreadiness.org/3.11/. (Pyarrow is one of the important ones)
44+
# See for issue that tracks it https://github.com/nteract/papermill/issues/700
45+
excluded-python-versions:
46+
- "3.11"
47+
48+
4249
integrations:
4350
- integration-name: Papermill
4451
external-doc-url: https://github.com/nteract/papermill

airflow/providers/snowflake/provider.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ dependencies:
5050
- snowflake-connector-python>=2.4.1
5151
- snowflake-sqlalchemy>=1.1.0
5252

53+
# Excluded because snowflake connector python and a number of dependent libraries are not
54+
# compatible with 3.11 yet. See https://pyreadiness.org/3.11/. One of the important dependencies
55+
# is Pyarrow: https://github.com/apache/arrow/pull/14499 but the
56+
# https://github.com/snowflakedb/snowflake-connector-python/issues/1289 is the issue
57+
excluded-python-versions:
58+
- "3.11"
59+
5360
integrations:
5461
- integration-name: Snowflake
5562
external-doc-url: https://snowflake.com/

dev/README_RELEASE_AIRFLOW.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ the older branches, you should set the "skip" field to true.
986986
## Verify production images
987987
988988
```shell script
989-
for PYTHON in 3.7 3.8 3.9 3.10
989+
for PYTHON in 3.7 3.8 3.9 3.10 3.11
990990
do
991991
docker pull apache/airflow:${VERSION}-python${PYTHON}
992992
breeze prod-image verify --image-name apache/airflow:${VERSION}-python${PYTHON}

dev/breeze/SELECTIVE_CHECKS.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ The selective check outputs available are described below:
109109

110110
| Output | Meaning of the output | Example value |
111111
|------------------------------------|--------------------------------------------------------------------------------------------------------|---------------------------------------------------------------|
112-
| all-python-versions | List of all python versions there are available in the form of JSON array | ['3.7', '3.8', '3.9', '3.10'] |
113-
| all-python-versions-list-as-string | List of all python versions there are available in the form of space separated string | 3.7 3.8 3.9 3.10 |
112+
| all-python-versions | List of all python versions there are available in the form of JSON array | ['3.7', '3.8', '3.9', '3.10', '3.11'] |
113+
| all-python-versions-list-as-string | List of all python versions there are available in the form of space separated string | 3.7 3.8 3.9 3.10 3.11 |
114114
| basic-checks-only | Whether to run all static checks ("false") or only basic set of static checks ("true") | false |
115115
| cache-directive | Which cache should be be used for images ("registry", "local" , "disabled") | registry |
116116
| debug-resources | Whether resources usage should be printed during parallel job execution ("true"/ "false") | false |

dev/breeze/src/airflow_breeze/global_constants.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
APACHE_AIRFLOW_GITHUB_REPOSITORY = "apache/airflow"
3838

3939
# Checked before putting in build cache
40-
ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]
40+
ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"]
4141
DEFAULT_PYTHON_MAJOR_MINOR_VERSION = ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[0]
4242
ALLOWED_ARCHITECTURES = [Architecture.X86_64, Architecture.ARM]
4343
ALLOWED_BACKENDS = ["sqlite", "mysql", "postgres", "mssql"]
@@ -153,7 +153,7 @@ def get_default_platform_machine() -> str:
153153
PYTHONDONTWRITEBYTECODE = True
154154

155155
PRODUCTION_IMAGE = False
156-
ALL_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]
156+
ALL_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"]
157157
CURRENT_PYTHON_MAJOR_MINOR_VERSIONS = ALL_PYTHON_MAJOR_MINOR_VERSIONS
158158
CURRENT_POSTGRES_VERSIONS = ["10", "11", "12", "13", "14"]
159159
DEFAULT_POSTGRES_VERSION = CURRENT_POSTGRES_VERSIONS[0]

dev/breeze/src/airflow_breeze/utils/selective_checks.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ def mysql_exclude(self) -> list[dict[str, str]]:
360360

361361
@cached_property
362362
def sqlite_exclude(self) -> list[dict[str, str]]:
363-
return [{"python-version": "3.9"}] if self._full_tests_needed else []
363+
return [{"python-version": "3.11"}] if self._full_tests_needed else []
364364

365365
@cached_property
366366
def kubernetes_versions(self) -> list[str]:

dev/breeze/tests/test_cache.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
[
3737
("backend", "mysql", (True, ["sqlite", "mysql", "postgres", "mssql"]), None),
3838
("backend", "xxx", (False, ["sqlite", "mysql", "postgres", "mssql"]), None),
39-
("python_major_minor_version", "3.8", (True, ["3.7", "3.8", "3.9", "3.10"]), None),
40-
("python_major_minor_version", "3.5", (False, ["3.7", "3.8", "3.9", "3.10"]), None),
39+
("python_major_minor_version", "3.8", (True, ["3.7", "3.8", "3.9", "3.10", "3.11"]), None),
40+
("python_major_minor_version", "3.5", (False, ["3.7", "3.8", "3.9", "3.10", "3.11"]), None),
4141
("missing", "value", None, AttributeError),
4242
],
4343
)

dev/breeze/tests/test_selective_checks.py

+20-20
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str):
206206
pytest.param(
207207
("setup.py",),
208208
{
209-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
210-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
209+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
210+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
211211
"image-build": "true",
212212
"needs-helm-tests": "true",
213213
"run-tests": "true",
@@ -223,8 +223,8 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str):
223223
pytest.param(
224224
("generated/provider_dependencies.json",),
225225
{
226-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
227-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
226+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
227+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
228228
"image-build": "true",
229229
"needs-helm-tests": "true",
230230
"run-tests": "true",
@@ -260,8 +260,8 @@ def test_expected_output_pull_request_main(
260260
("full tests needed",),
261261
"main",
262262
{
263-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
264-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
263+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
264+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
265265
"image-build": "true",
266266
"run-tests": "true",
267267
"docs-build": "true",
@@ -280,8 +280,8 @@ def test_expected_output_pull_request_main(
280280
),
281281
"main",
282282
{
283-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
284-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
283+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
284+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
285285
"image-build": "true",
286286
"run-tests": "true",
287287
"docs-build": "true",
@@ -298,8 +298,8 @@ def test_expected_output_pull_request_main(
298298
("full tests needed",),
299299
"main",
300300
{
301-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
302-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
301+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
302+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
303303
"image-build": "true",
304304
"run-tests": "true",
305305
"docs-build": "true",
@@ -316,8 +316,8 @@ def test_expected_output_pull_request_main(
316316
("full tests needed",),
317317
"v2-3-stable",
318318
{
319-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
320-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
319+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
320+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
321321
"image-build": "true",
322322
"run-tests": "true",
323323
"docs-build": "true",
@@ -513,8 +513,8 @@ def test_expected_output_pull_request_target(
513513
(),
514514
"main",
515515
{
516-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
517-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
516+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
517+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
518518
"image-build": "true",
519519
"needs-helm-tests": "true",
520520
"run-tests": "true",
@@ -529,8 +529,8 @@ def test_expected_output_pull_request_target(
529529
(),
530530
"v2-3-stable",
531531
{
532-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
533-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
532+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
533+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
534534
"image-build": "true",
535535
"needs-helm-tests": "false",
536536
"run-tests": "true",
@@ -546,8 +546,8 @@ def test_expected_output_pull_request_target(
546546
(),
547547
"main",
548548
{
549-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
550-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
549+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
550+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
551551
"image-build": "true",
552552
"needs-helm-tests": "true",
553553
"run-tests": "true",
@@ -595,8 +595,8 @@ def test_no_commit_provided_trigger_full_build_for_any_event_type(github_event):
595595
)
596596
assert_outputs_are_printed(
597597
{
598-
"all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
599-
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
598+
"all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']",
599+
"all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11",
600600
"image-build": "true",
601601
"needs-helm-tests": "true",
602602
"run-tests": "true",

dev/provider_packages/prepare_provider_packages.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
from rich.syntax import Syntax
5454
from yaml import safe_load
5555

56-
ALL_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]
56+
ALL_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"]
5757

5858
INITIAL_CHANGELOG_CONTENT = """
5959

dev/retag_docker_images.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
import rich_click as click
3333

34-
PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10"]
34+
PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"]
3535

3636
GHCR_IO_PREFIX = "ghcr.io"
3737

docs/apache-airflow/installation/prerequisites.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Prerequisites
2020

2121
Starting with Airflow 2.3.0, Airflow is tested with:.
2222

23-
* Python: 3.7, 3.8, 3.9, 3.10
23+
* Python: 3.7, 3.8, 3.9, 3.10, 3.11
2424

2525
* Databases:
2626

docs/apache-airflow/upgrading-from-1-10/index.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Airflow 1.10 was the last release series to support Python 2. Airflow 2.0.0
3434
requires Python 3.6+ and has been tested with Python versions 3.6, 3.7 and 3.8.
3535
Python 3.9 support was added from Airflow 2.1.2.
3636

37-
Airflow 2.3.0 dropped support for Python 3.6. It's tested with Python 3.7, 3.8, 3.9 and 3.10.
37+
Airflow 2.3.0 dropped support for Python 3.6. It's tested with Python 3.7, 3.8, 3.9, 3.10, 3.11.
3838

3939
If you have a specific task that still requires Python 2 then you can use the ``@task.virtualenv``, ``@task.docker`` or ``@task.kubernetes`` decorators for this.
4040

0 commit comments

Comments
 (0)