From ff8aebf6a5e153162c34b630a743f06ab97c88b7 Mon Sep 17 00:00:00 2001 From: Jarek Potiuk Date: Tue, 25 Oct 2022 17:07:42 +0200 Subject: [PATCH] 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: https://github.com/apache/arrow/pull/14499 - [ ] Google Provider: https://github.com/apache/airflow/issues/27292 and https://github.com/googleapis/python-bigquery/issues/1386 - [ ] Databricks Provider: https://github.com/databricks/databricks-sql-python/issues/59 - [ ] Papermill Provider: https://github.com/nteract/papermill/issues/700 - [ ] Azure Provider: https://github.com/Azure/azure-uamqp-python/issues/334 and https://github.com/Azure/azure-sdk-for-python/issues/27066 - [ ] Apache Beam Provider: https://github.com/apache/beam/issues/23848 - [ ] Snowflake Provider: https://github.com/snowflakedb/snowflake-connector-python/pull/1294 - [ ] JDBC Provider: https://github.com/jpype-project/jpype/pull/1087 - [ ] Hive Provider: https://github.com/cloudera/python-sasl/issues/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) --- CI.rst | 2 +- LOCAL_VIRTUALENV.rst | 12 +- README.md | 2 +- airflow/providers/apache/beam/provider.yaml | 5 + airflow/providers/apache/hive/provider.yaml | 5 + airflow/providers/databricks/provider.yaml | 6 + airflow/providers/google/provider.yaml | 6 + airflow/providers/papermill/provider.yaml | 7 + airflow/providers/snowflake/provider.yaml | 7 + dev/README_RELEASE_AIRFLOW.md | 2 +- dev/breeze/SELECTIVE_CHECKS.md | 4 +- .../src/airflow_breeze/global_constants.py | 4 +- dev/breeze/tests/test_cache.py | 4 +- dev/breeze/tests/test_selective_checks.py | 64 ++--- .../prepare_provider_packages.py | 2 +- dev/retag_docker_images.py | 2 +- .../howto/upgrading-from-1-10/index.rst | 2 +- .../installation/prerequisites.rst | 2 +- docs/docker-stack/build.rst | 16 +- generated/provider_dependencies.json | 230 ++++++++++++------ images/breeze/output-commands-hash.txt | 70 +++--- images/breeze/output-commands.svg | 90 +++---- images/breeze/output_ci-image_build.svg | 4 +- images/breeze/output_ci-image_pull.svg | 60 ++--- images/breeze/output_ci-image_verify.svg | 32 +-- .../output_ci_find-newer-dependencies.svg | 2 +- images/breeze/output_k8s_build-k8s-image.svg | 52 ++-- .../breeze/output_k8s_configure-cluster.svg | 60 ++--- images/breeze/output_k8s_create-cluster.svg | 4 +- images/breeze/output_k8s_delete-cluster.svg | 34 +-- images/breeze/output_k8s_deploy-airflow.svg | 70 +++--- images/breeze/output_k8s_k9s.svg | 32 +-- images/breeze/output_k8s_logs.svg | 34 +-- .../breeze/output_k8s_run-complete-tests.svg | 68 +++--- images/breeze/output_k8s_shell.svg | 40 +-- images/breeze/output_k8s_status.svg | 36 +-- images/breeze/output_k8s_tests.svg | 68 +++--- images/breeze/output_k8s_upload-k8s-image.svg | 58 +++-- images/breeze/output_prod-image_build.svg | 4 +- images/breeze/output_prod-image_pull.svg | 60 ++--- images/breeze/output_prod-image_verify.svg | 34 +-- ...elease-management_generate-constraints.svg | 4 +- ...release-management_release-prod-images.svg | 2 +- images/breeze/output_setup_config.svg | 2 +- images/breeze/output_shell.svg | 102 ++++---- images/breeze/output_start-airflow.svg | 2 +- .../output_testing_docker-compose-tests.svg | 28 ++- .../output_testing_integration-tests.svg | 46 ++-- images/breeze/output_testing_tests.svg | 74 +++--- ...re_commit_update_providers_dependencies.py | 17 +- setup.cfg | 1 + setup.py | 42 +++- 52 files changed, 922 insertions(+), 694 deletions(-) diff --git a/CI.rst b/CI.rst index 5c937e579431..bc790706d110 100644 --- a/CI.rst +++ b/CI.rst @@ -59,7 +59,7 @@ Container Registry used as cache We are using GitHub Container Registry to store the results of the ``Build Images`` workflow which is used in the ``Tests`` workflow. -Currently in main version of Airflow we run tests in 4 different versions of Python (3.7, 3.8, 3.9, 3.10) +Currently in main version of Airflow we run tests in those versions of Python (3.7, 3.8, 3.9, 3.10, 3.11) which means that we have to build 8 images (4 CI ones and 4 PROD ones). Yet we run around 12 jobs with each of the CI images. That is a lot of time to just build the environment to run. Therefore we are utilising ``pull_request_target`` feature of GitHub Actions. diff --git a/LOCAL_VIRTUALENV.rst b/LOCAL_VIRTUALENV.rst index 3208634a4ee6..063670270f91 100644 --- a/LOCAL_VIRTUALENV.rst +++ b/LOCAL_VIRTUALENV.rst @@ -51,7 +51,7 @@ Required Software Packages Use system-level package managers like yum, apt-get for Linux, or Homebrew for macOS to install required software packages: -* Python (One of: 3.7, 3.8, 3.9, 3.10) +* Python (One of: 3.7, 3.8, 3.9, 3.10, 3.11) * MySQL 5.7+ * libxml @@ -102,7 +102,7 @@ Creating a Local virtualenv To use your IDE for Airflow development and testing, you need to configure a virtual environment. Ideally you should set up virtualenv for all Python versions that Airflow -supports (3.7, 3.8, 3.9, 3.10). +supports (3.7, 3.8, 3.9, 3.10, 3.11). To create and initialize the local virtualenv: @@ -122,7 +122,7 @@ To create and initialize the local virtualenv: .. code-block:: bash - conda create -n airflow python=3.7 # or 3.8, 3.9, 3.10 + conda create -n airflow python=3.7 # or 3.8, 3.9, 3.10, 3.11 conda activate airflow 2. Install Python PIP requirements: @@ -150,7 +150,7 @@ for different python versions). For development on current main source: .. code-block:: bash - # use the same version of python as you are working with, 3.7, 3.8, 3.9, or 3.10 + # use the same version of python as you are working with, 3.7, 3.8, 3.9, 3.10 or 3.11 pip install -e ".[devel,]" \ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-source-providers-3.7.txt" @@ -163,7 +163,7 @@ You can also install Airflow in non-editable mode: .. code-block:: bash - # use the same version of python as you are working with, 3.7, 3.8, 3.9, or 3.10 + # use the same version of python as you are working with, 3.7, 3.8, 3.9, 3.10 or 3.11 pip install ".[devel,]" \ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-source-providers-3.7.txt" @@ -173,7 +173,7 @@ sources, unless you set ``INSTALL_PROVIDERS_FROM_SOURCES`` environment variable .. code-block:: bash - # use the same version of python as you are working with, 3.7, 3.8, 3.9, or 3.10 + # use the same version of python as you are working with, 3.7, 3.8, 3.9, 3.10 or 3.11 INSTALL_PROVIDERS_FROM_SOURCES="true" pip install ".[devel,]" \ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-source-providers-3.7.txt" diff --git a/README.md b/README.md index 839775e58992..2f8279af83d0 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ Apache Airflow is tested with: | | Main version (dev) | Stable version (2.5.0) | |---------------------|------------------------------|------------------------------| -| Python | 3.7, 3.8, 3.9, 3.10 | 3.7, 3.8, 3.9, 3.10 | +| Python | 3.7, 3.8, 3.9, 3.10, 3.11 | 3.7, 3.8, 3.9, 3.10, 3.11 | | Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) | | Kubernetes | 1.23, 1.24, 1.25, 1.26 | 1.21, 1.22, 1.23, 1.24, 1.25 | | PostgreSQL | 11, 12, 13, 14, 15 | 11, 12, 13, 14, 15 | diff --git a/airflow/providers/apache/beam/provider.yaml b/airflow/providers/apache/beam/provider.yaml index 8e9c15dc24de..199755900fe7 100644 --- a/airflow/providers/apache/beam/provider.yaml +++ b/airflow/providers/apache/beam/provider.yaml @@ -40,6 +40,11 @@ dependencies: - apache-airflow>=2.3.0 - apache-beam>=2.33.0 +# Excluded because apache-beam and a number of dependent libraries are not +# compatible with 3.11 yet. See https://github.com/apache/beam/issues/23848 +excluded-python-versions: + - "3.11" + integrations: - integration-name: Apache Beam external-doc-url: https://beam.apache.org/ diff --git a/airflow/providers/apache/hive/provider.yaml b/airflow/providers/apache/hive/provider.yaml index e6696f0675f9..482bae905fc2 100644 --- a/airflow/providers/apache/hive/provider.yaml +++ b/airflow/providers/apache/hive/provider.yaml @@ -58,6 +58,11 @@ dependencies: - sasl>=0.3.1; python_version>="3.9" - thrift>=0.9.2 +# Excluded because SASL is not yet compatible +# with 3.11. See https://github.com/cloudera/python-sasl/issues/30 +excluded-python-versions: + - "3.11" + integrations: - integration-name: Apache Hive external-doc-url: https://hive.apache.org/ diff --git a/airflow/providers/databricks/provider.yaml b/airflow/providers/databricks/provider.yaml index 7de463d146db..c085d5ea1ea3 100644 --- a/airflow/providers/databricks/provider.yaml +++ b/airflow/providers/databricks/provider.yaml @@ -48,6 +48,12 @@ dependencies: - databricks-sql-connector>=2.0.0, <3.0.0 - aiohttp>=3.6.3, <4 +# Excluded because databricks-sql-connector and a number of dependent libraries are not compatible +# with 3.11 yet See https://pyreadiness.org/3.11/. (Pyarrow is one of the important ones) +# See https://github.com/databricks/databricks-sql-python/issues/59 for issue that tracks it +excluded-python-versions: + - "3.11" + integrations: - integration-name: Databricks external-doc-url: https://databricks.com/ diff --git a/airflow/providers/google/provider.yaml b/airflow/providers/google/provider.yaml index 8efa9ab5e535..9f9125a2eca2 100644 --- a/airflow/providers/google/provider.yaml +++ b/airflow/providers/google/provider.yaml @@ -123,6 +123,12 @@ dependencies: # Google bigtable client require protobuf <= 3.20.0. We can remove the limitation # when this limitation is removed - protobuf<=3.20.0 +# Excluded because bigquery and a number of dependent libraries are not compatible with 3.11 yet +# See https://pyreadiness.org/3.11/. Also some of Google libraries are in pretty ancient +# version (pre 2.0.0) and they MUST be migrated in order to add 3.11 support +# This is tracked in https://github.com/apache/airflow/issues/27292 +excluded-python-versions: + - "3.11" integrations: - integration-name: Google Analytics360 diff --git a/airflow/providers/papermill/provider.yaml b/airflow/providers/papermill/provider.yaml index 966a171b5046..48bb222d2694 100644 --- a/airflow/providers/papermill/provider.yaml +++ b/airflow/providers/papermill/provider.yaml @@ -40,6 +40,13 @@ dependencies: - papermill[all]>=1.2.1 - scrapbook[all] +# Excluded because papermill and a number of dependent libraries are not compatible +# with 3.11 yet See https://pyreadiness.org/3.11/. (Pyarrow is one of the important ones) +# See for issue that tracks it https://github.com/nteract/papermill/issues/700 +excluded-python-versions: + - "3.11" + + integrations: - integration-name: Papermill external-doc-url: https://github.com/nteract/papermill diff --git a/airflow/providers/snowflake/provider.yaml b/airflow/providers/snowflake/provider.yaml index ecf39194b9e2..7559a7077d18 100644 --- a/airflow/providers/snowflake/provider.yaml +++ b/airflow/providers/snowflake/provider.yaml @@ -53,6 +53,13 @@ dependencies: - snowflake-connector-python>=2.4.1 - snowflake-sqlalchemy>=1.1.0 +# Excluded because snowflake connector python and a number of dependent libraries are not +# compatible with 3.11 yet. See https://pyreadiness.org/3.11/. One of the important dependencies +# is Pyarrow: https://github.com/apache/arrow/pull/14499 but the +# https://github.com/snowflakedb/snowflake-connector-python/issues/1289 is the issue +excluded-python-versions: + - "3.11" + integrations: - integration-name: Snowflake external-doc-url: https://snowflake.com/ diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md index 0e905cf706e5..5a5261a5baea 100644 --- a/dev/README_RELEASE_AIRFLOW.md +++ b/dev/README_RELEASE_AIRFLOW.md @@ -1036,7 +1036,7 @@ the older branches, you should set the "skip" field to true. ## Verify production images ```shell script -for PYTHON in 3.7 3.8 3.9 3.10 +for PYTHON in 3.7 3.8 3.9 3.10 3.11 do docker pull apache/airflow:${VERSION}-python${PYTHON} breeze prod-image verify --image-name apache/airflow:${VERSION}-python${PYTHON} diff --git a/dev/breeze/SELECTIVE_CHECKS.md b/dev/breeze/SELECTIVE_CHECKS.md index 73827a807a91..371082ccd3fc 100644 --- a/dev/breeze/SELECTIVE_CHECKS.md +++ b/dev/breeze/SELECTIVE_CHECKS.md @@ -108,8 +108,8 @@ The selective check outputs available are described below: | Output | Meaning of the output | Example value | |------------------------------------|--------------------------------------------------------------------------------------------------------|---------------------------------------------------------------| -| 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'] | -| 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 | +| 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'] | +| 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 | | basic-checks-only | Whether to run all static checks ("false") or only basic set of static checks ("true") | false | | cache-directive | Which cache should be be used for images ("registry", "local" , "disabled") | registry | | debug-resources | Whether resources usage should be printed during parallel job execution ("true"/ "false") | false | diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py index 03820aa3bea3..74a471f0a83d 100644 --- a/dev/breeze/src/airflow_breeze/global_constants.py +++ b/dev/breeze/src/airflow_breeze/global_constants.py @@ -36,7 +36,7 @@ APACHE_AIRFLOW_GITHUB_REPOSITORY = "apache/airflow" # Checked before putting in build cache -ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10"] +ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"] DEFAULT_PYTHON_MAJOR_MINOR_VERSION = ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[0] ALLOWED_ARCHITECTURES = [Architecture.X86_64, Architecture.ARM] ALLOWED_BACKENDS = ["sqlite", "mysql", "postgres", "mssql"] @@ -148,7 +148,7 @@ def get_default_platform_machine() -> str: PYTHONDONTWRITEBYTECODE = True PRODUCTION_IMAGE = False -ALL_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10"] +ALL_PYTHON_MAJOR_MINOR_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"] CURRENT_PYTHON_MAJOR_MINOR_VERSIONS = ALL_PYTHON_MAJOR_MINOR_VERSIONS CURRENT_POSTGRES_VERSIONS = ["11", "12", "13", "14", "15"] DEFAULT_POSTGRES_VERSION = CURRENT_POSTGRES_VERSIONS[0] diff --git a/dev/breeze/tests/test_cache.py b/dev/breeze/tests/test_cache.py index a37a91165b4f..1db27494abd0 100644 --- a/dev/breeze/tests/test_cache.py +++ b/dev/breeze/tests/test_cache.py @@ -36,8 +36,8 @@ [ ("backend", "mysql", (True, ["sqlite", "mysql", "postgres", "mssql"]), None), ("backend", "xxx", (False, ["sqlite", "mysql", "postgres", "mssql"]), None), - ("python_major_minor_version", "3.8", (True, ["3.7", "3.8", "3.9", "3.10"]), None), - ("python_major_minor_version", "3.5", (False, ["3.7", "3.8", "3.9", "3.10"]), None), + ("python_major_minor_version", "3.8", (True, ["3.7", "3.8", "3.9", "3.10", "3.11"]), None), + ("python_major_minor_version", "3.5", (False, ["3.7", "3.8", "3.9", "3.10", "3.11"]), None), ("missing", "value", None, AttributeError), ], ) diff --git a/dev/breeze/tests/test_selective_checks.py b/dev/breeze/tests/test_selective_checks.py index 2753aaeb470c..2d5f131aeac7 100644 --- a/dev/breeze/tests/test_selective_checks.py +++ b/dev/breeze/tests/test_selective_checks.py @@ -223,10 +223,10 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): pytest.param( ("setup.py",), { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", - "python-versions": "['3.7', '3.8', '3.9', '3.10']", - "python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", + "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "needs-helm-tests": "true", "run-tests": "true", @@ -242,10 +242,10 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str): pytest.param( ("generated/provider_dependencies.json",), { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", - "python-versions": "['3.7', '3.8', '3.9', '3.10']", - "python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", + "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "needs-helm-tests": "true", "run-tests": "true", @@ -281,10 +281,10 @@ def test_expected_output_pull_request_main( ("full tests needed",), "main", { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", - "python-versions": "['3.7', '3.8', '3.9', '3.10']", - "python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", + "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "run-tests": "true", "docs-build": "true", @@ -305,10 +305,10 @@ def test_expected_output_pull_request_main( ), "main", { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", - "python-versions": "['3.7', '3.8', '3.9', '3.10']", - "python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", + "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "run-tests": "true", "docs-build": "true", @@ -327,10 +327,10 @@ def test_expected_output_pull_request_main( ("full tests needed",), "main", { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", - "python-versions": "['3.7', '3.8', '3.9', '3.10']", - "python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", + "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "run-tests": "true", "docs-build": "true", @@ -349,10 +349,10 @@ def test_expected_output_pull_request_main( ("full tests needed",), "v2-3-stable", { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", - "python-versions": "['3.7', '3.8', '3.9', '3.10']", - "python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", + "python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "run-tests": "true", "docs-build": "true", @@ -570,8 +570,8 @@ def test_expected_output_pull_request_target( (), "main", { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "needs-helm-tests": "true", "run-tests": "true", @@ -586,8 +586,8 @@ def test_expected_output_pull_request_target( (), "v2-3-stable", { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "needs-helm-tests": "false", "run-tests": "true", @@ -603,8 +603,8 @@ def test_expected_output_pull_request_target( (), "main", { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "needs-helm-tests": "true", "run-tests": "true", @@ -652,8 +652,8 @@ def test_no_commit_provided_trigger_full_build_for_any_event_type(github_event): ) assert_outputs_are_printed( { - "all-python-versions": "['3.7', '3.8', '3.9', '3.10']", - "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10", + "all-python-versions": "['3.7', '3.8', '3.9', '3.10', '3.11']", + "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10 3.11", "image-build": "true", "needs-helm-tests": "true", "run-tests": "true", diff --git a/dev/provider_packages/prepare_provider_packages.py b/dev/provider_packages/prepare_provider_packages.py index 4e6b6962f6c2..8484fac49543 100755 --- a/dev/provider_packages/prepare_provider_packages.py +++ b/dev/provider_packages/prepare_provider_packages.py @@ -51,7 +51,7 @@ from rich.syntax import Syntax from yaml import safe_load -ALL_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10"] +ALL_PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"] INITIAL_CHANGELOG_CONTENT = """ diff --git a/dev/retag_docker_images.py b/dev/retag_docker_images.py index 8c9f6eb78d38..ecc304eaa8b4 100755 --- a/dev/retag_docker_images.py +++ b/dev/retag_docker_images.py @@ -31,7 +31,7 @@ import rich_click as click -PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10"] +PYTHON_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11"] GHCR_IO_PREFIX = "ghcr.io" diff --git a/docs/apache-airflow/howto/upgrading-from-1-10/index.rst b/docs/apache-airflow/howto/upgrading-from-1-10/index.rst index 14b0b33842dd..bc1ad2604d39 100644 --- a/docs/apache-airflow/howto/upgrading-from-1-10/index.rst +++ b/docs/apache-airflow/howto/upgrading-from-1-10/index.rst @@ -34,7 +34,7 @@ Airflow 1.10 was the last release series to support Python 2. Airflow 2.0.0 requires Python 3.6+ and has been tested with Python versions 3.6, 3.7 and 3.8. Python 3.9 support was added from Airflow 2.1.2. -Airflow 2.3.0 dropped support for Python 3.6. It's tested with Python 3.7, 3.8, 3.9 and 3.10. +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. 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. diff --git a/docs/apache-airflow/installation/prerequisites.rst b/docs/apache-airflow/installation/prerequisites.rst index 82a0310721e3..d10650bad056 100644 --- a/docs/apache-airflow/installation/prerequisites.rst +++ b/docs/apache-airflow/installation/prerequisites.rst @@ -20,7 +20,7 @@ Prerequisites Starting with Airflow 2.3.0, Airflow is tested with:. -* Python: 3.7, 3.8, 3.9, 3.10 +* Python: 3.7, 3.8, 3.9, 3.10, 3.11 * Databases: diff --git a/docs/docker-stack/build.rst b/docs/docker-stack/build.rst index ea6ae91db586..970f739788ec 100644 --- a/docs/docker-stack/build.rst +++ b/docs/docker-stack/build.rst @@ -262,14 +262,14 @@ There are two types of images you can extend your image from: Naming conventions for the images: -+----------------+------------------+---------------------------------+--------------------------------------+ -| Image | Python | Standard image | Slim image | -+================+==================+=================================+======================================+ -| Latest default | 3.7 | apache/airflow:latest | apache/airflow:slim-latest | -| Default | 3.7 | apache/airflow:X.Y.Z | apache/airflow:slim-X.Y.Z | -| Latest | 3.7,3.8,3.9,3.10 | apache/airflow:latest-pythonN.M | apache/airflow:slim-latest-pythonN.M | -| Specific | 3.7,3.8,3.9,3.10 | apache/airflow:X.Y.Z-pythonN.M | apache/airflow:slim-X.Y.Z-pythonN.M | -+----------------+------------------+---------------------------------+--------------------------------------+ ++----------------+-----------------------+---------------------------------+--------------------------------------+ +| Image | Python | Standard image | Slim image | ++================+=======================+=================================+======================================+ +| Latest default | 3.7 | apache/airflow:latest | apache/airflow:slim-latest | +| Default | 3.7 | apache/airflow:X.Y.Z | apache/airflow:slim-X.Y.Z | +| Latest | 3.7,3.8,3.9,3.10,3.11 | apache/airflow:latest-pythonN.M | apache/airflow:slim-latest-pythonN.M | +| Specific | 3.7,3.8,3.9,3.10,3.11 | apache/airflow:X.Y.Z-pythonN.M | apache/airflow:slim-X.Y.Z-pythonN.M | ++----------------+-----------------------+---------------------------------+--------------------------------------+ * The "latest" image is always the latest released stable version available. diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json index 90f878796bb9..d2432be4c51e 100644 --- a/generated/provider_dependencies.json +++ b/generated/provider_dependencies.json @@ -6,14 +6,16 @@ ], "cross-providers-deps": [ "http" - ] + ], + "excluded-python-versions": [] }, "alibaba": { "deps": [ "apache-airflow>=2.3.0", "oss2>=2.14.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "amazon": { "deps": [ @@ -39,7 +41,8 @@ "mongo", "salesforce", "ssh" - ] + ], + "excluded-python-versions": [] }, "apache.beam": { "deps": [ @@ -48,6 +51,9 @@ ], "cross-providers-deps": [ "google" + ], + "excluded-python-versions": [ + "3.11" ] }, "apache.cassandra": { @@ -55,7 +61,8 @@ "apache-airflow>=2.3.0", "cassandra-driver>=3.13.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "apache.drill": { "deps": [ @@ -65,7 +72,8 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "apache.druid": { "deps": [ @@ -76,7 +84,8 @@ "cross-providers-deps": [ "apache.hive", "common.sql" - ] + ], + "excluded-python-versions": [] }, "apache.flink": { "deps": [ @@ -94,7 +103,8 @@ "hdfs[avro,dataframe,kerberos]>=2.0.4", "snakebite-py3" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "apache.hive": { "deps": [ @@ -114,6 +124,9 @@ "presto", "samba", "vertica" + ], + "excluded-python-versions": [ + "3.11" ] }, "apache.impala": { @@ -130,7 +143,8 @@ "apache-airflow>=2.3.0", "kylinpy>=2.6" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "apache.livy": { "deps": [ @@ -139,13 +153,15 @@ ], "cross-providers-deps": [ "http" - ] + ], + "excluded-python-versions": [] }, "apache.pig": { "deps": [ "apache-airflow>=2.3.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "apache.pinot": { "deps": [ @@ -155,41 +171,47 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "apache.spark": { "deps": [ "apache-airflow>=2.3.0", "pyspark" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "apache.sqoop": { "deps": [ "apache-airflow>=2.3.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "arangodb": { "deps": [ "apache-airflow>=2.3.0", "python-arango>=7.3.2" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "asana": { "deps": [ "apache-airflow>=2.3.0", "asana>=0.10" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "atlassian.jira": { "deps": [ "apache-airflow>=2.3.0", "atlassian-python-api>=1.14.2" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "celery": { "deps": [ @@ -197,14 +219,16 @@ "celery>=5.2.3,<6", "flower>=1.0.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "cloudant": { "deps": [ "apache-airflow>=2.3.0", "cloudant>=2.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "cncf.kubernetes": { "deps": [ @@ -212,13 +236,15 @@ "cryptography>=2.0.0", "kubernetes>=21.7.0,<24" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "common.sql": { "deps": [ "sqlparse>=0.4.2" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "databricks": { "deps": [ @@ -230,6 +256,9 @@ ], "cross-providers-deps": [ "common.sql" + ], + "excluded-python-versions": [ + "3.11" ] }, "datadog": { @@ -237,7 +266,8 @@ "apache-airflow>=2.3.0", "datadog>=0.14.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "dbt.cloud": { "deps": [ @@ -246,7 +276,8 @@ ], "cross-providers-deps": [ "http" - ] + ], + "excluded-python-versions": [] }, "dingding": { "deps": [ @@ -255,7 +286,8 @@ ], "cross-providers-deps": [ "http" - ] + ], + "excluded-python-versions": [] }, "discord": { "deps": [ @@ -264,7 +296,8 @@ ], "cross-providers-deps": [ "http" - ] + ], + "excluded-python-versions": [] }, "docker": { "deps": [ @@ -272,7 +305,8 @@ "docker>=5.0.3", "python-dotenv>=0.21.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "elasticsearch": { "deps": [ @@ -284,7 +318,8 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "exasol": { "deps": [ @@ -295,25 +330,29 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "facebook": { "deps": [ "apache-airflow>=2.3.0", "facebook-business>=6.0.2" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "ftp": { "deps": [], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "github": { "deps": [ "apache-airflow>=2.3.0", "pygithub" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "google": { "deps": [ @@ -388,6 +427,9 @@ "sftp", "ssh", "trino" + ], + "excluded-python-versions": [ + "3.11" ] }, "grpc": { @@ -397,7 +439,8 @@ "google-auth>=1.0.0, <3.0.0", "grpcio>=1.15.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "hashicorp": { "deps": [ @@ -406,18 +449,21 @@ ], "cross-providers-deps": [ "google" - ] + ], + "excluded-python-versions": [] }, "http": { "deps": [ "requests>=2.26.0", "requests_toolbelt" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "imap": { "deps": [], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "influxdb": { "deps": [ @@ -425,7 +471,8 @@ "influxdb-client>=1.19.0", "requests>=2.26.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "jdbc": { "deps": [ @@ -435,14 +482,16 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "jenkins": { "deps": [ "apache-airflow>=2.3.0", "python-jenkins>=1.0.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "microsoft.azure": { "deps": [ @@ -469,7 +518,8 @@ "google", "oracle", "sftp" - ] + ], + "excluded-python-versions": [] }, "microsoft.mssql": { "deps": [ @@ -479,20 +529,23 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "microsoft.psrp": { "deps": [ "pypsrp>=0.8.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "microsoft.winrm": { "deps": [ "apache-airflow>=2.3.0", "pywinrm>=0.4" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "mongo": { "deps": [ @@ -500,7 +553,8 @@ "dnspython>=1.13.0", "pymongo>=3.6.0,<4.0.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "mysql": { "deps": [ @@ -515,14 +569,16 @@ "presto", "trino", "vertica" - ] + ], + "excluded-python-versions": [] }, "neo4j": { "deps": [ "apache-airflow>=2.3.0", "neo4j>=4.2.1" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "odbc": { "deps": [ @@ -532,20 +588,23 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "openfaas": { "deps": [ "apache-airflow>=2.3.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "opsgenie": { "deps": [ "apache-airflow>=2.3.0", "opsgenie-sdk>=2.1.5" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "oracle": { "deps": [ @@ -555,14 +614,16 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "pagerduty": { "deps": [ "apache-airflow>=2.3.0", "pdpyras>=4.1.2" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "papermill": { "deps": [ @@ -570,14 +631,18 @@ "papermill[all]>=1.2.1", "scrapbook[all]" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [ + "3.11" + ] }, "plexus": { "deps": [ "apache-airflow>=2.3.0", "arrow>=0.16.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "postgres": { "deps": [ @@ -588,7 +653,8 @@ "cross-providers-deps": [ "amazon", "common.sql" - ] + ], + "excluded-python-versions": [] }, "presto": { "deps": [ @@ -600,7 +666,8 @@ "cross-providers-deps": [ "common.sql", "google" - ] + ], + "excluded-python-versions": [] }, "qubole": { "deps": [ @@ -610,14 +677,16 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "redis": { "deps": [ "apache-airflow>=2.3.0", "redis~=3.2" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "salesforce": { "deps": [ @@ -625,28 +694,32 @@ "pandas>=0.17.1", "simple-salesforce>=1.0.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "samba": { "deps": [ "apache-airflow>=2.3.0", "smbprotocol>=1.5.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "segment": { "deps": [ "analytics-python>=1.2.9", "apache-airflow>=2.3.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "sendgrid": { "deps": [ "apache-airflow>=2.3.0", "sendgrid>=6.0.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "sftp": { "deps": [ @@ -655,14 +728,16 @@ ], "cross-providers-deps": [ "ssh" - ] + ], + "excluded-python-versions": [] }, "singularity": { "deps": [ "apache-airflow>=2.3.0", "spython>=0.0.56" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "slack": { "deps": [ @@ -672,7 +747,8 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "snowflake": { "deps": [ @@ -684,6 +760,9 @@ "cross-providers-deps": [ "common.sql", "slack" + ], + "excluded-python-versions": [ + "3.11" ] }, "sqlite": { @@ -692,7 +771,8 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "ssh": { "deps": [ @@ -700,27 +780,31 @@ "paramiko>=2.6.0", "sshtunnel>=0.3.2" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "tableau": { "deps": [ "apache-airflow>=2.3.0", "tableauserverclient" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "tabular": { "deps": [ "apache-airflow>=2.3.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "telegram": { "deps": [ "apache-airflow>=2.3.0", "python-telegram-bot>=13.0,<20.0.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "trino": { "deps": [ @@ -732,7 +816,8 @@ "cross-providers-deps": [ "common.sql", "google" - ] + ], + "excluded-python-versions": [] }, "vertica": { "deps": [ @@ -742,20 +827,23 @@ ], "cross-providers-deps": [ "common.sql" - ] + ], + "excluded-python-versions": [] }, "yandex": { "deps": [ "apache-airflow>=2.3.0", "yandexcloud>=0.173.0" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] }, "zendesk": { "deps": [ "apache-airflow>=2.3.0", "zenpy>=2.0.24" ], - "cross-providers-deps": [] + "cross-providers-deps": [], + "excluded-python-versions": [] } } diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt index fa67e7f0b89b..cc512e93ab3a 100644 --- a/images/breeze/output-commands-hash.txt +++ b/images/breeze/output-commands-hash.txt @@ -1,60 +1,60 @@ # This file is automatically generated by pre-commit. If you have a conflict with this file # Please do not solve it but run `breeze setup regenerate-command-images`. # This command should fix the conflict and regenerate help images that you have conflict with. -main:50fe93e07fbe182f6d374ea305841240 +main:c8610c27f9ab281915637786b600e4ac build-docs:18235f12f85f8df82f3eb245e429f62d -ci:find-newer-dependencies:8fa2b57f5f0523c928743b235ee3ab5a +ci:find-newer-dependencies:0c29a13f4f2bbccbd72d946f94eaa20a ci:fix-ownership:fee2c9ec9ef19686792002ae054fecdd ci:free-space:47234aa0a60b0efd84972e6e797379f8 ci:get-workflow-info:01ee34c33ad62fa5dc33e0ac8773223f ci:resource-check:1d4fe47dff9fc64ac1648ec4beb2d85c ci:selective-check:3a085894f24cb909812fbc8253a21e13 -ci:9884bf4cef3e70270068de89b9d5df2f -ci-image:build:f8d0fafe7246ca7ac412df8c520908a3 -ci-image:pull:8d67d5ff546d99178497d50e38f5eb22 -ci-image:verify:aee88f55e8837028d19316356e29b009 -ci-image:6ea662b02888efd868fa919c2c704cd1 +ci:a53234d5f0136a65ef28b615f2441fca +ci-image:build:164bab596764dd771e10c3f9e977a6d6 +ci-image:pull:e8ff9e7c03a0e416009ab678c08d1f63 +ci-image:verify:3c2588eddc2bef7dd14c142a1f56a56f +ci-image:9911ea9341288aa1a16d1d4df235c7cd cleanup:231de69d5f47ba29c883164e4575e310 compile-www-assets:c8a8c4f002f7246d0541897fc7c70313 exec:42bbd3c1659128b0341ae118c3482da2 -k8s:build-k8s-image:bf48ee8742757dc19a4c3fad23f060a7 -k8s:configure-cluster:0b4b5ec9d222ac64227f44e976b839ae -k8s:create-cluster:9e997d0a571334c0f78b0491ae01431d -k8s:delete-cluster:95dc1eba5b64f4c286b9dda332d0b4b8 -k8s:deploy-airflow:4e219c6f9f5244f49bff263a2354145d -k8s:k9s:6ebf62101a581977fde6e11631638333 -k8s:logs:eb10b7ca4a62d5d2c5d6f8615407fd19 -k8s:run-complete-tests:fb665a2e77a3cac4bc55aea369f8e64c +k8s:build-k8s-image:7ef9f8d1fa725b7d6dc7daad72d66825 +k8s:configure-cluster:5ecd9b53ebf48079f6eff8f018127d7a +k8s:create-cluster:cf4676b35b9b15badacd9fbbfdfd7271 +k8s:delete-cluster:b36917065e2ead6ecc900b7a2d444fb1 +k8s:deploy-airflow:607fce31efb3e8f4c4d568298943b482 +k8s:k9s:36ce3eb4fc1a96a6e906a15d50ddab65 +k8s:logs:de52de8caed080f3fc4c1048c151a963 +k8s:run-complete-tests:8467ba2bfa64f8208b2ef1f1bf152f7b k8s:setup-env:b0ea72ef1819f831b1f80e8bd4d299ce -k8s:shell:34297f0be58baea2f4f9ea169c265e62 -k8s:status:2b8aa0b9597a1790c184c7b776ebd9c3 -k8s:tests:dc44e907de908d1c4f11cf5d99915da1 -k8s:upload-k8s-image:b012457bb6a98524859ecaf5746b4439 -k8s:a04e7db8fb49c16a0633ac32f14463ec -prod-image:build:f5b0b26658c6730ae5df95cadc8026ac -prod-image:pull:e3c89dd908fc44adf6e159c2950ebdd0 -prod-image:verify:31bc5efada1d70a0a31990025db1a093 -prod-image:4f98deab35e53ebddbdc9950a50555a4 -release-management:generate-constraints:ae30d6ad49a1b2c15b61cb29080fd957 +k8s:shell:9677ed7b62a76736666518d5193cded7 +k8s:status:99deec900b7eabc38f8c97fbf999d82a +k8s:tests:7ba5e47d4162789b0c356cb6f90fe893 +k8s:upload-k8s-image:6a0ff85a688741e7b9986775c24bff8f +k8s:6bba6f6cbe55c99a267e03f6eabc4719 +prod-image:build:45d560362e2845d78c7ab9d91b2ea888 +prod-image:pull:722a843b29ca251aed1a5e001cf48db2 +prod-image:verify:4edd26d1126761777e934eae2b8d57dd +prod-image:ad73c66d22b6c5d36670028e15f57098 +release-management:generate-constraints:0c8e5c1b57b486724760d4afdfd571f7 release-management:generate-issue-content:35ee0e755789aefd509f63e161aa150e release-management:prepare-airflow-package:3ac14ea6d2b09614959c0ec4fd564789 release-management:prepare-provider-documentation:452b6165f09755d052501f6003ae3ea1 release-management:prepare-provider-packages:c85c2997e01b7f9db95dc9a7abb9ea48 -release-management:release-prod-images:c9bc40938e0efad49e51ef66e83f9527 +release-management:release-prod-images:dff5d068a253dcc3ac1e65a6af150e3d release-management:verify-provider-packages:88bd609aff6d09d52ab8d80d6e055e7b -release-management:07fecd3ed21621993c55ac2487a412ce +release-management:f08c6d88f3e7417fae9fd812e7baa181 setup:autocomplete:03343478bf1d0cf9c101d454cdb63b68 -setup:config:3ffcd35dd24b486ddf1d08b797e3d017 +setup:config:584023d1d225879a5d19e347fe9db1d3 setup:regenerate-command-images:ab2d83c339fa3a42b0c819b6b6cc88ae setup:self-upgrade:d02f70c7a230eae3463ceec2056b63fa setup:version:123b462a421884dc2320ffc5e54b2478 -setup:fbabee281b69f818091d780b24bd815a -shell:76e0f530b7af514a2aad3032b6516c46 -start-airflow:06d4aeb5f1b65f6b975f3f915558d0b3 +setup:88e5e709b2415e0df0d6170ad2ee0775 +shell:fc4e908dcae22736d3d2d89aadb4fa4d +start-airflow:8341eb3fb7b20a7723b024e2031f2b22 static-checks:d20293484c293d721728713350a23b00 stop:8969537ccdd799f692ccb8600a7bbed6 -testing:docker-compose-tests:b86c044b24138af0659a05ed6331576c +testing:docker-compose-tests:bc57e17e2783a4571ded1c93f27c6315 testing:helm-tests:94a442e7f3f63b34c4831a84d165690a -testing:integration-tests:4c8321c60b2112b12c866beebeb6c61b -testing:tests:1b67704a3f8eae3a6db8d7c8d6cc162a -testing:0614ca49c1b4c2b0b1d92c31278dc4f9 +testing:integration-tests:954fbd1fbacc8bc6f5a9ed94c2e5f0e2 +testing:tests:673bfc633eeae6fae2195913dd09bc5d +testing:a99af909e0266108b3293f62f1d2d04e diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg index 22001729e6f7..e6aa4e7f0213 100644 --- a/images/breeze/output-commands.svg +++ b/images/breeze/output-commands.svg @@ -1,4 +1,4 @@ - +