You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2022/07/21 14:36:52 UTC

[airflow] 01/06: Disable provider packages building for non-main branch builds (#25056)

This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v2-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit f70f5cdcdf3f6b655d6da001a801859229eebb95
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jul 19 14:37:44 2022 +0200

    Disable provider packages building for non-main branch builds (#25056)
    
    * Disable provider packages building for non-main branch builds
    
    When running the builds from non-main, we do not want to use
    provider packages built locally, but we want to install those from
    PyPI. This is achieved by skipping the step of building providers
    in case default branch is not main.
    
    During this change it was also discovered that we do not need
    AIRFLOW_FROM_CONTEXT flag to indicate whether airflow is
    among those being installed from docker-context files. This is
    now detected automatically and airflow is installed from Pypi
    if not installed from docker context files. Providers
    and airflow are automatically detected and installed if they are
    present.
    
    Installing pre-cached dependencies from GitHub is skipped in
    case docker-context-files are used.
    
    (cherry picked from commit 67a24aed68c74aee2706d2c7b6b029a5846f0d55)
---
 .../airflow_providers_bug_report.yml               |   2 -
 .github/workflows/build-images.yml                 |   5 +-
 .github/workflows/ci.yml                           |  19 +-
 Dockerfile                                         |  29 +-
 IMAGES.rst                                         |   3 +-
 .../commands/production_image_commands.py          |   9 +-
 .../src/airflow_breeze/params/build_prod_params.py |  22 +-
 dev/refresh_images.sh                              |   2 -
 docs/docker-stack/build-arg-ref.rst                |   5 -
 docs/docker-stack/changelog.rst                    |   3 +-
 generated/README.md                                |  25 +
 generated/provider_dependencies.json               | 734 +++++++++++++++++++++
 images/breeze/output-build-prod-image.svg          | 352 +++++-----
 images/breeze/output-commands-hash.txt             |   2 +-
 scripts/ci/libraries/_initialization.sh            |   7 -
 15 files changed, 967 insertions(+), 252 deletions(-)

diff --git a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
index 20845ea0c7..665093a84e 100644
--- a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
@@ -43,7 +43,6 @@ body:
         - celery
         - cloudant
         - cncf-kubernetes
-        - common-sql
         - databricks
         - datadog
         - dbt-cloud
@@ -93,7 +92,6 @@ body:
         - sqlite
         - ssh
         - tableau
-        - tabular
         - telegram
         - trino
         - vertica
diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index dc758877f7..4485e5c68d 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -318,12 +318,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           key: "pre-commit-${{steps.host-python-version.outputs.host-python-version}}-\
 ${{ hashFiles('.pre-commit-config.yaml') }}"
           restore-keys: pre-commit-${{steps.host-python-version.outputs.host-python-version}}
-        if: needs.build-info.outputs.default-branch == 'main'
       - name: "Regenerate dependencies in case they was modified manually so that we can build an image"
         run: >
           breeze static-checks --type update-providers-dependencies --all-files
           --show-diff-on-failure --color always || true
-        if: needs.build-info.outputs.default-branch == 'main'
       - name: >
           Pull CI image for PROD build:
           ${{ needs.build-info.outputs.default-python-version }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
@@ -340,6 +338,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           --package-list-file ./scripts/ci/installed_providers.txt
           --package-format wheel
           --version-suffix-for-pypi dev0
+        if: needs.build-info.outputs.default-branch == 'main'
       - name: "Prepare airflow package"
         run: breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
       - name: "Move dist packages to docker-context files"
@@ -353,8 +352,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           --tag-as-latest
           --push-image
           --install-packages-from-context
-          --disable-airflow-repo-cache
-          --airflow-is-in-context
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 86666cf17a..cd056e4238 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -434,7 +434,9 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           breeze prepare-provider-packages
           --package-list-file ./scripts/ci/installed_providers.txt
           --package-format wheel --version-suffix-for-pypi dev0
-        if: needs.build-info.outputs.in-workflow-build == 'true'
+        if: >
+          needs.build-info.outputs.in-workflow-build == 'true' &&
+          needs.build-info.outputs.default-branch == 'main'
       - name: "Prepare airflow package"
         run: breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
         if: needs.build-info.outputs.in-workflow-build == 'true'
@@ -450,8 +452,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           --run-in-parallel
           --push-image
           --install-packages-from-context
-          --disable-airflow-repo-cache
-          --airflow-is-in-context
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgrade-to-newer-dependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cache-directive }}
@@ -1719,6 +1719,10 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Cleanup dist and context file"
         run: rm -fv ./dist/* ./docker-context-files/*
+      - name: "Prepare airflow package for PROD build"
+        run: breeze prepare-airflow-package --package-format wheel
+        env:
+          VERSION_SUFFIX_FOR_PYPI: "dev0"
       - name: "Prepare providers packages for PROD build"
         run: >
           breeze prepare-provider-packages
@@ -1726,10 +1730,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           --package-format wheel
         env:
           VERSION_SUFFIX_FOR_PYPI: "dev0"
-      - name: "Prepare airflow package for PROD build"
-        run: breeze prepare-airflow-package --package-format wheel
-        env:
-          VERSION_SUFFIX_FOR_PYPI: "dev0"
+        if: needs.build-info.outputs.default-branch == 'main'
       - name: "Start ARM instance"
         run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
         if: matrix.platform == 'linux/arm64'
@@ -1745,17 +1746,17 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
       - name: "Move dist packages to docker-context files"
         run: mv -v ./dist/*.whl ./docker-context-files
+        if: needs.build-info.outputs.default-branch == 'main'
       - name: "Push PROD cache ${{ matrix.python-version }} ${{ matrix.platform }}"
         run: >
           breeze build-prod-image
           --builder airflow_cache
-          --airflow-is-in-context
           --install-packages-from-context
           --prepare-buildx-cache
-          --disable-airflow-repo-cache
           --platform ${{ matrix.platform }}
         env:
           PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
+        if: needs.build-info.outputs.default-branch == 'main'
       - name: "Stop ARM instance"
         run: ./scripts/ci/images/ci_stop_arm_instance.sh
         if: always() && matrix.platform == 'linux/arm64'
diff --git a/Dockerfile b/Dockerfile
index fdcbb6fa11..b4ddddef80 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1283,16 +1283,23 @@ ENV AIRFLOW_PIP_VERSION=${AIRFLOW_PIP_VERSION} \
 COPY --from=scripts common.sh install_pip_version.sh \
      install_airflow_dependencies_from_branch_tip.sh /scripts/docker/
 
+# We can set this value to true in case we want to install .whl/.tar.gz packages placed in the
+# docker-context-files folder. This can be done for both additional packages you want to install
+# as well as Airflow and Provider packages (it will be automatically detected if airflow
+# is installed from docker-context files rather than from PyPI)
+ARG INSTALL_PACKAGES_FROM_CONTEXT="false"
+
 # In case of Production build image segment we want to pre-install main version of airflow
 # dependencies from GitHub so that we do not have to always reinstall it from the scratch.
 # The Airflow (and providers in case INSTALL_PROVIDERS_FROM_SOURCES is "false")
 # are uninstalled, only dependencies remain
 # the cache is only used when "upgrade to newer dependencies" is not set to automatically
-# account for removed dependencies (we do not install them in the first place)
-# Upgrade to specific PIP version
+# account for removed dependencies (we do not install them in the first place) and in case
+# INSTALL_PACKAGES_FROM_CONTEXT is not set (because then caching it from main makes no sense).
 RUN bash /scripts/docker/install_pip_version.sh; \
     if [[ ${AIRFLOW_PRE_CACHED_PIP_PACKAGES} == "true" && \
-          ${UPGRADE_TO_NEWER_DEPENDENCIES} == "false" ]]; then \
+        ${INSTALL_PACKAGES_FROM_CONTEXT} == "false" && \
+        ${UPGRADE_TO_NEWER_DEPENDENCIES} == "false" ]]; then \
         bash /scripts/docker/install_airflow_dependencies_from_branch_tip.sh; \
     fi
 
@@ -1302,8 +1309,7 @@ COPY --chown=airflow:0 ${AIRFLOW_SOURCES_WWW_FROM} ${AIRFLOW_SOURCES_WWW_TO}
 # hadolint ignore=SC2086, SC2010
 RUN if [[ ${AIRFLOW_INSTALLATION_METHOD} == "." ]]; then \
         # only prepare node modules and compile assets if the prod image is build from sources
-        # otherwise they are already compiled-in. We should do it in one step with removing artifacts \
-        # as we want to keep the final image small
+        # otherwise they are already compiled-in the package.
         bash /scripts/docker/prepare_node_modules.sh; \
         REMOVE_ARTIFACTS="true" BUILD_TYPE="prod" bash /scripts/docker/compile_www_assets.sh; \
         # Copy generated dist folder (otherwise it will be overridden by the COPY step below)
@@ -1319,14 +1325,7 @@ RUN if [[ ${AIRFLOW_INSTALLATION_METHOD} == "." ]]; then \
 
 # Add extra python dependencies
 ARG ADDITIONAL_PYTHON_DEPS=""
-# We can set this value to true in case we want to install .whl .tar.gz packages placed in the
-# docker-context-files folder. This can be done for both - additional packages you want to install
-# and for airflow as well (you have to set AIRFLOW_IS_IN_CONTEXT to true in this case)
-ARG INSTALL_PACKAGES_FROM_CONTEXT="false"
-# By default we install latest airflow from PyPI or sources. You can set this parameter to false
-# if Airflow is in the .whl or .tar.gz packages placed in `docker-context-files` folder and you want
-# to skip installing Airflow/Providers from PyPI or sources.
-ARG AIRFLOW_IS_IN_CONTEXT="false"
+
 # Those are additional constraints that are needed for some extras but we do not want to
 # Force them on the main Airflow package.
 # * dill<0.3.3 required by apache-beam
@@ -1334,7 +1333,6 @@ ARG EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS="dill<0.3.3"
 
 ENV ADDITIONAL_PYTHON_DEPS=${ADDITIONAL_PYTHON_DEPS} \
     INSTALL_PACKAGES_FROM_CONTEXT=${INSTALL_PACKAGES_FROM_CONTEXT} \
-    AIRFLOW_IS_IN_CONTEXT=${AIRFLOW_IS_IN_CONTEXT} \
     EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS=${EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS}
 
 WORKDIR ${AIRFLOW_HOME}
@@ -1345,7 +1343,8 @@ COPY --from=scripts install_from_docker_context_files.sh install_airflow.sh \
 # hadolint ignore=SC2086, SC2010
 RUN if [[ ${INSTALL_PACKAGES_FROM_CONTEXT} == "true" ]]; then \
         bash /scripts/docker/install_from_docker_context_files.sh; \
-    elif [[ ${AIRFLOW_IS_IN_CONTEXT} == "false" ]]; then \
+    fi; \
+    if ! airflow version 2>/dev/null >/dev/null; then \
         bash /scripts/docker/install_airflow.sh; \
     fi; \
     if [[ -n "${ADDITIONAL_PYTHON_DEPS}" ]]; then \
diff --git a/IMAGES.rst b/IMAGES.rst
index 634c4ac8a0..f72f5bb58e 100644
--- a/IMAGES.rst
+++ b/IMAGES.rst
@@ -165,8 +165,7 @@ You can also skip installing airflow and install it from locally provided files
 
 .. code-block:: bash
 
-  breeze build-prod-image --python 3.7 --additional-extras=trino \
-     --airflow-is-in-context-pypi --install-packages-from-context
+  breeze build-prod-image --python 3.7 --additional-extras=trino --install-packages-from-context
 
 In this case you airflow and all packages (.whl files) should be placed in ``docker-context-files`` folder.
 
diff --git a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
index 2ee164645d..cafca59fde 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -143,7 +143,6 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS = {
             "name": "Customization options (for specific customization needs)",
             "options": [
                 "--install-packages-from-context",
-                "--airflow-is-in-context",
                 "--cleanup-context",
                 "--disable-mysql-client-installation",
                 "--disable-mssql-client-installation",
@@ -266,14 +265,10 @@ def run_build_in_parallel(
     type=BetterChoice(ALLOWED_INSTALLATION_METHODS),
 )
 @option_install_providers_from_sources
-@click.option(
-    '--airflow-is-in-context',
-    help="If set Airflow is installed from docker-context-files only rather than from PyPI or sources.",
-    is_flag=True,
-)
 @click.option(
     '--install-packages-from-context',
-    help='Install wheels from local docker-context-files when building image.',
+    help='Install wheels from local docker-context-files when building image. '
+    'Implies --disable-airflow-repo-cache.',
     is_flag=True,
 )
 @click.option(
diff --git a/dev/breeze/src/airflow_breeze/params/build_prod_params.py b/dev/breeze/src/airflow_breeze/params/build_prod_params.py
index c37569f85f..65e92400c4 100644
--- a/dev/breeze/src/airflow_breeze/params/build_prod_params.py
+++ b/dev/breeze/src/airflow_breeze/params/build_prod_params.py
@@ -43,7 +43,6 @@ class BuildProdParams(CommonBuildParams):
     airflow_constraints_mode: str = "constraints"
     default_constraints_branch: str = DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
     airflow_constraints_reference: str = ""
-    airflow_is_in_context: bool = False
     cleanup_context: bool = False
     disable_airflow_repo_cache: bool = False
     disable_mssql_client_installation: bool = False
@@ -186,31 +185,19 @@ class BuildProdParams(CommonBuildParams):
 
     @property
     def airflow_pre_cached_pip_packages(self) -> str:
-        airflow_pre_cached_pip = 'true'
-        if not self.airflow_is_in_context or self.disable_airflow_repo_cache:
-            airflow_pre_cached_pip = 'false'
-        return airflow_pre_cached_pip
+        return 'false' if self.disable_airflow_repo_cache else 'true'
 
     @property
     def install_mssql_client(self) -> str:
-        install_mssql = 'true'
-        if self.disable_mssql_client_installation:
-            install_mssql = 'false'
-        return install_mssql
+        return 'false' if self.disable_mssql_client_installation else 'true'
 
     @property
     def install_mysql_client(self) -> str:
-        install_mysql = 'true'
-        if self.disable_mysql_client_installation:
-            install_mysql = 'false'
-        return install_mysql
+        return 'false' if self.disable_mysql_client_installation else 'true'
 
     @property
     def install_postgres_client(self) -> str:
-        install_postgres = 'true'
-        if self.disable_postgres_client_installation:
-            install_postgres = 'false'
-        return install_postgres
+        return 'false' if self.disable_postgres_client_installation else 'true'
 
     @property
     def docker_context_files(self) -> str:
@@ -233,7 +220,6 @@ class BuildProdParams(CommonBuildParams):
             "airflow_image_date_created",
             "airflow_image_readme_url",
             "airflow_image_repository",
-            "airflow_is_in_context",
             "airflow_pre_cached_pip_packages",
             "airflow_version",
             "build_id",
diff --git a/dev/refresh_images.sh b/dev/refresh_images.sh
index 596997d831..7675db65b2 100755
--- a/dev/refresh_images.sh
+++ b/dev/refresh_images.sh
@@ -47,9 +47,7 @@ mv -v ./dist/*.whl ./docker-context-files
 breeze build-prod-image \
      --builder airflow_cache \
      --run-in-parallel \
-     --airflow-is-in-context \
      --install-packages-from-context \
      --prepare-buildx-cache \
-     --disable-airflow-repo-cache \
      --platform linux/amd64,linux/arm64 \
      --verbose
diff --git a/docs/docker-stack/build-arg-ref.rst b/docs/docker-stack/build-arg-ref.rst
index f8e30c02ce..d38dc585fe 100644
--- a/docs/docker-stack/build-arg-ref.rst
+++ b/docs/docker-stack/build-arg-ref.rst
@@ -252,11 +252,6 @@ You can see some examples of those in:
 |                                    |                                          | .whl and .tar.gz files placed in the     |
 |                                    |                                          | ``docker-context-files``.                |
 +------------------------------------+------------------------------------------+------------------------------------------+
-| ``AIRFLOW_IS_IN_CONTEXT``          | ``false``                                | If set to true, it means that Airflow    |
-|                                    |                                          | and providers are available in context   |
-|                                    |                                          | and the image will not attempt to        |
-|                                    |                                          | install Airflow from PyPI or sources.    |
-+------------------------------------+------------------------------------------+------------------------------------------+
 
 Pre-caching PIP dependencies
 ............................
diff --git a/docs/docker-stack/changelog.rst b/docs/docker-stack/changelog.rst
index 9f53bf9987..fc4dcd6847 100644
--- a/docs/docker-stack/changelog.rst
+++ b/docs/docker-stack/changelog.rst
@@ -73,8 +73,7 @@ Airflow 2.3
   * Add Multi-Platform support (AMD64/ARM64) in order to accommodate MacOS M1 users
   * Build parameters which control if packages and Airflow should be installed from context file were
     unified
-  * The ``INSTALL_FROM_PYPI`` arg was replaced to ``AIRFLOW_IS_IN_CONTEXT`` (with reverse meaning and
-    default changed to false)
+  * The ``INSTALL_FROM_PYPI`` arg was removed - it is automatically detected now.
   * The ``INSTALL_FROM_DOCKER_CONTEXT_FILES`` arg changed to ``INSTALL_PACKAGES_FROM_CONTEXT``
 
 Airflow 2.2
diff --git a/generated/README.md b/generated/README.md
new file mode 100644
index 0000000000..f87a767da4
--- /dev/null
+++ b/generated/README.md
@@ -0,0 +1,25 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+NOTE! The files in this folder are generated by pre-commit based on airflow sources. They are not
+supposed to be manually modified.
+
+* `provider_dependencies.json` - is generated based on `provider.yaml` files in `airflow/providers` and
+  based on the imports in the provider code. If you want to add new dependency to a provider, you
+  need to modify the corresponding `provider.yaml` file
diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json
new file mode 100644
index 0000000000..203fa5e22a
--- /dev/null
+++ b/generated/provider_dependencies.json
@@ -0,0 +1,734 @@
+{
+  "airbyte": {
+    "deps": [
+      "apache-airflow-providers-http",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": [
+      "http"
+    ]
+  },
+  "alibaba": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "oss2>=2.14.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "amazon": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "boto3>=1.15.0",
+      "jsonpath_ng>=1.5.3",
+      "mypy-boto3-appflow>=1.21.0",
+      "mypy-boto3-rds>=1.21.0",
+      "mypy-boto3-redshift-data>=1.21.0",
+      "pandas>=0.17.1",
+      "redshift_connector>=2.0.888",
+      "sqlalchemy_redshift>=0.8.6",
+      "watchtower~=2.0.1"
+    ],
+    "cross-providers-deps": [
+      "apache.hive",
+      "cncf.kubernetes",
+      "common.sql",
+      "exasol",
+      "ftp",
+      "google",
+      "imap",
+      "mongo",
+      "salesforce",
+      "ssh"
+    ]
+  },
+  "apache.beam": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "apache-beam>=2.39.0"
+    ],
+    "cross-providers-deps": [
+      "google"
+    ]
+  },
+  "apache.cassandra": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "cassandra-driver>=3.13.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "apache.drill": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "sqlalchemy-drill>=1.1.0",
+      "sqlparse>=0.4.1"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "apache.druid": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "pydruid>=0.4.1"
+    ],
+    "cross-providers-deps": [
+      "apache.hive",
+      "common.sql"
+    ]
+  },
+  "apache.hdfs": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "hdfs[avro,dataframe,kerberos]>=2.0.4",
+      "snakebite-py3"
+    ],
+    "cross-providers-deps": []
+  },
+  "apache.hive": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "hmsclient>=0.1.0",
+      "pandas>=0.17.1",
+      "pyhive[hive]>=0.6.0",
+      "sasl>=0.3.1; python_version>=\"3.9\"",
+      "thrift>=0.9.2"
+    ],
+    "cross-providers-deps": [
+      "amazon",
+      "common.sql",
+      "microsoft.mssql",
+      "mysql",
+      "presto",
+      "samba",
+      "vertica"
+    ]
+  },
+  "apache.kylin": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "kylinpy>=2.6"
+    ],
+    "cross-providers-deps": []
+  },
+  "apache.livy": {
+    "deps": [
+      "apache-airflow-providers-http",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": [
+      "http"
+    ]
+  },
+  "apache.pig": {
+    "deps": [
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "apache.pinot": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "pinotdb>0.1.2"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "apache.spark": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "pyspark"
+    ],
+    "cross-providers-deps": []
+  },
+  "apache.sqoop": {
+    "deps": [
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "arangodb": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "python-arango>=7.3.2"
+    ],
+    "cross-providers-deps": []
+  },
+  "asana": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "asana>=0.10"
+    ],
+    "cross-providers-deps": []
+  },
+  "celery": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "celery>=5.2.3,<6",
+      "flower>=1.0.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "cloudant": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "cloudant>=2.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "cncf.kubernetes": {
+    "deps": [
+      "apache-airflow>=2.3.0",
+      "cryptography>=2.0.0",
+      "kubernetes>=21.7.0,<24"
+    ],
+    "cross-providers-deps": []
+  },
+  "common.sql": {
+    "deps": [],
+    "cross-providers-deps": []
+  },
+  "databricks": {
+    "deps": [
+      "aiohttp>=3.6.3, <4",
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "databricks-sql-connector>=2.0.0, <3.0.0",
+      "requests>=2.27,<3"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "datadog": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "datadog>=0.14.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "dbt.cloud": {
+    "deps": [
+      "apache-airflow-providers-http",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": [
+      "http"
+    ]
+  },
+  "dingding": {
+    "deps": [
+      "apache-airflow-providers-http",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": [
+      "http"
+    ]
+  },
+  "discord": {
+    "deps": [
+      "apache-airflow-providers-http",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": [
+      "http"
+    ]
+  },
+  "docker": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "docker>=5.0.3"
+    ],
+    "cross-providers-deps": []
+  },
+  "elasticsearch": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "elasticsearch-dbapi",
+      "elasticsearch-dsl>=5.0.0",
+      "elasticsearch>7"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "exasol": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "pandas>=0.17.1",
+      "pyexasol>=0.5.1"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "facebook": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "facebook-business>=6.0.2"
+    ],
+    "cross-providers-deps": []
+  },
+  "ftp": {
+    "deps": [],
+    "cross-providers-deps": []
+  },
+  "github": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "pygithub"
+    ],
+    "cross-providers-deps": []
+  },
+  "google": {
+    "deps": [
+      "PyOpenSSL",
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "google-ads>=15.1.1",
+      "google-api-core>=2.7.0,<3.0.0",
+      "google-api-python-client>=1.6.0,<2.0.0",
+      "google-auth-httplib2>=0.0.1",
+      "google-auth>=1.0.0",
+      "google-cloud-aiplatform>=1.7.1,<2.0.0",
+      "google-cloud-automl>=2.1.0",
+      "google-cloud-bigquery-datatransfer>=3.0.0",
+      "google-cloud-bigtable>=1.0.0,<2.0.0",
+      "google-cloud-build>=3.0.0",
+      "google-cloud-container>=2.2.0,<3.0.0",
+      "google-cloud-datacatalog>=3.0.0",
+      "google-cloud-dataplex>=0.1.0",
+      "google-cloud-dataproc-metastore>=1.2.0,<2.0.0",
+      "google-cloud-dataproc>=3.1.0",
+      "google-cloud-dlp>=0.11.0,<2.0.0",
+      "google-cloud-kms>=2.0.0",
+      "google-cloud-language>=1.1.1,<2.0.0",
+      "google-cloud-logging>=2.1.1",
+      "google-cloud-memcache>=0.2.0",
+      "google-cloud-monitoring>=2.0.0",
+      "google-cloud-orchestration-airflow>=1.0.0,<2.0.0",
+      "google-cloud-os-login>=2.0.0",
+      "google-cloud-pubsub>=2.0.0",
+      "google-cloud-redis>=2.0.0",
+      "google-cloud-secret-manager>=0.2.0,<2.0.0",
+      "google-cloud-spanner>=1.10.0,<2.0.0",
+      "google-cloud-speech>=0.36.3,<2.0.0",
+      "google-cloud-storage>=1.30,<2.0.0",
+      "google-cloud-tasks>=2.0.0",
+      "google-cloud-texttospeech>=0.4.0,<2.0.0",
+      "google-cloud-translate>=1.5.0,<2.0.0",
+      "google-cloud-videointelligence>=1.7.0,<2.0.0",
+      "google-cloud-vision>=0.35.2,<2.0.0",
+      "google-cloud-workflows>=0.1.0,<2.0.0",
+      "grpcio-gcp>=0.2.2",
+      "httpx",
+      "json-merge-patch>=0.2",
+      "looker-sdk>=22.2.0",
+      "pandas-gbq",
+      "pandas>=0.17.1",
+      "proto-plus>=1.19.6",
+      "sqlalchemy-bigquery>=1.2.1"
+    ],
+    "cross-providers-deps": [
+      "amazon",
+      "apache.beam",
+      "apache.cassandra",
+      "cncf.kubernetes",
+      "common.sql",
+      "facebook",
+      "microsoft.azure",
+      "microsoft.mssql",
+      "mysql",
+      "oracle",
+      "postgres",
+      "presto",
+      "salesforce",
+      "sftp",
+      "ssh",
+      "trino"
+    ]
+  },
+  "grpc": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "google-auth-httplib2>=0.0.1",
+      "google-auth>=1.0.0, <3.0.0",
+      "grpcio>=1.15.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "hashicorp": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "hvac>=0.10"
+    ],
+    "cross-providers-deps": [
+      "google"
+    ]
+  },
+  "http": {
+    "deps": [
+      "requests>=2.26.0",
+      "requests_toolbelt"
+    ],
+    "cross-providers-deps": []
+  },
+  "imap": {
+    "deps": [],
+    "cross-providers-deps": []
+  },
+  "influxdb": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "influxdb-client>=1.19.0",
+      "requests>=2.26.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "jdbc": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "jaydebeapi>=1.1.1"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "jenkins": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "python-jenkins>=1.0.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "jira": {
+    "deps": [
+      "JIRA>1.0.7",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "microsoft.azure": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "azure-batch>=8.0.0",
+      "azure-cosmos>=4.0.0",
+      "azure-datalake-store>=0.0.45",
+      "azure-identity>=1.3.1",
+      "azure-keyvault-secrets>=4.1.0,<5.0",
+      "azure-kusto-data>=0.0.43,<0.1",
+      "azure-mgmt-containerinstance>=1.5.0,<2.0",
+      "azure-mgmt-datafactory>=1.0.0,<2.0",
+      "azure-mgmt-datalake-store>=0.5.0",
+      "azure-mgmt-resource>=2.2.0",
+      "azure-servicebus>=7.6.1; platform_machine != \"aarch64\"",
+      "azure-storage-blob>=12.7.0,<12.9.0",
+      "azure-storage-common>=2.1.0",
+      "azure-storage-file>=2.1.0"
+    ],
+    "cross-providers-deps": [
+      "google",
+      "oracle",
+      "sftp"
+    ]
+  },
+  "microsoft.mssql": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "pymssql>=2.1.5; platform_machine != \"aarch64\""
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "microsoft.psrp": {
+    "deps": [
+      "pypsrp>=0.8.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "microsoft.winrm": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "pywinrm>=0.4"
+    ],
+    "cross-providers-deps": []
+  },
+  "mongo": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "dnspython>=1.13.0",
+      "pymongo>=3.6.0,<4.0.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "mysql": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "mysql-connector-python>=8.0.11; platform_machine != \"aarch64\"",
+      "mysqlclient>=1.3.6; platform_machine != \"aarch64\""
+    ],
+    "cross-providers-deps": [
+      "amazon",
+      "common.sql",
+      "presto",
+      "trino",
+      "vertica"
+    ]
+  },
+  "neo4j": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "neo4j>=4.2.1"
+    ],
+    "cross-providers-deps": []
+  },
+  "odbc": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "pyodbc"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "openfaas": {
+    "deps": [
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "opsgenie": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "opsgenie-sdk>=2.1.5"
+    ],
+    "cross-providers-deps": []
+  },
+  "oracle": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "oracledb>=1.0.0"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "pagerduty": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "pdpyras>=4.1.2"
+    ],
+    "cross-providers-deps": []
+  },
+  "papermill": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "papermill[all]>=1.2.1",
+      "scrapbook[all]"
+    ],
+    "cross-providers-deps": []
+  },
+  "plexus": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "arrow>=0.16.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "postgres": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "psycopg2-binary>=2.7.4"
+    ],
+    "cross-providers-deps": [
+      "amazon",
+      "common.sql"
+    ]
+  },
+  "presto": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "pandas>=0.17.1",
+      "presto-python-client>=0.8.2"
+    ],
+    "cross-providers-deps": [
+      "common.sql",
+      "google",
+      "slack"
+    ]
+  },
+  "qubole": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "qds-sdk>=1.10.4"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "redis": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "redis~=3.2"
+    ],
+    "cross-providers-deps": []
+  },
+  "salesforce": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "pandas>=0.17.1",
+      "simple-salesforce>=1.0.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "samba": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "smbprotocol>=1.5.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "segment": {
+    "deps": [
+      "analytics-python>=1.2.9",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "sendgrid": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "sendgrid>=6.0.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "sftp": {
+    "deps": [
+      "apache-airflow-providers-ssh>=2.1.0",
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": [
+      "ssh"
+    ]
+  },
+  "singularity": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "spython>=0.0.56"
+    ],
+    "cross-providers-deps": []
+  },
+  "slack": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow-providers-http",
+      "apache-airflow>=2.2.0",
+      "slack_sdk>=3.0.0"
+    ],
+    "cross-providers-deps": [
+      "common.sql",
+      "http"
+    ]
+  },
+  "snowflake": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "snowflake-connector-python>=2.4.1",
+      "snowflake-sqlalchemy>=1.1.0"
+    ],
+    "cross-providers-deps": [
+      "common.sql",
+      "slack"
+    ]
+  },
+  "sqlite": {
+    "deps": [
+      "apache-airflow-providers-common-sql"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "ssh": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "paramiko>=2.6.0",
+      "sshtunnel>=0.3.2"
+    ],
+    "cross-providers-deps": []
+  },
+  "tableau": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "tableauserverclient"
+    ],
+    "cross-providers-deps": []
+  },
+  "tabular": {
+    "deps": [
+      "apache-airflow>=2.2.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "telegram": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "python-telegram-bot>=13.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "trino": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "pandas>=0.17.1",
+      "trino>=0.301.0"
+    ],
+    "cross-providers-deps": [
+      "common.sql",
+      "google"
+    ]
+  },
+  "vertica": {
+    "deps": [
+      "apache-airflow-providers-common-sql",
+      "apache-airflow>=2.2.0",
+      "vertica-python>=0.5.1"
+    ],
+    "cross-providers-deps": [
+      "common.sql"
+    ]
+  },
+  "yandex": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "yandexcloud>=0.146.0"
+    ],
+    "cross-providers-deps": []
+  },
+  "zendesk": {
+    "deps": [
+      "apache-airflow>=2.2.0",
+      "zenpy>=2.0.24"
+    ],
+    "cross-providers-deps": []
+  }
+}
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
index 3d6122bc3f..dbb2b1d56e 100644
--- a/images/breeze/output-build-prod-image.svg
+++ b/images/breeze/output-build-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2026.3999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2002.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,365 +19,361 @@
         font-weight: 700;
     }
 
-    .terminal-1181880005-matrix {
+    .terminal-4196591838-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1181880005-title {
+    .terminal-4196591838-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1181880005-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1181880005-r2 { fill: #c5c8c6 }
-.terminal-1181880005-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1181880005-r4 { fill: #868887 }
-.terminal-1181880005-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1181880005-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1181880005-r7 { fill: #8d7b39 }
+    .terminal-4196591838-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4196591838-r2 { fill: #c5c8c6 }
+.terminal-4196591838-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4196591838-r4 { fill: #868887 }
+.terminal-4196591838-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4196591838-r6 { fill: #98a84b;font-weight: bold }
+.terminal-4196591838-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1181880005-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1975.3999999999999" />
+    <clipPath id="terminal-4196591838-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1951.0" />
     </clipPath>
-    <clipPath id="terminal-1181880005-line-0">
+    <clipPath id="terminal-4196591838-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-1">
+<clipPath id="terminal-4196591838-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-2">
+<clipPath id="terminal-4196591838-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-3">
+<clipPath id="terminal-4196591838-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-4">
+<clipPath id="terminal-4196591838-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-5">
+<clipPath id="terminal-4196591838-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-6">
+<clipPath id="terminal-4196591838-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-7">
+<clipPath id="terminal-4196591838-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-8">
+<clipPath id="terminal-4196591838-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-9">
+<clipPath id="terminal-4196591838-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-10">
+<clipPath id="terminal-4196591838-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-11">
+<clipPath id="terminal-4196591838-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-12">
+<clipPath id="terminal-4196591838-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-13">
+<clipPath id="terminal-4196591838-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-14">
+<clipPath id="terminal-4196591838-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-15">
+<clipPath id="terminal-4196591838-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-16">
+<clipPath id="terminal-4196591838-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-17">
+<clipPath id="terminal-4196591838-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-18">
+<clipPath id="terminal-4196591838-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-19">
+<clipPath id="terminal-4196591838-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-20">
+<clipPath id="terminal-4196591838-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-21">
+<clipPath id="terminal-4196591838-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-22">
+<clipPath id="terminal-4196591838-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-23">
+<clipPath id="terminal-4196591838-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-24">
+<clipPath id="terminal-4196591838-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-25">
+<clipPath id="terminal-4196591838-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-26">
+<clipPath id="terminal-4196591838-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-27">
+<clipPath id="terminal-4196591838-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-28">
+<clipPath id="terminal-4196591838-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-29">
+<clipPath id="terminal-4196591838-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-30">
+<clipPath id="terminal-4196591838-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-31">
+<clipPath id="terminal-4196591838-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-32">
+<clipPath id="terminal-4196591838-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-33">
+<clipPath id="terminal-4196591838-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-34">
+<clipPath id="terminal-4196591838-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-35">
+<clipPath id="terminal-4196591838-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-36">
+<clipPath id="terminal-4196591838-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-37">
+<clipPath id="terminal-4196591838-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-38">
+<clipPath id="terminal-4196591838-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-39">
+<clipPath id="terminal-4196591838-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-40">
+<clipPath id="terminal-4196591838-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-41">
+<clipPath id="terminal-4196591838-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-42">
+<clipPath id="terminal-4196591838-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-43">
+<clipPath id="terminal-4196591838-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-44">
+<clipPath id="terminal-4196591838-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-45">
+<clipPath id="terminal-4196591838-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-46">
+<clipPath id="terminal-4196591838-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-47">
+<clipPath id="terminal-4196591838-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-48">
+<clipPath id="terminal-4196591838-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-49">
+<clipPath id="terminal-4196591838-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-50">
+<clipPath id="terminal-4196591838-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-51">
+<clipPath id="terminal-4196591838-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-52">
+<clipPath id="terminal-4196591838-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-53">
+<clipPath id="terminal-4196591838-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-54">
+<clipPath id="terminal-4196591838-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-55">
+<clipPath id="terminal-4196591838-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-56">
+<clipPath id="terminal-4196591838-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-57">
+<clipPath id="terminal-4196591838-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-58">
+<clipPath id="terminal-4196591838-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-59">
+<clipPath id="terminal-4196591838-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-60">
+<clipPath id="terminal-4196591838-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-61">
+<clipPath id="terminal-4196591838-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-62">
+<clipPath id="terminal-4196591838-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-63">
+<clipPath id="terminal-4196591838-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-64">
+<clipPath id="terminal-4196591838-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-65">
+<clipPath id="terminal-4196591838-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-66">
+<clipPath id="terminal-4196591838-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-67">
+<clipPath id="terminal-4196591838-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-68">
+<clipPath id="terminal-4196591838-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-69">
+<clipPath id="terminal-4196591838-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-70">
+<clipPath id="terminal-4196591838-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-71">
+<clipPath id="terminal-4196591838-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-72">
+<clipPath id="terminal-4196591838-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-73">
+<clipPath id="terminal-4196591838-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-74">
+<clipPath id="terminal-4196591838-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-75">
+<clipPath id="terminal-4196591838-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-76">
+<clipPath id="terminal-4196591838-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-77">
+<clipPath id="terminal-4196591838-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-78">
+<clipPath id="terminal-4196591838-line-78">
     <rect x="0" y="1904.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1181880005-line-79">
-    <rect x="0" y="1929.1" width="1464" height="24.65"/>
-            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2024.4" rx="8"/><text class="terminal-1181880005-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-prod-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2000" rx="8"/><text class="terminal-4196591838-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-prod-image</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
             <circle cx="44" cy="0" r="7" fill="#28c840"/>
             </g>
         
-    <g transform="translate(9, 41)" clip-path="url(#terminal-1181880005-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4196591838-clip-terminal)">
     
-    <g class="terminal-1181880005-matrix">
-    <text class="terminal-1181880005-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1181880005-line-0)">
-</text><text class="terminal-1181880005-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1181880005-line-1)">Usage:&#160;</text><text class="terminal-1181880005-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-1181880005-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-1181880005-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-1)">
-</text><text class="terminal-1181880005-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-2)">
-</text><text class="terminal-1181880005-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-1181880005-line-3)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;or&#160;selected&#160;Python&#160;versions&#160;sequentially.</text><text class="terminal-1181880005-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-3)">
-</text><text class="terminal-1181880005-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-4)">
-</text><text class="terminal-1181880005-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1181880005-line-5)">╭─</text><text class="terminal-1181880005-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1181880005-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1181880005-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-118188 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-6)">│</text><text class="terminal-1181880005-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-6)">-</text><text class="terminal-1181880005-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1181880005-line-6)">-python</text><text class="terminal-1181880005-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-118 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-7)">│</text><text class="terminal-1181880005-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1181880005-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-1181880005-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-8)">│</text><text class="terminal-1181880005-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1181880005-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-1181880005-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-9)">│</text><text class="terminal-1181880005-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-9)">-</text><text class="terminal-1181880005-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1181880005-line-9)">-install</text><text class="terminal-1181880005-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1181880005-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1181880005-line-10)">│</text><text class="terminal-1181880005-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1181880005-line-10)">-</text><text class="terminal-1181880005-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-1181880005-line-10)">-upgrade</text><text class="terminal-1181880005-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-1181 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-11)">│</text><text class="terminal-1181880005-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-11)">-</text><text class="terminal-1181880005-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-1181880005-line-11)">-debian</text><text class="terminal-1181880005-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-1181880005-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-12)">│</text><text class="terminal-1181880005-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-12)">-</text><text class="terminal-1181880005-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-1181880005-line-12)">-image</text><text class="terminal-1181880005-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1181880005-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-13)">│</text><text class="terminal-1181880005-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-13)">-</text><text class="terminal-1181880005-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-1181880005-line-13)">-tag</text><text class="terminal-1181880005-r5" x="85.4" y="337.2" textLength="122" clip-path="url(#terminal-118 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-14)">│</text><text class="terminal-1181880005-r2" x="475.8" y="361.6" textLength="414.8" clip-path="url(#terminal-1181880005-line-14)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1181880005-r5" x="890.6" y="361.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-14)">-</text><text class="terminal-1181880005- [...]
-</text><text class="terminal-1181880005-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1181880005-line-15)">│</text><text class="terminal-1181880005-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1181880005-line-15)">-</text><text class="terminal-1181880005-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-1181880005-line-15)">-docker</text><text class="terminal-1181880005-r5" x="122" y="386" textLength="73.2" clip-path="url(#terminal-11818800 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-16)">│</text><text class="terminal-1181880005-r4" x="475.8" y="410.4" textLength="549" clip-path="url(#terminal-1181880005-line-16)">[default:&#160;registry]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1181880005-r4" x="1451.8" y="41 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1181880005-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1181880005-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-17)">
-</text><text class="terminal-1181880005-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-1181880005-line-18)">╭─</text><text class="terminal-1181880005-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-1181880005-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1181880005-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-1181880005-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-19)">│</text><text class="terminal-1181880005-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-19)">-</text><text class="terminal-1181880005-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-1181880005-line-19)">-run</text><text class="terminal-1181880005-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1181880005-line-20)">│</text><text class="terminal-1181880005-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-1181880005-line-20)">-</text><text class="terminal-1181880005-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-1181880005-line-20)">-parallelism</text><text class="terminal-1181880005-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-21)">│</text><text class="terminal-1181880005-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-1181880005-line-21)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-22)">│</text><text class="terminal-1181880005-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-22)">-</text><text class="terminal-1181880005-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-1181880005-line-22)">-python</text><text class="terminal-1181880005-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1181880005-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-23)">│</text><text class="terminal-1181880005-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-1181880005-line-23)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-1181880005-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1181880005-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-24)">
-</text><text class="terminal-1181880005-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-1181880005-line-25)">╭─</text><text class="terminal-1181880005-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-1181880005-line-25)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1181880005-r4" x="1439.6" y="630" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-1181880005-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-26)">│</text><text class="terminal-1181880005-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-26)">-</text><text class="terminal-1181880005-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1181880005-line-26)">-install</text><text class="terminal-1181880005-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-1181880005-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-27)">│</text><text class="terminal-1181880005-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-27)">-</text><text class="terminal-1181880005-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-1181880005-line-27)">-airflow</text><text class="terminal-1181880005-r5" x="134.2" y="678.8" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1181880005-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-28)">│</text><text class="terminal-1181880005-r7" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-1181880005-line-28)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-1181880005-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-29)">│</text><text class="terminal-1181880005-r4" x="463.6" y="727.6" textLength="976" clip-path="url(#terminal-1181880005-line-29)">[default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1181880005-line-30)">│</text><text class="terminal-1181880005-r4" x="463.6" y="752" textLength="976" clip-path="url(#terminal-1181880005-line-30)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-1181880005-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-1181880005-line-30)">│</text><text class="terminal-1181880 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-31)">│</text><text class="terminal-1181880005-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-31)">-</text><text class="terminal-1181880005-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-1181880005-line-31)">-airflow</text><text class="terminal-1181880005-r5" x="134.2" y="776.4" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-1181880005-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-32)">│</text><text class="terminal-1181880005-r7" x="463.6" y="800.8" textLength="866.2" clip-path="url(#terminal-1181880005-line-32)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-1181880005-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-32)">│</text><text clas [...]
-</text><text class="terminal-1181880005-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-33)">│</text><text class="terminal-1181880005-r4" x="463.6" y="825.2" textLength="866.2" clip-path="url(#terminal-1181880005-line-33)">[default:&#160;constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-1181880005-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-34)">│</text><text class="terminal-1181880005-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-34)">-</text><text class="terminal-1181880005-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-1181880005-line-34)">-airflow</text><text class="terminal-1181880005-r5" x="134.2" y="849.6" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-1181880005-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1181880005-line-35)">│</text><text class="terminal-1181880005-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1181880005-line-35)">-</text><text class="terminal-1181880005-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-1181880005-line-35)">-python</text><text class="terminal-1181880005-r5" x="122" y="874" textLength="73.2" clip-path="url(#terminal-11818800 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-36)">│</text><text class="terminal-1181880005-r2" x="463.6" y="898.4" textLength="976" clip-path="url(#terminal-1181880005-line-36)">something&#160;like:&#160;python:VERSION-slim-bullseye&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-1181880005-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-37)">│</text><text class="terminal-1181880005-r7" x="463.6" y="922.8" textLength="976" clip-path="url(#terminal-1181880005-line-37)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-1181880005-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-38)">│</text><text class="terminal-1181880005-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-38)">-</text><text class="terminal-1181880005-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1181880005-line-38)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="947.2" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-39)">│</text><text class="terminal-1181880005-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-39)">-</text><text class="terminal-1181880005-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-1181880005-line-39)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="971.6" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-1181880005-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1181880005-line-40)">│</text><text class="terminal-1181880005-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1181880005-line-40)">-</text><text class="terminal-1181880005-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1181880005-line-40)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="996" textLength="207.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-41)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-41)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-1181880005-line-41)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="1020.4" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-42)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-42)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-1181880005-line-42)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="1044.8" textLength="244" clip-path="url( [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-43)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-43)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-1181880005-line-43)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="1069.2" textLength="158.6" clip-path="ur [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-44)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-44)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-1181880005-line-44)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="1093.6" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1181880005-line-45)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1181880005-line-45)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-1181880005-line-45)">-additional</text><text class="terminal-1181880005-r5" x="170.8" y="1118" textLength="195.2" clip-path="url(#termi [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-46)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-46)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-1181880005-line-46)">-runtime</text><text class="terminal-1181880005-r5" x="134.2" y="1142.4" textLength="109.8" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-47)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-47)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-1181880005-line-47)">-runtime</text><text class="terminal-1181880005-r5" x="134.2" y="1166.8" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-48)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-48)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#terminal-1181880005-line-48)">-dev</text><text class="terminal-1181880005-r5" x="85.4" y="1191.2" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-49)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-49)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1215.6" textLength="48.8" clip-path="url(#terminal-1181880005-line-49)">-dev</text><text class="terminal-1181880005-r5" x="85.4" y="1215.6" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-1181880005-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1181880005-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-1181880005-line-50)">
-</text><text class="terminal-1181880005-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-1181880005-line-51)">╭─</text><text class="terminal-1181880005-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-1181880005-line-51)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-1181880005-r4" x="1439.6" y="1264.4" textLength="24.4"  [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-52)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-52)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-1181880005-line-52)">-install</text><text class="terminal-1181880005-r5" x="134.2" y="1288.8" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-53)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-53)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-1181880005-line-53)">-airflow</text><text class="terminal-1181880005-r5" x="134.2" y="1313.2" textLength="170.8" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-54)">│</text><text class="terminal-1181880005-r2" x="536.8" y="1337.6" textLength="902.8" clip-path="url(#terminal-1181880005-line-54)">from&#160;PyPI&#160;or&#160;sources.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1181880005-line-55)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1181880005-line-55)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-1181880005-line-55)">-cleanup</text><text class="terminal-1181880005-r5" x="134.2" y="1362" textLength="97.6" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-56)">│</text><text class="terminal-1181880005-r2" x="536.8" y="1386.4" textLength="170.8" clip-path="url(#terminal-1181880005-line-56)">together&#160;with&#160;</text><text class="terminal-1181880005-r5" x="707.6" y="1386.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-56)">-</text><text class="terminal-1181880005-r5" x="719.8" y="1386.4" textLength="97.6" [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-57)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-57)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-1181880005-line-57)">-disable</text><text class="terminal-1181880005-r5" x="134.2" y="1410.8" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-58)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-58)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-1181880005-line-58)">-disable</text><text class="terminal-1181880005-r5" x="134.2" y="1435.2" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-59)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-59)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-1181880005-line-59)">-disable</text><text class="terminal-1181880005-r5" x="134.2" y="1459.6" textLength="353.8" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1181880005-line-60)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-1181880005-line-60)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-1181880005-line-60)">-disable</text><text class="terminal-1181880005-r5" x="134.2" y="1484" textLength="231.8" clip-path="url(#terminal- [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-61)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-61)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#terminal-1181880005-line-61)">-install</text><text class="terminal-1181880005-r5" x="134.2" y="1508.4" textLength="219.6" clip-path="url(#t [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-62)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-62)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1532.8" textLength="158.6" clip-path="url(#terminal-1181880005-line-62)">-installation</text><text class="terminal-1181880005-r5" x="195.2" y="1532.8" textLength="85.4" clip-path="u [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1557.2" textLength="1464" clip-path="url(#terminal-1181880005-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1181880005-r2" x="1464" y="1557.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-63)">
-</text><text class="terminal-1181880005-r4" x="0" y="1581.6" textLength="24.4" clip-path="url(#terminal-1181880005-line-64)">╭─</text><text class="terminal-1181880005-r4" x="24.4" y="1581.6" textLength="1415.2" clip-path="url(#terminal-1181880005-line-64)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1181880005-r4" x="1439.6" y="1581.6" textLeng [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-1181880005-line-65)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-1181880005-line-65)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1606" textLength="85.4" clip-path="url(#terminal-1181880005-line-65)">-github</text><text class="terminal-1181880005-r5" x="122" y="1606" textLength="73.2" clip-path="url(#terminal-1181 [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-66)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-66)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1630.4" textLength="85.4" clip-path="url(#terminal-1181880005-line-66)">-github</text><text class="terminal-1181880005-r5" x="122" y="1630.4" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-67)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-67)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1654.8" textLength="109.8" clip-path="url(#terminal-1181880005-line-67)">-platform</text><text class="terminal-1181880005-r2" x="341.6" y="1654.8" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-68)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-68)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1679.2" textLength="61" clip-path="url(#terminal-1181880005-line-68)">-push</text><text class="terminal-1181880005-r5" x="97.6" y="1679.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-69)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-69)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1703.6" textLength="73.2" clip-path="url(#terminal-1181880005-line-69)">-empty</text><text class="terminal-1181880005-r5" x="109.8" y="1703.6" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-1181880005-line-70)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1728" textLength="12.2" clip-path="url(#terminal-1181880005-line-70)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1728" textLength="97.6" clip-path="url(#terminal-1181880005-line-70)">-prepare</text><text class="terminal-1181880005-r5" x="134.2" y="1728" textLength="158.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-71)">│</text><text class="terminal-1181880005-r2" x="341.6" y="1752.4" textLength="1098" clip-path="url(#terminal-1181880005-line-71)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-1181880005-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1181880005-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-72)">
-</text><text class="terminal-1181880005-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-1181880005-line-73)">╭─</text><text class="terminal-1181880005-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-1181880005-line-73)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1181880005-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-74)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-74)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1825.6" textLength="85.4" clip-path="url(#terminal-1181880005-line-74)">-github</text><text class="terminal-1181880005-r5" x="122" y="1825.6" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-1181880005-line-75)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-1181880005-line-75)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1850" textLength="97.6" clip-path="url(#terminal-1181880005-line-75)">-builder</text><text class="terminal-1181880005-r2" x="329.4" y="1850" textLength="744.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-76)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-1181880005-line-76)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1874.4" textLength="85.4" clip-path="url(#terminal-1181880005-line-76)">-answer</text><text class="terminal-1181880005-r6" x="280.6" y="1874.4" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-77)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-1181880005-line-77)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1898.8" textLength="48.8" clip-path="url(#terminal-1181880005-line-77)">-dry</text><text class="terminal-1181880005-r5" x="85.4" y="1898.8" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-78)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#terminal-1181880005-line-78)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1923.2" textLength="97.6" clip-path="url(#terminal-1181880005-line-78)">-verbose</text><text class="terminal-1181880005-r6" x="280.6" y="1923.2" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-79)">│</text><text class="terminal-1181880005-r5" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#terminal-1181880005-line-79)">-</text><text class="terminal-1181880005-r5" x="36.6" y="1947.6" textLength="61" clip-path="url(#terminal-1181880005-line-79)">-help</text><text class="terminal-1181880005-r6" x="280.6" y="1947.6" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1181880005-r4" x="0" y="1972" textLength="1464" clip-path="url(#terminal-1181880005-line-80)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1181880005-r2" x="1464" y="1972" textLength="12.2" clip-path="url(#terminal-1181880005-line-80)">
+    <g class="terminal-4196591838-matrix">
+    <text class="terminal-4196591838-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4196591838-line-0)">
+</text><text class="terminal-4196591838-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4196591838-line-1)">Usage:&#160;</text><text class="terminal-4196591838-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-4196591838-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-4196591838-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-1)">
+</text><text class="terminal-4196591838-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-2)">
+</text><text class="terminal-4196591838-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-4196591838-line-3)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;or&#160;selected&#160;Python&#160;versions&#160;sequentially.</text><text class="terminal-4196591838-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-3)">
+</text><text class="terminal-4196591838-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-4)">
+</text><text class="terminal-4196591838-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4196591838-line-5)">╭─</text><text class="terminal-4196591838-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4196591838-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4196591838-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-419659 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-6)">│</text><text class="terminal-4196591838-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-6)">-</text><text class="terminal-4196591838-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-4196591838-line-6)">-python</text><text class="terminal-4196591838-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-419 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-7)">│</text><text class="terminal-4196591838-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-4196591838-line-7)">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="terminal-4196591838-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-8)">│</text><text class="terminal-4196591838-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-4196591838-line-8)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-4196591838-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-9)">│</text><text class="terminal-4196591838-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-9)">-</text><text class="terminal-4196591838-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-4196591838-line-9)">-install</text><text class="terminal-4196591838-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
+</text><text class="terminal-4196591838-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4196591838-line-10)">│</text><text class="terminal-4196591838-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-4196591838-line-10)">-</text><text class="terminal-4196591838-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-4196591838-line-10)">-upgrade</text><text class="terminal-4196591838-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-4196 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-11)">│</text><text class="terminal-4196591838-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-11)">-</text><text class="terminal-4196591838-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-4196591838-line-11)">-debian</text><text class="terminal-4196591838-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-4196591838-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-12)">│</text><text class="terminal-4196591838-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-12)">-</text><text class="terminal-4196591838-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-4196591838-line-12)">-image</text><text class="terminal-4196591838-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-4196591838-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-13)">│</text><text class="terminal-4196591838-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-13)">-</text><text class="terminal-4196591838-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-4196591838-line-13)">-tag</text><text class="terminal-4196591838-r5" x="85.4" y="337.2" textLength="122" clip-path="url(#terminal-419 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-14)">│</text><text class="terminal-4196591838-r2" x="475.8" y="361.6" textLength="414.8" clip-path="url(#terminal-4196591838-line-14)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-4196591838-r5" x="890.6" y="361.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-14)">-</text><text class="terminal-4196591838- [...]
+</text><text class="terminal-4196591838-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4196591838-line-15)">│</text><text class="terminal-4196591838-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4196591838-line-15)">-</text><text class="terminal-4196591838-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-4196591838-line-15)">-docker</text><text class="terminal-4196591838-r5" x="122" y="386" textLength="73.2" clip-path="url(#terminal-41965918 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-16)">│</text><text class="terminal-4196591838-r4" x="475.8" y="410.4" textLength="549" clip-path="url(#terminal-4196591838-line-16)">[default:&#160;registry]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-4196591838-r4" x="1451.8" y="41 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-4196591838-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4196591838-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-17)">
+</text><text class="terminal-4196591838-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-4196591838-line-18)">╭─</text><text class="terminal-4196591838-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-4196591838-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4196591838-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-4196591838-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-19)">│</text><text class="terminal-4196591838-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-19)">-</text><text class="terminal-4196591838-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-4196591838-line-19)">-run</text><text class="terminal-4196591838-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-4196591838-line-20)">│</text><text class="terminal-4196591838-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-4196591838-line-20)">-</text><text class="terminal-4196591838-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-4196591838-line-20)">-parallelism</text><text class="terminal-4196591838-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-21)">│</text><text class="terminal-4196591838-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-4196591838-line-21)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-22)">│</text><text class="terminal-4196591838-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-22)">-</text><text class="terminal-4196591838-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-4196591838-line-22)">-python</text><text class="terminal-4196591838-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-4196591838-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-23)">│</text><text class="terminal-4196591838-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-4196591838-line-23)">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-4196591838-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4196591838-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-24)">
+</text><text class="terminal-4196591838-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-4196591838-line-25)">╭─</text><text class="terminal-4196591838-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-4196591838-line-25)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4196591838-r4" x="1439.6" y="630" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-4196591838-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-26)">│</text><text class="terminal-4196591838-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-26)">-</text><text class="terminal-4196591838-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-4196591838-line-26)">-install</text><text class="terminal-4196591838-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-4196591838-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-27)">│</text><text class="terminal-4196591838-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-27)">-</text><text class="terminal-4196591838-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-4196591838-line-27)">-airflow</text><text class="terminal-4196591838-r5" x="134.2" y="678.8" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-4196591838-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-28)">│</text><text class="terminal-4196591838-r7" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-4196591838-line-28)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="terminal-4196591838-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-29)">│</text><text class="terminal-4196591838-r4" x="463.6" y="727.6" textLength="976" clip-path="url(#terminal-4196591838-line-29)">[default:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-4196591838-line-30)">│</text><text class="terminal-4196591838-r4" x="463.6" y="752" textLength="976" clip-path="url(#terminal-4196591838-line-30)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-4196591838-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-4196591838-line-30)">│</text><text class="terminal-4196591 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-31)">│</text><text class="terminal-4196591838-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-31)">-</text><text class="terminal-4196591838-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-4196591838-line-31)">-airflow</text><text class="terminal-4196591838-r5" x="134.2" y="776.4" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-4196591838-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-32)">│</text><text class="terminal-4196591838-r7" x="463.6" y="800.8" textLength="866.2" clip-path="url(#terminal-4196591838-line-32)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-4196591838-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-32)">│</text><text clas [...]
+</text><text class="terminal-4196591838-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-33)">│</text><text class="terminal-4196591838-r4" x="463.6" y="825.2" textLength="866.2" clip-path="url(#terminal-4196591838-line-33)">[default:&#160;constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-4196591838-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-34)">│</text><text class="terminal-4196591838-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-34)">-</text><text class="terminal-4196591838-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-4196591838-line-34)">-airflow</text><text class="terminal-4196591838-r5" x="134.2" y="849.6" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-4196591838-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-4196591838-line-35)">│</text><text class="terminal-4196591838-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-4196591838-line-35)">-</text><text class="terminal-4196591838-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-4196591838-line-35)">-python</text><text class="terminal-4196591838-r5" x="122" y="874" textLength="73.2" clip-path="url(#terminal-41965918 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-36)">│</text><text class="terminal-4196591838-r2" x="463.6" y="898.4" textLength="976" clip-path="url(#terminal-4196591838-line-36)">something&#160;like:&#160;python:VERSION-slim-bullseye&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="terminal-4196591838-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-37)">│</text><text class="terminal-4196591838-r7" x="463.6" y="922.8" textLength="976" clip-path="url(#terminal-4196591838-line-37)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="terminal-4196591838-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-38)">│</text><text class="terminal-4196591838-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-38)">-</text><text class="terminal-4196591838-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-4196591838-line-38)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="947.2" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-39)">│</text><text class="terminal-4196591838-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-39)">-</text><text class="terminal-4196591838-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-4196591838-line-39)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="971.6" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-4196591838-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-4196591838-line-40)">│</text><text class="terminal-4196591838-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-4196591838-line-40)">-</text><text class="terminal-4196591838-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-4196591838-line-40)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="996" textLength="207.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-41)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-41)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-4196591838-line-41)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="1020.4" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-42)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-42)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-4196591838-line-42)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="1044.8" textLength="244" clip-path="url( [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-43)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-43)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-4196591838-line-43)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="1069.2" textLength="158.6" clip-path="ur [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-44)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-44)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-4196591838-line-44)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="1093.6" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-4196591838-line-45)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-4196591838-line-45)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-4196591838-line-45)">-additional</text><text class="terminal-4196591838-r5" x="170.8" y="1118" textLength="195.2" clip-path="url(#termi [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-46)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-46)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-4196591838-line-46)">-runtime</text><text class="terminal-4196591838-r5" x="134.2" y="1142.4" textLength="109.8" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-47)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-47)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-4196591838-line-47)">-runtime</text><text class="terminal-4196591838-r5" x="134.2" y="1166.8" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-48)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-48)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#terminal-4196591838-line-48)">-dev</text><text class="terminal-4196591838-r5" x="85.4" y="1191.2" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-49)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-49)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1215.6" textLength="48.8" clip-path="url(#terminal-4196591838-line-49)">-dev</text><text class="terminal-4196591838-r5" x="85.4" y="1215.6" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-4196591838-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4196591838-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-4196591838-line-50)">
+</text><text class="terminal-4196591838-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-4196591838-line-51)">╭─</text><text class="terminal-4196591838-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-4196591838-line-51)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-4196591838-r4" x="1439.6" y="1264.4" textLength="24.4"  [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-52)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-52)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-4196591838-line-52)">-install</text><text class="terminal-4196591838-r5" x="134.2" y="1288.8" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-53)">│</text><text class="terminal-4196591838-r2" x="536.8" y="1313.2" textLength="97.6" clip-path="url(#terminal-4196591838-line-53)">Implies&#160;</text><text class="terminal-4196591838-r5" x="634.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-53)">-</text><text class="terminal-4196591838-r5" x="646.6" y="1313.2" textLength="97.6" clip-path=" [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-54)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-54)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-4196591838-line-54)">-cleanup</text><text class="terminal-4196591838-r5" x="134.2" y="1337.6" textLength="97.6" clip-path="url(#te [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-4196591838-line-55)">│</text><text class="terminal-4196591838-r2" x="536.8" y="1362" textLength="170.8" clip-path="url(#terminal-4196591838-line-55)">together&#160;with&#160;</text><text class="terminal-4196591838-r5" x="707.6" y="1362" textLength="12.2" clip-path="url(#terminal-4196591838-line-55)">-</text><text class="terminal-4196591838-r5" x="719.8" y="1362" textLength="97.6" clip-pa [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-56)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-56)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-4196591838-line-56)">-disable</text><text class="terminal-4196591838-r5" x="134.2" y="1386.4" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-57)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-57)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-4196591838-line-57)">-disable</text><text class="terminal-4196591838-r5" x="134.2" y="1410.8" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-58)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-58)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-4196591838-line-58)">-disable</text><text class="terminal-4196591838-r5" x="134.2" y="1435.2" textLength="353.8" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-59)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-59)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-4196591838-line-59)">-disable</text><text class="terminal-4196591838-r5" x="134.2" y="1459.6" textLength="231.8" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-4196591838-line-60)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-4196591838-line-60)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-4196591838-line-60)">-install</text><text class="terminal-4196591838-r5" x="134.2" y="1484" textLength="219.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-61)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-61)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1508.4" textLength="158.6" clip-path="url(#terminal-4196591838-line-61)">-installation</text><text class="terminal-4196591838-r5" x="195.2" y="1508.4" textLength="85.4" clip-path="u [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1532.8" textLength="1464" clip-path="url(#terminal-4196591838-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4196591838-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-62)">
+</text><text class="terminal-4196591838-r4" x="0" y="1557.2" textLength="24.4" clip-path="url(#terminal-4196591838-line-63)">╭─</text><text class="terminal-4196591838-r4" x="24.4" y="1557.2" textLength="1415.2" clip-path="url(#terminal-4196591838-line-63)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-4196591838-r4" x="1439.6" y="1557.2" textLeng [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-64)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-64)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1581.6" textLength="85.4" clip-path="url(#terminal-4196591838-line-64)">-github</text><text class="terminal-4196591838-r5" x="122" y="1581.6" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-4196591838-line-65)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-4196591838-line-65)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1606" textLength="85.4" clip-path="url(#terminal-4196591838-line-65)">-github</text><text class="terminal-4196591838-r5" x="122" y="1606" textLength="109.8" clip-path="url(#terminal-419 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-66)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-66)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1630.4" textLength="109.8" clip-path="url(#terminal-4196591838-line-66)">-platform</text><text class="terminal-4196591838-r2" x="341.6" y="1630.4" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-67)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-67)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1654.8" textLength="61" clip-path="url(#terminal-4196591838-line-67)">-push</text><text class="terminal-4196591838-r5" x="97.6" y="1654.8" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-68)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-68)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1679.2" textLength="73.2" clip-path="url(#terminal-4196591838-line-68)">-empty</text><text class="terminal-4196591838-r5" x="109.8" y="1679.2" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-69)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-69)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1703.6" textLength="97.6" clip-path="url(#terminal-4196591838-line-69)">-prepare</text><text class="terminal-4196591838-r5" x="134.2" y="1703.6" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-4196591838-line-70)">│</text><text class="terminal-4196591838-r2" x="341.6" y="1728" textLength="1098" clip-path="url(#terminal-4196591838-line-70)">image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1752.4" textLength="1464" clip-path="url(#terminal-4196591838-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4196591838-r2" x="1464" y="1752.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-71)">
+</text><text class="terminal-4196591838-r4" x="0" y="1776.8" textLength="24.4" clip-path="url(#terminal-4196591838-line-72)">╭─</text><text class="terminal-4196591838-r4" x="24.4" y="1776.8" textLength="1415.2" clip-path="url(#terminal-4196591838-line-72)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4196591838-r4" x="1439.6" y="1776.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-73)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-73)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1801.2" textLength="85.4" clip-path="url(#terminal-4196591838-line-73)">-github</text><text class="terminal-4196591838-r5" x="122" y="1801.2" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-74)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-74)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1825.6" textLength="97.6" clip-path="url(#terminal-4196591838-line-74)">-builder</text><text class="terminal-4196591838-r2" x="329.4" y="1825.6" textLength="744.2" clip-path="url(#t [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-4196591838-line-75)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-4196591838-line-75)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1850" textLength="85.4" clip-path="url(#terminal-4196591838-line-75)">-answer</text><text class="terminal-4196591838-r6" x="280.6" y="1850" textLength="24.4" clip-path="url(#terminal-41 [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-76)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-4196591838-line-76)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1874.4" textLength="48.8" clip-path="url(#terminal-4196591838-line-76)">-dry</text><text class="terminal-4196591838-r5" x="85.4" y="1874.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-77)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-4196591838-line-77)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1898.8" textLength="97.6" clip-path="url(#terminal-4196591838-line-77)">-verbose</text><text class="terminal-4196591838-r6" x="280.6" y="1898.8" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-78)">│</text><text class="terminal-4196591838-r5" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#terminal-4196591838-line-78)">-</text><text class="terminal-4196591838-r5" x="36.6" y="1923.2" textLength="61" clip-path="url(#terminal-4196591838-line-78)">-help</text><text class="terminal-4196591838-r6" x="280.6" y="1923.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-4196591838-r4" x="0" y="1947.6" textLength="1464" clip-path="url(#terminal-4196591838-line-79)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4196591838-r2" x="1464" y="1947.6" textLength="12.2" clip-path="url(#terminal-4196591838-line-79)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index a3b911c335..774cb26c3f 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -5,7 +5,7 @@
 main:fa4319079b275ce966502346f083f2e3
 build-docs:20b1a171a93c8ae1a62a0f3a804501f2
 build-image:b00ae014f9c45c116e8dd0ea72b61d19
-build-prod-image:4a3950d1a61aeb61218eb45659574139
+build-prod-image:6c614f9c76e776912dc1cf4506d2b6f5
 cleanup:9a94bd1063296ea86e895f671db0b330
 command-hash-export:83bc6a4a8c60b62da3d0f00e81d2c3ea
 config:92653afc11889e1b78e3a2e38f41107f
diff --git a/scripts/ci/libraries/_initialization.sh b/scripts/ci/libraries/_initialization.sh
index e7c96b20b5..96d3a65bf7 100644
--- a/scripts/ci/libraries/_initialization.sh
+++ b/scripts/ci/libraries/_initialization.sh
@@ -459,11 +459,6 @@ function initialization::initialize_image_build_variables() {
     # Determines which providers are used to generate constraints - source, pypi or no providers
     export AIRFLOW_CONSTRAINTS_MODE=${AIRFLOW_CONSTRAINTS_MODE:="constraints-source-providers"}
 
-    # By default we install latest airflow from PyPI or sources. You can set this parameter to false
-    # if Airflow is in the .whl or .tar.gz packages placed in `docker-context-files` folder and you want
-    # to skip installing Airflow/Providers from PyPI or sources.
-    export AIRFLOW_IS_IN_CONTEXT="${AIRFLOW_IS_IN_CONTEXT:="false"}"
-
     # whether installation should be performed from the local wheel packages in "docker-context-files" folder
     export INSTALL_PACKAGES_FROM_CONTEXT="${INSTALL_PACKAGES_FROM_CONTEXT:="false"}"
 
@@ -715,7 +710,6 @@ Common image build variables:
 
     INSTALL_AIRFLOW_VERSION: '${INSTALL_AIRFLOW_VERSION}'
     INSTALL_AIRFLOW_REFERENCE: '${INSTALL_AIRFLOW_REFERENCE}'
-    AIRFLOW_IS_IN_CONTEXT: '${AIRFLOW_IS_IN_CONTEXT}'
     AIRFLOW_PRE_CACHED_PIP_PACKAGES: '${AIRFLOW_PRE_CACHED_PIP_PACKAGES}'
     UPGRADE_TO_NEWER_DEPENDENCIES: '${UPGRADE_TO_NEWER_DEPENDENCIES}'
     CHECK_IMAGE_FOR_REBUILD: '${CHECK_IMAGE_FOR_REBUILD}'
@@ -858,7 +852,6 @@ function initialization::make_constants_read_only() {
     readonly IMAGE_TAG
 
     readonly AIRFLOW_PRE_CACHED_PIP_PACKAGES
-    readonly AIRFLOW_IS_IN_CONTEXT
     readonly INSTALL_PACKAGES_FROM_CONTEXT
     readonly AIRFLOW_CONSTRAINTS_REFERENCE
     readonly AIRFLOW_CONSTRAINTS_LOCATION