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/06/29 08:48:07 UTC

[airflow] branch v2-3-test updated (641ce14261 -> 8e4bb85098)

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

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


    from 641ce14261 fix 2.3.2 release date. (#24370)
     new 2a7c1f8424 Update flask-appbuilder authlib/oauth dependency (#24516)
     new 50657119da Get rid of TimedJSONWebSignatureSerializer (#24519)
     new df49aa06a6 Update 'rich' to latest version across the board. (#24186)
     new 1641b49614 Refresh list of committers (#24398)
     new 0c8cda1dd4 Switch Markdown engine to markdown-it-py (#19702)
     new 86c4540ded Remove warnings when starting breeze (#24183)
     new d7989b60f6 Fix choosing backend versions in breeze's command line (#24228)
     new 797fce76e3 Add command to regenerate breeze command output images (#24216)
     new b5cbad4d3c Better diagnostics for ARM for MySQL and MSSQL (#24185)
     new 0d0f57f3bd Fix links to sources for examples (#24386)
     new a66af3b17d Add CI-friendly progress output for tests (#24236)
     new 6a05f04300 First attempt to have CI-controlled process of releasing PROD image (#24433)
     new 0c106a47d0 Improve production image release workflow (#24481)
     new 799074d7f9 Restore capability of reproducing CI failures using new Breeze (#24402)
     new e4c41ade22 Move LOAD_DEFAULT_CONNECTIONS env var to database config section in CI (#24536)
     new c7fafc6516 Add verification steps when releasing the images. (#24520)
     new 01eae0e0f0 Added instructions on what to do if your command images are regenerated (#24581)
     new 9c57cf3baf Switch to building images in parallell (#24580)
     new 7e08c3a3df Upgrade FAB to 4.1.1 (#24399)
     new 839d67da27 Fix recording console for new rich-click 1.5 (#24611)
     new 5c7b7993b8 Fix errors revealed on autoupgrade of breeze (#24612)
     new 4e43f976a3 Fix usage of `click.get_terminal_size()` (#24616)
     new d72b745712 Upgrade FAB to 4.1.2 (#24619)
     new 4e29345bf2 We now need at least Flask-WTF 0.15 (#24621)
     new 761b2d0f7f Limit azure-servicebus to not be used on ARM (#24635)
     new de17f27d30 Allows to specify different Python base image when building images (#24634)
     new d52eeaf022 Convert selective checks to Breeze Python (#24610)
     new 4fbea89f0d Switch to new selective-checks in label-when-reviewed workflow (#24651)
     new 44e181796c Cleanup references to selective checks (#24649)
     new fbca47eba4 Remove misleading message from CI (#24650)
     new 1bea5b0d14 Remove selective checks from the "release workflow" (#24655)
     new 0c55c721f2 Use target commit SHA for build image workflow (#24659)
     new 4baf1d569a Handle "workflow_run" event properly in selective-check (#24656)
     new 174ee470d5 Fix behaviour of build/pull after recent Breeze changes (#24657)
     new 0d659c96a9 Remove "Label when approved" workflow (#24704)
     new 8913c99fce Add ARM image building for regular PRs (#24664)
     new 44994a79b7 Fix unnecessary check for ARM images (#24718)
     new 2905ede084 Script to filter candidates for PR of the month based on heuristics (#24654)
     new 8e4bb85098 Merge-friendly output of command hashes for breeze (#24711)

The 39 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitattributes                                     |   2 -
 .github/actions/checks-action                      |   1 -
 .github/actions/label-when-approved-action         |   1 -
 .github/workflows/build-images.yml                 | 147 +++-
 .github/workflows/ci.yml                           | 148 +++-
 .github/workflows/codeql-analysis.yml              |  20 +-
 .github/workflows/label_when_reviewed.yml          |  28 -
 .../workflows/label_when_reviewed_workflow_run.yml | 177 -----
 .github/workflows/release_dockerhub_image.yml      | 153 ++++
 .gitignore                                         |   4 +
 .gitmodules                                        |   6 -
 .pre-commit-config.yaml                            |  57 +-
 BREEZE.rst                                         |  47 +-
 CI.rst                                             |  15 +-
 CONTRIBUTING.rst                                   |  27 -
 Dockerfile.ci                                      |  38 +-
 IMAGES.rst                                         |   5 +-
 PULL_REQUEST_WORKFLOW.rst                          | 158 -----
 RELEASE_NOTES.rst                                  |   1 +
 SELECTIVE_CHECKS.md                                | 144 ----
 STATIC_CODE_CHECKS.rst                             |   2 +-
 TESTING.rst                                        |  17 +-
 airflow/api/auth/backend/basic_auth.py             |   5 +-
 airflow/api_connexion/endpoints/dag_endpoint.py    |   9 +-
 .../api_connexion/endpoints/dag_run_endpoint.py    |  20 +-
 .../api_connexion/endpoints/extra_link_endpoint.py |   4 +-
 airflow/api_connexion/endpoints/log_endpoint.py    |  11 +-
 airflow/api_connexion/endpoints/pool_endpoint.py   |  14 +-
 .../api_connexion/endpoints/request_dict.py        |   9 +-
 .../endpoints/role_and_permission_endpoint.py      |  15 +-
 airflow/api_connexion/endpoints/task_endpoint.py   |   7 +-
 .../endpoints/task_instance_endpoint.py            |  17 +-
 airflow/api_connexion/endpoints/user_endpoint.py   |  13 +-
 .../api_connexion/endpoints/variable_endpoint.py   |   7 +-
 airflow/api_connexion/endpoints/xcom_endpoint.py   |   5 +-
 airflow/api_connexion/schemas/dag_schema.py        |   2 +-
 .../api_connexion/schemas/task_instance_schema.py  |   2 +-
 airflow/api_connexion/security.py                  |   7 +-
 .../example_branch_datetime_operator.py            |  20 +-
 .../example_external_task_marker_dag.py            |  26 +-
 airflow/models/abstractoperator.py                 |   1 -
 airflow/operators/trigger_dagrun.py                |   5 +-
 .../example_google_api_youtube_to_s3.py            |   3 +-
 .../amazon/aws/example_dags/example_s3.py          |   5 +-
 .../arangodb/example_dags/example_arangodb.py      |   4 +-
 .../cloud/example_dags/example_automl_tables.py    |   4 +-
 .../example_cloud_storage_transfer_service_aws.py  |  10 +-
 .../google/cloud/example_dags/example_pubsub.py    |   8 +-
 .../google/cloud/example_dags/example_vertex_ai.py |   5 +-
 .../google/common/auth_backend/google_openid.py    |   2 +-
 airflow/providers/mongo/hooks/mongo.py             |   2 +-
 airflow/sensors/external_task.py                   |   6 +-
 .../utils/airflow_flask_app.py                     |  41 +-
 airflow/utils/jwt_signer.py                        |  80 +++
 airflow/utils/log/file_task_handler.py             |  18 +-
 airflow/utils/serve_logs.py                        |  84 ++-
 airflow/www/api/experimental/endpoints.py          |   3 +-
 airflow/www/auth.py                                |   5 +-
 airflow/www/extensions/init_wsgi_middlewares.py    |   2 +-
 airflow/www/fab_security/manager.py                |  37 +-
 airflow/www/static/css/main.css                    |   4 +
 airflow/www/utils.py                               |   5 +-
 airflow/www/views.py                               | 118 ++--
 breeze-complete                                    |   3 -
 breeze-legacy                                      |  24 -
 dev/MANUALLY_BUILDING_IMAGES.md                    |  96 +++
 dev/README_RELEASE_AIRFLOW.md                      | 113 +--
 dev/REFRESHING_CI_CACHE.md                         |   2 +-
 dev/airflow-github                                 |   2 -
 dev/breeze/README.md                               |   2 +-
 dev/breeze/SELECTIVE_CHECKS.md                     |  98 +++
 dev/breeze/setup.cfg                               |   5 +-
 dev/breeze/src/airflow_breeze/breeze.py            |   6 +-
 .../src/airflow_breeze/commands/ci_commands.py     | 237 +++++++
 .../airflow_breeze/commands/ci_image_commands.py   | 169 +++--
 .../configuration_and_maintenance_commands.py      | 110 ++-
 .../airflow_breeze/commands/developer_commands.py  |  35 +-
 .../src/airflow_breeze/commands/main_command.py    |   2 -
 .../commands/production_image_commands.py          | 134 +++-
 .../commands/release_management_commands.py        |  71 +-
 .../airflow_breeze/commands/testing_commands.py    | 191 ++++-
 .../src/airflow_breeze/configure_rich_click.py     |   5 +-
 dev/breeze/src/airflow_breeze/global_constants.py  | 111 +--
 .../src/airflow_breeze/params/build_ci_params.py   |   1 +
 .../src/airflow_breeze/params/build_prod_params.py |   3 +-
 .../airflow_breeze/params/common_build_params.py   |   8 +-
 .../src/airflow_breeze/params/shell_params.py      |  39 +-
 dev/breeze/src/airflow_breeze/pre_commit_ids.py    |   8 +-
 dev/breeze/src/airflow_breeze/utils/ci_group.py    |   8 +-
 .../src/airflow_breeze/utils/common_options.py     |  64 +-
 dev/breeze/src/airflow_breeze/utils/console.py     |  14 +
 .../airflow_breeze/utils/docker_command_utils.py   |  36 +-
 dev/breeze/src/airflow_breeze/utils/image.py       |   5 +-
 .../src/airflow_breeze/utils/md5_build_check.py    |   2 +-
 dev/breeze/src/airflow_breeze/utils/path_utils.py  |  33 +
 dev/breeze/src/airflow_breeze/utils/recording.py   |   8 +-
 dev/breeze/src/airflow_breeze/utils/run_tests.py   |   4 +-
 dev/breeze/src/airflow_breeze/utils/run_utils.py   |   1 +
 .../src/airflow_breeze/utils/selective_checks.py   | 480 +++++++++++++
 dev/breeze/tests/test_commands.py                  |  12 +-
 dev/breeze/tests/test_selective_checks.py          | 546 +++++++++++++++
 dev/images/release_prod_image.png                  | Bin 0 -> 76309 bytes
 dev/images/release_prod_image_rc.png               | Bin 0 -> 65816 bytes
 dev/refresh_images.sh                              |   4 +-
 dev/requirements.txt                               |   2 +
 dev/send_email.py                                  |   4 +-
 dev/stats/get_important_pr_candidates.py           | 180 +++++
 docker_tests/test_prod_image.py                    |  10 +-
 {airflow/api_connexion => docs}/__init__.py        |   0
 docs/apache-airflow-providers-alibaba/index.rst    |   6 +
 docs/apache-airflow-providers-amazon/index.rst     |   6 +
 .../apache-airflow-providers-apache-beam/index.rst |  11 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |  12 +
 .../apache-airflow-providers-apache-hive/index.rst |   6 +
 .../index.rst                                      |   6 +
 .../apache-airflow-providers-apache-livy/index.rst |   6 +
 docs/apache-airflow-providers-apache-pig/index.rst |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 docs/apache-airflow-providers-databricks/index.rst |   6 +
 docs/apache-airflow-providers-dbt-cloud/index.rst  |   6 +
 docs/apache-airflow-providers-dingding/index.rst   |   6 +
 docs/apache-airflow-providers-docker/index.rst     |   6 +
 docs/apache-airflow-providers-google/index.rst     |   6 +
 .../operators/cloud/bigquery.rst                   |  50 +-
 .../operators/cloud/datastore.rst                  |  26 +-
 .../operators/cloud/kubernetes_engine.rst          |  10 +-
 docs/apache-airflow-providers-http/index.rst       |   6 +
 docs/apache-airflow-providers-jdbc/index.rst       |   6 +
 docs/apache-airflow-providers-jenkins/index.rst    |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 docs/apache-airflow-providers-mysql/index.rst      |   6 +
 docs/apache-airflow-providers-opsgenie/index.rst   |   6 +
 docs/apache-airflow-providers-papermill/index.rst  |   6 +
 docs/apache-airflow-providers-presto/index.rst     |   6 +
 docs/apache-airflow-providers-qubole/index.rst     |   6 +
 docs/apache-airflow-providers-salesforce/index.rst |   6 +
 .../apache-airflow-providers-singularity/index.rst |   6 +
 docs/apache-airflow-providers-snowflake/index.rst  |   6 +
 docs/apache-airflow-providers-tableau/index.rst    |   6 +
 docs/apache-airflow-providers-telegram/index.rst   |   6 +
 docs/apache-airflow-providers-trino/index.rst      |   6 +
 docs/apache-airflow-providers-yandex/index.rst     |   6 +
 docs/apache-airflow/python-api-ref.rst             |   9 +
 docs/build_docs.py                                 |  14 +-
 docs/conf.py                                       |  37 +-
 docs/exts/docs_build/docs_builder.py               |   8 +-
 docs/exts/provider_yaml_utils.py                   |  32 +-
 docs/publish_docs.py                               |   2 +
 docs/spelling_wordlist.txt                         |   9 +
 images/breeze/output-build-docs.svg                | 318 +++++++--
 images/breeze/output-build-image.svg               | 357 ++++++++--
 images/breeze/output-build-prod-image.svg          | 442 +++++++++---
 images/breeze/output-cleanup.svg                   | 118 +++-
 images/breeze/output-command-hash-export.svg       |  86 ++-
 images/breeze/output-commands-hash.txt             |  37 +
 images/breeze/output-commands.svg                  | 478 ++++++++++---
 images/breeze/output-config.svg                    | 148 ++--
 images/breeze/output-docker-compose-tests.svg      | 128 +++-
 images/breeze/output-exec.svg                      |  91 ++-
 images/breeze/output-find-newer-dependencies.svg   | 133 +++-
 images/breeze/output-fix-ownership.svg             |  98 ++-
 images/breeze/output-free-space.svg                |  98 ++-
 images/breeze/output-generate-constraints.svg      | 192 ++++--
 images/breeze/output-prepare-airflow-package.svg   | 123 +++-
 .../output-prepare-provider-documentation.svg      | 173 +++--
 images/breeze/output-prepare-provider-packages.svg | 183 +++--
 images/breeze/output-pull-image.svg                | 185 +++--
 images/breeze/output-pull-prod-image.svg           | 185 +++--
 images/breeze/output-regenerate-command-images.svg |  99 +++
 images/breeze/output-release-prod-images.svg       | 168 +++--
 images/breeze/output-resource-check.svg            |  91 ++-
 images/breeze/output-selective-check.svg           | 136 ++++
 images/breeze/output-self-upgrade.svg              | 101 ++-
 images/breeze/output-setup-autocomplete.svg        | 113 ++-
 images/breeze/output-shell.svg                     | 280 ++++++--
 images/breeze/output-start-airflow.svg             | 290 ++++++--
 images/breeze/output-static-checks.svg             | 293 ++++++--
 images/breeze/output-stop.svg                      | 106 ++-
 images/breeze/output-tests.svg                     | 189 ++++-
 images/breeze/output-verify-image.svg              | 132 +++-
 images/breeze/output-verify-prod-image.svg         | 136 +++-
 images/breeze/output-verify-provider-packages.svg  | 182 +++--
 images/breeze/output-version.svg                   |  86 ++-
 images/pr/pr-full-tests-needed.png                 | Bin 88512 -> 0 bytes
 images/pr/pr-likely-ok-to-merge.png                | Bin 98362 -> 0 bytes
 images/pr/pr-no-tests-needed-comment.png           | Bin 80852 -> 0 bytes
 newsfragments/24399.significant.rst                |  31 +
 newsfragments/24519.misc.rst                       |   1 +
 scripts/ci/docker-compose/_docker.env              |   1 +
 scripts/ci/docker-compose/base.yml                 |   1 +
 scripts/ci/docker-compose/devcontainer.env         |   1 +
 scripts/ci/docker-compose/local.yml                |   7 +-
 scripts/ci/docker-compose/{files.yml => mypy.yml}  |   8 +-
 .../ci/pre_commit/pre_commit_breeze_cmd_line.py    |  29 +-
 .../pre_commit_check_2_1_compatibility.py          |  44 +-
 ...m_type.py => pre_commit_check_init_in_tests.py} |  44 +-
 .../pre_commit_check_setup_extra_packages_ref.py   |   4 +-
 ...re_commit_check_system_tests_hidden_in_index.py |  72 ++
 scripts/ci/pre_commit/pre_commit_flake8.py         |   3 +-
 .../pre_commit/pre_commit_migration_reference.py   |   3 +-
 scripts/ci/pre_commit/pre_commit_mypy.py           |   3 +-
 scripts/ci/pre_commit/pre_commit_ui_lint.py        |   3 +-
 scripts/ci/pre_commit/pre_commit_www_lint.py       |   3 +-
 scripts/ci/selective_ci_checks.sh                  | 766 ---------------------
 .../ci_run_single_airflow_test_in_docker.sh        |  12 +-
 scripts/docker/entrypoint_ci.sh                    |  38 +-
 scripts/in_container/_in_container_utils.sh        |  29 +-
 scripts/in_container/airflow_ci.cfg                |   4 +-
 scripts/in_container/check_environment.sh          |   2 +-
 scripts/in_container/run_docs_build.sh             |   3 +-
 setup.cfg                                          |  54 +-
 setup.py                                           |  32 +-
 tests/api_connexion/endpoints/test_dag_endpoint.py |  97 +--
 .../endpoints/test_dag_source_endpoint.py          |  27 +-
 .../api_connexion/endpoints/test_xcom_endpoint.py  |   6 +-
 tests/api_connexion/schemas/test_dag_schema.py     | 321 +++++----
 .../config_templates}/__init__.py                  |   0
 tests/conftest.py                                  |  24 +
 {airflow/api_connexion => tests/core}/__init__.py  |   0
 {airflow/api_connexion => tests/dags}/__init__.py  |   0
 .../dags/subdir1}/__init__.py                      |   0
 .../dags/subdir2}/__init__.py                      |   0
 .../dags/subdir2/subdir3}/__init__.py              |   0
 .../dags_corrupted}/__init__.py                    |   0
 .../dags_with_system_exit}/__init__.py             |   0
 .../__init__.py                                    |   0
 tests/jobs/test_scheduler_job.py                   |   1 +
 .../api_connexion => tests/secrets}/__init__.py    |   0
 tests/system/README.md                             |   2 +-
 .../system/providers/amazon}/__init__.py           |   0
 .../system/providers/amazon/aws}/__init__.py       |   0
 .../system/providers/apache/kylin}/__init__.py     |   0
 .../system/providers/cncf}/__init__.py             |   0
 .../system/providers/elasticsearch}/__init__.py    |   0
 .../system/providers/github}/__init__.py           |   0
 tests/system/providers/google/README.md            |   2 +-
 .../system/providers/google/cloud}/__init__.py     |   0
 .../providers/google/cloud/azure}/__init__.py      |   0
 .../providers/google/cloud/bigquery}/__init__.py   |   0
 .../bigquery/example_bigquery_dataset.py           |   0
 .../bigquery/example_bigquery_operations.py        |   0
 .../example_bigquery_operations_location.py        |   0
 .../bigquery/example_bigquery_queries.py           |   0
 .../bigquery/example_bigquery_sensors.py           |   0
 .../bigquery/example_bigquery_tables.py            |   0
 .../bigquery/example_bigquery_to_bigquery.py       |   0
 .../bigquery/example_bigquery_to_gcs.py            |   0
 .../google/cloud/bigquery/resources}/__init__.py   |   0
 .../bigquery/resources/example_bigquery_query.sql  |   0
 .../bigquery/resources/update_table_schema.json    |   0
 .../{ => cloud}/bigquery/resources/us-states.csv   |   0
 .../providers/google/cloud/cloud_sql}/__init__.py  |   0
 .../providers/google/cloud/dataproc}/__init__.py   |   0
 .../{ => cloud}/dataproc/example_dataproc_gke.py   |   0
 .../google/cloud/dataproc/resources}/__init__.py   |   0
 .../providers/google/cloud/datastore}/__init__.py  |   0
 .../datastore/example_datastore_commit.py          |   0
 .../datastore/example_datastore_export_import.py   |   0
 .../datastore/example_datastore_query.py           |   0
 .../datastore/example_datastore_rollback.py        |   0
 .../system/providers/google/cloud/gcs}/__init__.py |   0
 .../{ => cloud}/gcs/example_gcs_to_bigquery.py     |   0
 .../google/cloud/gcs/resources}/__init__.py        |   0
 .../google/cloud/kubernetes_engine}/__init__.py    |   0
 .../kubernetes_engine/example_kubernetes_engine.py |   0
 .../providers/google/cloud/spanner}/__init__.py    |   0
 .../google/cloud/speech_to_text}/__init__.py       |   0
 .../google/cloud/stackdriver}/__init__.py          |   0
 .../providers/google/cloud/tasks}/__init__.py      |   0
 .../google/cloud/text_to_speech}/__init__.py       |   0
 .../providers/google/cloud/workflows}/__init__.py  |   0
 .../system/providers/google/workplace}/__init__.py |   0
 .../system/providers/presto}/__init__.py           |   0
 .../test_utils/operators}/__init__.py              |   0
 .../test_utils/perf}/__init__.py                   |   0
 .../test_utils/perf/dags}/__init__.py              |   0
 tests/test_utils/remote_user_api_auth_backend.py   |   6 +-
 .../api_connexion => tests/testconfig}/__init__.py |   0
 .../testconfig/conf}/__init__.py                   |   0
 .../api_connexion => tests/triggers}/__init__.py   |   0
 tests/utils/test_serve_logs.py                     | 152 +++-
 .../www/test_logs}/__init__.py                     |   0
 tests/www/test_utils.py                            | 112 ++-
 .../api_connexion => tests/www/views}/__init__.py  |   0
 tests/www/views/test_views.py                      |  25 +-
 tests/www/views/test_views_decorators.py           |   6 +-
 tests/www/views/test_views_log.py                  |   2 +-
 tests/www/views/test_views_mount.py                |   4 +-
 293 files changed, 9038 insertions(+), 4071 deletions(-)
 delete mode 160000 .github/actions/checks-action
 delete mode 160000 .github/actions/label-when-approved-action
 delete mode 100644 .github/workflows/label_when_reviewed.yml
 delete mode 100644 .github/workflows/label_when_reviewed_workflow_run.yml
 create mode 100644 .github/workflows/release_dockerhub_image.yml
 delete mode 100644 PULL_REQUEST_WORKFLOW.rst
 delete mode 100644 SELECTIVE_CHECKS.md
 copy tests/system/providers/google/conftest.py => airflow/api_connexion/endpoints/request_dict.py (82%)
 copy .editorconfig => airflow/utils/airflow_flask_app.py (65%)
 create mode 100644 airflow/utils/jwt_signer.py
 create mode 100644 dev/MANUALLY_BUILDING_IMAGES.md
 create mode 100644 dev/breeze/SELECTIVE_CHECKS.md
 create mode 100644 dev/breeze/src/airflow_breeze/commands/ci_commands.py
 create mode 100644 dev/breeze/src/airflow_breeze/utils/selective_checks.py
 create mode 100644 dev/breeze/tests/test_selective_checks.py
 create mode 100644 dev/images/release_prod_image.png
 create mode 100644 dev/images/release_prod_image_rc.png
 create mode 100755 dev/stats/get_important_pr_candidates.py
 copy {airflow/api_connexion => docs}/__init__.py (100%)
 create mode 100644 images/breeze/output-commands-hash.txt
 create mode 100644 images/breeze/output-regenerate-command-images.svg
 create mode 100644 images/breeze/output-selective-check.svg
 delete mode 100644 images/pr/pr-full-tests-needed.png
 delete mode 100644 images/pr/pr-likely-ok-to-merge.png
 delete mode 100644 images/pr/pr-no-tests-needed-comment.png
 create mode 100644 newsfragments/24399.significant.rst
 create mode 100644 newsfragments/24519.misc.rst
 copy scripts/ci/docker-compose/{files.yml => mypy.yml} (85%)
 copy scripts/ci/pre_commit/{pre_commit_docstring_param_type.py => pre_commit_check_init_in_tests.py} (58%)
 create mode 100755 scripts/ci/pre_commit/pre_commit_check_system_tests_hidden_in_index.py
 delete mode 100755 scripts/ci/selective_ci_checks.sh
 copy {airflow/api_connexion => tests/config_templates}/__init__.py (100%)
 copy {airflow/api_connexion => tests/core}/__init__.py (100%)
 copy {airflow/api_connexion => tests/dags}/__init__.py (100%)
 copy {airflow/api_connexion => tests/dags/subdir1}/__init__.py (100%)
 copy {airflow/api_connexion => tests/dags/subdir2}/__init__.py (100%)
 copy {airflow/api_connexion => tests/dags/subdir2/subdir3}/__init__.py (100%)
 copy {airflow/api_connexion => tests/dags_corrupted}/__init__.py (100%)
 copy {airflow/api_connexion => tests/dags_with_system_exit}/__init__.py (100%)
 copy {airflow/api_connexion => tests/executors/kubernetes_executor_template_files}/__init__.py (100%)
 copy {airflow/api_connexion => tests/secrets}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/amazon}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/amazon/aws}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/apache/kylin}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/cncf}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/elasticsearch}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/github}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/azure}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/bigquery}/__init__.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_dataset.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_operations.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_operations_location.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_queries.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_sensors.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_tables.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_to_bigquery.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/example_bigquery_to_gcs.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/bigquery/resources}/__init__.py (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/resources/example_bigquery_query.sql (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/resources/update_table_schema.json (100%)
 rename tests/system/providers/google/{ => cloud}/bigquery/resources/us-states.csv (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/cloud_sql}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/dataproc}/__init__.py (100%)
 rename tests/system/providers/google/{ => cloud}/dataproc/example_dataproc_gke.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/dataproc/resources}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/datastore}/__init__.py (100%)
 rename tests/system/providers/google/{ => cloud}/datastore/example_datastore_commit.py (100%)
 rename tests/system/providers/google/{ => cloud}/datastore/example_datastore_export_import.py (100%)
 rename tests/system/providers/google/{ => cloud}/datastore/example_datastore_query.py (100%)
 rename tests/system/providers/google/{ => cloud}/datastore/example_datastore_rollback.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/gcs}/__init__.py (100%)
 rename tests/system/providers/google/{ => cloud}/gcs/example_gcs_to_bigquery.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/gcs/resources}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/kubernetes_engine}/__init__.py (100%)
 rename tests/system/providers/google/{ => cloud}/kubernetes_engine/example_kubernetes_engine.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/spanner}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/speech_to_text}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/stackdriver}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/tasks}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/text_to_speech}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/cloud/workflows}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/google/workplace}/__init__.py (100%)
 copy {airflow/api_connexion => tests/system/providers/presto}/__init__.py (100%)
 copy {airflow/api_connexion => tests/test_utils/operators}/__init__.py (100%)
 copy {airflow/api_connexion => tests/test_utils/perf}/__init__.py (100%)
 copy {airflow/api_connexion => tests/test_utils/perf/dags}/__init__.py (100%)
 copy {airflow/api_connexion => tests/testconfig}/__init__.py (100%)
 copy {airflow/api_connexion => tests/testconfig/conf}/__init__.py (100%)
 copy {airflow/api_connexion => tests/triggers}/__init__.py (100%)
 copy {airflow/api_connexion => tests/www/test_logs}/__init__.py (100%)
 copy {airflow/api_connexion => tests/www/views}/__init__.py (100%)


[airflow] 31/39: Remove selective checks from the "release workflow" (#24655)

Posted by po...@apache.org.
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 1bea5b0d1473c57cd2f969795919a5fc8470b0b2
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 25 17:45:08 2022 +0200

    Remove selective checks from the "release workflow" (#24655)
    
    Missed that one too :(
    
    (cherry picked from commit 47f54b609983c6cb08553bb85245f2288deaf2dc)
---
 .github/workflows/release_dockerhub_image.yml | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml
index cd5fe6e9ce..3259759cac 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -51,9 +51,17 @@ jobs:
         with:
           persist-credentials: false
           submodules: recursive
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          # We do not have output from selective checks yet, so we need to hardcode python
+          python-version: 3.7
+          cache: 'pip'
+          cache-dependency-path: ./dev/breeze/setup*
+      - run: ./scripts/ci/install_breeze.sh
       - name: Selective checks
         id: selective-checks
-        run: ./scripts/ci/selective_ci_checks.sh
+        run: breeze selective-check
   release-images:
     timeout-minutes: 120
     name: "Release images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}"


[airflow] 19/39: Upgrade FAB to 4.1.1 (#24399)

Posted by po...@apache.org.
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 7e08c3a3df816cad6eb20f4d8a141a211525b0d1
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Wed Jun 22 23:26:28 2022 +0200

    Upgrade FAB to 4.1.1 (#24399)
    
    * Upgrade FAB to 4.1.1
    
    The Flask Application Builder have been updated recently to
    support a number of newer dependencies. This PR is the
    attempt to migrate FAB to newer version.
    
    This includes:
    
    * update setup.py and setup.cfg upper and lower bounds to
      account for proper version of dependencies that
      FAB < 4.0.0 was blocking from upgrade
    * added typed Flask application retrieval with a custom
      application fields available for MyPy typing checks.
    * fix typing to account for typing hints added in multiple
      upgraded libraries optional values and content of request
      returned as Mapping
    * switch to PyJWT 2.* by using non-deprecated "required" claim as
      list rather than separate fields
    * add possibiliyt to install providers without constraints
      so that we could avoid errors on conflicting constraints when
      upgrade-to-newer-dependencies is used
    * add pre-commit to check that 2.4+ only get_airflow_app is not
      used in providers
    * avoid Bad Request in case the request sent to Flask 2.0 is not
      JSon content type
    * switch imports of internal classes to direct packages
      where classes are available rather than from "airflow.models" to
      satisfy MyPY
    * synchronize changes of FAB Security Manager 4.1.1 with our copy
      of the Security Manager.
    * add error handling for a few "None" cases detected by MyPY
    * corrected test cases that were broken by immutability of
      Flask 2 objects and better escaping done by Flask 2
    * updated test cases to account for redirection to "path" rather
      than full URL by Flask2
    
    Fixes: #22397
    
    * fixup! Upgrade FAB to 4.1.1
    
    (cherry picked from commit e2f19505bf3622935480e80bee55bf5b6d80097b)
---
 .github/workflows/ci.yml                           |   4 +
 .pre-commit-config.yaml                            |   2 +-
 Dockerfile.ci                                      |  36 ++-
 airflow/api/auth/backend/basic_auth.py             |   5 +-
 airflow/api_connexion/endpoints/dag_endpoint.py    |   9 +-
 .../api_connexion/endpoints/dag_run_endpoint.py    |  20 +-
 .../api_connexion/endpoints/extra_link_endpoint.py |   4 +-
 airflow/api_connexion/endpoints/log_endpoint.py    |  11 +-
 airflow/api_connexion/endpoints/pool_endpoint.py   |  14 +-
 airflow/api_connexion/endpoints/request_dict.py    |  24 ++
 .../endpoints/role_and_permission_endpoint.py      |  15 +-
 airflow/api_connexion/endpoints/task_endpoint.py   |   7 +-
 .../endpoints/task_instance_endpoint.py            |  17 +-
 airflow/api_connexion/endpoints/user_endpoint.py   |  13 +-
 .../api_connexion/endpoints/variable_endpoint.py   |   7 +-
 airflow/api_connexion/endpoints/xcom_endpoint.py   |   5 +-
 airflow/api_connexion/schemas/dag_schema.py        |   2 +-
 .../api_connexion/schemas/task_instance_schema.py  |   2 +-
 airflow/api_connexion/security.py                  |   7 +-
 airflow/models/abstractoperator.py                 |   1 -
 airflow/operators/trigger_dagrun.py                |   5 +-
 .../google/common/auth_backend/google_openid.py    |   2 +-
 airflow/sensors/external_task.py                   |   6 +-
 airflow/utils/airflow_flask_app.py                 |  37 +++
 airflow/utils/jwt_signer.py                        |   4 +-
 airflow/www/api/experimental/endpoints.py          |   3 +-
 airflow/www/auth.py                                |   5 +-
 airflow/www/extensions/init_wsgi_middlewares.py    |   2 +-
 airflow/www/fab_security/manager.py                |  37 ++-
 airflow/www/views.py                               | 118 ++++----
 dev/breeze/README.md                               |   2 +-
 dev/breeze/setup.cfg                               |   2 +-
 .../commands/release_management_commands.py        |   9 +
 .../src/airflow_breeze/params/shell_params.py      |   1 +
 .../airflow_breeze/utils/docker_command_utils.py   |   1 +
 dev/breeze/src/airflow_breeze/utils/recording.py   |   4 +-
 dev/send_email.py                                  |   3 +-
 images/breeze/output-commands-hash.txt             |   5 -
 images/breeze/output-verify-provider-packages.svg  | 140 ++++-----
 newsfragments/24399.significant.rst                |  31 ++
 scripts/ci/docker-compose/_docker.env              |   1 +
 scripts/ci/docker-compose/base.yml                 |   1 +
 scripts/ci/docker-compose/devcontainer.env         |   1 +
 .../pre_commit_check_2_1_compatibility.py          |  44 ++-
 scripts/docker/entrypoint_ci.sh                    |  36 ++-
 scripts/in_container/_in_container_utils.sh        |  29 +-
 setup.cfg                                          |  47 +--
 setup.py                                           |  12 +-
 tests/api_connexion/endpoints/test_dag_endpoint.py |  97 ++++---
 .../endpoints/test_dag_source_endpoint.py          |  27 +-
 .../api_connexion/endpoints/test_xcom_endpoint.py  |   6 +-
 tests/api_connexion/schemas/test_dag_schema.py     | 321 ++++++++++-----------
 tests/conftest.py                                  |  24 ++
 tests/test_utils/remote_user_api_auth_backend.py   |   6 +-
 tests/utils/test_serve_logs.py                     |  13 +-
 tests/www/views/test_views.py                      |  25 +-
 tests/www/views/test_views_decorators.py           |   6 +-
 tests/www/views/test_views_log.py                  |   2 +-
 tests/www/views/test_views_mount.py                |   4 +-
 59 files changed, 765 insertions(+), 559 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c0cbb9f09b..57b396f6ac 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -805,6 +805,8 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: >
           breeze verify-provider-packages --use-airflow-version wheel --use-packages-from-dist
           --package-format wheel
+        env:
+          SKIP_CONSTRAINTS: "${{ needs.build-info.outputs.upgradeToNewerDependencies }}"
       - name: "Remove airflow package and replace providers with 2.1-compliant versions"
         run: |
           rm -vf dist/apache_airflow-*.whl \
@@ -882,6 +884,8 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: >
           breeze verify-provider-packages --use-airflow-version sdist --use-packages-from-dist
           --package-format sdist
+        env:
+          SKIP_CONSTRAINTS: "${{ needs.build-info.outputs.upgradeToNewerDependencies }}"
       - name: "Fix ownership"
         run: breeze fix-ownership
         if: always()
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 99db085714..af0c2b0e1c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -347,7 +347,7 @@ repos:
         language: python
         files: ^BREEZE\.rst$|^dev/breeze/.*$
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.4', 'rich-click']
+        additional_dependencies: ['rich>=12.4.4', 'rich-click>=1.5']
       - id: update-local-yml-file
         name: Update mounts in the local yml file
         entry: ./scripts/ci/pre_commit/pre_commit_local_yml_mounts.py
diff --git a/Dockerfile.ci b/Dockerfile.ci
index 537f84a71f..337901d4a8 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -686,9 +686,15 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo "${COLOR_BLUE}Uninstalling airflow and providers"
         echo
         uninstall_airflow_and_providers
-        echo "${COLOR_BLUE}Install airflow from wheel package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
-        echo
-        install_airflow_from_wheel "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        if [[ ${SKIP_CONSTRAINTS,,=} == "true" ]]; then
+            echo "${COLOR_BLUE}Install airflow from wheel package with extras: '${AIRFLOW_EXTRAS}' with no constraints.${COLOR_RESET}"
+            echo
+            install_airflow_from_wheel "${AIRFLOW_EXTRAS}" "none"
+        else
+            echo "${COLOR_BLUE}Install airflow from wheel package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
+            echo
+            install_airflow_from_wheel "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        fi
         uninstall_providers
     elif [[ ${USE_AIRFLOW_VERSION} == "sdist"  ]]; then
         echo
@@ -696,9 +702,15 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo
         uninstall_airflow_and_providers
         echo
-        echo "${COLOR_BLUE}Install airflow from sdist package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
-        echo
-        install_airflow_from_sdist "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        if [[ ${SKIP_CONSTRAINTS,,=} == "true" ]]; then
+            echo "${COLOR_BLUE}Install airflow from sdist package with extras: '${AIRFLOW_EXTRAS}' with no constraints.${COLOR_RESET}"
+            echo
+            install_airflow_from_sdist "${AIRFLOW_EXTRAS}" "none"
+        else
+            echo "${COLOR_BLUE}Install airflow from sdist package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
+            echo
+            install_airflow_from_sdist "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        fi
         uninstall_providers
     else
         echo
@@ -706,9 +718,15 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo
         uninstall_airflow_and_providers
         echo
-        echo "${COLOR_BLUE}Install released airflow from PyPI with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
-        echo
-        install_released_airflow_version "${USE_AIRFLOW_VERSION}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        if [[ ${SKIP_CONSTRAINTS,,=} == "true" ]]; then
+            echo "${COLOR_BLUE}Install released airflow from PyPI with extras: '${AIRFLOW_EXTRAS}' with no constraints.${COLOR_RESET}"
+            echo
+            install_released_airflow_version "${USE_AIRFLOW_VERSION}" "none"
+        else
+            echo "${COLOR_BLUE}Install released airflow from PyPI with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
+            echo
+            install_released_airflow_version "${USE_AIRFLOW_VERSION}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        fi
     fi
     if [[ ${USE_PACKAGES_FROM_DIST=} == "true" ]]; then
         echo
diff --git a/airflow/api/auth/backend/basic_auth.py b/airflow/api/auth/backend/basic_auth.py
index 397a722a98..12f00b435f 100644
--- a/airflow/api/auth/backend/basic_auth.py
+++ b/airflow/api/auth/backend/basic_auth.py
@@ -18,10 +18,11 @@
 from functools import wraps
 from typing import Any, Callable, Optional, Tuple, TypeVar, Union, cast
 
-from flask import Response, current_app, request
+from flask import Response, request
 from flask_appbuilder.const import AUTH_LDAP
 from flask_login import login_user
 
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.www.fab_security.sqla.models import User
 
 CLIENT_AUTH: Optional[Union[Tuple[str, str], Any]] = None
@@ -40,7 +41,7 @@ def auth_current_user() -> Optional[User]:
     if auth is None or not auth.username or not auth.password:
         return None
 
-    ab_security_manager = current_app.appbuilder.sm
+    ab_security_manager = get_airflow_app().appbuilder.sm
     user = None
     if ab_security_manager.auth_type == AUTH_LDAP:
         user = ab_security_manager.auth_user_ldap(auth.username, auth.password)
diff --git a/airflow/api_connexion/endpoints/dag_endpoint.py b/airflow/api_connexion/endpoints/dag_endpoint.py
index e94707b127..40113021cf 100644
--- a/airflow/api_connexion/endpoints/dag_endpoint.py
+++ b/airflow/api_connexion/endpoints/dag_endpoint.py
@@ -18,7 +18,7 @@
 from typing import Collection, Optional
 
 from connexion import NoContent
-from flask import current_app, g, request
+from flask import g, request
 from marshmallow import ValidationError
 from sqlalchemy.orm import Session
 from sqlalchemy.sql.expression import or_
@@ -37,6 +37,7 @@ from airflow.api_connexion.types import APIResponse, UpdateMask
 from airflow.exceptions import AirflowException, DagNotFound
 from airflow.models.dag import DagModel, DagTag
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.utils.session import NEW_SESSION, provide_session
 
 
@@ -55,7 +56,7 @@ def get_dag(*, dag_id: str, session: Session = NEW_SESSION) -> APIResponse:
 @security.requires_access([(permissions.ACTION_CAN_READ, permissions.RESOURCE_DAG)])
 def get_dag_details(*, dag_id: str) -> APIResponse:
     """Get details of DAG."""
-    dag: DAG = current_app.dag_bag.get_dag(dag_id)
+    dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
     if not dag:
         raise NotFound("DAG not found", detail=f"The DAG with dag_id: {dag_id} was not found")
     return dag_detail_schema.dump(dag)
@@ -82,7 +83,7 @@ def get_dags(
     if dag_id_pattern:
         dags_query = dags_query.filter(DagModel.dag_id.ilike(f'%{dag_id_pattern}%'))
 
-    readable_dags = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+    readable_dags = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
 
     dags_query = dags_query.filter(DagModel.dag_id.in_(readable_dags))
     if tags:
@@ -142,7 +143,7 @@ def patch_dags(limit, session, offset=0, only_active=True, tags=None, dag_id_pat
     if dag_id_pattern == '~':
         dag_id_pattern = '%'
     dags_query = dags_query.filter(DagModel.dag_id.ilike(f'%{dag_id_pattern}%'))
-    editable_dags = current_app.appbuilder.sm.get_editable_dag_ids(g.user)
+    editable_dags = get_airflow_app().appbuilder.sm.get_editable_dag_ids(g.user)
 
     dags_query = dags_query.filter(DagModel.dag_id.in_(editable_dags))
     if tags:
diff --git a/airflow/api_connexion/endpoints/dag_run_endpoint.py b/airflow/api_connexion/endpoints/dag_run_endpoint.py
index a83ca223b0..1fad48f7b6 100644
--- a/airflow/api_connexion/endpoints/dag_run_endpoint.py
+++ b/airflow/api_connexion/endpoints/dag_run_endpoint.py
@@ -18,13 +18,14 @@ from typing import List, Optional, Tuple
 
 import pendulum
 from connexion import NoContent
-from flask import current_app, g, request
+from flask import g
 from marshmallow import ValidationError
 from sqlalchemy import or_
 from sqlalchemy.orm import Query, Session
 
 from airflow.api.common.mark_tasks import set_dag_run_state_to_failed, set_dag_run_state_to_success
 from airflow.api_connexion import security
+from airflow.api_connexion.endpoints.request_dict import get_json_request_dict
 from airflow.api_connexion.exceptions import AlreadyExists, BadRequest, NotFound
 from airflow.api_connexion.parameters import apply_sorting, check_limit, format_datetime, format_parameters
 from airflow.api_connexion.schemas.dag_run_schema import (
@@ -37,6 +38,7 @@ from airflow.api_connexion.schemas.dag_run_schema import (
 from airflow.api_connexion.types import APIResponse
 from airflow.models import DagModel, DagRun
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.utils.session import NEW_SESSION, provide_session
 from airflow.utils.state import DagRunState
 from airflow.utils.types import DagRunType
@@ -157,7 +159,7 @@ def get_dag_runs(
 
     #  This endpoint allows specifying ~ as the dag_id to retrieve DAG Runs for all DAGs.
     if dag_id == "~":
-        appbuilder = current_app.appbuilder
+        appbuilder = get_airflow_app().appbuilder
         query = query.filter(DagRun.dag_id.in_(appbuilder.sm.get_readable_dag_ids(g.user)))
     else:
         query = query.filter(DagRun.dag_id == dag_id)
@@ -189,13 +191,13 @@ def get_dag_runs(
 @provide_session
 def get_dag_runs_batch(*, session: Session = NEW_SESSION) -> APIResponse:
     """Get list of DAG Runs"""
-    body = request.get_json()
+    body = get_json_request_dict()
     try:
         data = dagruns_batch_form_schema.load(body)
     except ValidationError as err:
         raise BadRequest(detail=str(err.messages))
 
-    appbuilder = current_app.appbuilder
+    appbuilder = get_airflow_app().appbuilder
     readable_dag_ids = appbuilder.sm.get_readable_dag_ids(g.user)
     query = session.query(DagRun)
     if data.get("dag_ids"):
@@ -242,7 +244,7 @@ def post_dag_run(*, dag_id: str, session: Session = NEW_SESSION) -> APIResponse:
             detail=f"DAG with dag_id: '{dag_id}' has import errors",
         )
     try:
-        post_body = dagrun_schema.load(request.json, session=session)
+        post_body = dagrun_schema.load(get_json_request_dict(), session=session)
     except ValidationError as err:
         raise BadRequest(detail=str(err))
 
@@ -258,7 +260,7 @@ def post_dag_run(*, dag_id: str, session: Session = NEW_SESSION) -> APIResponse:
     )
     if not dagrun_instance:
         try:
-            dag = current_app.dag_bag.get_dag(dag_id)
+            dag = get_airflow_app().dag_bag.get_dag(dag_id)
             dag_run = dag.create_dagrun(
                 run_type=DagRunType.MANUAL,
                 run_id=run_id,
@@ -267,7 +269,7 @@ def post_dag_run(*, dag_id: str, session: Session = NEW_SESSION) -> APIResponse:
                 state=DagRunState.QUEUED,
                 conf=post_body.get("conf"),
                 external_trigger=True,
-                dag_hash=current_app.dag_bag.dags_hash.get(dag_id),
+                dag_hash=get_airflow_app().dag_bag.dags_hash.get(dag_id),
             )
             return dagrun_schema.dump(dag_run)
         except ValueError as ve:
@@ -300,12 +302,12 @@ def update_dag_run_state(*, dag_id: str, dag_run_id: str, session: Session = NEW
         error_message = f'Dag Run id {dag_run_id} not found in dag {dag_id}'
         raise NotFound(error_message)
     try:
-        post_body = set_dagrun_state_form_schema.load(request.json)
+        post_body = set_dagrun_state_form_schema.load(get_json_request_dict())
     except ValidationError as err:
         raise BadRequest(detail=str(err))
 
     state = post_body['state']
-    dag = current_app.dag_bag.get_dag(dag_id)
+    dag = get_airflow_app().dag_bag.get_dag(dag_id)
     if state == DagRunState.SUCCESS:
         set_dag_run_state_to_success(dag=dag, run_id=dag_run.run_id, commit=True)
     else:
diff --git a/airflow/api_connexion/endpoints/extra_link_endpoint.py b/airflow/api_connexion/endpoints/extra_link_endpoint.py
index 3e9535603b..94b36928bf 100644
--- a/airflow/api_connexion/endpoints/extra_link_endpoint.py
+++ b/airflow/api_connexion/endpoints/extra_link_endpoint.py
@@ -15,7 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-from flask import current_app
 from sqlalchemy.orm.session import Session
 
 from airflow import DAG
@@ -25,6 +24,7 @@ from airflow.api_connexion.types import APIResponse
 from airflow.exceptions import TaskNotFound
 from airflow.models.dagbag import DagBag
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.utils.session import NEW_SESSION, provide_session
 
 
@@ -46,7 +46,7 @@ def get_extra_links(
     """Get extra links for task instance"""
     from airflow.models.taskinstance import TaskInstance
 
-    dagbag: DagBag = current_app.dag_bag
+    dagbag: DagBag = get_airflow_app().dag_bag
     dag: DAG = dagbag.get_dag(dag_id)
     if not dag:
         raise NotFound("DAG not found", detail=f'DAG with ID = "{dag_id}" not found')
diff --git a/airflow/api_connexion/endpoints/log_endpoint.py b/airflow/api_connexion/endpoints/log_endpoint.py
index f1335fe527..171cacb076 100644
--- a/airflow/api_connexion/endpoints/log_endpoint.py
+++ b/airflow/api_connexion/endpoints/log_endpoint.py
@@ -14,10 +14,9 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-
 from typing import Any, Optional
 
-from flask import Response, current_app, request
+from flask import Response, request
 from itsdangerous.exc import BadSignature
 from itsdangerous.url_safe import URLSafeSerializer
 from sqlalchemy.orm.session import Session
@@ -29,6 +28,7 @@ from airflow.api_connexion.types import APIResponse
 from airflow.exceptions import TaskNotFound
 from airflow.models import TaskInstance
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.utils.log.log_reader import TaskLogReader
 from airflow.utils.session import NEW_SESSION, provide_session
 
@@ -52,7 +52,7 @@ def get_log(
     session: Session = NEW_SESSION,
 ) -> APIResponse:
     """Get logs for specific task instance"""
-    key = current_app.config["SECRET_KEY"]
+    key = get_airflow_app().config["SECRET_KEY"]
     if not token:
         metadata = {}
     else:
@@ -87,7 +87,7 @@ def get_log(
         metadata['end_of_log'] = True
         raise NotFound(title="TaskInstance not found")
 
-    dag = current_app.dag_bag.get_dag(dag_id)
+    dag = get_airflow_app().dag_bag.get_dag(dag_id)
     if dag:
         try:
             ti.task = dag.get_task(ti.task_id)
@@ -101,7 +101,8 @@ def get_log(
     if return_type == 'application/json' or return_type is None:  # default
         logs, metadata = task_log_reader.read_log_chunks(ti, task_try_number, metadata)
         logs = logs[0] if task_try_number is not None else logs
-        token = URLSafeSerializer(key).dumps(metadata)
+        # we must have token here, so we can safely ignore it
+        token = URLSafeSerializer(key).dumps(metadata)  # type: ignore[assignment]
         return logs_schema.dump(LogResponseObject(continuation_token=token, content=logs))
     # text/plain. Stream
     logs = task_log_reader.read_log_stream(ti, task_try_number, metadata)
diff --git a/airflow/api_connexion/endpoints/pool_endpoint.py b/airflow/api_connexion/endpoints/pool_endpoint.py
index e9c8aee252..8c3d3f3b86 100644
--- a/airflow/api_connexion/endpoints/pool_endpoint.py
+++ b/airflow/api_connexion/endpoints/pool_endpoint.py
@@ -16,13 +16,14 @@
 # under the License.
 from typing import Optional
 
-from flask import Response, request
+from flask import Response
 from marshmallow import ValidationError
 from sqlalchemy import func
 from sqlalchemy.exc import IntegrityError
 from sqlalchemy.orm import Session
 
 from airflow.api_connexion import security
+from airflow.api_connexion.endpoints.request_dict import get_json_request_dict
 from airflow.api_connexion.exceptions import AlreadyExists, BadRequest, NotFound
 from airflow.api_connexion.parameters import apply_sorting, check_limit, format_parameters
 from airflow.api_connexion.schemas.pool_schema import PoolCollection, pool_collection_schema, pool_schema
@@ -83,9 +84,10 @@ def patch_pool(
     session: Session = NEW_SESSION,
 ) -> APIResponse:
     """Update a pool"""
+    request_dict = get_json_request_dict()
     # Only slots can be modified in 'default_pool'
     try:
-        if pool_name == Pool.DEFAULT_POOL_NAME and request.json["name"] != Pool.DEFAULT_POOL_NAME:
+        if pool_name == Pool.DEFAULT_POOL_NAME and request_dict["name"] != Pool.DEFAULT_POOL_NAME:
             if update_mask and len(update_mask) == 1 and update_mask[0].strip() == "slots":
                 pass
             else:
@@ -98,7 +100,7 @@ def patch_pool(
         raise NotFound(detail=f"Pool with name:'{pool_name}' not found")
 
     try:
-        patch_body = pool_schema.load(request.json)
+        patch_body = pool_schema.load(request_dict)
     except ValidationError as err:
         raise BadRequest(detail=str(err.messages))
 
@@ -119,7 +121,7 @@ def patch_pool(
 
     else:
         required_fields = {"name", "slots"}
-        fields_diff = required_fields - set(request.json.keys())
+        fields_diff = required_fields - set(get_json_request_dict().keys())
         if fields_diff:
             raise BadRequest(detail=f"Missing required property(ies): {sorted(fields_diff)}")
 
@@ -134,12 +136,12 @@ def patch_pool(
 def post_pool(*, session: Session = NEW_SESSION) -> APIResponse:
     """Create a pool"""
     required_fields = {"name", "slots"}  # Pool would require both fields in the post request
-    fields_diff = required_fields - set(request.json.keys())
+    fields_diff = required_fields - set(get_json_request_dict().keys())
     if fields_diff:
         raise BadRequest(detail=f"Missing required property(ies): {sorted(fields_diff)}")
 
     try:
-        post_body = pool_schema.load(request.json, session=session)
+        post_body = pool_schema.load(get_json_request_dict(), session=session)
     except ValidationError as err:
         raise BadRequest(detail=str(err.messages))
 
diff --git a/airflow/api_connexion/endpoints/request_dict.py b/airflow/api_connexion/endpoints/request_dict.py
new file mode 100644
index 0000000000..4d7ad21250
--- /dev/null
+++ b/airflow/api_connexion/endpoints/request_dict.py
@@ -0,0 +1,24 @@
+# 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.
+
+from typing import Any, Mapping, cast
+
+
+def get_json_request_dict() -> Mapping[str, Any]:
+    from flask import request
+
+    return cast(Mapping[str, Any], request.get_json())
diff --git a/airflow/api_connexion/endpoints/role_and_permission_endpoint.py b/airflow/api_connexion/endpoints/role_and_permission_endpoint.py
index a25856e111..25419066d2 100644
--- a/airflow/api_connexion/endpoints/role_and_permission_endpoint.py
+++ b/airflow/api_connexion/endpoints/role_and_permission_endpoint.py
@@ -18,7 +18,7 @@
 from typing import List, Optional, Tuple
 
 from connexion import NoContent
-from flask import current_app, request
+from flask import request
 from marshmallow import ValidationError
 from sqlalchemy import asc, desc, func
 
@@ -34,6 +34,7 @@ from airflow.api_connexion.schemas.role_and_permission_schema import (
 )
 from airflow.api_connexion.types import APIResponse, UpdateMask
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.www.fab_security.sqla.models import Action, Role
 from airflow.www.security import AirflowSecurityManager
 
@@ -54,7 +55,7 @@ def _check_action_and_resource(sm: AirflowSecurityManager, perms: List[Tuple[str
 @security.requires_access([(permissions.ACTION_CAN_READ, permissions.RESOURCE_ROLE)])
 def get_role(*, role_name: str) -> APIResponse:
     """Get role"""
-    ab_security_manager = current_app.appbuilder.sm
+    ab_security_manager = get_airflow_app().appbuilder.sm
     role = ab_security_manager.find_role(name=role_name)
     if not role:
         raise NotFound(title="Role not found", detail=f"Role with name {role_name!r} was not found")
@@ -65,7 +66,7 @@ def get_role(*, role_name: str) -> APIResponse:
 @format_parameters({"limit": check_limit})
 def get_roles(*, order_by: str = "name", limit: int, offset: Optional[int] = None) -> APIResponse:
     """Get roles"""
-    appbuilder = current_app.appbuilder
+    appbuilder = get_airflow_app().appbuilder
     session = appbuilder.get_session
     total_entries = session.query(func.count(Role.id)).scalar()
     direction = desc if order_by.startswith("-") else asc
@@ -89,7 +90,7 @@ def get_roles(*, order_by: str = "name", limit: int, offset: Optional[int] = Non
 @format_parameters({'limit': check_limit})
 def get_permissions(*, limit: int, offset: Optional[int] = None) -> APIResponse:
     """Get permissions"""
-    session = current_app.appbuilder.get_session
+    session = get_airflow_app().appbuilder.get_session
     total_entries = session.query(func.count(Action.id)).scalar()
     query = session.query(Action)
     actions = query.offset(offset).limit(limit).all()
@@ -99,7 +100,7 @@ def get_permissions(*, limit: int, offset: Optional[int] = None) -> APIResponse:
 @security.requires_access([(permissions.ACTION_CAN_DELETE, permissions.RESOURCE_ROLE)])
 def delete_role(*, role_name: str) -> APIResponse:
     """Delete a role"""
-    ab_security_manager = current_app.appbuilder.sm
+    ab_security_manager = get_airflow_app().appbuilder.sm
     role = ab_security_manager.find_role(name=role_name)
     if not role:
         raise NotFound(title="Role not found", detail=f"Role with name {role_name!r} was not found")
@@ -110,7 +111,7 @@ def delete_role(*, role_name: str) -> APIResponse:
 @security.requires_access([(permissions.ACTION_CAN_EDIT, permissions.RESOURCE_ROLE)])
 def patch_role(*, role_name: str, update_mask: UpdateMask = None) -> APIResponse:
     """Update a role"""
-    appbuilder = current_app.appbuilder
+    appbuilder = get_airflow_app().appbuilder
     security_manager = appbuilder.sm
     body = request.json
     try:
@@ -144,7 +145,7 @@ def patch_role(*, role_name: str, update_mask: UpdateMask = None) -> APIResponse
 @security.requires_access([(permissions.ACTION_CAN_CREATE, permissions.RESOURCE_ROLE)])
 def post_role() -> APIResponse:
     """Create a new role"""
-    appbuilder = current_app.appbuilder
+    appbuilder = get_airflow_app().appbuilder
     security_manager = appbuilder.sm
     body = request.json
     try:
diff --git a/airflow/api_connexion/endpoints/task_endpoint.py b/airflow/api_connexion/endpoints/task_endpoint.py
index 28c39b000c..74b6e7e9ee 100644
--- a/airflow/api_connexion/endpoints/task_endpoint.py
+++ b/airflow/api_connexion/endpoints/task_endpoint.py
@@ -16,8 +16,6 @@
 # under the License.
 from operator import attrgetter
 
-from flask import current_app
-
 from airflow import DAG
 from airflow.api_connexion import security
 from airflow.api_connexion.exceptions import BadRequest, NotFound
@@ -25,6 +23,7 @@ from airflow.api_connexion.schemas.task_schema import TaskCollection, task_colle
 from airflow.api_connexion.types import APIResponse
 from airflow.exceptions import TaskNotFound
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 
 
 @security.requires_access(
@@ -35,7 +34,7 @@ from airflow.security import permissions
 )
 def get_task(*, dag_id: str, task_id: str) -> APIResponse:
     """Get simplified representation of a task."""
-    dag: DAG = current_app.dag_bag.get_dag(dag_id)
+    dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
     if not dag:
         raise NotFound("DAG not found")
 
@@ -54,7 +53,7 @@ def get_task(*, dag_id: str, task_id: str) -> APIResponse:
 )
 def get_tasks(*, dag_id: str, order_by: str = "task_id") -> APIResponse:
     """Get tasks for DAG"""
-    dag: DAG = current_app.dag_bag.get_dag(dag_id)
+    dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
     if not dag:
         raise NotFound("DAG not found")
     tasks = dag.tasks
diff --git a/airflow/api_connexion/endpoints/task_instance_endpoint.py b/airflow/api_connexion/endpoints/task_instance_endpoint.py
index c2416ab0d9..6cc3e784e6 100644
--- a/airflow/api_connexion/endpoints/task_instance_endpoint.py
+++ b/airflow/api_connexion/endpoints/task_instance_endpoint.py
@@ -16,7 +16,6 @@
 # under the License.
 from typing import Any, Iterable, List, Optional, Tuple, TypeVar
 
-from flask import current_app, request
 from marshmallow import ValidationError
 from sqlalchemy import and_, func, or_
 from sqlalchemy.exc import MultipleResultsFound
@@ -25,6 +24,7 @@ from sqlalchemy.orm.query import Query
 from sqlalchemy.sql import ClauseElement
 
 from airflow.api_connexion import security
+from airflow.api_connexion.endpoints.request_dict import get_json_request_dict
 from airflow.api_connexion.exceptions import BadRequest, NotFound
 from airflow.api_connexion.parameters import format_datetime, format_parameters
 from airflow.api_connexion.schemas.task_instance_schema import (
@@ -42,6 +42,7 @@ from airflow.models import SlaMiss
 from airflow.models.dagrun import DagRun as DR
 from airflow.models.taskinstance import TaskInstance as TI, clear_task_instances
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.utils.session import NEW_SESSION, provide_session
 from airflow.utils.state import DagRunState, State
 
@@ -188,7 +189,7 @@ def get_mapped_task_instances(
 
     # 0 can mean a mapped TI that expanded to an empty list, so it is not an automatic 404
     if base_query.with_entities(func.count('*')).scalar() == 0:
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         if not dag:
             error_message = f"DAG {dag_id} not found"
             raise NotFound(error_message)
@@ -364,7 +365,7 @@ def get_task_instances(
 @provide_session
 def get_task_instances_batch(session: Session = NEW_SESSION) -> APIResponse:
     """Get list of task instances."""
-    body = request.get_json()
+    body = get_json_request_dict()
     try:
         data = task_instance_batch_form.load(body)
     except ValidationError as err:
@@ -423,20 +424,20 @@ def get_task_instances_batch(session: Session = NEW_SESSION) -> APIResponse:
 @provide_session
 def post_clear_task_instances(*, dag_id: str, session: Session = NEW_SESSION) -> APIResponse:
     """Clear task instances."""
-    body = request.get_json()
+    body = get_json_request_dict()
     try:
         data = clear_task_instance_form.load(body)
     except ValidationError as err:
         raise BadRequest(detail=str(err.messages))
 
-    dag = current_app.dag_bag.get_dag(dag_id)
+    dag = get_airflow_app().dag_bag.get_dag(dag_id)
     if not dag:
         error_message = f"Dag id {dag_id} not found"
         raise NotFound(error_message)
     reset_dag_runs = data.pop('reset_dag_runs')
     dry_run = data.pop('dry_run')
     # We always pass dry_run here, otherwise this would try to confirm on the terminal!
-    task_instances = dag.clear(dry_run=True, dag_bag=current_app.dag_bag, **data)
+    task_instances = dag.clear(dry_run=True, dag_bag=get_airflow_app().dag_bag, **data)
     if not dry_run:
         clear_task_instances(
             task_instances.all(),
@@ -460,14 +461,14 @@ def post_clear_task_instances(*, dag_id: str, session: Session = NEW_SESSION) ->
 @provide_session
 def post_set_task_instances_state(*, dag_id: str, session: Session = NEW_SESSION) -> APIResponse:
     """Set a state of task instances."""
-    body = request.get_json()
+    body = get_json_request_dict()
     try:
         data = set_task_instance_state_form.load(body)
     except ValidationError as err:
         raise BadRequest(detail=str(err.messages))
 
     error_message = f"Dag ID {dag_id} not found"
-    dag = current_app.dag_bag.get_dag(dag_id)
+    dag = get_airflow_app().dag_bag.get_dag(dag_id)
     if not dag:
         raise NotFound(error_message)
 
diff --git a/airflow/api_connexion/endpoints/user_endpoint.py b/airflow/api_connexion/endpoints/user_endpoint.py
index 82375cebca..2ed0db2aae 100644
--- a/airflow/api_connexion/endpoints/user_endpoint.py
+++ b/airflow/api_connexion/endpoints/user_endpoint.py
@@ -17,7 +17,7 @@
 from typing import List, Optional
 
 from connexion import NoContent
-from flask import current_app, request
+from flask import request
 from marshmallow import ValidationError
 from sqlalchemy import asc, desc, func
 from werkzeug.security import generate_password_hash
@@ -33,13 +33,14 @@ from airflow.api_connexion.schemas.user_schema import (
 )
 from airflow.api_connexion.types import APIResponse, UpdateMask
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.www.fab_security.sqla.models import Role, User
 
 
 @security.requires_access([(permissions.ACTION_CAN_READ, permissions.RESOURCE_USER)])
 def get_user(*, username: str) -> APIResponse:
     """Get a user"""
-    ab_security_manager = current_app.appbuilder.sm
+    ab_security_manager = get_airflow_app().appbuilder.sm
     user = ab_security_manager.find_user(username=username)
     if not user:
         raise NotFound(title="User not found", detail=f"The User with username `{username}` was not found")
@@ -50,7 +51,7 @@ def get_user(*, username: str) -> APIResponse:
 @format_parameters({"limit": check_limit})
 def get_users(*, limit: int, order_by: str = "id", offset: Optional[str] = None) -> APIResponse:
     """Get users"""
-    appbuilder = current_app.appbuilder
+    appbuilder = get_airflow_app().appbuilder
     session = appbuilder.get_session
     total_entries = session.query(func.count(User.id)).scalar()
     direction = desc if order_by.startswith("-") else asc
@@ -86,7 +87,7 @@ def post_user() -> APIResponse:
     except ValidationError as e:
         raise BadRequest(detail=str(e.messages))
 
-    security_manager = current_app.appbuilder.sm
+    security_manager = get_airflow_app().appbuilder.sm
     username = data["username"]
     email = data["email"]
 
@@ -129,7 +130,7 @@ def patch_user(*, username: str, update_mask: UpdateMask = None) -> APIResponse:
     except ValidationError as e:
         raise BadRequest(detail=str(e.messages))
 
-    security_manager = current_app.appbuilder.sm
+    security_manager = get_airflow_app().appbuilder.sm
 
     user = security_manager.find_user(username=username)
     if user is None:
@@ -193,7 +194,7 @@ def patch_user(*, username: str, update_mask: UpdateMask = None) -> APIResponse:
 @security.requires_access([(permissions.ACTION_CAN_DELETE, permissions.RESOURCE_USER)])
 def delete_user(*, username: str) -> APIResponse:
     """Delete a user"""
-    security_manager = current_app.appbuilder.sm
+    security_manager = get_airflow_app().appbuilder.sm
 
     user = security_manager.find_user(username=username)
     if user is None:
diff --git a/airflow/api_connexion/endpoints/variable_endpoint.py b/airflow/api_connexion/endpoints/variable_endpoint.py
index 067d163401..4dfc0803c5 100644
--- a/airflow/api_connexion/endpoints/variable_endpoint.py
+++ b/airflow/api_connexion/endpoints/variable_endpoint.py
@@ -16,12 +16,13 @@
 # under the License.
 from typing import Optional
 
-from flask import Response, request
+from flask import Response
 from marshmallow import ValidationError
 from sqlalchemy import func
 from sqlalchemy.orm import Session
 
 from airflow.api_connexion import security
+from airflow.api_connexion.endpoints.request_dict import get_json_request_dict
 from airflow.api_connexion.exceptions import BadRequest, NotFound
 from airflow.api_connexion.parameters import apply_sorting, check_limit, format_parameters
 from airflow.api_connexion.schemas.variable_schema import variable_collection_schema, variable_schema
@@ -78,7 +79,7 @@ def get_variables(
 def patch_variable(*, variable_key: str, update_mask: UpdateMask = None) -> Response:
     """Update a variable by key"""
     try:
-        data = variable_schema.load(request.json)
+        data = variable_schema.load(get_json_request_dict())
     except ValidationError as err:
         raise BadRequest("Invalid Variable schema", detail=str(err.messages))
 
@@ -99,7 +100,7 @@ def patch_variable(*, variable_key: str, update_mask: UpdateMask = None) -> Resp
 def post_variables() -> Response:
     """Create a variable"""
     try:
-        data = variable_schema.load(request.json)
+        data = variable_schema.load(get_json_request_dict())
 
     except ValidationError as err:
         raise BadRequest("Invalid Variable schema", detail=str(err.messages))
diff --git a/airflow/api_connexion/endpoints/xcom_endpoint.py b/airflow/api_connexion/endpoints/xcom_endpoint.py
index 9cc6b6d79a..62c7262f7e 100644
--- a/airflow/api_connexion/endpoints/xcom_endpoint.py
+++ b/airflow/api_connexion/endpoints/xcom_endpoint.py
@@ -16,7 +16,7 @@
 # under the License.
 from typing import Optional
 
-from flask import current_app, g
+from flask import g
 from sqlalchemy import and_
 from sqlalchemy.orm import Session
 
@@ -27,6 +27,7 @@ from airflow.api_connexion.schemas.xcom_schema import XComCollection, xcom_colle
 from airflow.api_connexion.types import APIResponse
 from airflow.models import DagRun as DR, XCom
 from airflow.security import permissions
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.utils.session import NEW_SESSION, provide_session
 
 
@@ -52,7 +53,7 @@ def get_xcom_entries(
     """Get all XCom values"""
     query = session.query(XCom)
     if dag_id == '~':
-        appbuilder = current_app.appbuilder
+        appbuilder = get_airflow_app().appbuilder
         readable_dag_ids = appbuilder.sm.get_readable_dag_ids(g.user)
         query = query.filter(XCom.dag_id.in_(readable_dag_ids))
         query = query.join(DR, and_(XCom.dag_id == DR.dag_id, XCom.run_id == DR.run_id))
diff --git a/airflow/api_connexion/schemas/dag_schema.py b/airflow/api_connexion/schemas/dag_schema.py
index 2f36911329..6e7410dc4f 100644
--- a/airflow/api_connexion/schemas/dag_schema.py
+++ b/airflow/api_connexion/schemas/dag_schema.py
@@ -83,7 +83,7 @@ class DAGSchema(SQLAlchemySchema):
     @staticmethod
     def get_token(obj: DagModel):
         """Return file token"""
-        serializer = URLSafeSerializer(conf.get('webserver', 'secret_key'))
+        serializer = URLSafeSerializer(conf.get_mandatory_value('webserver', 'secret_key'))
         return serializer.dumps(obj.fileloc)
 
 
diff --git a/airflow/api_connexion/schemas/task_instance_schema.py b/airflow/api_connexion/schemas/task_instance_schema.py
index 37005256f6..74824dbaf8 100644
--- a/airflow/api_connexion/schemas/task_instance_schema.py
+++ b/airflow/api_connexion/schemas/task_instance_schema.py
@@ -60,7 +60,7 @@ class TaskInstanceSchema(SQLAlchemySchema):
     pid = auto_field()
     executor_config = auto_field()
     sla_miss = fields.Nested(SlaMissSchema, dump_default=None)
-    rendered_fields = JsonObjectField(default={})
+    rendered_fields = JsonObjectField(dump_default={})
 
     def get_attribute(self, obj, attr, default):
         if attr == "sla_miss":
diff --git a/airflow/api_connexion/security.py b/airflow/api_connexion/security.py
index 3562c98eb4..6c84181f91 100644
--- a/airflow/api_connexion/security.py
+++ b/airflow/api_connexion/security.py
@@ -18,16 +18,17 @@
 from functools import wraps
 from typing import Callable, Optional, Sequence, Tuple, TypeVar, cast
 
-from flask import Response, current_app
+from flask import Response
 
 from airflow.api_connexion.exceptions import PermissionDenied, Unauthenticated
+from airflow.utils.airflow_flask_app import get_airflow_app
 
 T = TypeVar("T", bound=Callable)
 
 
 def check_authentication() -> None:
     """Checks that the request has valid authorization information."""
-    for auth in current_app.api_auth:
+    for auth in get_airflow_app().api_auth:
         response = auth.requires_authentication(Response)()
         if response.status_code == 200:
             return
@@ -38,7 +39,7 @@ def check_authentication() -> None:
 
 def requires_access(permissions: Optional[Sequence[Tuple[str, str]]] = None) -> Callable[[T], T]:
     """Factory for decorator that checks current user's permissions against required permissions."""
-    appbuilder = current_app.appbuilder
+    appbuilder = get_airflow_app().appbuilder
     appbuilder.sm.sync_resource_permissions(permissions)
 
     def requires_access_decorator(func: T):
diff --git a/airflow/models/abstractoperator.py b/airflow/models/abstractoperator.py
index 8d2e06442a..4d50288673 100644
--- a/airflow/models/abstractoperator.py
+++ b/airflow/models/abstractoperator.py
@@ -302,7 +302,6 @@ class AbstractOperator(LoggingMixin, DAGNode):
             return link.get_link(self, ti_key=ti.key)
         else:
             return link.get_link(self, ti.dag_run.logical_date)  # type: ignore[misc]
-        return None
 
     def render_template_fields(
         self,
diff --git a/airflow/operators/trigger_dagrun.py b/airflow/operators/trigger_dagrun.py
index 0689f14c56..4578fd2df8 100644
--- a/airflow/operators/trigger_dagrun.py
+++ b/airflow/operators/trigger_dagrun.py
@@ -23,7 +23,10 @@ from typing import TYPE_CHECKING, Dict, List, Optional, Sequence, Union, cast
 
 from airflow.api.common.trigger_dag import trigger_dag
 from airflow.exceptions import AirflowException, DagNotFound, DagRunAlreadyExists
-from airflow.models import BaseOperator, BaseOperatorLink, DagBag, DagModel, DagRun
+from airflow.models.baseoperator import BaseOperator, BaseOperatorLink
+from airflow.models.dag import DagModel
+from airflow.models.dagbag import DagBag
+from airflow.models.dagrun import DagRun
 from airflow.models.xcom import XCom
 from airflow.utils import timezone
 from airflow.utils.context import Context
diff --git a/airflow/providers/google/common/auth_backend/google_openid.py b/airflow/providers/google/common/auth_backend/google_openid.py
index 496ac29616..a267c0e63a 100644
--- a/airflow/providers/google/common/auth_backend/google_openid.py
+++ b/airflow/providers/google/common/auth_backend/google_openid.py
@@ -88,7 +88,7 @@ def _verify_id_token(id_token: str) -> Optional[str]:
 
 
 def _lookup_user(user_email: str):
-    security_manager = current_app.appbuilder.sm
+    security_manager = current_app.appbuilder.sm  # type: ignore[attr-defined]
     user = security_manager.find_user(email=user_email)
 
     if not user:
diff --git a/airflow/sensors/external_task.py b/airflow/sensors/external_task.py
index 40c0a7a566..30c27c7214 100644
--- a/airflow/sensors/external_task.py
+++ b/airflow/sensors/external_task.py
@@ -23,7 +23,11 @@ from typing import TYPE_CHECKING, Any, Callable, Collection, FrozenSet, Iterable
 from sqlalchemy import func
 
 from airflow.exceptions import AirflowException
-from airflow.models import BaseOperatorLink, DagBag, DagModel, DagRun, TaskInstance
+from airflow.models.baseoperator import BaseOperatorLink
+from airflow.models.dag import DagModel
+from airflow.models.dagbag import DagBag
+from airflow.models.dagrun import DagRun
+from airflow.models.taskinstance import TaskInstance
 from airflow.operators.empty import EmptyOperator
 from airflow.sensors.base import BaseSensorOperator
 from airflow.utils.helpers import build_airflow_url_with_query
diff --git a/airflow/utils/airflow_flask_app.py b/airflow/utils/airflow_flask_app.py
new file mode 100644
index 0000000000..a14ff99398
--- /dev/null
+++ b/airflow/utils/airflow_flask_app.py
@@ -0,0 +1,37 @@
+# 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.
+
+from typing import Any, List, cast
+
+from flask import Flask
+
+from airflow.models.dagbag import DagBag
+from airflow.www.extensions.init_appbuilder import AirflowAppBuilder
+
+
+class AirflowApp(Flask):
+    """Airflow Flask Application"""
+
+    appbuilder: AirflowAppBuilder
+    dag_bag: DagBag
+    api_auth: List[Any]
+
+
+def get_airflow_app() -> AirflowApp:
+    from flask import current_app
+
+    return cast(AirflowApp, current_app)
diff --git a/airflow/utils/jwt_signer.py b/airflow/utils/jwt_signer.py
index 941a3d0598..e767997ebe 100644
--- a/airflow/utils/jwt_signer.py
+++ b/airflow/utils/jwt_signer.py
@@ -73,9 +73,7 @@ class JWTSigner:
             algorithms=[self._algorithm],
             options={
                 "verify_signature": True,
-                "require_exp": True,
-                "require_iat": True,
-                "require_nbf": True,
+                "require": ["exp", "iat", "nbf"],
             },
             audience=self._audience,
         )
diff --git a/airflow/www/api/experimental/endpoints.py b/airflow/www/api/experimental/endpoints.py
index 898988db81..75256f1373 100644
--- a/airflow/www/api/experimental/endpoints.py
+++ b/airflow/www/api/experimental/endpoints.py
@@ -70,7 +70,8 @@ def add_deprecation_headers(response: Response):
     return response
 
 
-api_experimental.after_request(add_deprecation_headers)
+# This API is deprecated. We do not care too much about typing here
+api_experimental.after_request(add_deprecation_headers)  # type: ignore[arg-type]
 
 
 @api_experimental.route('/dags/<string:dag_id>/dag_runs', methods=['POST'])
diff --git a/airflow/www/auth.py b/airflow/www/auth.py
index 9d40c00a5c..9d36cda883 100644
--- a/airflow/www/auth.py
+++ b/airflow/www/auth.py
@@ -37,7 +37,10 @@ def has_access(permissions: Optional[Sequence[Tuple[str, str]]] = None) -> Calla
             appbuilder = current_app.appbuilder
 
             dag_id = (
-                request.args.get("dag_id") or request.form.get("dag_id") or (request.json or {}).get("dag_id")
+                request.args.get("dag_id")
+                or request.form.get("dag_id")
+                or (request.is_json and request.json.get("dag_id"))
+                or None
             )
             if appbuilder.sm.check_authorization(permissions, dag_id):
                 return func(*args, **kwargs)
diff --git a/airflow/www/extensions/init_wsgi_middlewares.py b/airflow/www/extensions/init_wsgi_middlewares.py
index 0ed78073e9..00c04006ff 100644
--- a/airflow/www/extensions/init_wsgi_middlewares.py
+++ b/airflow/www/extensions/init_wsgi_middlewares.py
@@ -37,7 +37,7 @@ def init_wsgi_middleware(flask_app: Flask):
         base_url = ""
     if base_url:
         flask_app.wsgi_app = DispatcherMiddleware(  # type: ignore
-            _root_app, mounts={base_url: flask_app.wsgi_app}
+            _root_app, mounts={base_url: flask_app.wsgi_app}  # type: ignore
         )
 
     # Apply ProxyFix middleware
diff --git a/airflow/www/fab_security/manager.py b/airflow/www/fab_security/manager.py
index 8381f7b08c..2010e58c34 100644
--- a/airflow/www/fab_security/manager.py
+++ b/airflow/www/fab_security/manager.py
@@ -291,7 +291,7 @@ class BaseSecurityManager:
         """
         jwt_manager = JWTManager()
         jwt_manager.init_app(app)
-        jwt_manager.user_loader_callback_loader(self.load_user_jwt)
+        jwt_manager.user_lookup_loader(self.load_user_jwt)
         return jwt_manager
 
     def create_builtin_roles(self):
@@ -654,6 +654,18 @@ class BaseSecurityManager:
                 "email": data.get("email", ""),
                 "role_keys": data.get("groups", []),
             }
+        # for Keycloak
+        if provider in ["keycloak", "keycloak_before_17"]:
+            me = self.appbuilder.sm.oauth_remotes[provider].get("openid-connect/userinfo")
+            me.raise_for_status()
+            data = me.json()
+            log.debug("User info from Keycloak: %s", data)
+            return {
+                "username": data.get("preferred_username", ""),
+                "first_name": data.get("given_name", ""),
+                "last_name": data.get("family_name", ""),
+                "email": data.get("email", ""),
+            }
         else:
             return {}
 
@@ -1027,12 +1039,6 @@ class BaseSecurityManager:
 
         try:
             # LDAP certificate settings
-            if self.auth_ldap_allow_self_signed:
-                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
-                ldap.set_option(ldap.OPT_X_TLS_NEWCTX, 0)
-            elif self.auth_ldap_tls_demand:
-                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_DEMAND)
-                ldap.set_option(ldap.OPT_X_TLS_NEWCTX, 0)
             if self.auth_ldap_tls_cacertdir:
                 ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, self.auth_ldap_tls_cacertdir)
             if self.auth_ldap_tls_cacertfile:
@@ -1041,6 +1047,12 @@ class BaseSecurityManager:
                 ldap.set_option(ldap.OPT_X_TLS_CERTFILE, self.auth_ldap_tls_certfile)
             if self.auth_ldap_tls_keyfile:
                 ldap.set_option(ldap.OPT_X_TLS_KEYFILE, self.auth_ldap_tls_keyfile)
+            if self.auth_ldap_allow_self_signed:
+                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
+                ldap.set_option(ldap.OPT_X_TLS_NEWCTX, 0)
+            elif self.auth_ldap_tls_demand:
+                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_DEMAND)
+                ldap.set_option(ldap.OPT_X_TLS_NEWCTX, 0)
 
             # Initialise LDAP connection
             con = ldap.initialize(self.auth_ldap_server)
@@ -1354,7 +1366,10 @@ class BaseSecurityManager:
             return self._get_user_permission_resources(g.user, "menu_access", resource_names=menu_names)
         elif current_user_jwt:
             return self._get_user_permission_resources(
-                current_user_jwt, "menu_access", resource_names=menu_names
+                # the current_user_jwt is a lazy proxy, so we need to ignore type checking
+                current_user_jwt,  # type: ignore[arg-type]
+                "menu_access",
+                resource_names=menu_names,
             )
         else:
             return self._get_user_permission_resources(None, "menu_access", resource_names=menu_names)
@@ -1660,9 +1675,9 @@ class BaseSecurityManager:
         """Load user by ID"""
         return self.get_user_by_id(int(user_id))
 
-    def load_user_jwt(self, user_id):
-        """Load user JWT"""
-        user = self.load_user(user_id)
+    def load_user_jwt(self, _jwt_header, jwt_data):
+        identity = jwt_data["sub"]
+        user = self.load_user(identity)
         # Set flask g.user to JWT user, we can't do it on before request
         g.user = user
         return user
diff --git a/airflow/www/views.py b/airflow/www/views.py
index e9a52611fc..fbebef3ecf 100644
--- a/airflow/www/views.py
+++ b/airflow/www/views.py
@@ -43,7 +43,6 @@ from flask import (
     Response,
     abort,
     before_render_template,
-    current_app,
     flash,
     g,
     jsonify,
@@ -118,6 +117,7 @@ from airflow.ti_deps.dep_context import DepContext
 from airflow.ti_deps.dependencies_deps import RUNNING_DEPS, SCHEDULER_QUEUED_DEPS
 from airflow.timetables.base import DataInterval, TimeRestriction
 from airflow.utils import json as utils_json, timezone, yaml
+from airflow.utils.airflow_flask_app import get_airflow_app
 from airflow.utils.dates import infer_time_unit, scale_time_units
 from airflow.utils.docs import get_doc_url_for_provider, get_docs_url
 from airflow.utils.helpers import alchemy_to_dict
@@ -622,13 +622,13 @@ def add_user_permissions_to_dag(sender, template, context, **extra):
     """
     if 'dag' in context:
         dag = context['dag']
-        can_create_dag_run = current_app.appbuilder.sm.has_access(
+        can_create_dag_run = get_airflow_app().appbuilder.sm.has_access(
             permissions.ACTION_CAN_CREATE, permissions.RESOURCE_DAG_RUN
         )
 
-        dag.can_edit = current_app.appbuilder.sm.can_edit_dag(dag.dag_id)
+        dag.can_edit = get_airflow_app().appbuilder.sm.can_edit_dag(dag.dag_id)
         dag.can_trigger = dag.can_edit and can_create_dag_run
-        dag.can_delete = current_app.appbuilder.sm.can_delete_dag(dag.dag_id)
+        dag.can_delete = get_airflow_app().appbuilder.sm.can_delete_dag(dag.dag_id)
         context['dag'] = dag
 
 
@@ -715,7 +715,7 @@ class Airflow(AirflowBaseView):
         end = start + dags_per_page
 
         # Get all the dag id the user could access
-        filter_dag_ids = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+        filter_dag_ids = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
 
         with create_session() as session:
             # read orm_dags from the db
@@ -824,7 +824,7 @@ class Airflow(AirflowBaseView):
         )
 
         dashboard_alerts = [
-            fm for fm in settings.DASHBOARD_UIALERTS if fm.should_show(current_app.appbuilder.sm)
+            fm for fm in settings.DASHBOARD_UIALERTS if fm.should_show(get_airflow_app().appbuilder.sm)
         ]
 
         def _iter_parsed_moved_data_table_names():
@@ -904,7 +904,7 @@ class Airflow(AirflowBaseView):
         """Dag statistics."""
         dr = models.DagRun
 
-        allowed_dag_ids = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+        allowed_dag_ids = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
 
         dag_state_stats = session.query(dr.dag_id, dr.state, sqla.func.count(dr.state)).group_by(
             dr.dag_id, dr.state
@@ -949,7 +949,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def task_stats(self, session=None):
         """Task Statistics"""
-        allowed_dag_ids = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+        allowed_dag_ids = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
 
         if not allowed_dag_ids:
             return wwwutils.json_response({})
@@ -1058,7 +1058,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def last_dagruns(self, session=None):
         """Last DAG runs"""
-        allowed_dag_ids = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+        allowed_dag_ids = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
 
         # Filter by post parameters
         selected_dag_ids = {unquote(dag_id) for dag_id in request.form.getlist('dag_ids') if dag_id}
@@ -1182,7 +1182,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def dag_details(self, dag_id, session=None):
         """Get Dag details."""
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_model = DagModel.get_dagmodel(dag_id, session=session)
 
         title = "DAG Details"
@@ -1258,7 +1258,7 @@ class Airflow(AirflowBaseView):
         root = request.args.get('root', '')
 
         logging.info("Retrieving rendered templates.")
-        dag: DAG = current_app.dag_bag.get_dag(dag_id)
+        dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_run = dag.get_dagrun(execution_date=dttm, session=session)
         raw_task = dag.get_task(task_id).prepare_for_execution()
 
@@ -1353,15 +1353,17 @@ class Airflow(AirflowBaseView):
             abort(404)
         dag_id = request.args.get('dag_id')
         task_id = request.args.get('task_id')
+        if task_id is None:
+            logging.warning("Task id not passed in the request")
+            abort(400)
         execution_date = request.args.get('execution_date')
         dttm = _safe_parse_datetime(execution_date)
-
         form = DateTimeForm(data={'execution_date': dttm})
         root = request.args.get('root', '')
         map_index = request.args.get('map_index', -1, type=int)
         logging.info("Retrieving rendered templates.")
 
-        dag: DAG = current_app.dag_bag.get_dag(dag_id)
+        dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
         task = dag.get_task(task_id)
         dag_run = dag.get_dagrun(execution_date=dttm, session=session)
         ti = dag_run.get_task_instance(task_id=task.task_id, map_index=map_index, session=session)
@@ -1466,7 +1468,7 @@ class Airflow(AirflowBaseView):
             )
 
         try:
-            dag = current_app.dag_bag.get_dag(dag_id)
+            dag = get_airflow_app().dag_bag.get_dag(dag_id)
             if dag:
                 ti.task = dag.get_task(ti.task_id)
 
@@ -1597,7 +1599,7 @@ class Airflow(AirflowBaseView):
         map_index = request.args.get('map_index', -1, type=int)
         form = DateTimeForm(data={'execution_date': dttm})
         root = request.args.get('root', '')
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if not dag or task_id not in dag.task_ids:
             flash(f"Task [{dag_id}.{task_id}] doesn't seem to exist at the moment", "error")
@@ -1776,7 +1778,7 @@ class Airflow(AirflowBaseView):
         dag_run_id = request.form.get('dag_run_id')
         map_index = request.args.get('map_index', -1, type=int)
         origin = get_safe_url(request.form.get('origin'))
-        dag: DAG = current_app.dag_bag.get_dag(dag_id)
+        dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
         task = dag.get_task(task_id)
 
         ignore_all_deps = request.form.get('ignore_all_deps') == "true"
@@ -1877,7 +1879,7 @@ class Airflow(AirflowBaseView):
         request_conf = request.values.get('conf')
         request_execution_date = request.values.get('execution_date', default=timezone.utcnow().isoformat())
         is_dag_run_conf_overrides_params = conf.getboolean('core', 'dag_run_conf_overrides_params')
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_orm = session.query(models.DagModel).filter(models.DagModel.dag_id == dag_id).first()
         if not dag_orm:
             flash(f"Cannot find dag {dag_id}")
@@ -1978,7 +1980,7 @@ class Airflow(AirflowBaseView):
                 state=State.QUEUED,
                 conf=run_conf,
                 external_trigger=True,
-                dag_hash=current_app.dag_bag.dags_hash.get(dag_id),
+                dag_hash=get_airflow_app().dag_bag.dags_hash.get(dag_id),
                 run_id=run_id,
             )
         except (ValueError, ParamValidationError) as ve:
@@ -2060,7 +2062,7 @@ class Airflow(AirflowBaseView):
         dag_id = request.form.get('dag_id')
         task_id = request.form.get('task_id')
         origin = get_safe_url(request.form.get('origin'))
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if 'map_index' not in request.form:
             map_indexes: Optional[List[int]] = None
@@ -2121,7 +2123,7 @@ class Airflow(AirflowBaseView):
         dag_run_id = request.form.get('dag_run_id')
         confirmed = request.form.get('confirmed') == "true"
 
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dr = dag.get_dagrun(run_id=dag_run_id)
         start_date = dr.logical_date
         end_date = dr.logical_date
@@ -2145,7 +2147,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def blocked(self, session=None):
         """Mark Dag Blocked."""
-        allowed_dag_ids = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+        allowed_dag_ids = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
 
         # Filter by post parameters
         selected_dag_ids = {unquote(dag_id) for dag_id in request.form.getlist('dag_ids') if dag_id}
@@ -2168,7 +2170,7 @@ class Airflow(AirflowBaseView):
         payload = []
         for dag_id, active_dag_runs in dags:
             max_active_runs = 0
-            dag = current_app.dag_bag.get_dag(dag_id)
+            dag = get_airflow_app().dag_bag.get_dag(dag_id)
             if dag:
                 # TODO: Make max_active_runs a column so we can query for it directly
                 max_active_runs = dag.max_active_runs
@@ -2185,7 +2187,7 @@ class Airflow(AirflowBaseView):
         if not dag_run_id:
             return {'status': 'error', 'message': 'Invalid dag_run_id'}
 
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if not dag:
             return {'status': 'error', 'message': f'Cannot find DAG: {dag_id}'}
@@ -2203,7 +2205,7 @@ class Airflow(AirflowBaseView):
         if not dag_run_id:
             return {'status': 'error', 'message': 'Invalid dag_run_id'}
 
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if not dag:
             return {'status': 'error', 'message': f'Cannot find DAG: {dag_id}'}
@@ -2221,7 +2223,7 @@ class Airflow(AirflowBaseView):
         if not dag_run_id:
             return {'status': 'error', 'message': 'Invalid dag_run_id'}
 
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if not dag:
             return {'status': 'error', 'message': f'Cannot find DAG: {dag_id}'}
@@ -2295,7 +2297,7 @@ class Airflow(AirflowBaseView):
         dag_id = request.args.get("dag_id")
         run_id = request.args.get("run_id")
 
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_run: Optional[DagRun] = (
             session.query(DagRun).filter(DagRun.dag_id == dag_id, DagRun.run_id == run_id).one_or_none()
         )
@@ -2346,7 +2348,7 @@ class Airflow(AirflowBaseView):
         past: bool,
         state: TaskInstanceState,
     ):
-        dag: DAG = current_app.dag_bag.get_dag(dag_id)
+        dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if not run_id:
             flash(f"Cannot mark tasks as {state}, seem that DAG {dag_id} has never run", "error")
@@ -2394,7 +2396,7 @@ class Airflow(AirflowBaseView):
         past = to_boolean(args.get('past'))
         origin = origin or url_for('Airflow.index')
 
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         if not dag:
             msg = f'DAG {dag_id} not found'
             return redirect_or_json(origin, msg, status='error', status_code=404)
@@ -2583,7 +2585,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def grid(self, dag_id, session=None):
         """Get Dag's grid view."""
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_model = DagModel.get_dagmodel(dag_id)
         if not dag:
             flash(f'DAG "{dag_id}" seems to be missing from DagBag.', "error")
@@ -2703,7 +2705,7 @@ class Airflow(AirflowBaseView):
             else:
                 return func.date(column)
 
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_model = DagModel.get_dagmodel(dag_id)
         if not dag:
             flash(f'DAG "{dag_id}" seems to be missing from DagBag.', "error")
@@ -2817,7 +2819,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def graph(self, dag_id, session=None):
         """Get DAG as Graph."""
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_model = DagModel.get_dagmodel(dag_id)
         if not dag:
             flash(f'DAG "{dag_id}" seems to be missing.', "error")
@@ -2929,7 +2931,7 @@ class Airflow(AirflowBaseView):
         default_dag_run = conf.getint('webserver', 'default_dag_run_display_number')
         dag_model = DagModel.get_dagmodel(dag_id)
 
-        dag: Optional[DAG] = current_app.dag_bag.get_dag(dag_id)
+        dag: Optional[DAG] = get_airflow_app().dag_bag.get_dag(dag_id)
         if dag is None:
             flash(f'DAG "{dag_id}" seems to be missing.', "error")
             return redirect(url_for('Airflow.index'))
@@ -3081,7 +3083,7 @@ class Airflow(AirflowBaseView):
     def tries(self, dag_id, session=None):
         """Shows all tries."""
         default_dag_run = conf.getint('webserver', 'default_dag_run_display_number')
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_model = DagModel.get_dagmodel(dag_id)
         base_date = request.args.get('base_date')
         num_runs = request.args.get('num_runs', default=default_dag_run, type=int)
@@ -3171,7 +3173,7 @@ class Airflow(AirflowBaseView):
     def landing_times(self, dag_id, session=None):
         """Shows landing times."""
         default_dag_run = conf.getint('webserver', 'default_dag_run_display_number')
-        dag: DAG = current_app.dag_bag.get_dag(dag_id)
+        dag: DAG = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_model = DagModel.get_dagmodel(dag_id)
         base_date = request.args.get('base_date')
         num_runs = request.args.get('num_runs', default=default_dag_run, type=int)
@@ -3288,7 +3290,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def gantt(self, dag_id, session=None):
         """Show GANTT chart."""
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
         dag_model = DagModel.get_dagmodel(dag_id)
 
         root = request.args.get('root')
@@ -3414,9 +3416,8 @@ class Airflow(AirflowBaseView):
         task_id = request.args.get('task_id')
         map_index = request.args.get('map_index', -1, type=int)
         execution_date = request.args.get('execution_date')
-        link_name = request.args.get('link_name')
         dttm = _safe_parse_datetime(execution_date)
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if not dag or task_id not in dag.task_ids:
             response = jsonify(
@@ -3429,6 +3430,11 @@ class Airflow(AirflowBaseView):
             return response
 
         task: "AbstractOperator" = dag.get_task(task_id)
+        link_name = request.args.get('link_name')
+        if link_name is None:
+            response = jsonify({'url': None, 'error': 'Link name not passed'})
+            response.status_code = 400
+            return response
 
         ti = (
             session.query(TaskInstance)
@@ -3466,7 +3472,7 @@ class Airflow(AirflowBaseView):
     def task_instances(self):
         """Shows task instances."""
         dag_id = request.args.get('dag_id')
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         dttm = request.args.get('execution_date')
         if dttm:
@@ -3494,7 +3500,7 @@ class Airflow(AirflowBaseView):
     def grid_data(self):
         """Returns grid data"""
         dag_id = request.args.get('dag_id')
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         if not dag:
             response = jsonify({'error': f"can't find dag {dag_id}"})
@@ -3546,7 +3552,7 @@ class Airflow(AirflowBaseView):
         of the risk associated with exposing Airflow to the public internet, however it does not
         address the real security risks associated with such a deployment.
         """
-        return send_from_directory(current_app.static_folder, 'robots.txt')
+        return send_from_directory(get_airflow_app().static_folder, 'robots.txt')
 
     @expose('/audit_log')
     @auth.has_access(
@@ -3558,7 +3564,7 @@ class Airflow(AirflowBaseView):
     @provide_session
     def audit_log(self, session=None):
         dag_id = request.args.get('dag_id')
-        dag = current_app.dag_bag.get_dag(dag_id)
+        dag = get_airflow_app().dag_bag.get_dag(dag_id)
 
         included_events = conf.get('webserver', 'audit_view_included_events', fallback=None)
         excluded_events = conf.get('webserver', 'audit_view_excluded_events', fallback=None)
@@ -3663,9 +3669,9 @@ class DagFilter(BaseFilter):
     """Filter using DagIDs"""
 
     def apply(self, query, func):
-        if current_app.appbuilder.sm.has_all_dags_access(g.user):
+        if get_airflow_app().appbuilder.sm.has_all_dags_access(g.user):
             return query
-        filter_dag_ids = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+        filter_dag_ids = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
         return query.filter(self.model.dag_id.in_(filter_dag_ids))
 
 
@@ -3688,7 +3694,7 @@ class AirflowPrivilegeVerifierModelView(AirflowModelView):
     @staticmethod
     def validate_dag_edit_access(item: Union[DagRun, TaskInstance]):
         """Validates whether the user has 'can_edit' access for this specific DAG."""
-        if not current_app.appbuilder.sm.can_edit_dag(item.dag_id):
+        if not get_airflow_app().appbuilder.sm.can_edit_dag(item.dag_id):
             raise AirflowException(f"Access denied for dag_id {item.dag_id}")
 
     def pre_add(self, item: Union[DagRun, TaskInstance]):
@@ -3719,7 +3725,7 @@ def action_has_dag_edit_access(action_func: Callable) -> Callable:
         items: Optional[Union[List[TaskInstance], List[DagRun], TaskInstance, DagRun]],
         *args,
         **kwargs,
-    ) -> None:
+    ) -> Callable:
         if items is None:
             dag_ids: Set[str] = set()
         elif isinstance(items, list):
@@ -3734,7 +3740,7 @@ def action_has_dag_edit_access(action_func: Callable) -> Callable:
             )
 
         for dag_id in dag_ids:
-            if not current_app.appbuilder.sm.can_edit_dag(dag_id):
+            if not get_airflow_app().appbuilder.sm.can_edit_dag(dag_id):
                 flash(f"Access denied for dag_id {dag_id}", "danger")
                 logging.warning("User %s tried to modify %s without having access.", g.user.username, dag_id)
                 return redirect(self.get_default_url())
@@ -4337,7 +4343,9 @@ class PoolModelView(AirflowModelView):
 
 
 def _can_create_variable() -> bool:
-    return current_app.appbuilder.sm.has_access(permissions.ACTION_CAN_CREATE, permissions.RESOURCE_VARIABLE)
+    return get_airflow_app().appbuilder.sm.has_access(
+        permissions.ACTION_CAN_CREATE, permissions.RESOURCE_VARIABLE
+    )
 
 
 class VariableModelView(AirflowModelView):
@@ -4681,7 +4689,10 @@ class DagRunModelView(AirflowPrivilegeVerifierModelView):
             for dr in session.query(DagRun).filter(DagRun.id.in_([dagrun.id for dagrun in drs])).all():
                 count += 1
                 altered_tis += set_dag_run_state_to_failed(
-                    dag=current_app.dag_bag.get_dag(dr.dag_id), run_id=dr.run_id, commit=True, session=session
+                    dag=get_airflow_app().dag_bag.get_dag(dr.dag_id),
+                    run_id=dr.run_id,
+                    commit=True,
+                    session=session,
                 )
             altered_ti_count = len(altered_tis)
             flash(f"{count} dag runs and {altered_ti_count} task instances were set to failed")
@@ -4706,7 +4717,10 @@ class DagRunModelView(AirflowPrivilegeVerifierModelView):
             for dr in session.query(DagRun).filter(DagRun.id.in_([dagrun.id for dagrun in drs])).all():
                 count += 1
                 altered_tis += set_dag_run_state_to_success(
-                    dag=current_app.dag_bag.get_dag(dr.dag_id), run_id=dr.run_id, commit=True, session=session
+                    dag=get_airflow_app().dag_bag.get_dag(dr.dag_id),
+                    run_id=dr.run_id,
+                    commit=True,
+                    session=session,
                 )
             altered_ti_count = len(altered_tis)
             flash(f"{count} dag runs and {altered_ti_count} task instances were set to success")
@@ -4726,7 +4740,7 @@ class DagRunModelView(AirflowPrivilegeVerifierModelView):
             dag_to_tis: Dict[DAG, List[TaskInstance]] = {}
             for dr in session.query(DagRun).filter(DagRun.id.in_([dagrun.id for dagrun in drs])).all():
                 count += 1
-                dag = current_app.dag_bag.get_dag(dr.dag_id)
+                dag = get_airflow_app().dag_bag.get_dag(dr.dag_id)
                 tis_to_clear = dag_to_tis.setdefault(dag, [])
                 tis_to_clear += dr.get_task_instances()
 
@@ -5019,7 +5033,7 @@ class TaskInstanceModelView(AirflowPrivilegeVerifierModelView):
             dag_to_tis = collections.defaultdict(list)
 
             for ti in task_instances:
-                dag = current_app.dag_bag.get_dag(ti.dag_id)
+                dag = get_airflow_app().dag_bag.get_dag(ti.dag_id)
                 dag_to_tis[dag].append(ti)
 
             for dag, task_instances_list in dag_to_tis.items():
@@ -5135,7 +5149,7 @@ class AutocompleteView(AirflowBaseView):
             dag_ids_query = dag_ids_query.filter(DagModel.is_paused)
             owners_query = owners_query.filter(DagModel.is_paused)
 
-        filter_dag_ids = current_app.appbuilder.sm.get_accessible_dag_ids(g.user)
+        filter_dag_ids = get_airflow_app().appbuilder.sm.get_accessible_dag_ids(g.user)
 
         dag_ids_query = dag_ids_query.filter(DagModel.dag_id.in_(filter_dag_ids))
         owners_query = owners_query.filter(DagModel.dag_id.in_(filter_dag_ids))
diff --git a/dev/breeze/README.md b/dev/breeze/README.md
index 7794f25e4e..14a9f089a4 100644
--- a/dev/breeze/README.md
+++ b/dev/breeze/README.md
@@ -52,6 +52,6 @@ PLEASE DO NOT MODIFY THE HASH BELOW! IT IS AUTOMATICALLY UPDATED BY PRE-COMMIT.
 
 ---------------------------------------------------------------------------------------------------------
 
-Package config hash: 40b9b6908905e94c93809cca70c68c632731242798dba9cbe62473e965cb4e5d44eaaa817c5ce9334397f3794a350bc00e3cf319631a25c461a935a389191e7b
+Package config hash: a80a853b2c32c284a68ccd6d468804b892a69f14d2ad1886bdaa892755cf6262660e2b9fc582bcae27ae478910055267a76edea2df658196198a0365150e93e5
 
 ---------------------------------------------------------------------------------------------------------
diff --git a/dev/breeze/setup.cfg b/dev/breeze/setup.cfg
index 9c7154ce52..c974560561 100644
--- a/dev/breeze/setup.cfg
+++ b/dev/breeze/setup.cfg
@@ -64,7 +64,7 @@ install_requires =
     pyyaml
     requests
     rich>=12.4.4
-    rich_click
+    rich-click>=1.5
 
 [options.packages.find]
 where=src
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index a5333a08ab..caf43d47a4 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -84,6 +84,7 @@ RELEASE_MANAGEMENT_PARAMETERS = {
                 "--airflow-extras",
                 "--use-packages-from-dist",
                 "--package-format",
+                "--skip-constraints",
                 "--debug",
             ],
         }
@@ -511,6 +512,12 @@ def generate_constraints(
 @option_use_airflow_version
 @option_airflow_extras
 @option_airflow_constraints_reference
+@click.option(
+    "--skip-constraints",
+    is_flag=True,
+    help="Do not use constraints when installing providers.",
+    envvar='SKIP_CONSTRAINTS',
+)
 @option_use_packages_from_dist
 @option_installation_package_format
 @option_verbose
@@ -522,6 +529,7 @@ def verify_provider_packages(
     dry_run: bool,
     use_airflow_version: Optional[str],
     airflow_constraints_reference: str,
+    skip_constraints: bool,
     airflow_extras: str,
     use_packages_from_dist: bool,
     debug: bool,
@@ -538,6 +546,7 @@ def verify_provider_packages(
         airflow_extras=airflow_extras,
         airflow_constraints_reference=airflow_constraints_reference,
         use_packages_from_dist=use_packages_from_dist,
+        skip_constraints=skip_constraints,
         package_format=package_format,
     )
     rebuild_or_pull_ci_image_if_needed(command_params=shell_params, dry_run=dry_run, verbose=verbose)
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py b/dev/breeze/src/airflow_breeze/params/shell_params.py
index bb4ad3393e..b67d362186 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -81,6 +81,7 @@ class ShellParams:
     postgres_version: str = ALLOWED_POSTGRES_VERSIONS[0]
     python: str = ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[0]
     skip_environment_initialization: bool = False
+    skip_constraints: bool = False
     start_airflow: str = "false"
     use_airflow_version: Optional[str] = None
     use_packages_from_dist: bool = False
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 96b83b5ed7..8af6010c40 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -571,6 +571,7 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
     "POSTGRES_VERSION": "postgres_version",
     "SQLITE_URL": "sqlite_url",
     "START_AIRFLOW": "start_airflow",
+    "SKIP_CONSTRAINTS": "skip_constraints",
     "SKIP_ENVIRONMENT_INITIALIZATION": "skip_environment_initialization",
     "USE_AIRFLOW_VERSION": "use_airflow_version",
     "USE_PACKAGES_FROM_DIST": "use_packages_from_dist",
diff --git a/dev/breeze/src/airflow_breeze/utils/recording.py b/dev/breeze/src/airflow_breeze/utils/recording.py
index 0ec34edcca..2fe9f5b555 100644
--- a/dev/breeze/src/airflow_breeze/utils/recording.py
+++ b/dev/breeze/src/airflow_breeze/utils/recording.py
@@ -53,10 +53,10 @@ def enable_recording_of_help_output(path: str, title: Optional[str], width: Opti
 
     atexit.register(save_ouput_as_svg)
     click.rich_click.MAX_WIDTH = width_int
-    click.formatting.FORCED_WIDTH = width_int - 2
+    click.formatting.FORCED_WIDTH = width_int - 2  # type: ignore[attr-defined]
     click.rich_click.COLOR_SYSTEM = "standard"
     # monkeypatch rich_click console to record help (rich_click does not allow passing extra args to console)
-    click.rich_click.Console = RecordingConsole
+    click.rich_click.Console = RecordingConsole  # type: ignore[misc]
 
 
 if output_file_for_recording and not in_autocomplete():
diff --git a/dev/send_email.py b/dev/send_email.py
index 91a35b97cc..2d796eb800 100755
--- a/dev/send_email.py
+++ b/dev/send_email.py
@@ -83,8 +83,7 @@ def show_message(entity: str, message: str):
     """
     Show message on the Command Line
     """
-    width, _ = click.get_terminal_size()
-
+    width, _ = click.get_terminal_size()  # type: ignore[attr-defined]
     click.secho("-" * width, fg="blue")
     click.secho(f"{entity} Message:", fg="bright_red", bold=True)
     click.secho("-" * width, fg="blue")
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
deleted file mode 100644
index 0ea56c33a7..0000000000
--- a/images/breeze/output-commands-hash.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-# This file is automatically generated by pre-commit. If you have a conflict with this file
-# Please do not solve it but run `breeze regenerate-command-images`.
-# This command should fix the conflict and regenerate help images that you have conflict with.
-9139ef44b7f1ba24ddee50b71d3867c2
diff --git a/images/breeze/output-verify-provider-packages.svg b/images/breeze/output-verify-provider-packages.svg
index 12853b46a2..fbfd468ffa 100644
--- a/images/breeze/output-verify-provider-packages.svg
+++ b/images/breeze/output-verify-provider-packages.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 708.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,149 +19,153 @@
         font-weight: 700;
     }
 
-    .terminal-1578520108-matrix {
+    .terminal-2134602296-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1578520108-title {
+    .terminal-2134602296-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1578520108-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1578520108-r2 { fill: #c5c8c6 }
-.terminal-1578520108-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1578520108-r4 { fill: #868887 }
-.terminal-1578520108-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1578520108-r6 { fill: #8d7b39 }
-.terminal-1578520108-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-2134602296-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2134602296-r2 { fill: #c5c8c6 }
+.terminal-2134602296-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2134602296-r4 { fill: #868887 }
+.terminal-2134602296-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2134602296-r6 { fill: #8d7b39 }
+.terminal-2134602296-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-1578520108-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="657.8" />
+    <clipPath id="terminal-2134602296-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
     </clipPath>
-    <clipPath id="terminal-1578520108-line-0">
+    <clipPath id="terminal-2134602296-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-1">
+<clipPath id="terminal-2134602296-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-2">
+<clipPath id="terminal-2134602296-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-3">
+<clipPath id="terminal-2134602296-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-4">
+<clipPath id="terminal-2134602296-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-5">
+<clipPath id="terminal-2134602296-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-6">
+<clipPath id="terminal-2134602296-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-7">
+<clipPath id="terminal-2134602296-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-8">
+<clipPath id="terminal-2134602296-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-9">
+<clipPath id="terminal-2134602296-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-10">
+<clipPath id="terminal-2134602296-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-11">
+<clipPath id="terminal-2134602296-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-12">
+<clipPath id="terminal-2134602296-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-13">
+<clipPath id="terminal-2134602296-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-14">
+<clipPath id="terminal-2134602296-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-15">
+<clipPath id="terminal-2134602296-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-16">
+<clipPath id="terminal-2134602296-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-17">
+<clipPath id="terminal-2134602296-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-18">
+<clipPath id="terminal-2134602296-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-19">
+<clipPath id="terminal-2134602296-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-20">
+<clipPath id="terminal-2134602296-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-21">
+<clipPath id="terminal-2134602296-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-22">
+<clipPath id="terminal-2134602296-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-23">
+<clipPath id="terminal-2134602296-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-24">
+<clipPath id="terminal-2134602296-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1578520108-line-25">
+<clipPath id="terminal-2134602296-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2134602296-line-26">
+    <rect x="0" y="635.9" 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="706.8" rx="8"/><text class="terminal-1578520108-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-provider-packages</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="terminal-2134602296-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-provider-packages</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-1578520108-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2134602296-clip-terminal)">
     
-    <g class="terminal-1578520108-matrix">
-    <text class="terminal-1578520108-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1578520108-line-0)">
-</text><text class="terminal-1578520108-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1578520108-line-1)">Usage:&#160;</text><text class="terminal-1578520108-r1" x="97.6" y="44.4" textLength="500.2" clip-path="url(#terminal-1578520108-line-1)">breeze&#160;verify-provider-packages&#160;[OPTIONS]</text><text class="terminal-1578520108-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-1)">
-</text><text class="terminal-1578520108-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-2)">
-</text><text class="terminal-1578520108-r2" x="12.2" y="93.2" textLength="854" clip-path="url(#terminal-1578520108-line-3)">Verifies&#160;if&#160;all&#160;provider&#160;code&#160;is&#160;following&#160;expectations&#160;for&#160;providers.</text><text class="terminal-1578520108-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-3)">
-</text><text class="terminal-1578520108-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-4)">
-</text><text class="terminal-1578520108-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1578520108-line-5)">╭─</text><text class="terminal-1578520108-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1578520108-line-5)">&#160;Provider&#160;verification&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1578520108-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1578520108-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-6)">│</text><text class="terminal-1578520108-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-6)">-</text><text class="terminal-1578520108-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-1578520108-line-6)">-use</text><text class="terminal-1578520108-r5" x="85.4" y="166.4" textLength="195.2" clip-path="url(#terminal-1578 [...]
-</text><text class="terminal-1578520108-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-7)">│</text><text class="terminal-1578520108-r2" x="451.4" y="190.8" textLength="988.2" clip-path="url(#terminal-1578520108-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;&#160;</text><text class="terminal-1578520108-r4" x="1451.8" y="190.8" textLength="12.2" clip-path=" [...]
-</text><text class="terminal-1578520108-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-8)">│</text><text class="terminal-1578520108-r2" x="451.4" y="215.2" textLength="793" clip-path="url(#terminal-1578520108-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1578520108-r5" x="1244.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-8)">-</t [...]
-</text><text class="terminal-1578520108-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-9)">│</text><text class="terminal-1578520108-r2" x="451.4" y="239.6" textLength="988.2" clip-path="url(#terminal-1578520108-line-9)">`remove`.&#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-1578520108-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1578520108-line-10)">│</text><text class="terminal-1578520108-r6" x="451.4" y="264" textLength="988.2" clip-path="url(#terminal-1578520108-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1578520108-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-11)">│</text><text class="terminal-1578520108-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-11)">-</text><text class="terminal-1578520108-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-1578520108-line-11)">-airflow</text><text class="terminal-1578520108-r5" x="134.2" y="288.4" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-1578520108-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-12)">│</text><text class="terminal-1578520108-r2" x="451.4" y="312.8" textLength="988.2" clip-path="url(#terminal-1578520108-line-12)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1578520108-r4" x="1451.8" y="312.8" textLength="12.2" [...]
-</text><text class="terminal-1578520108-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-13)">│</text><text class="terminal-1578520108-r6" x="451.4" y="337.2" textLength="988.2" clip-path="url(#terminal-1578520108-line-13)">(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;&#16 [...]
-</text><text class="terminal-1578520108-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-14)">│</text><text class="terminal-1578520108-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-14)">-</text><text class="terminal-1578520108-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1578520108-line-14)">-airflow</text><text class="terminal-1578520108-r5" x="134.2" y="361.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1578520108-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1578520108-line-15)">│</text><text class="terminal-1578520108-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1578520108-line-15)">-</text><text class="terminal-1578520108-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1578520108-line-15)">-use</text><text class="terminal-1578520108-r5" x="85.4" y="386" textLength="231.8" clip-path="url(#terminal-157852010 [...]
-</text><text class="terminal-1578520108-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-16)">│</text><text class="terminal-1578520108-r2" x="451.4" y="410.4" textLength="988.2" clip-path="url(#terminal-1578520108-line-16)">when&#160;entering&#160;breeze.&#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-1578520108-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-17)">│</text><text class="terminal-1578520108-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-17)">-</text><text class="terminal-1578520108-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-1578520108-line-17)">-package</text><text class="terminal-1578520108-r5" x="134.2" y="434.8" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1578520108-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-18)">│</text><text class="terminal-1578520108-r4" x="451.4" y="459.2" textLength="658.8" clip-path="url(#terminal-1578520108-line-18)">[default:&#160;wheel]&#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-1578520108-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-19)">│</text><text class="terminal-1578520108-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-19)">-</text><text class="terminal-1578520108-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1578520108-line-19)">-debug</text><text class="terminal-1578520108-r2" x="451.4" y="483.6" textLength="878.4" clip-path="url(#termina [...]
-</text><text class="terminal-1578520108-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1578520108-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1578520108-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1578520108-line-20)">
-</text><text class="terminal-1578520108-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-1578520108-line-21)">╭─</text><text class="terminal-1578520108-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-1578520108-line-21)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1578520108-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#terminal-157 [...]
-</text><text class="terminal-1578520108-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-22)">│</text><text class="terminal-1578520108-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-22)">-</text><text class="terminal-1578520108-r5" x="36.6" y="556.8" textLength="97.6" clip-path="url(#terminal-1578520108-line-22)">-verbose</text><text class="terminal-1578520108-r7" x="280.6" y="556.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1578520108-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-23)">│</text><text class="terminal-1578520108-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-23)">-</text><text class="terminal-1578520108-r5" x="36.6" y="581.2" textLength="48.8" clip-path="url(#terminal-1578520108-line-23)">-dry</text><text class="terminal-1578520108-r5" x="85.4" y="581.2" textLength="48.8" clip-path="url(#terminal-15 [...]
-</text><text class="terminal-1578520108-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-24)">│</text><text class="terminal-1578520108-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-24)">-</text><text class="terminal-1578520108-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-1578520108-line-24)">-github</text><text class="terminal-1578520108-r5" x="122" y="605.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1578520108-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1578520108-line-25)">│</text><text class="terminal-1578520108-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1578520108-line-25)">-</text><text class="terminal-1578520108-r5" x="36.6" y="630" textLength="61" clip-path="url(#terminal-1578520108-line-25)">-help</text><text class="terminal-1578520108-r7" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-1578520108 [...]
-</text><text class="terminal-1578520108-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-1578520108-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1578520108-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-26)">
+    <g class="terminal-2134602296-matrix">
+    <text class="terminal-2134602296-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2134602296-line-0)">
+</text><text class="terminal-2134602296-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2134602296-line-1)">Usage:&#160;</text><text class="terminal-2134602296-r1" x="97.6" y="44.4" textLength="500.2" clip-path="url(#terminal-2134602296-line-1)">breeze&#160;verify-provider-packages&#160;[OPTIONS]</text><text class="terminal-2134602296-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-1)">
+</text><text class="terminal-2134602296-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2134602296-line-2)">
+</text><text class="terminal-2134602296-r2" x="12.2" y="93.2" textLength="854" clip-path="url(#terminal-2134602296-line-3)">Verifies&#160;if&#160;all&#160;provider&#160;code&#160;is&#160;following&#160;expectations&#160;for&#160;providers.</text><text class="terminal-2134602296-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2134602296-line-3)">
+</text><text class="terminal-2134602296-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-4)">
+</text><text class="terminal-2134602296-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2134602296-line-5)">╭─</text><text class="terminal-2134602296-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2134602296-line-5)">&#160;Provider&#160;verification&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2134602296-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-6)">│</text><text class="terminal-2134602296-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-6)">-</text><text class="terminal-2134602296-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-2134602296-line-6)">-use</text><text class="terminal-2134602296-r5" x="85.4" y="166.4" textLength="195.2" clip-path="url(#terminal-2134 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2134602296-line-7)">│</text><text class="terminal-2134602296-r2" x="451.4" y="190.8" textLength="988.2" clip-path="url(#terminal-2134602296-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;&#160;</text><text class="terminal-2134602296-r4" x="1451.8" y="190.8" textLength="12.2" clip-path=" [...]
+</text><text class="terminal-2134602296-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2134602296-line-8)">│</text><text class="terminal-2134602296-r2" x="451.4" y="215.2" textLength="793" clip-path="url(#terminal-2134602296-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2134602296-r5" x="1244.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2134602296-line-8)">-</t [...]
+</text><text class="terminal-2134602296-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-9)">│</text><text class="terminal-2134602296-r2" x="451.4" y="239.6" textLength="988.2" clip-path="url(#terminal-2134602296-line-9)">`remove`.&#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-2134602296-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2134602296-line-10)">│</text><text class="terminal-2134602296-r6" x="451.4" y="264" textLength="988.2" clip-path="url(#terminal-2134602296-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2134602296-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-11)">│</text><text class="terminal-2134602296-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-11)">-</text><text class="terminal-2134602296-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-2134602296-line-11)">-airflow</text><text class="terminal-2134602296-r5" x="134.2" y="288.4" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-2134602296-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2134602296-line-12)">│</text><text class="terminal-2134602296-r2" x="451.4" y="312.8" textLength="988.2" clip-path="url(#terminal-2134602296-line-12)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2134602296-r4" x="1451.8" y="312.8" textLength="12.2" [...]
+</text><text class="terminal-2134602296-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2134602296-line-13)">│</text><text class="terminal-2134602296-r6" x="451.4" y="337.2" textLength="988.2" clip-path="url(#terminal-2134602296-line-13)">(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;&#16 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-14)">│</text><text class="terminal-2134602296-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-14)">-</text><text class="terminal-2134602296-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-2134602296-line-14)">-airflow</text><text class="terminal-2134602296-r5" x="134.2" y="361.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2134602296-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2134602296-line-15)">│</text><text class="terminal-2134602296-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2134602296-line-15)">-</text><text class="terminal-2134602296-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-2134602296-line-15)">-use</text><text class="terminal-2134602296-r5" x="85.4" y="386" textLength="231.8" clip-path="url(#terminal-213460229 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-16)">│</text><text class="terminal-2134602296-r2" x="451.4" y="410.4" textLength="988.2" clip-path="url(#terminal-2134602296-line-16)">when&#160;entering&#160;breeze.&#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-2134602296-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2134602296-line-17)">│</text><text class="terminal-2134602296-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2134602296-line-17)">-</text><text class="terminal-2134602296-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-2134602296-line-17)">-package</text><text class="terminal-2134602296-r5" x="134.2" y="434.8" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2134602296-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2134602296-line-18)">│</text><text class="terminal-2134602296-r4" x="451.4" y="459.2" textLength="658.8" clip-path="url(#terminal-2134602296-line-18)">[default:&#160;wheel]&#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-2134602296-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-19)">│</text><text class="terminal-2134602296-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-19)">-</text><text class="terminal-2134602296-r5" x="36.6" y="483.6" textLength="61" clip-path="url(#terminal-2134602296-line-19)">-skip</text><text class="terminal-2134602296-r5" x="97.6" y="483.6" textLength="146.4" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2134602296-line-20)">│</text><text class="terminal-2134602296-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2134602296-line-20)">-</text><text class="terminal-2134602296-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-2134602296-line-20)">-debug</text><text class="terminal-2134602296-r2" x="451.4" y="508" textLength="878.4" clip-path="url(#terminal-213460 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-2134602296-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2134602296-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-21)">
+</text><text class="terminal-2134602296-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-2134602296-line-22)">╭─</text><text class="terminal-2134602296-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-2134602296-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2134602296-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-213 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2134602296-line-23)">│</text><text class="terminal-2134602296-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2134602296-line-23)">-</text><text class="terminal-2134602296-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-2134602296-line-23)">-verbose</text><text class="terminal-2134602296-r7" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2134602296-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-24)">│</text><text class="terminal-2134602296-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2134602296-line-24)">-</text><text class="terminal-2134602296-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-2134602296-line-24)">-dry</text><text class="terminal-2134602296-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2134602296-line-25)">│</text><text class="terminal-2134602296-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2134602296-line-25)">-</text><text class="terminal-2134602296-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-2134602296-line-25)">-github</text><text class="terminal-2134602296-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-2134602 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-26)">│</text><text class="terminal-2134602296-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2134602296-line-26)">-</text><text class="terminal-2134602296-r5" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-2134602296-line-26)">-help</text><text class="terminal-2134602296-r7" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2134602296-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-2134602296-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2134602296-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-2134602296-line-27)">
 </text>
     </g>
     </g>
diff --git a/newsfragments/24399.significant.rst b/newsfragments/24399.significant.rst
new file mode 100644
index 0000000000..7f1833a8e8
--- /dev/null
+++ b/newsfragments/24399.significant.rst
@@ -0,0 +1,31 @@
+We've upgraded Flask Application Builder to a major version 4.*.
+
+Flask Application Builder is one of the important components of Airflow Webserver, as
+it uses a lof of dependencies that are essential to run the webserver and integrate it
+in enterprise environments - especially authentication.
+
+The FAB 4.* upgrades a number of dependencies to major releases, which upgrades them to versions
+that have a number of security issues fixed. A lot of tests were performed to bring the dependencies
+in a backwards-compatible way, however the dependencies themselves implement breaking changes in their
+internals so it might be that some of those changes might impact the users in case they are using the
+libraries for their onw purposes.
+
+One important change that you likely will need to apply to Oauth configuration is to add
+``server_metadata_url`` or ``jwks_uri`` and you can read about it more
+in `this issue <https://github.com/dpgaspar/Flask-AppBuilder/issues/1861>`_.
+
+Here is the list of breaking changes in dependencies that comes together with FAB 4:
+
+* Flask from 1.X to 2.X `breaking changes <https://flask.palletsprojects.com/en/2.0.x/changes/#version-2-0-0>`_
+
+* flask-jwt-extended 3.X to 4.X `breaking changes: <https://flask-jwt-extended.readthedocs.io/en/stable/v4_upgrade_guide/>`_
+
+* Jinja2 2.X to 3.X `breaking changes: <https://jinja.palletsprojects.com/en/3.0.x/changes/#version-3-0-0>`_
+
+* Werkzeug 1.X to 2.X `breaking changes <https://werkzeug.palletsprojects.com/en/2.0.x/changes/#version-2-0-0>`_
+
+* pyJWT 1.X to 2.X `breaking changes: <https://pyjwt.readthedocs.io/en/stable/changelog.html#v2-0-0>`_
+
+* Click 7.X to 8.X `breaking changes: <https://click.palletsprojects.com/en/8.0.x/changes/#version-8-0-0>`_
+
+* itsdangerous 1.X to 2.X `breaking changes <https://github.com/pallets/itsdangerous/blob/main/CHANGES.rst#version-200>`_
diff --git a/scripts/ci/docker-compose/_docker.env b/scripts/ci/docker-compose/_docker.env
index 4edc849b57..b33cfea360 100644
--- a/scripts/ci/docker-compose/_docker.env
+++ b/scripts/ci/docker-compose/_docker.env
@@ -59,6 +59,7 @@ RUN_TESTS
 LIST_OF_INTEGRATION_TESTS_TO_RUN
 RUN_SYSTEM_TESTS
 START_AIRFLOW
+SKIP_CONSTRAINTS
 SKIP_ENVIRONMENT_INITIALIZATION
 SKIP_SSH_SETUP
 TEST_TYPE
diff --git a/scripts/ci/docker-compose/base.yml b/scripts/ci/docker-compose/base.yml
index 48e4d3df96..c1285eda88 100644
--- a/scripts/ci/docker-compose/base.yml
+++ b/scripts/ci/docker-compose/base.yml
@@ -72,6 +72,7 @@ services:
       - LIST_OF_INTEGRATION_TESTS_TO_RUN=${LIST_OF_INTEGRATION_TESTS_TO_RUN}
       - RUN_SYSTEM_TESTS=${RUN_SYSTEM_TESTS}
       - START_AIRFLOW=${START_AIRFLOW}
+      - SKIP_CONSTRAINTS=${SKIP_CONSTRAINTS}
       - SKIP_ENVIRONMENT_INITIALIZATION=${SKIP_ENVIRONMENT_INITIALIZATION}
       - SKIP_SSH_SETUP=${SKIP_SSH_SETUP}
       - TEST_TYPE=${TEST_TYPE}
diff --git a/scripts/ci/docker-compose/devcontainer.env b/scripts/ci/docker-compose/devcontainer.env
index 1c4b27b36a..ae51b20443 100644
--- a/scripts/ci/docker-compose/devcontainer.env
+++ b/scripts/ci/docker-compose/devcontainer.env
@@ -57,6 +57,7 @@ RUN_TESTS="false"
 LIST_OF_INTEGRATION_TESTS_TO_RUN=""
 RUN_SYSTEM_TESTS=""
 START_AIRFLOW="false"
+SKIP_CONSTRAINTS="false"
 SKIP_SSH_SETUP="true"
 SKIP_ENVIRONMENT_INITIALIZATION="false"
 TEST_TYPE=
diff --git a/scripts/ci/pre_commit/pre_commit_check_2_1_compatibility.py b/scripts/ci/pre_commit/pre_commit_check_2_1_compatibility.py
index 0d43959ba5..c28d29d76d 100755
--- a/scripts/ci/pre_commit/pre_commit_check_2_1_compatibility.py
+++ b/scripts/ci/pre_commit/pre_commit_check_2_1_compatibility.py
@@ -36,6 +36,8 @@ errors: List[str] = []
 GET_ATTR_MATCHER = re.compile(r".*getattr\((ti|TI), ['\"]run_id['\"]\).*")
 TI_RUN_ID_MATCHER = re.compile(r".*(ti|TI)\.run_id.*")
 TRY_NUM_MATCHER = re.compile(r".*context.*\[[\"']try_number[\"']].*")
+GET_MANDATORY_MATCHER = re.compile(r".*conf\.get_mandatory_value")
+GET_AIRFLOW_APP_MATCHER = re.compile(r".*get_airflow_app\(\)")
 
 
 def _check_file(_file: Path):
@@ -57,13 +59,13 @@ def _check_file(_file: Path):
             if "if ti_key is not None:" not in lines[index - 1]:
                 errors.append(
                     f"[red]In {_file}:{index} there is a forbidden construct "
-                    f"(Airflow 2.3.0 only):[/]\n\n"
+                    "(Airflow 2.3.0 only):[/]\n\n"
                     f"{lines[index-1]}\n{lines[index]}\n\n"
-                    f"[yellow]When you use XCom.get_value( in providers, it should be in the form:[/]\n\n"
-                    f"if ti_key is not None:\n"
-                    f"    value = XCom.get_value(...., ti_key=ti_key)\n\n"
-                    f"See: https://airflow.apache.org/docs/apache-airflow-providers/"
-                    f"howto/create-update-providers.html#using-providers-with-dynamic-task-mapping\n"
+                    "[yellow]When you use XCom.get_value( in providers, it should be in the form:[/]\n\n"
+                    "if ti_key is not None:\n"
+                    "    value = XCom.get_value(...., ti_key=ti_key)\n\n"
+                    "See: https://airflow.apache.org/docs/apache-airflow-providers/"
+                    "howto/create-update-providers.html#using-providers-with-dynamic-task-mapping\n"
                 )
         if "timezone.coerce_datetime" in line:
             errors.append(
@@ -76,19 +78,37 @@ def _check_file(_file: Path):
         if "ti.map_index" in line:
             errors.append(
                 f"[red]In {_file}:{index} there is a forbidden construct "
-                f"(Airflow 2.3+ only):[/]\n\n"
+                "(Airflow 2.3+ only):[/]\n\n"
                 f"{lines[index]}\n\n"
-                f"[yellow]You should not use map_index field in providers "
-                f"as it is not available in Airflow 2.2[/]"
+                "[yellow]You should not use map_index field in providers "
+                "as it is only available in Airflow 2.3+[/]"
             )
 
         if TRY_NUM_MATCHER.match(line):
             errors.append(
                 f"[red]In {_file}:{index} there is a forbidden construct "
-                f"(Airflow 2.3+ only):[/]\n\n"
+                "(Airflow 2.3+ only):[/]\n\n"
                 f"{lines[index]}\n\n"
-                f"[yellow]You should not expect try_number field for context in providers "
-                f"as it is not available in Airflow 2.2[/]"
+                "[yellow]You should not expect try_number field for context in providers "
+                "as it is only available in Airflow 2.3+[/]"
+            )
+
+        if GET_MANDATORY_MATCHER.match(line):
+            errors.append(
+                f"[red]In {_file}:{index} there is a forbidden construct "
+                "(Airflow 2.3+ only):[/]\n\n"
+                f"{lines[index]}\n\n"
+                "[yellow]You should not use conf.get_mandatory_value in providers "
+                "as it is only available in Airflow 2.3+[/]"
+            )
+
+        if GET_AIRFLOW_APP_MATCHER.match(line):
+            errors.append(
+                f"[red]In {_file}:{index} there is a forbidden construct "
+                "(Airflow 2.4+ only):[/]\n\n"
+                f"{lines[index]}\n\n"
+                "[yellow]You should not use airflow.utils.airflow_flask_app.get_airflow_app() in providers "
+                "as it is not available in Airflow 2.4+. Use current_app instead.[/]"
             )
 
 
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index f5198a556c..2994604fc9 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -94,9 +94,15 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo "${COLOR_BLUE}Uninstalling airflow and providers"
         echo
         uninstall_airflow_and_providers
-        echo "${COLOR_BLUE}Install airflow from wheel package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
-        echo
-        install_airflow_from_wheel "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        if [[ ${SKIP_CONSTRAINTS,,=} == "true" ]]; then
+            echo "${COLOR_BLUE}Install airflow from wheel package with extras: '${AIRFLOW_EXTRAS}' with no constraints.${COLOR_RESET}"
+            echo
+            install_airflow_from_wheel "${AIRFLOW_EXTRAS}" "none"
+        else
+            echo "${COLOR_BLUE}Install airflow from wheel package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
+            echo
+            install_airflow_from_wheel "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        fi
         uninstall_providers
     elif [[ ${USE_AIRFLOW_VERSION} == "sdist"  ]]; then
         echo
@@ -104,9 +110,15 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo
         uninstall_airflow_and_providers
         echo
-        echo "${COLOR_BLUE}Install airflow from sdist package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
-        echo
-        install_airflow_from_sdist "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        if [[ ${SKIP_CONSTRAINTS,,=} == "true" ]]; then
+            echo "${COLOR_BLUE}Install airflow from sdist package with extras: '${AIRFLOW_EXTRAS}' with no constraints.${COLOR_RESET}"
+            echo
+            install_airflow_from_sdist "${AIRFLOW_EXTRAS}" "none"
+        else
+            echo "${COLOR_BLUE}Install airflow from sdist package with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
+            echo
+            install_airflow_from_sdist "${AIRFLOW_EXTRAS}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        fi
         uninstall_providers
     else
         echo
@@ -114,9 +126,15 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
         echo
         uninstall_airflow_and_providers
         echo
-        echo "${COLOR_BLUE}Install released airflow from PyPI with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
-        echo
-        install_released_airflow_version "${USE_AIRFLOW_VERSION}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        if [[ ${SKIP_CONSTRAINTS,,=} == "true" ]]; then
+            echo "${COLOR_BLUE}Install released airflow from PyPI with extras: '${AIRFLOW_EXTRAS}' with no constraints.${COLOR_RESET}"
+            echo
+            install_released_airflow_version "${USE_AIRFLOW_VERSION}" "none"
+        else
+            echo "${COLOR_BLUE}Install released airflow from PyPI with extras: '${AIRFLOW_EXTRAS}' and constraints reference ${AIRFLOW_CONSTRAINTS_REFERENCE}.${COLOR_RESET}"
+            echo
+            install_released_airflow_version "${USE_AIRFLOW_VERSION}" "${AIRFLOW_CONSTRAINTS_REFERENCE}"
+        fi
     fi
     if [[ ${USE_PACKAGES_FROM_DIST=} == "true" ]]; then
         echo
diff --git a/scripts/in_container/_in_container_utils.sh b/scripts/in_container/_in_container_utils.sh
index d6a637e5c3..66f2e6b083 100644
--- a/scripts/in_container/_in_container_utils.sh
+++ b/scripts/in_container/_in_container_utils.sh
@@ -224,8 +224,12 @@ function install_airflow_from_wheel() {
         >&2 echo
         exit 4
     fi
-    pip install "${airflow_package}${extras}" --constraint \
-        "https://raw.githubusercontent.com/apache/airflow/${constraints_reference}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt"
+    if [[ ${constraints_reference} == "none" ]]; then
+        pip install "${airflow_package}${extras}"
+    else
+        pip install "${airflow_package}${extras}" --constraint \
+            "https://raw.githubusercontent.com/apache/airflow/${constraints_reference}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt"
+    fi
 }
 
 function install_airflow_from_sdist() {
@@ -250,8 +254,12 @@ function install_airflow_from_sdist() {
         >&2 echo
         exit 4
     fi
-    pip install "${airflow_package}${extras}" --constraint \
-        "https://raw.githubusercontent.com/apache/airflow/${constraints_reference}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt"
+    if [[ ${constraints_reference} == "none" ]]; then
+        pip install "${airflow_package}${extras}"
+    else
+        pip install "${airflow_package}${extras}" --constraint \
+            "https://raw.githubusercontent.com/apache/airflow/${constraints_reference}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt"
+    fi
 }
 
 function uninstall_airflow() {
@@ -278,17 +286,20 @@ function uninstall_airflow_and_providers() {
 
 function install_released_airflow_version() {
     local version="${1}"
-    echo
-    echo "Installing released ${version} version of airflow with extras: ${AIRFLOW_EXTRAS} and constraints constraints-${version}"
-    echo
+    local constraints_reference
+    constraints_reference="${2:-}"
     rm -rf "${AIRFLOW_SOURCES}"/*.egg-info
     if [[ ${AIRFLOW_EXTRAS} != "" ]]; then
         BRACKETED_AIRFLOW_EXTRAS="[${AIRFLOW_EXTRAS}]"
     else
         BRACKETED_AIRFLOW_EXTRAS=""
     fi
-    pip install "apache-airflow${BRACKETED_AIRFLOW_EXTRAS}==${version}" \
-        --constraint "https://raw.githubusercontent.com/${CONSTRAINTS_GITHUB_REPOSITORY}/constraints-${version}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt"
+    if [[ ${constraints_reference} == "none" ]]; then
+        pip install "${airflow_package}${extras}"
+    else
+        pip install "apache-airflow${BRACKETED_AIRFLOW_EXTRAS}==${version}" \
+            --constraint "https://raw.githubusercontent.com/${CONSTRAINTS_GITHUB_REPOSITORY}/constraints-${version}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt"
+    fi
 }
 
 function install_local_airflow_with_eager_upgrade() {
diff --git a/setup.cfg b/setup.cfg
index 1512a6201c..a32326cee2 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -101,50 +101,31 @@ install_requires =
     cryptography>=0.9.3
     deprecated>=1.2.13
     dill>=0.2.2
-    # Flask and all related libraries are limited to below 2.0.0 because we expect it to introduce
-    # Serious breaking changes. Flask 2.0 has been introduced in May 2021 and 2.0.2 version is available
-    # now (Feb 2022): TODO: we should attempt to migrate to Flask 2 and all below flask libraries soon.
-    flask>=1.1.0, <2.0
+    flask>=2.0
     # We are tightly coupled with FAB version because we vendored in part of FAB code related to security manager
     # This is done as part of preparation to removing FAB as dependency, but we are not ready for it yet
     # Every time we update FAB version here, please make sure that you review the classes and models in
     # `airflow/www/fab_security` with their upstream counterparts. In particular, make sure any breaking changes,
     # for example any new methods, are accounted for.
-    flask-appbuilder==3.4.5
-    flask-caching>=1.5.0, <2.0.0
-    flask-login>=0.3, <0.5
-    # Strict upper-bound on the latest release of flask-session,
-    # as any schema changes will require a migration.
-    flask-session>=0.3.1, <=0.4.0
-    flask-wtf>=0.14.3, <0.15
+    flask-appbuilder==4.1.1
+    flask-caching>=1.5.0
+    flask-login>=0.5
+    flask-session>=0.4.0
+    flask-wtf>=0.14.3
     graphviz>=0.12
     gunicorn>=20.1.0
     httpx
     importlib_metadata>=1.7;python_version<"3.9"
     importlib_resources>=5.2;python_version<"3.9"
-    # Logging is broken with itsdangerous > 2 - likely due to changed serializing support
-    # https://itsdangerous.palletsprojects.com/en/2.0.x/changes/#version-2-0-0
-    # itsdangerous 2 has been released in May 2020
-    # TODO: we should attempt to upgrade to line 2 of itsdangerous
-    itsdangerous>=1.1.0, <2.0
-    # Jinja2 3.1 will remove the 'autoescape' and 'with' extensions, which would
-    # break Flask 1.x, so we limit this for future compatibility. Remove this
-    # when bumping Flask to >=2.
-    jinja2>=2.10.1,<3.1
-    # Because connexion upper-bound is 5.0.0 and we depend on connexion,
-    # we pin to the same upper-bound as connexion.
-    jsonschema>=3.2.0, <5.0
+    itsdangerous>=2.0
+    jinja2>=2.10.1
+    jsonschema>=3.2.0
     lazy-object-proxy
     linkify-it-py>=2.0.0
     lockfile>=0.12.2
     markdown>=3.0
-    # Markupsafe 2.1.0 breaks with error: import name 'soft_unicode' from 'markupsafe'.
-    # This should be removed when either this issue is closed:
-    # https://github.com/pallets/markupsafe/issues/284
-    # or when we will be able to upgrade JINJA to newer version (currently limited due to Flask and
-    # Flask Application Builder)
     markdown-it-py>=2.1.0
-    markupsafe>=1.1.1,<2.1.0
+    markupsafe>=1.1.1
     marshmallow-oneofschema>=2.0.1
     mdit-py-plugins>=0.3.0
     packaging>=14.0
@@ -153,8 +134,7 @@ install_requires =
     pluggy>=1.0
     psutil>=4.2.0
     pygments>=2.0.1
-    # python daemon crashes with 'socket operation on non-socket' for python 3.8+ in version < 2.2.4
-    # https://pagure.io/python-daemon/issue/34
+    pyjwt>=2.0.0
     python-daemon>=2.2.4
     python-dateutil>=2.3
     python-nvd3>=0.15.0
@@ -172,10 +152,7 @@ install_requires =
     termcolor>=1.1.0
     typing-extensions>=3.7.4
     unicodecsv>=0.14.1
-    # Werkzeug is known to cause breaking changes and it is very closely tied with FlaskAppBuilder and other
-    # Flask dependencies and the limit to 1.* line should be reviewed when we upgrade Flask and remove
-    # FlaskAppBuilder.
-    werkzeug~=1.0, >=1.0.1
+    werkzeug>=2.0
 
 [options.packages.find]
 include =
diff --git a/setup.py b/setup.py
index f2cce10ed1..16fcb73102 100644
--- a/setup.py
+++ b/setup.py
@@ -617,16 +617,6 @@ devel_only = [
     'flake8-implicit-str-concat',
     'flaky',
     'freezegun',
-    # Github3 version 3.1.2 requires PyJWT>=2.3.0 which clashes with Flask App Builder where PyJWT is <2.0.0
-    # Actually GitHub3.1.0 already introduced PyJWT>=2.3.0 but so far `pip` was able to resolve it without
-    # getting into a long backtracking loop and figure out that github3 3.0.0 version is the right version
-    # similarly limiting it to 3.1.2 causes pip not to enter the backtracking loop. Apparently when there
-    # are 3 versions with PyJWT>=2.3.0 (3.1.0, 3.1.1 an 3.1.2) pip enters into backtrack loop and fails
-    # to resolve that github3 3.0.0 is the right version to use.
-    # This limitation could be removed if PyJWT limitation < 2.0.0 is dropped from FAB or when
-    # pip resolution is improved to handle the case. The issue which describes this PIP behaviour
-    # and hopefully allowing to improve it is tracked in https://github.com/pypa/pip/issues/10924
-    'github3.py<3.1.0',
     'gitpython',
     'ipdb',
     'jira',
@@ -660,7 +650,7 @@ devel_only = [
     'qds-sdk>=1.9.6',
     'pytest-httpx',
     'requests_mock',
-    'rich_click',
+    'rich-click>=1.5',
     'semver',
     'towncrier',
     'twine',
diff --git a/tests/api_connexion/endpoints/test_dag_endpoint.py b/tests/api_connexion/endpoints/test_dag_endpoint.py
index d95d4c3854..09ef3c28ae 100644
--- a/tests/api_connexion/endpoints/test_dag_endpoint.py
+++ b/tests/api_connexion/endpoints/test_dag_endpoint.py
@@ -19,12 +19,10 @@ import unittest.mock
 from datetime import datetime
 
 import pytest
-from itsdangerous import URLSafeSerializer
 from parameterized import parameterized
 
 from airflow import DAG
 from airflow.api_connexion.exceptions import EXCEPTIONS_LINK_MAP
-from airflow.configuration import conf
 from airflow.models import DagBag, DagModel
 from airflow.models.serialized_dag import SerializedDagModel
 from airflow.operators.empty import EmptyOperator
@@ -34,8 +32,12 @@ from tests.test_utils.api_connexion_utils import assert_401, create_user, delete
 from tests.test_utils.config import conf_vars
 from tests.test_utils.db import clear_db_dags, clear_db_runs, clear_db_serialized_dags
 
-SERIALIZER = URLSafeSerializer(conf.get('webserver', 'secret_key'))
-FILE_TOKEN = SERIALIZER.dumps(__file__)
+
+@pytest.fixture()
+def current_file_token(url_safe_serializer) -> str:
+    return url_safe_serializer.dumps(__file__)
+
+
 DAG_ID = "test_dag"
 TASK_ID = "op1"
 DAG2_ID = "test_dag2"
@@ -246,7 +248,7 @@ class TestGetDag(TestDagEndpoint):
 
 
 class TestGetDagDetails(TestDagEndpoint):
-    def test_should_respond_200(self):
+    def test_should_respond_200(self, current_file_token):
         response = self.client.get(
             f"/api/v1/dags/{self.dag_id}/details", environ_overrides={'REMOTE_USER': "test"}
         )
@@ -262,7 +264,7 @@ class TestGetDagDetails(TestDagEndpoint):
             "description": None,
             "doc_md": "details",
             "fileloc": __file__,
-            "file_token": FILE_TOKEN,
+            "file_token": current_file_token,
             "is_paused": None,
             "is_active": None,
             "is_subdag": False,
@@ -294,7 +296,7 @@ class TestGetDagDetails(TestDagEndpoint):
         }
         assert response.json == expected
 
-    def test_should_response_200_with_doc_md_none(self):
+    def test_should_response_200_with_doc_md_none(self, current_file_token):
         response = self.client.get(
             f"/api/v1/dags/{self.dag2_id}/details", environ_overrides={'REMOTE_USER': "test"}
         )
@@ -310,7 +312,7 @@ class TestGetDagDetails(TestDagEndpoint):
             "description": None,
             "doc_md": None,
             "fileloc": __file__,
-            "file_token": FILE_TOKEN,
+            "file_token": current_file_token,
             "is_paused": None,
             "is_active": None,
             "is_subdag": False,
@@ -335,7 +337,7 @@ class TestGetDagDetails(TestDagEndpoint):
         }
         assert response.json == expected
 
-    def test_should_response_200_for_null_start_date(self):
+    def test_should_response_200_for_null_start_date(self, current_file_token):
         response = self.client.get(
             f"/api/v1/dags/{self.dag3_id}/details", environ_overrides={'REMOTE_USER': "test"}
         )
@@ -351,7 +353,7 @@ class TestGetDagDetails(TestDagEndpoint):
             "description": None,
             "doc_md": None,
             "fileloc": __file__,
-            "file_token": FILE_TOKEN,
+            "file_token": current_file_token,
             "is_paused": None,
             "is_active": None,
             "is_subdag": False,
@@ -376,7 +378,7 @@ class TestGetDagDetails(TestDagEndpoint):
         }
         assert response.json == expected
 
-    def test_should_respond_200_serialized(self):
+    def test_should_respond_200_serialized(self, current_file_token):
         # Get the dag out of the dagbag before we patch it to an empty one
         SerializedDagModel.write_dag(self.app.dag_bag.get_dag(self.dag_id))
 
@@ -395,7 +397,7 @@ class TestGetDagDetails(TestDagEndpoint):
             "description": None,
             "doc_md": "details",
             "fileloc": __file__,
-            "file_token": FILE_TOKEN,
+            "file_token": current_file_token,
             "is_paused": None,
             "is_active": None,
             "is_subdag": False,
@@ -449,7 +451,7 @@ class TestGetDagDetails(TestDagEndpoint):
             'description': None,
             'doc_md': 'details',
             'fileloc': __file__,
-            "file_token": FILE_TOKEN,
+            "file_token": current_file_token,
             'is_paused': None,
             "is_active": None,
             'is_subdag': False,
@@ -496,7 +498,7 @@ class TestGetDagDetails(TestDagEndpoint):
 
 class TestGetDags(TestDagEndpoint):
     @provide_session
-    def test_should_respond_200(self, session):
+    def test_should_respond_200(self, session, url_safe_serializer):
         self._create_dag_models(2)
         self._create_deactivated_dag()
 
@@ -504,8 +506,8 @@ class TestGetDags(TestDagEndpoint):
         assert len(dags_query.all()) == 3
 
         response = self.client.get("api/v1/dags", environ_overrides={'REMOTE_USER': "test"})
-        file_token = SERIALIZER.dumps("/tmp/dag_1.py")
-        file_token2 = SERIALIZER.dumps("/tmp/dag_2.py")
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
+        file_token2 = url_safe_serializer.dumps("/tmp/dag_2.py")
 
         assert response.status_code == 200
         assert {
@@ -576,11 +578,11 @@ class TestGetDags(TestDagEndpoint):
             "total_entries": 2,
         } == response.json
 
-    def test_only_active_true_returns_active_dags(self):
+    def test_only_active_true_returns_active_dags(self, url_safe_serializer):
         self._create_dag_models(1)
         self._create_deactivated_dag()
         response = self.client.get("api/v1/dags?only_active=True", environ_overrides={'REMOTE_USER': "test"})
-        file_token = SERIALIZER.dumps("/tmp/dag_1.py")
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
         assert response.status_code == 200
         assert {
             "dags": [
@@ -619,12 +621,12 @@ class TestGetDags(TestDagEndpoint):
             "total_entries": 1,
         } == response.json
 
-    def test_only_active_false_returns_all_dags(self):
+    def test_only_active_false_returns_all_dags(self, url_safe_serializer):
         self._create_dag_models(1)
         self._create_deactivated_dag()
         response = self.client.get("api/v1/dags?only_active=False", environ_overrides={'REMOTE_USER': "test"})
-        file_token = SERIALIZER.dumps("/tmp/dag_1.py")
-        file_token_2 = SERIALIZER.dumps("/tmp/dag_del_1.py")
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
+        file_token_2 = url_safe_serializer.dumps("/tmp/dag_del_1.py")
         assert response.status_code == 200
         assert {
             "dags": [
@@ -819,10 +821,8 @@ class TestGetDags(TestDagEndpoint):
 
 
 class TestPatchDag(TestDagEndpoint):
-
-    file_token = SERIALIZER.dumps("/tmp/dag_1.py")
-
-    def test_should_respond_200_on_patch_is_paused(self):
+    def test_should_respond_200_on_patch_is_paused(self, url_safe_serializer):
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
         dag_model = self._create_dag_model()
         response = self.client.patch(
             f"/api/v1/dags/{dag_model.dag_id}",
@@ -832,12 +832,11 @@ class TestPatchDag(TestDagEndpoint):
             environ_overrides={'REMOTE_USER': "test"},
         )
         assert response.status_code == 200
-
         expected_response = {
             "dag_id": "TEST_DAG_1",
             "description": None,
             "fileloc": "/tmp/dag_1.py",
-            "file_token": self.file_token,
+            "file_token": file_token,
             "is_paused": False,
             "is_active": False,
             "is_subdag": False,
@@ -918,7 +917,8 @@ class TestPatchDag(TestDagEndpoint):
 
         assert_401(response)
 
-    def test_should_respond_200_with_update_mask(self):
+    def test_should_respond_200_with_update_mask(self, url_safe_serializer):
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
         dag_model = self._create_dag_model()
         payload = {
             "is_paused": False,
@@ -934,7 +934,7 @@ class TestPatchDag(TestDagEndpoint):
             "dag_id": "TEST_DAG_1",
             "description": None,
             "fileloc": "/tmp/dag_1.py",
-            "file_token": self.file_token,
+            "file_token": file_token,
             "is_paused": False,
             "is_active": False,
             "is_subdag": False,
@@ -1006,12 +1006,10 @@ class TestPatchDag(TestDagEndpoint):
 
 
 class TestPatchDags(TestDagEndpoint):
-
-    file_token = SERIALIZER.dumps("/tmp/dag_1.py")
-    file_token2 = SERIALIZER.dumps("/tmp/dag_2.py")
-
     @provide_session
-    def test_should_respond_200_on_patch_is_paused(self, session):
+    def test_should_respond_200_on_patch_is_paused(self, session, url_safe_serializer):
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
+        file_token2 = url_safe_serializer.dumps("/tmp/dag_2.py")
         self._create_dag_models(2)
         self._create_deactivated_dag()
 
@@ -1033,7 +1031,7 @@ class TestPatchDags(TestDagEndpoint):
                     "dag_id": "TEST_DAG_1",
                     "description": None,
                     "fileloc": "/tmp/dag_1.py",
-                    "file_token": self.file_token,
+                    "file_token": file_token,
                     "is_paused": False,
                     "is_active": True,
                     "is_subdag": False,
@@ -1064,7 +1062,7 @@ class TestPatchDags(TestDagEndpoint):
                     "dag_id": "TEST_DAG_2",
                     "description": None,
                     "fileloc": "/tmp/dag_2.py",
-                    "file_token": self.file_token2,
+                    "file_token": file_token2,
                     "is_paused": False,
                     "is_active": True,
                     "is_subdag": False,
@@ -1095,7 +1093,8 @@ class TestPatchDags(TestDagEndpoint):
             "total_entries": 2,
         } == response.json
 
-    def test_only_active_true_returns_active_dags(self):
+    def test_only_active_true_returns_active_dags(self, url_safe_serializer):
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
         self._create_dag_models(1)
         self._create_deactivated_dag()
         response = self.client.patch(
@@ -1112,7 +1111,7 @@ class TestPatchDags(TestDagEndpoint):
                     "dag_id": "TEST_DAG_1",
                     "description": None,
                     "fileloc": "/tmp/dag_1.py",
-                    "file_token": self.file_token,
+                    "file_token": file_token,
                     "is_paused": False,
                     "is_active": True,
                     "is_subdag": False,
@@ -1143,7 +1142,8 @@ class TestPatchDags(TestDagEndpoint):
             "total_entries": 1,
         } == response.json
 
-    def test_only_active_false_returns_all_dags(self):
+    def test_only_active_false_returns_all_dags(self, url_safe_serializer):
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
         self._create_dag_models(1)
         self._create_deactivated_dag()
         response = self.client.patch(
@@ -1154,7 +1154,7 @@ class TestPatchDags(TestDagEndpoint):
             environ_overrides={'REMOTE_USER': "test"},
         )
 
-        file_token_2 = SERIALIZER.dumps("/tmp/dag_del_1.py")
+        file_token_2 = url_safe_serializer.dumps("/tmp/dag_del_1.py")
         assert response.status_code == 200
         assert {
             "dags": [
@@ -1162,7 +1162,7 @@ class TestPatchDags(TestDagEndpoint):
                     "dag_id": "TEST_DAG_1",
                     "description": None,
                     "fileloc": "/tmp/dag_1.py",
-                    "file_token": self.file_token,
+                    "file_token": file_token,
                     "is_paused": False,
                     "is_active": True,
                     "is_subdag": False,
@@ -1399,7 +1399,9 @@ class TestPatchDags(TestDagEndpoint):
 
         assert response.status_code == 403
 
-    def test_should_respond_200_and_pause_dags(self):
+    def test_should_respond_200_and_pause_dags(self, url_safe_serializer):
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
+        file_token2 = url_safe_serializer.dumps("/tmp/dag_2.py")
         self._create_dag_models(2)
 
         response = self.client.patch(
@@ -1417,7 +1419,7 @@ class TestPatchDags(TestDagEndpoint):
                     "dag_id": "TEST_DAG_1",
                     "description": None,
                     "fileloc": "/tmp/dag_1.py",
-                    "file_token": self.file_token,
+                    "file_token": file_token,
                     "is_paused": True,
                     "is_active": True,
                     "is_subdag": False,
@@ -1448,7 +1450,7 @@ class TestPatchDags(TestDagEndpoint):
                     "dag_id": "TEST_DAG_2",
                     "description": None,
                     "fileloc": "/tmp/dag_2.py",
-                    "file_token": self.file_token2,
+                    "file_token": file_token2,
                     "is_paused": True,
                     "is_active": True,
                     "is_subdag": False,
@@ -1480,9 +1482,10 @@ class TestPatchDags(TestDagEndpoint):
         } == response.json
 
     @provide_session
-    def test_should_respond_200_and_pause_dag_pattern(self, session):
+    def test_should_respond_200_and_pause_dag_pattern(self, session, url_safe_serializer):
+        file_token = url_safe_serializer.dumps("/tmp/dag_1.py")
         self._create_dag_models(10)
-        file_token10 = SERIALIZER.dumps("/tmp/dag_10.py")
+        file_token10 = url_safe_serializer.dumps("/tmp/dag_10.py")
 
         response = self.client.patch(
             "/api/v1/dags?dag_id_pattern=TEST_DAG_1",
@@ -1499,7 +1502,7 @@ class TestPatchDags(TestDagEndpoint):
                     "dag_id": "TEST_DAG_1",
                     "description": None,
                     "fileloc": "/tmp/dag_1.py",
-                    "file_token": self.file_token,
+                    "file_token": file_token,
                     "is_paused": True,
                     "is_active": True,
                     "is_subdag": False,
diff --git a/tests/api_connexion/endpoints/test_dag_source_endpoint.py b/tests/api_connexion/endpoints/test_dag_source_endpoint.py
index 5fec9f2798..cb8b5a9c11 100644
--- a/tests/api_connexion/endpoints/test_dag_source_endpoint.py
+++ b/tests/api_connexion/endpoints/test_dag_source_endpoint.py
@@ -19,10 +19,8 @@ import os
 from typing import Optional
 
 import pytest
-from itsdangerous import URLSafeSerializer
 
 from airflow import DAG
-from airflow.configuration import conf
 from airflow.models import DagBag
 from airflow.security import permissions
 from tests.test_utils.api_connexion_utils import assert_401, create_user, delete_user
@@ -73,15 +71,14 @@ class TestGetSource:
         docstring = ast.get_docstring(module)
         return docstring
 
-    def test_should_respond_200_text(self):
-        serializer = URLSafeSerializer(conf.get('webserver', 'SECRET_KEY'))
+    def test_should_respond_200_text(self, url_safe_serializer):
 
         dagbag = DagBag(dag_folder=EXAMPLE_DAG_FILE)
         dagbag.sync_to_db()
         first_dag: DAG = next(iter(dagbag.dags.values()))
         dag_docstring = self._get_dag_file_docstring(first_dag.fileloc)
 
-        url = f"/api/v1/dagSources/{serializer.dumps(first_dag.fileloc)}"
+        url = f"/api/v1/dagSources/{url_safe_serializer.dumps(first_dag.fileloc)}"
         response = self.client.get(
             url, headers={"Accept": "text/plain"}, environ_overrides={'REMOTE_USER': "test"}
         )
@@ -90,14 +87,13 @@ class TestGetSource:
         assert dag_docstring in response.data.decode()
         assert 'text/plain' == response.headers['Content-Type']
 
-    def test_should_respond_200_json(self):
-        serializer = URLSafeSerializer(conf.get('webserver', 'SECRET_KEY'))
+    def test_should_respond_200_json(self, url_safe_serializer):
         dagbag = DagBag(dag_folder=EXAMPLE_DAG_FILE)
         dagbag.sync_to_db()
         first_dag: DAG = next(iter(dagbag.dags.values()))
         dag_docstring = self._get_dag_file_docstring(first_dag.fileloc)
 
-        url = f"/api/v1/dagSources/{serializer.dumps(first_dag.fileloc)}"
+        url = f"/api/v1/dagSources/{url_safe_serializer.dumps(first_dag.fileloc)}"
         response = self.client.get(
             url, headers={"Accept": 'application/json'}, environ_overrides={'REMOTE_USER': "test"}
         )
@@ -106,13 +102,12 @@ class TestGetSource:
         assert dag_docstring in response.json['content']
         assert 'application/json' == response.headers['Content-Type']
 
-    def test_should_respond_406(self):
-        serializer = URLSafeSerializer(conf.get('webserver', 'SECRET_KEY'))
+    def test_should_respond_406(self, url_safe_serializer):
         dagbag = DagBag(dag_folder=EXAMPLE_DAG_FILE)
         dagbag.sync_to_db()
         first_dag: DAG = next(iter(dagbag.dags.values()))
 
-        url = f"/api/v1/dagSources/{serializer.dumps(first_dag.fileloc)}"
+        url = f"/api/v1/dagSources/{url_safe_serializer.dumps(first_dag.fileloc)}"
         response = self.client.get(
             url, headers={"Accept": 'image/webp'}, environ_overrides={'REMOTE_USER': "test"}
         )
@@ -128,27 +123,25 @@ class TestGetSource:
 
         assert 404 == response.status_code
 
-    def test_should_raises_401_unauthenticated(self):
-        serializer = URLSafeSerializer(conf.get('webserver', 'SECRET_KEY'))
+    def test_should_raises_401_unauthenticated(self, url_safe_serializer):
         dagbag = DagBag(dag_folder=EXAMPLE_DAG_FILE)
         dagbag.sync_to_db()
         first_dag: DAG = next(iter(dagbag.dags.values()))
 
         response = self.client.get(
-            f"/api/v1/dagSources/{serializer.dumps(first_dag.fileloc)}",
+            f"/api/v1/dagSources/{url_safe_serializer.dumps(first_dag.fileloc)}",
             headers={"Accept": "text/plain"},
         )
 
         assert_401(response)
 
-    def test_should_raise_403_forbidden(self):
-        serializer = URLSafeSerializer(conf.get('webserver', 'SECRET_KEY'))
+    def test_should_raise_403_forbidden(self, url_safe_serializer):
         dagbag = DagBag(dag_folder=EXAMPLE_DAG_FILE)
         dagbag.sync_to_db()
         first_dag: DAG = next(iter(dagbag.dags.values()))
 
         response = self.client.get(
-            f"/api/v1/dagSources/{serializer.dumps(first_dag.fileloc)}",
+            f"/api/v1/dagSources/{url_safe_serializer.dumps(first_dag.fileloc)}",
             headers={"Accept": "text/plain"},
             environ_overrides={'REMOTE_USER': "test_no_permissions"},
         )
diff --git a/tests/api_connexion/endpoints/test_xcom_endpoint.py b/tests/api_connexion/endpoints/test_xcom_endpoint.py
index 7c4452dc2b..efcba32711 100644
--- a/tests/api_connexion/endpoints/test_xcom_endpoint.py
+++ b/tests/api_connexion/endpoints/test_xcom_endpoint.py
@@ -185,7 +185,7 @@ class TestGetXComEntries(TestXComEndpoint):
         response_data = response.json
         for xcom_entry in response_data['xcom_entries']:
             xcom_entry['timestamp'] = "TIMESTAMP"
-        assert response.json == {
+        assert response_data == {
             'xcom_entries': [
                 {
                     'dag_id': dag_id,
@@ -227,7 +227,7 @@ class TestGetXComEntries(TestXComEndpoint):
         response_data = response.json
         for xcom_entry in response_data['xcom_entries']:
             xcom_entry['timestamp'] = "TIMESTAMP"
-        assert response.json == {
+        assert response_data == {
             'xcom_entries': [
                 {
                     'dag_id': dag_id_1,
@@ -283,7 +283,7 @@ class TestGetXComEntries(TestXComEndpoint):
         response_data = response.json
         for xcom_entry in response_data['xcom_entries']:
             xcom_entry['timestamp'] = "TIMESTAMP"
-        assert response.json == {
+        assert response_data == {
             'xcom_entries': [
                 {
                     'dag_id': dag_id_1,
diff --git a/tests/api_connexion/schemas/test_dag_schema.py b/tests/api_connexion/schemas/test_dag_schema.py
index ca7e04ae89..040ce41f1d 100644
--- a/tests/api_connexion/schemas/test_dag_schema.py
+++ b/tests/api_connexion/schemas/test_dag_schema.py
@@ -15,11 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 
-import unittest
 from datetime import datetime
 
-from itsdangerous import URLSafeSerializer
-
 from airflow import DAG
 from airflow.api_connexion.schemas.dag_schema import (
     DAGCollection,
@@ -27,174 +24,168 @@ from airflow.api_connexion.schemas.dag_schema import (
     DAGDetailSchema,
     DAGSchema,
 )
-from airflow.configuration import conf
 from airflow.models import DagModel, DagTag
 
-SERIALIZER = URLSafeSerializer(conf.get('webserver', 'SECRET_KEY'))
-
 
-class TestDagSchema(unittest.TestCase):
-    def test_serialize(self):
-        dag_model = DagModel(
-            dag_id="test_dag_id",
-            root_dag_id="test_root_dag_id",
-            is_paused=True,
-            is_active=True,
-            is_subdag=False,
-            fileloc="/root/airflow/dags/my_dag.py",
-            owners="airflow1,airflow2",
-            description="The description",
-            schedule_interval="5 4 * * *",
-            tags=[DagTag(name="tag-1"), DagTag(name="tag-2")],
-        )
-        serialized_dag = DAGSchema().dump(dag_model)
+def test_serialize_test_dag_schema(url_safe_serializer):
+    dag_model = DagModel(
+        dag_id="test_dag_id",
+        root_dag_id="test_root_dag_id",
+        is_paused=True,
+        is_active=True,
+        is_subdag=False,
+        fileloc="/root/airflow/dags/my_dag.py",
+        owners="airflow1,airflow2",
+        description="The description",
+        schedule_interval="5 4 * * *",
+        tags=[DagTag(name="tag-1"), DagTag(name="tag-2")],
+    )
+    serialized_dag = DAGSchema().dump(dag_model)
 
-        assert {
-            "dag_id": "test_dag_id",
-            "description": "The description",
-            "fileloc": "/root/airflow/dags/my_dag.py",
-            "file_token": SERIALIZER.dumps("/root/airflow/dags/my_dag.py"),
-            "is_paused": True,
-            "is_active": True,
-            "is_subdag": False,
-            "owners": ["airflow1", "airflow2"],
-            "root_dag_id": "test_root_dag_id",
-            "schedule_interval": {"__type": "CronExpression", "value": "5 4 * * *"},
-            "tags": [{"name": "tag-1"}, {"name": "tag-2"}],
-            'next_dagrun': None,
-            'has_task_concurrency_limits': True,
-            'next_dagrun_data_interval_start': None,
-            'next_dagrun_data_interval_end': None,
-            'max_active_runs': 16,
-            'next_dagrun_create_after': None,
-            'last_expired': None,
-            'max_active_tasks': 16,
-            'last_pickled': None,
-            'default_view': None,
-            'last_parsed_time': None,
-            'scheduler_lock': None,
-            'timetable_description': None,
-            'has_import_errors': None,
-            'pickle_id': None,
-        } == serialized_dag
+    assert {
+        "dag_id": "test_dag_id",
+        "description": "The description",
+        "fileloc": "/root/airflow/dags/my_dag.py",
+        "file_token": url_safe_serializer.dumps("/root/airflow/dags/my_dag.py"),
+        "is_paused": True,
+        "is_active": True,
+        "is_subdag": False,
+        "owners": ["airflow1", "airflow2"],
+        "root_dag_id": "test_root_dag_id",
+        "schedule_interval": {"__type": "CronExpression", "value": "5 4 * * *"},
+        "tags": [{"name": "tag-1"}, {"name": "tag-2"}],
+        'next_dagrun': None,
+        'has_task_concurrency_limits': True,
+        'next_dagrun_data_interval_start': None,
+        'next_dagrun_data_interval_end': None,
+        'max_active_runs': 16,
+        'next_dagrun_create_after': None,
+        'last_expired': None,
+        'max_active_tasks': 16,
+        'last_pickled': None,
+        'default_view': None,
+        'last_parsed_time': None,
+        'scheduler_lock': None,
+        'timetable_description': None,
+        'has_import_errors': None,
+        'pickle_id': None,
+    } == serialized_dag
 
 
-class TestDAGCollectionSchema(unittest.TestCase):
-    def test_serialize(self):
-        dag_model_a = DagModel(dag_id="test_dag_id_a", fileloc="/tmp/a.py")
-        dag_model_b = DagModel(dag_id="test_dag_id_b", fileloc="/tmp/a.py")
-        schema = DAGCollectionSchema()
-        instance = DAGCollection(dags=[dag_model_a, dag_model_b], total_entries=2)
-        assert {
-            "dags": [
-                {
-                    "dag_id": "test_dag_id_a",
-                    "description": None,
-                    "fileloc": "/tmp/a.py",
-                    "file_token": SERIALIZER.dumps("/tmp/a.py"),
-                    "is_paused": None,
-                    "is_subdag": None,
-                    "is_active": None,
-                    "owners": [],
-                    "root_dag_id": None,
-                    "schedule_interval": None,
-                    "tags": [],
-                    'next_dagrun': None,
-                    'has_task_concurrency_limits': True,
-                    'next_dagrun_data_interval_start': None,
-                    'next_dagrun_data_interval_end': None,
-                    'max_active_runs': 16,
-                    'next_dagrun_create_after': None,
-                    'last_expired': None,
-                    'max_active_tasks': 16,
-                    'last_pickled': None,
-                    'default_view': None,
-                    'last_parsed_time': None,
-                    'scheduler_lock': None,
-                    'timetable_description': None,
-                    'has_import_errors': None,
-                    'pickle_id': None,
-                },
-                {
-                    "dag_id": "test_dag_id_b",
-                    "description": None,
-                    "fileloc": "/tmp/a.py",
-                    "file_token": SERIALIZER.dumps("/tmp/a.py"),
-                    "is_active": None,
-                    "is_paused": None,
-                    "is_subdag": None,
-                    "owners": [],
-                    "root_dag_id": None,
-                    "schedule_interval": None,
-                    "tags": [],
-                    'next_dagrun': None,
-                    'has_task_concurrency_limits': True,
-                    'next_dagrun_data_interval_start': None,
-                    'next_dagrun_data_interval_end': None,
-                    'max_active_runs': 16,
-                    'next_dagrun_create_after': None,
-                    'last_expired': None,
-                    'max_active_tasks': 16,
-                    'last_pickled': None,
-                    'default_view': None,
-                    'last_parsed_time': None,
-                    'scheduler_lock': None,
-                    'timetable_description': None,
-                    'has_import_errors': None,
-                    'pickle_id': None,
-                },
-            ],
-            "total_entries": 2,
-        } == schema.dump(instance)
+def test_serialize_test_dag_collection_schema(url_safe_serializer):
+    dag_model_a = DagModel(dag_id="test_dag_id_a", fileloc="/tmp/a.py")
+    dag_model_b = DagModel(dag_id="test_dag_id_b", fileloc="/tmp/a.py")
+    schema = DAGCollectionSchema()
+    instance = DAGCollection(dags=[dag_model_a, dag_model_b], total_entries=2)
+    assert {
+        "dags": [
+            {
+                "dag_id": "test_dag_id_a",
+                "description": None,
+                "fileloc": "/tmp/a.py",
+                "file_token": url_safe_serializer.dumps("/tmp/a.py"),
+                "is_paused": None,
+                "is_subdag": None,
+                "is_active": None,
+                "owners": [],
+                "root_dag_id": None,
+                "schedule_interval": None,
+                "tags": [],
+                'next_dagrun': None,
+                'has_task_concurrency_limits': True,
+                'next_dagrun_data_interval_start': None,
+                'next_dagrun_data_interval_end': None,
+                'max_active_runs': 16,
+                'next_dagrun_create_after': None,
+                'last_expired': None,
+                'max_active_tasks': 16,
+                'last_pickled': None,
+                'default_view': None,
+                'last_parsed_time': None,
+                'scheduler_lock': None,
+                'timetable_description': None,
+                'has_import_errors': None,
+                'pickle_id': None,
+            },
+            {
+                "dag_id": "test_dag_id_b",
+                "description": None,
+                "fileloc": "/tmp/a.py",
+                "file_token": url_safe_serializer.dumps("/tmp/a.py"),
+                "is_active": None,
+                "is_paused": None,
+                "is_subdag": None,
+                "owners": [],
+                "root_dag_id": None,
+                "schedule_interval": None,
+                "tags": [],
+                'next_dagrun': None,
+                'has_task_concurrency_limits': True,
+                'next_dagrun_data_interval_start': None,
+                'next_dagrun_data_interval_end': None,
+                'max_active_runs': 16,
+                'next_dagrun_create_after': None,
+                'last_expired': None,
+                'max_active_tasks': 16,
+                'last_pickled': None,
+                'default_view': None,
+                'last_parsed_time': None,
+                'scheduler_lock': None,
+                'timetable_description': None,
+                'has_import_errors': None,
+                'pickle_id': None,
+            },
+        ],
+        "total_entries": 2,
+    } == schema.dump(instance)
 
 
-class TestDAGDetailSchema:
-    def test_serialize(self):
-        dag = DAG(
-            dag_id="test_dag",
-            start_date=datetime(2020, 6, 19),
-            doc_md="docs",
-            orientation="LR",
-            default_view="duration",
-            params={"foo": 1},
-            tags=['example1', 'example2'],
-        )
-        schema = DAGDetailSchema()
+def test_serialize_test_dag_detail_schema(url_safe_serializer):
+    dag = DAG(
+        dag_id="test_dag",
+        start_date=datetime(2020, 6, 19),
+        doc_md="docs",
+        orientation="LR",
+        default_view="duration",
+        params={"foo": 1},
+        tags=['example1', 'example2'],
+    )
+    schema = DAGDetailSchema()
 
-        expected = {
-            'catchup': True,
-            'concurrency': 16,
-            'max_active_tasks': 16,
-            'dag_id': 'test_dag',
-            'dag_run_timeout': None,
-            'default_view': 'duration',
-            'description': None,
-            'doc_md': 'docs',
-            'fileloc': __file__,
-            "file_token": SERIALIZER.dumps(__file__),
-            "is_active": None,
-            'is_paused': None,
-            'is_subdag': False,
-            'orientation': 'LR',
-            'owners': [],
-            'params': {
-                'foo': {
-                    '__class': 'airflow.models.param.Param',
-                    'value': 1,
-                    'description': None,
-                    'schema': {},
-                }
-            },
-            'schedule_interval': {'__type': 'TimeDelta', 'days': 1, 'seconds': 0, 'microseconds': 0},
-            'start_date': '2020-06-19T00:00:00+00:00',
-            'tags': [{'name': "example1"}, {'name': "example2"}],
-            'timezone': "Timezone('UTC')",
-            'max_active_runs': 16,
-            'pickle_id': None,
-            "end_date": None,
-            'is_paused_upon_creation': None,
-            'render_template_as_native_obj': False,
-        }
-        obj = schema.dump(dag)
-        expected.update({'last_parsed': obj['last_parsed']})
-        assert obj == expected
+    expected = {
+        'catchup': True,
+        'concurrency': 16,
+        'max_active_tasks': 16,
+        'dag_id': 'test_dag',
+        'dag_run_timeout': None,
+        'default_view': 'duration',
+        'description': None,
+        'doc_md': 'docs',
+        'fileloc': __file__,
+        "file_token": url_safe_serializer.dumps(__file__),
+        "is_active": None,
+        'is_paused': None,
+        'is_subdag': False,
+        'orientation': 'LR',
+        'owners': [],
+        'params': {
+            'foo': {
+                '__class': 'airflow.models.param.Param',
+                'value': 1,
+                'description': None,
+                'schema': {},
+            }
+        },
+        'schedule_interval': {'__type': 'TimeDelta', 'days': 1, 'seconds': 0, 'microseconds': 0},
+        'start_date': '2020-06-19T00:00:00+00:00',
+        'tags': [{'name': "example1"}, {'name': "example2"}],
+        'timezone': "Timezone('UTC')",
+        'max_active_runs': 16,
+        'pickle_id': None,
+        "end_date": None,
+        'is_paused_upon_creation': None,
+        'render_template_as_native_obj': False,
+    }
+    obj = schema.dump(dag)
+    expected.update({'last_parsed': obj['last_parsed']})
+    assert obj == expected
diff --git a/tests/conftest.py b/tests/conftest.py
index 468da514b0..68d318e13c 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -26,6 +26,8 @@ import pytest
 
 # We should set these before loading _any_ of the rest of airflow so that the
 # unit test mode config is set as early as possible.
+from itsdangerous import URLSafeSerializer
+
 assert "airflow" not in sys.modules, "No airflow module can be imported before these lines"
 tests_directory = os.path.dirname(os.path.realpath(__file__))
 
@@ -55,6 +57,28 @@ def reset_environment():
             os.environ[key] = init_env[key]
 
 
+@pytest.fixture()
+def secret_key() -> str:
+    """
+    Return secret key configured.
+    :return:
+    """
+    from airflow.configuration import conf
+
+    the_key = conf.get('webserver', 'SECRET_KEY')
+    if the_key is None:
+        raise RuntimeError(
+            "The secret key SHOULD be configured as `[webserver] secret_key` in the "
+            "configuration/environment at this stage! "
+        )
+    return the_key
+
+
+@pytest.fixture()
+def url_safe_serializer(secret_key) -> URLSafeSerializer:
+    return URLSafeSerializer(secret_key)
+
+
 @pytest.fixture()
 def reset_db():
     """
diff --git a/tests/test_utils/remote_user_api_auth_backend.py b/tests/test_utils/remote_user_api_auth_backend.py
index 1e6a0c70ad..187f57a7fd 100644
--- a/tests/test_utils/remote_user_api_auth_backend.py
+++ b/tests/test_utils/remote_user_api_auth_backend.py
@@ -20,10 +20,12 @@ import logging
 from functools import wraps
 from typing import Callable, Optional, Tuple, TypeVar, Union, cast
 
-from flask import Response, current_app, request
+from flask import Response, request
 from flask_login import login_user
 from requests.auth import AuthBase
 
+from airflow.utils.airflow_flask_app import get_airflow_app
+
 log = logging.getLogger(__name__)
 
 CLIENT_AUTH: Optional[Union[Tuple[str, str], AuthBase]] = None
@@ -37,7 +39,7 @@ T = TypeVar("T", bound=Callable)
 
 
 def _lookup_user(user_email_or_username: str):
-    security_manager = current_app.appbuilder.sm
+    security_manager = get_airflow_app().appbuilder.sm
     user = security_manager.find_user(email=user_email_or_username) or security_manager.find_user(
         username=user_email_or_username
     )
diff --git a/tests/utils/test_serve_logs.py b/tests/utils/test_serve_logs.py
index f8d3881759..ebbc663a2c 100644
--- a/tests/utils/test_serve_logs.py
+++ b/tests/utils/test_serve_logs.py
@@ -21,7 +21,6 @@ import jwt
 import pytest
 from freezegun import freeze_time
 
-from airflow.configuration import conf
 from airflow.utils.jwt_signer import JWTSigner
 from airflow.utils.serve_logs import create_app
 from tests.test_utils.config import conf_vars
@@ -49,18 +48,18 @@ def sample_log(tmpdir):
 
 
 @pytest.fixture
-def signer():
+def signer(secret_key):
     return JWTSigner(
-        secret_key=conf.get('webserver', 'secret_key'),
+        secret_key=secret_key,
         expiration_time_in_seconds=30,
         audience="task-instance-logs",
     )
 
 
 @pytest.fixture
-def different_audience():
+def different_audience(secret_key):
     return JWTSigner(
-        secret_key=conf.get('webserver', 'secret_key'),
+        secret_key=secret_key,
         expiration_time_in_seconds=30,
         audience="different-audience",
     )
@@ -180,7 +179,7 @@ class TestServeLogs:
         )
 
     @pytest.mark.parametrize("claim_to_remove", ["iat", "exp", "nbf", "aud"])
-    def test_missing_claims(self, claim_to_remove: str, client: "FlaskClient"):
+    def test_missing_claims(self, claim_to_remove: str, client: "FlaskClient", secret_key):
         jwt_dict = {
             "aud": "task-instance-logs",
             "iat": datetime.datetime.utcnow(),
@@ -191,7 +190,7 @@ class TestServeLogs:
         jwt_dict.update({"filename": 'sample.log'})
         token = jwt.encode(
             jwt_dict,
-            conf.get('webserver', 'secret_key'),
+            secret_key,
             algorithm="HS512",
         )
         assert (
diff --git a/tests/www/views/test_views.py b/tests/www/views/test_views.py
index 887bd4898a..fa79e145cb 100644
--- a/tests/www/views/test_views.py
+++ b/tests/www/views/test_views.py
@@ -375,52 +375,55 @@ def test_get_task_stats_from_query():
     assert data == expected_data
 
 
+INVALID_DATETIME_RESPONSE = "Invalid datetime: &#x27;invalid&#x27;"
+
+
 @pytest.mark.parametrize(
     "url, content",
     [
         (
             '/rendered-templates?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             '/log?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             '/redirect_to_external_log?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             '/task?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             'dags/example_bash_operator/graph?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             'dags/example_bash_operator/graph?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             'dags/example_bash_operator/duration?base_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             'dags/example_bash_operator/tries?base_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             'dags/example_bash_operator/landing-times?base_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             'dags/example_bash_operator/gantt?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
         (
             'extra_links?execution_date=invalid',
-            "Invalid datetime: 'invalid'",
+            INVALID_DATETIME_RESPONSE,
         ),
     ],
 )
diff --git a/tests/www/views/test_views_decorators.py b/tests/www/views/test_views_decorators.py
index 0e4fc12857..1de80c1214 100644
--- a/tests/www/views/test_views_decorators.py
+++ b/tests/www/views/test_views_decorators.py
@@ -213,9 +213,9 @@ def test_action_has_dag_edit_access(create_task_instance, class_type, no_instanc
     else:
         test_items = tis if class_type == TaskInstance else [ti.get_dagrun() for ti in tis]
         test_items = test_items[0] if len(test_items) == 1 else test_items
-
-    with app.create_app(testing=True).app_context():
-        with mock.patch("airflow.www.views.current_app.appbuilder.sm.can_edit_dag") as mocked_can_edit:
+    application = app.create_app(testing=True)
+    with application.app_context():
+        with mock.patch.object(application.appbuilder.sm, "can_edit_dag") as mocked_can_edit:
             mocked_can_edit.return_value = True
             assert not isinstance(test_items, list) or len(test_items) == no_instances
             assert some_view_action_which_requires_dag_edit_access(None, test_items) is True
diff --git a/tests/www/views/test_views_log.py b/tests/www/views/test_views_log.py
index f697cd3772..988d285936 100644
--- a/tests/www/views/test_views_log.py
+++ b/tests/www/views/test_views_log.py
@@ -464,7 +464,7 @@ def test_redirect_to_external_log_with_local_log_handler(log_admin_client, task_
     )
     response = log_admin_client.get(url)
     assert 302 == response.status_code
-    assert 'http://localhost/home' == response.headers['Location']
+    assert '/home' == response.headers['Location']
 
 
 class _ExternalHandler(ExternalLoggingMixin):
diff --git a/tests/www/views/test_views_mount.py b/tests/www/views/test_views_mount.py
index a9fb874665..3f504e9b0f 100644
--- a/tests/www/views/test_views_mount.py
+++ b/tests/www/views/test_views_mount.py
@@ -36,7 +36,7 @@ def app():
 
 @pytest.fixture()
 def client(app):
-    return werkzeug.test.Client(app, werkzeug.wrappers.BaseResponse)
+    return werkzeug.test.Client(app, werkzeug.wrappers.response.Response)
 
 
 def test_mount(client):
@@ -54,4 +54,4 @@ def test_not_found(client):
 def test_index(client):
     resp = client.get('/test/')
     assert resp.status_code == 302
-    assert resp.headers['Location'] == 'http://localhost/test/home'
+    assert resp.headers['Location'] == '/test/home'


[airflow] 23/39: Upgrade FAB to 4.1.2 (#24619)

Posted by po...@apache.org.
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 d72b745712f0809c0f4e794c13b83de5ac212ce4
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Thu Jun 23 21:56:28 2022 +0200

    Upgrade FAB to 4.1.2 (#24619)
    
    (cherry picked from commit b8a4ac51f68a7d1c1f6ac5434cdf027e812553c7)
---
 setup.cfg | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/setup.cfg b/setup.cfg
index a32326cee2..21d5912150 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -107,7 +107,7 @@ install_requires =
     # Every time we update FAB version here, please make sure that you review the classes and models in
     # `airflow/www/fab_security` with their upstream counterparts. In particular, make sure any breaking changes,
     # for example any new methods, are accounted for.
-    flask-appbuilder==4.1.1
+    flask-appbuilder==4.1.2
     flask-caching>=1.5.0
     flask-login>=0.5
     flask-session>=0.4.0


[airflow] 36/39: Add ARM image building for regular PRs (#24664)

Posted by po...@apache.org.
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 8913c99fce856328d8c8186acb4faedb72c72a7d
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 28 20:20:13 2022 +0200

    Add ARM image building for regular PRs (#24664)
    
    The image building for ARM is currently only done in the main build
    only to refresh cache, however there are sometimes cases when
    new dependency (for example #24635) broke ARM image build and it
    was only discovered after merge.
    
    This PR adds extra ARM-based build that should be run after
    the AMD64 build. It should not influence the depending steps,
    it should just signal failure of the PR if the ARM image cannot
    be build.
    
    (cherry picked from commit 2fbd750d35d12271ed4c5b9eb7564eb12e91bb03)
---
 .github/workflows/build-images.yml        | 105 ++++++++-
 .github/workflows/ci.yml                  |  77 +++++++
 images/breeze/output-build-image.svg      | 284 ++++++++++++------------
 images/breeze/output-build-prod-image.svg | 352 +++++++++++++++---------------
 images/breeze/output-commands-hash.txt    |   6 +
 5 files changed, 507 insertions(+), 317 deletions(-)

diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index 5c6b085b97..39c758a23d 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -225,21 +225,35 @@ jobs:
       - name: "Free space"
         run: breeze free-space
       - name: >
-          Build & Push CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          Build & Push AMD64 CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
         run: breeze build-image --push-image --tag-as-latest --run-in-parallel
+        if: matrix.platform == 'linux/amd64'
+        env:
+          UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
+          DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+      - name: "Start ARM instance"
+        run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
+        if: matrix.platform == 'linux/arm64'
+      - name: >
+          Build ARM CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+        run: breeze build-image --run-in-parallel
+        if: matrix.platform == 'linux/arm64'
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
       - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        if: failure() || cancelled()
+        if: (failure() || cancelled()) && matrix.platform == 'linux/amd64'
         run: breeze build-image --push-image --empty-image --run-in-parallel
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Candidates for pip resolver backtrack triggers"
-        if: failure() || cancelled()
+        if: (failure() || cancelled()) && matrix.platform == 'linux/amd64'
         run: >
           breeze find-newer-dependencies --max-age 1
           --python "${{ needs.build-info.outputs.defaultPythonVersion }}"
@@ -360,3 +374,88 @@ jobs:
       - name: "Fix ownership"
         run: breeze fix-ownership
         if: always()
+
+
+  build-ci-images-arm:
+    timeout-minutes: 80
+    name: "Build ARM CI images ${{ needs.build-info.outputs.allPythonVersionsListAsString }}"
+    runs-on: ${{ fromJson(needs.build-info.outputs.runsOn) }}
+    needs: [build-info, build-prod-images]
+    if: |
+      needs.build-info.outputs.image-build == 'true' &&
+      needs.build-info.outputs.upgradeToNewerDependencies != 'false' &&
+      github.event.pull_request.head.repo.full_name != 'apache/airflow'
+    env:
+      RUNS_ON: ${{ fromJson(needs.build-info.outputs.runsOn)[0] }}
+      BACKEND: sqlite
+      outputs: ${{toJSON(needs.build-info.outputs) }}
+    steps:
+      - name: Cleanup repo
+        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
+      - uses: actions/checkout@v2
+        with:
+          ref: ${{ needs.build-info.outputs.targetCommitSha }}
+          persist-credentials: false
+          submodules: recursive
+      - name: "Retrieve DEFAULTS from the _initialization.sh"
+        # We cannot "source" the script here because that would be a security problem (we cannot run
+        # any code that comes from the sources coming from the PR. Therefore, we extract the
+        # DEFAULT_BRANCH and DEFAULT_CONSTRAINTS_BRANCH and DEBIAN_VERSION via custom grep/awk/sed commands
+        id: defaults
+        run: |
+          DEFAULT_BRANCH=$(grep "export DEFAULT_BRANCH" scripts/ci/libraries/_initialization.sh | \
+            awk 'BEGIN{FS="="} {print $3}' | sed s'/["}]//g')
+          echo "DEFAULT_BRANCH=${DEFAULT_BRANCH}" >> $GITHUB_ENV
+          DEFAULT_CONSTRAINTS_BRANCH=$(grep "export DEFAULT_CONSTRAINTS_BRANCH" \
+            scripts/ci/libraries/_initialization.sh | \
+            awk 'BEGIN{FS="="} {print $3}' | sed s'/["}]//g')
+          echo "DEFAULT_CONSTRAINTS_BRANCH=${DEFAULT_CONSTRAINTS_BRANCH}" >> $GITHUB_ENV
+          DEBIAN_VERSION=$(grep "export DEBIAN_VERSION" scripts/ci/libraries/_initialization.sh | \
+            awk 'BEGIN{FS="="} {print $3}' | sed s'/["}]//g')
+          echo "DEBIAN_VERSION=${DEBIAN_VERSION}" >> $GITHUB_ENV
+      - name: >
+          Checkout "${{ needs.build-info.outputs.targetBranch }}" branch to 'main-airflow' folder
+          to use ci/scripts from there.
+        uses: actions/checkout@v2
+        with:
+          path: "main-airflow"
+          ref: "${{ needs.build-info.outputs.targetBranch }}"
+          persist-credentials: false
+          submodules: recursive
+      - name: >
+          Override "scripts/ci" with the "${{ needs.build-info.outputs.targetBranch }}" branch
+          so that the PR does not override it
+        # We should not override those scripts which become part of the image as they will not be
+        # changed in the image built - we should only override those that are executed to build
+        # the image.
+        run: |
+          rm -rfv "scripts/ci"
+          rm -rfv "dev"
+          mv -v "main-airflow/scripts/ci" "scripts"
+          mv -v "main-airflow/dev" "."
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ needs.build-info.outputs.defaultPythonVersion }}
+      - run: ./scripts/ci/install_breeze.sh
+      - name: "Free space"
+        run: breeze free-space
+      - name: "Start ARM instance"
+        run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
+      - name: >
+          Build ARM CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+        run: >
+          breeze build-image --run-in-parallel --parallelism 1
+          --builder airflow_cache --platform "linux/arm64"
+        env:
+          UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
+          DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+      - name: "Stop ARM instance"
+        run: ./scripts/ci/images/ci_stop_arm_instance.sh
+        if: always()
+      - name: "Fix ownership"
+        run: breeze fix-ownership
+        if: always()
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3606036f5a..383b311283 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1749,3 +1749,80 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
       - name: "Fix ownership"
         run: breeze fix-ownership
         if: always()
+
+  build-ci-arm-images:
+    timeout-minutes: 80
+    name: >
+      ${{needs.build-info.outputs.buildJobDescription}} CI ARM images
+      ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+    runs-on: ${{ fromJson(needs.build-info.outputs.runsOn) }}
+    needs:
+      - build-info
+      - wait-for-ci-images
+      - wait-for-prod-images
+      - static-checks
+      - tests-sqlite
+      - tests-mysql
+      - tests-mssql
+      - tests-postgres
+    env:
+      RUNS_ON: ${{ fromJson(needs.build-info.outputs.runsOn)[0] }}
+    if: needs.build-info.outputs.upgradeToNewerDependencies != 'false'
+    steps:
+      - name: Cleanup repo
+        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - uses: actions/checkout@v2
+        with:
+          ref: ${{ needs.build-info.outputs.targetCommitSha }}
+          persist-credentials: false
+          submodules: recursive
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ needs.build-info.outputs.defaultPythonVersion }}
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - name: "Retrieve DEFAULTS from the _initialization.sh"
+        # We cannot "source" the script here because that would be a security problem (we cannot run
+        # any code that comes from the sources coming from the PR. Therefore, we extract the
+        # DEFAULT_BRANCH and DEFAULT_CONSTRAINTS_BRANCH and DEBIAN_VERSION via custom grep/awk/sed commands
+        id: defaults
+        run: |
+          DEFAULT_BRANCH=$(grep "export DEFAULT_BRANCH" scripts/ci/libraries/_initialization.sh | \
+            awk 'BEGIN{FS="="} {print $3}' | sed s'/["}]//g')
+          echo "DEFAULT_BRANCH=${DEFAULT_BRANCH}" >> $GITHUB_ENV
+          DEFAULT_CONSTRAINTS_BRANCH=$(grep "export DEFAULT_CONSTRAINTS_BRANCH" \
+            scripts/ci/libraries/_initialization.sh | \
+            awk 'BEGIN{FS="="} {print $3}' | sed s'/["}]//g')
+          echo "DEFAULT_CONSTRAINTS_BRANCH=${DEFAULT_CONSTRAINTS_BRANCH}" >> $GITHUB_ENV
+          DEBIAN_VERSION=$(grep "export DEBIAN_VERSION" scripts/ci/libraries/_initialization.sh | \
+            awk 'BEGIN{FS="="} {print $3}' | sed s'/["}]//g')
+          echo "DEBIAN_VERSION=${DEBIAN_VERSION}" >> $GITHUB_ENV
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - run: ./scripts/ci/install_breeze.sh
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - name: "Free space"
+        run: breeze free-space
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - name: "Start ARM instance"
+        run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - name: >
+          Build CI ARM images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+        run: >
+          breeze build-image --run-in-parallel --parallelism 1
+          --builder airflow_cache --platform "linux/arm64"
+        env:
+          UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
+          DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+        if: needs.build-info.outputs.inWorkflowBuild == 'true'
+      - name: "Stop ARM instance"
+        run: ./scripts/ci/images/ci_stop_arm_instance.sh
+        if: always() && needs.build-info.outputs.inWorkflowBuild == 'true'
+      - name: "Fix ownership"
+        run: breeze fix-ownership
+        if: always() && needs.build-info.outputs.inWorkflowBuild == 'true'
diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg
index e84a5e189a..c0cc659eed 100644
--- a/images/breeze/output-build-image.svg
+++ b/images/breeze/output-build-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1587.1999999999998" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1611.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,293 +19,297 @@
         font-weight: 700;
     }
 
-    .terminal-1518364354-matrix {
+    .terminal-2881194963-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1518364354-title {
+    .terminal-2881194963-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1518364354-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1518364354-r2 { fill: #c5c8c6 }
-.terminal-1518364354-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1518364354-r4 { fill: #868887 }
-.terminal-1518364354-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1518364354-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1518364354-r7 { fill: #8d7b39 }
+    .terminal-2881194963-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2881194963-r2 { fill: #c5c8c6 }
+.terminal-2881194963-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2881194963-r4 { fill: #868887 }
+.terminal-2881194963-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2881194963-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2881194963-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1518364354-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1536.1999999999998" />
+    <clipPath id="terminal-2881194963-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1560.6" />
     </clipPath>
-    <clipPath id="terminal-1518364354-line-0">
+    <clipPath id="terminal-2881194963-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-1">
+<clipPath id="terminal-2881194963-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-2">
+<clipPath id="terminal-2881194963-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-3">
+<clipPath id="terminal-2881194963-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-4">
+<clipPath id="terminal-2881194963-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-5">
+<clipPath id="terminal-2881194963-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-6">
+<clipPath id="terminal-2881194963-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-7">
+<clipPath id="terminal-2881194963-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-8">
+<clipPath id="terminal-2881194963-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-9">
+<clipPath id="terminal-2881194963-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-10">
+<clipPath id="terminal-2881194963-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-11">
+<clipPath id="terminal-2881194963-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-12">
+<clipPath id="terminal-2881194963-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-13">
+<clipPath id="terminal-2881194963-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-14">
+<clipPath id="terminal-2881194963-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-15">
+<clipPath id="terminal-2881194963-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-16">
+<clipPath id="terminal-2881194963-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-17">
+<clipPath id="terminal-2881194963-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-18">
+<clipPath id="terminal-2881194963-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-19">
+<clipPath id="terminal-2881194963-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-20">
+<clipPath id="terminal-2881194963-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-21">
+<clipPath id="terminal-2881194963-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-22">
+<clipPath id="terminal-2881194963-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-23">
+<clipPath id="terminal-2881194963-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-24">
+<clipPath id="terminal-2881194963-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-25">
+<clipPath id="terminal-2881194963-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-26">
+<clipPath id="terminal-2881194963-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-27">
+<clipPath id="terminal-2881194963-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-28">
+<clipPath id="terminal-2881194963-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-29">
+<clipPath id="terminal-2881194963-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-30">
+<clipPath id="terminal-2881194963-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-31">
+<clipPath id="terminal-2881194963-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-32">
+<clipPath id="terminal-2881194963-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-33">
+<clipPath id="terminal-2881194963-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-34">
+<clipPath id="terminal-2881194963-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-35">
+<clipPath id="terminal-2881194963-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-36">
+<clipPath id="terminal-2881194963-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-37">
+<clipPath id="terminal-2881194963-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-38">
+<clipPath id="terminal-2881194963-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-39">
+<clipPath id="terminal-2881194963-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-40">
+<clipPath id="terminal-2881194963-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-41">
+<clipPath id="terminal-2881194963-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-42">
+<clipPath id="terminal-2881194963-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-43">
+<clipPath id="terminal-2881194963-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-44">
+<clipPath id="terminal-2881194963-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-45">
+<clipPath id="terminal-2881194963-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-46">
+<clipPath id="terminal-2881194963-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-47">
+<clipPath id="terminal-2881194963-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-48">
+<clipPath id="terminal-2881194963-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-49">
+<clipPath id="terminal-2881194963-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-50">
+<clipPath id="terminal-2881194963-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-51">
+<clipPath id="terminal-2881194963-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-52">
+<clipPath id="terminal-2881194963-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-53">
+<clipPath id="terminal-2881194963-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-54">
+<clipPath id="terminal-2881194963-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-55">
+<clipPath id="terminal-2881194963-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-56">
+<clipPath id="terminal-2881194963-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-57">
+<clipPath id="terminal-2881194963-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-58">
+<clipPath id="terminal-2881194963-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-59">
+<clipPath id="terminal-2881194963-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-60">
+<clipPath id="terminal-2881194963-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1518364354-line-61">
+<clipPath id="terminal-2881194963-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2881194963-line-62">
+    <rect x="0" y="1514.3" 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="1585.2" rx="8"/><text class="terminal-1518364354-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1609.6" rx="8"/><text class="terminal-2881194963-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-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-1518364354-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2881194963-clip-terminal)">
     
-    <g class="terminal-1518364354-matrix">
-    <text class="terminal-1518364354-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1518364354-line-0)">
-</text><text class="terminal-1518364354-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1518364354-line-1)">Usage:&#160;</text><text class="terminal-1518364354-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-1518364354-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-1518364354-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-1)">
-</text><text class="terminal-1518364354-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-2)">
-</text><text class="terminal-1518364354-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-1518364354-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-1518364354-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-3)">
-</text><text class="terminal-1518364354-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-4)">
-</text><text class="terminal-1518364354-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1518364354-line-5)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1518364354-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-151836 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-6)">│</text><text class="terminal-1518364354-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-6)">-</text><text class="terminal-1518364354-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1518364354-line-6)">-python</text><text class="terminal-1518364354-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-151 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-7)">│</text><text class="terminal-1518364354-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-8)">│</text><text class="terminal-1518364354-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-9)">│</text><text class="terminal-1518364354-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-9)">-</text><text class="terminal-1518364354-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1518364354-line-9)">-upgrade</text><text class="terminal-1518364354-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
-</text><text class="terminal-1518364354-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1518364354-line-10)">│</text><text class="terminal-1518364354-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1518364354-line-10)">-</text><text class="terminal-1518364354-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-1518364354-line-10)">-debian</text><text class="terminal-1518364354-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-15183643 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-11)">│</text><text class="terminal-1518364354-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-11)">-</text><text class="terminal-1518364354-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1518364354-line-11)">-image</text><text class="terminal-1518364354-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1518364354-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-12)">│</text><text class="terminal-1518364354-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-12)">-</text><text class="terminal-1518364354-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-1518364354-line-12)">-tag</text><text class="terminal-1518364354-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-151 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-13)">│</text><text class="terminal-1518364354-r2" x="475.8" y="337.2" textLength="414.8" clip-path="url(#terminal-1518364354-line-13)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1518364354-r5" x="890.6" y="337.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-13)">-</text><text class="terminal-1518364354- [...]
-</text><text class="terminal-1518364354-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-14)">│</text><text class="terminal-1518364354-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-14)">-</text><text class="terminal-1518364354-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-1518364354-line-14)">-docker</text><text class="terminal-1518364354-r5" x="122" y="361.6" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1518364354-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1518364354-line-15)">│</text><text class="terminal-1518364354-r4" x="475.8" y="386" textLength="549" clip-path="url(#terminal-1518364354-line-15)">[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-1518364354-r4" x="1451.8" y="386" t [...]
-</text><text class="terminal-1518364354-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-16)">│</text><text class="terminal-1518364354-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-16)">-</text><text class="terminal-1518364354-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-1518364354-line-16)">-force</text><text class="terminal-1518364354-r5" x="109.8" y="410.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1518364354-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1518364354-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-17)">
-</text><text class="terminal-1518364354-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-1518364354-line-18)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-1518364354-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-1518364354-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-19)">│</text><text class="terminal-1518364354-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-19)">-</text><text class="terminal-1518364354-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-1518364354-line-19)">-run</text><text class="terminal-1518364354-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1518364354-line-20)">│</text><text class="terminal-1518364354-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-1518364354-line-20)">-</text><text class="terminal-1518364354-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-1518364354-line-20)">-parallelism</text><text class="terminal-1518364354-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-21)">│</text><text class="terminal-1518364354-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-22)">│</text><text class="terminal-1518364354-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-22)">-</text><text class="terminal-1518364354-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-1518364354-line-22)">-python</text><text class="terminal-1518364354-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1518364354-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-23)">│</text><text class="terminal-1518364354-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-1518364354-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-24)">
-</text><text class="terminal-1518364354-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-1518364354-line-25)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-1518364354-line-25)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="630" textLength="24.4" clip-path="url [...]
-</text><text class="terminal-1518364354-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-26)">│</text><text class="terminal-1518364354-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-26)">-</text><text class="terminal-1518364354-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1518364354-line-26)">-install</text><text class="terminal-1518364354-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-1518364354-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-27)">│</text><text class="terminal-1518364354-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-27)">-</text><text class="terminal-1518364354-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-1518364354-line-27)">-airflow</text><text class="terminal-1518364354-r5" x="134.2" y="678.8" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-1518364354-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-28)">│</text><text class="terminal-1518364354-r7" x="463.6" y="703.2" textLength="866.2" clip-path="url(#terminal-1518364354-line-28)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-1518364354-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-28)">│</text><text clas [...]
-</text><text class="terminal-1518364354-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-29)">│</text><text class="terminal-1518364354-r4" x="463.6" y="727.6" textLength="866.2" clip-path="url(#terminal-1518364354-line-29)">[default:&#160;constraints-source-providers]&#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-1518364354-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1518364354-line-30)">│</text><text class="terminal-1518364354-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1518364354-line-30)">-</text><text class="terminal-1518364354-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-1518364354-line-30)">-airflow</text><text class="terminal-1518364354-r5" x="134.2" y="752" textLength="268.4" clip-path="url(#terminal-1518 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-31)">│</text><text class="terminal-1518364354-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-31)">-</text><text class="terminal-1518364354-r5" x="36.6" y="776.4" textLength="85.4" clip-path="url(#terminal-1518364354-line-31)">-python</text><text class="terminal-1518364354-r5" x="122" y="776.4" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1518364354-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-32)">│</text><text class="terminal-1518364354-r2" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-1518364354-line-32)">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-1518364354-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-33)">│</text><text class="terminal-1518364354-r7" x="463.6" y="825.2" textLength="976" clip-path="url(#terminal-1518364354-line-33)">(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-1518364354-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-34)">│</text><text class="terminal-1518364354-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-34)">-</text><text class="terminal-1518364354-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-1518364354-line-34)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="849.6" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1518364354-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1518364354-line-35)">│</text><text class="terminal-1518364354-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1518364354-line-35)">-</text><text class="terminal-1518364354-r5" x="36.6" y="874" textLength="97.6" clip-path="url(#terminal-1518364354-line-35)">-runtime</text><text class="terminal-1518364354-r5" x="134.2" y="874" textLength="109.8" clip-path="url(#terminal-1518 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-36)">│</text><text class="terminal-1518364354-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-36)">-</text><text class="terminal-1518364354-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-1518364354-line-36)">-runtime</text><text class="terminal-1518364354-r5" x="134.2" y="898.4" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-1518364354-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-37)">│</text><text class="terminal-1518364354-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-37)">-</text><text class="terminal-1518364354-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1518364354-line-37)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="922.8" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-1518364354-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-38)">│</text><text class="terminal-1518364354-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-38)">-</text><text class="terminal-1518364354-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1518364354-line-38)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="947.2" textLength="207.4" clip-path="url(#t [...]
-</text><text class="terminal-1518364354-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-39)">│</text><text class="terminal-1518364354-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-39)">-</text><text class="terminal-1518364354-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-1518364354-line-39)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="971.6" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-1518364354-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1518364354-line-40)">│</text><text class="terminal-1518364354-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1518364354-line-40)">-</text><text class="terminal-1518364354-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1518364354-line-40)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="996" textLength="244" clip-path="url(#terminal-15 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-41)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-41)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-1518364354-line-41)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="1020.4" textLength="158.6" clip-path="ur [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-42)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-42)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-1518364354-line-42)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="1044.8" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-43)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-43)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-1518364354-line-43)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="1069.2" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-44)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-44)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-1518364354-line-44)">-dev</text><text class="terminal-1518364354-r5" x="85.4" y="1093.6" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1518364354-line-45)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1518364354-line-45)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-1518364354-line-45)">-dev</text><text class="terminal-1518364354-r5" x="85.4" y="1118" textLength="146.4" clip-path="url(#terminal-15183 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-1518364354-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-46)">
-</text><text class="terminal-1518364354-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-1518364354-line-47)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-1518364354-line-47)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="1166.8" textLeng [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-48)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-48)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#terminal-1518364354-line-48)">-github</text><text class="terminal-1518364354-r5" x="122" y="1191.2" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-49)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-49)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#terminal-1518364354-line-49)">-github</text><text class="terminal-1518364354-r5" x="122" y="1215.6" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1518364354-line-50)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1518364354-line-50)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1240" textLength="109.8" clip-path="url(#terminal-1518364354-line-50)">-platform</text><text class="terminal-1518364354-r2" x="341.6" y="1240" textLength="329.4" clip-path="url(#termina [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-51)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-51)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1264.4" textLength="61" clip-path="url(#terminal-1518364354-line-51)">-push</text><text class="terminal-1518364354-r5" x="97.6" y="1264.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-52)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-52)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1288.8" textLength="73.2" clip-path="url(#terminal-1518364354-line-52)">-empty</text><text class="terminal-1518364354-r5" x="109.8" y="1288.8" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-53)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-53)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-1518364354-line-53)">-prepare</text><text class="terminal-1518364354-r5" x="134.2" y="1313.2" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-54)">│</text><text class="terminal-1518364354-r2" x="341.6" y="1337.6" textLength="1098" clip-path="url(#terminal-1518364354-line-54)">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-1518364354-r4" x="0" y="1362" textLength="1464" clip-path="url(#terminal-1518364354-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#terminal-1518364354-line-55)">
-</text><text class="terminal-1518364354-r4" x="0" y="1386.4" textLength="24.4" clip-path="url(#terminal-1518364354-line-56)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="1386.4" textLength="1415.2" clip-path="url(#terminal-1518364354-line-56)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="1386.4" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-57)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-57)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1410.8" textLength="85.4" clip-path="url(#terminal-1518364354-line-57)">-github</text><text class="terminal-1518364354-r5" x="122" y="1410.8" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-58)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-58)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-1518364354-line-58)">-verbose</text><text class="terminal-1518364354-r6" x="280.6" y="1435.2" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-59)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-59)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1459.6" textLength="48.8" clip-path="url(#terminal-1518364354-line-59)">-dry</text><text class="terminal-1518364354-r5" x="85.4" y="1459.6" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1518364354-line-60)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-1518364354-line-60)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1484" textLength="85.4" clip-path="url(#terminal-1518364354-line-60)">-answer</text><text class="terminal-1518364354-r6" x="280.6" y="1484" textLength="24.4" clip-path="url(#terminal-15 [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-61)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-61)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1508.4" textLength="61" clip-path="url(#terminal-1518364354-line-61)">-help</text><text class="terminal-1518364354-r6" x="280.6" y="1508.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1518364354-r4" x="0" y="1532.8" textLength="1464" clip-path="url(#terminal-1518364354-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-62)">
+    <g class="terminal-2881194963-matrix">
+    <text class="terminal-2881194963-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2881194963-line-0)">
+</text><text class="terminal-2881194963-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2881194963-line-1)">Usage:&#160;</text><text class="terminal-2881194963-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-2881194963-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-2881194963-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-1)">
+</text><text class="terminal-2881194963-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-2)">
+</text><text class="terminal-2881194963-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-2881194963-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-2881194963-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-3)">
+</text><text class="terminal-2881194963-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-4)">
+</text><text class="terminal-2881194963-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2881194963-line-5)">╭─</text><text class="terminal-2881194963-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2881194963-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2881194963-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-288119 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-6)">│</text><text class="terminal-2881194963-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-6)">-</text><text class="terminal-2881194963-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2881194963-line-6)">-python</text><text class="terminal-2881194963-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-288 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-7)">│</text><text class="terminal-2881194963-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-2881194963-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-2881194963-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-8)">│</text><text class="terminal-2881194963-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-2881194963-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-2881194963-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-9)">│</text><text class="terminal-2881194963-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-9)">-</text><text class="terminal-2881194963-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-2881194963-line-9)">-upgrade</text><text class="terminal-2881194963-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
+</text><text class="terminal-2881194963-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2881194963-line-10)">│</text><text class="terminal-2881194963-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2881194963-line-10)">-</text><text class="terminal-2881194963-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-2881194963-line-10)">-debian</text><text class="terminal-2881194963-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-28811949 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-11)">│</text><text class="terminal-2881194963-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-11)">-</text><text class="terminal-2881194963-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-2881194963-line-11)">-image</text><text class="terminal-2881194963-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2881194963-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-12)">│</text><text class="terminal-2881194963-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-12)">-</text><text class="terminal-2881194963-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-2881194963-line-12)">-tag</text><text class="terminal-2881194963-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-288 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-13)">│</text><text class="terminal-2881194963-r2" x="475.8" y="337.2" textLength="414.8" clip-path="url(#terminal-2881194963-line-13)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-2881194963-r5" x="890.6" y="337.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-13)">-</text><text class="terminal-2881194963- [...]
+</text><text class="terminal-2881194963-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-14)">│</text><text class="terminal-2881194963-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-14)">-</text><text class="terminal-2881194963-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-2881194963-line-14)">-docker</text><text class="terminal-2881194963-r5" x="122" y="361.6" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-2881194963-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2881194963-line-15)">│</text><text class="terminal-2881194963-r4" x="475.8" y="386" textLength="549" clip-path="url(#terminal-2881194963-line-15)">[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-2881194963-r4" x="1451.8" y="386" t [...]
+</text><text class="terminal-2881194963-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-16)">│</text><text class="terminal-2881194963-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-16)">-</text><text class="terminal-2881194963-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-2881194963-line-16)">-force</text><text class="terminal-2881194963-r5" x="109.8" y="410.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2881194963-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-2881194963-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2881194963-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-17)">
+</text><text class="terminal-2881194963-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-2881194963-line-18)">╭─</text><text class="terminal-2881194963-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-2881194963-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2881194963-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-2881194963-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-19)">│</text><text class="terminal-2881194963-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-19)">-</text><text class="terminal-2881194963-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-2881194963-line-19)">-run</text><text class="terminal-2881194963-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2881194963-line-20)">│</text><text class="terminal-2881194963-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2881194963-line-20)">-</text><text class="terminal-2881194963-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-2881194963-line-20)">-parallelism</text><text class="terminal-2881194963-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-21)">│</text><text class="terminal-2881194963-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-2881194963-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-2881194963-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-22)">│</text><text class="terminal-2881194963-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-22)">-</text><text class="terminal-2881194963-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-2881194963-line-22)">-python</text><text class="terminal-2881194963-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2881194963-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-23)">│</text><text class="terminal-2881194963-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-2881194963-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-2881194963-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-2881194963-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2881194963-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-24)">
+</text><text class="terminal-2881194963-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-2881194963-line-25)">╭─</text><text class="terminal-2881194963-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-2881194963-line-25)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2881194963-r4" x="1439.6" y="630" textLength="24.4" clip-path="url [...]
+</text><text class="terminal-2881194963-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-26)">│</text><text class="terminal-2881194963-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-26)">-</text><text class="terminal-2881194963-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2881194963-line-26)">-install</text><text class="terminal-2881194963-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-2881194963-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-27)">│</text><text class="terminal-2881194963-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-27)">-</text><text class="terminal-2881194963-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-2881194963-line-27)">-airflow</text><text class="terminal-2881194963-r5" x="134.2" y="678.8" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-2881194963-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-28)">│</text><text class="terminal-2881194963-r7" x="463.6" y="703.2" textLength="866.2" clip-path="url(#terminal-2881194963-line-28)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-2881194963-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-28)">│</text><text clas [...]
+</text><text class="terminal-2881194963-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-29)">│</text><text class="terminal-2881194963-r4" x="463.6" y="727.6" textLength="866.2" clip-path="url(#terminal-2881194963-line-29)">[default:&#160;constraints-source-providers]&#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-2881194963-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2881194963-line-30)">│</text><text class="terminal-2881194963-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-2881194963-line-30)">-</text><text class="terminal-2881194963-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-2881194963-line-30)">-airflow</text><text class="terminal-2881194963-r5" x="134.2" y="752" textLength="268.4" clip-path="url(#terminal-2881 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-31)">│</text><text class="terminal-2881194963-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-31)">-</text><text class="terminal-2881194963-r5" x="36.6" y="776.4" textLength="85.4" clip-path="url(#terminal-2881194963-line-31)">-python</text><text class="terminal-2881194963-r5" x="122" y="776.4" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-2881194963-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-32)">│</text><text class="terminal-2881194963-r2" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-2881194963-line-32)">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-2881194963-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-33)">│</text><text class="terminal-2881194963-r7" x="463.6" y="825.2" textLength="976" clip-path="url(#terminal-2881194963-line-33)">(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-2881194963-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-34)">│</text><text class="terminal-2881194963-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-34)">-</text><text class="terminal-2881194963-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-2881194963-line-34)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="849.6" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-2881194963-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2881194963-line-35)">│</text><text class="terminal-2881194963-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2881194963-line-35)">-</text><text class="terminal-2881194963-r5" x="36.6" y="874" textLength="97.6" clip-path="url(#terminal-2881194963-line-35)">-runtime</text><text class="terminal-2881194963-r5" x="134.2" y="874" textLength="109.8" clip-path="url(#terminal-2881 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-36)">│</text><text class="terminal-2881194963-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-36)">-</text><text class="terminal-2881194963-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-2881194963-line-36)">-runtime</text><text class="terminal-2881194963-r5" x="134.2" y="898.4" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-2881194963-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-37)">│</text><text class="terminal-2881194963-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-37)">-</text><text class="terminal-2881194963-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-2881194963-line-37)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="922.8" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-2881194963-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-38)">│</text><text class="terminal-2881194963-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-38)">-</text><text class="terminal-2881194963-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-2881194963-line-38)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="947.2" textLength="207.4" clip-path="url(#t [...]
+</text><text class="terminal-2881194963-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-39)">│</text><text class="terminal-2881194963-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-39)">-</text><text class="terminal-2881194963-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-2881194963-line-39)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="971.6" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-2881194963-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2881194963-line-40)">│</text><text class="terminal-2881194963-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-2881194963-line-40)">-</text><text class="terminal-2881194963-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-2881194963-line-40)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="996" textLength="244" clip-path="url(#terminal-28 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-41)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-41)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-2881194963-line-41)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="1020.4" textLength="158.6" clip-path="ur [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-42)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-42)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-2881194963-line-42)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="1044.8" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-43)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-43)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-2881194963-line-43)">-additional</text><text class="terminal-2881194963-r5" x="170.8" y="1069.2" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-44)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-44)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-2881194963-line-44)">-dev</text><text class="terminal-2881194963-r5" x="85.4" y="1093.6" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2881194963-line-45)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-2881194963-line-45)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-2881194963-line-45)">-dev</text><text class="terminal-2881194963-r5" x="85.4" y="1118" textLength="146.4" clip-path="url(#terminal-28811 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-2881194963-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2881194963-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-46)">
+</text><text class="terminal-2881194963-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-2881194963-line-47)">╭─</text><text class="terminal-2881194963-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-2881194963-line-47)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-2881194963-r4" x="1439.6" y="1166.8" textLeng [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-48)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-48)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#terminal-2881194963-line-48)">-github</text><text class="terminal-2881194963-r5" x="122" y="1191.2" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-49)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-49)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#terminal-2881194963-line-49)">-github</text><text class="terminal-2881194963-r5" x="122" y="1215.6" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-2881194963-line-50)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-2881194963-line-50)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1240" textLength="109.8" clip-path="url(#terminal-2881194963-line-50)">-platform</text><text class="terminal-2881194963-r2" x="341.6" y="1240" textLength="329.4" clip-path="url(#termina [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-51)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-51)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1264.4" textLength="61" clip-path="url(#terminal-2881194963-line-51)">-push</text><text class="terminal-2881194963-r5" x="97.6" y="1264.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-52)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-52)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1288.8" textLength="73.2" clip-path="url(#terminal-2881194963-line-52)">-empty</text><text class="terminal-2881194963-r5" x="109.8" y="1288.8" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-53)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-53)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-2881194963-line-53)">-prepare</text><text class="terminal-2881194963-r5" x="134.2" y="1313.2" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-54)">│</text><text class="terminal-2881194963-r2" x="341.6" y="1337.6" textLength="1098" clip-path="url(#terminal-2881194963-line-54)">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-2881194963-r4" x="0" y="1362" textLength="1464" clip-path="url(#terminal-2881194963-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2881194963-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#terminal-2881194963-line-55)">
+</text><text class="terminal-2881194963-r4" x="0" y="1386.4" textLength="24.4" clip-path="url(#terminal-2881194963-line-56)">╭─</text><text class="terminal-2881194963-r4" x="24.4" y="1386.4" textLength="1415.2" clip-path="url(#terminal-2881194963-line-56)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2881194963-r4" x="1439.6" y="1386.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-57)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-57)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1410.8" textLength="85.4" clip-path="url(#terminal-2881194963-line-57)">-github</text><text class="terminal-2881194963-r5" x="122" y="1410.8" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-58)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-58)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-2881194963-line-58)">-verbose</text><text class="terminal-2881194963-r6" x="280.6" y="1435.2" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-59)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-2881194963-line-59)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1459.6" textLength="48.8" clip-path="url(#terminal-2881194963-line-59)">-dry</text><text class="terminal-2881194963-r5" x="85.4" y="1459.6" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-2881194963-line-60)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-2881194963-line-60)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1484" textLength="85.4" clip-path="url(#terminal-2881194963-line-60)">-answer</text><text class="terminal-2881194963-r6" x="280.6" y="1484" textLength="24.4" clip-path="url(#terminal-28 [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-61)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-2881194963-line-61)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#terminal-2881194963-line-61)">-builder</text><text class="terminal-2881194963-r2" x="329.4" y="1508.4" textLength="744.2" clip-path="url(#t [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-62)">│</text><text class="terminal-2881194963-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-2881194963-line-62)">-</text><text class="terminal-2881194963-r5" x="36.6" y="1532.8" textLength="61" clip-path="url(#terminal-2881194963-line-62)">-help</text><text class="terminal-2881194963-r6" x="280.6" y="1532.8" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2881194963-r4" x="0" y="1557.2" textLength="1464" clip-path="url(#terminal-2881194963-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2881194963-r2" x="1464" y="1557.2" textLength="12.2" clip-path="url(#terminal-2881194963-line-63)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
index 9efd67fc9c..3d6122bc3f 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 2002.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2026.3999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,361 +19,365 @@
         font-weight: 700;
     }
 
-    .terminal-2793073061-matrix {
+    .terminal-1181880005-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2793073061-title {
+    .terminal-1181880005-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2793073061-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2793073061-r2 { fill: #c5c8c6 }
-.terminal-2793073061-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2793073061-r4 { fill: #868887 }
-.terminal-2793073061-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2793073061-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2793073061-r7 { fill: #8d7b39 }
+    .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 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2793073061-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1951.0" />
+    <clipPath id="terminal-1181880005-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1975.3999999999999" />
     </clipPath>
-    <clipPath id="terminal-2793073061-line-0">
+    <clipPath id="terminal-1181880005-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-1">
+<clipPath id="terminal-1181880005-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-2">
+<clipPath id="terminal-1181880005-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-3">
+<clipPath id="terminal-1181880005-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-4">
+<clipPath id="terminal-1181880005-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-5">
+<clipPath id="terminal-1181880005-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-6">
+<clipPath id="terminal-1181880005-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-7">
+<clipPath id="terminal-1181880005-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-8">
+<clipPath id="terminal-1181880005-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-9">
+<clipPath id="terminal-1181880005-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-10">
+<clipPath id="terminal-1181880005-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-11">
+<clipPath id="terminal-1181880005-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-12">
+<clipPath id="terminal-1181880005-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-13">
+<clipPath id="terminal-1181880005-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-14">
+<clipPath id="terminal-1181880005-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-15">
+<clipPath id="terminal-1181880005-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-16">
+<clipPath id="terminal-1181880005-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-17">
+<clipPath id="terminal-1181880005-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-18">
+<clipPath id="terminal-1181880005-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-19">
+<clipPath id="terminal-1181880005-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-20">
+<clipPath id="terminal-1181880005-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-21">
+<clipPath id="terminal-1181880005-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-22">
+<clipPath id="terminal-1181880005-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-23">
+<clipPath id="terminal-1181880005-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-24">
+<clipPath id="terminal-1181880005-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-25">
+<clipPath id="terminal-1181880005-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-26">
+<clipPath id="terminal-1181880005-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-27">
+<clipPath id="terminal-1181880005-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-28">
+<clipPath id="terminal-1181880005-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-29">
+<clipPath id="terminal-1181880005-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-30">
+<clipPath id="terminal-1181880005-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-31">
+<clipPath id="terminal-1181880005-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-32">
+<clipPath id="terminal-1181880005-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-33">
+<clipPath id="terminal-1181880005-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-34">
+<clipPath id="terminal-1181880005-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-35">
+<clipPath id="terminal-1181880005-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-36">
+<clipPath id="terminal-1181880005-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-37">
+<clipPath id="terminal-1181880005-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-38">
+<clipPath id="terminal-1181880005-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-39">
+<clipPath id="terminal-1181880005-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-40">
+<clipPath id="terminal-1181880005-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-41">
+<clipPath id="terminal-1181880005-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-42">
+<clipPath id="terminal-1181880005-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-43">
+<clipPath id="terminal-1181880005-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-44">
+<clipPath id="terminal-1181880005-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-45">
+<clipPath id="terminal-1181880005-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-46">
+<clipPath id="terminal-1181880005-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-47">
+<clipPath id="terminal-1181880005-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-48">
+<clipPath id="terminal-1181880005-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-49">
+<clipPath id="terminal-1181880005-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-50">
+<clipPath id="terminal-1181880005-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-51">
+<clipPath id="terminal-1181880005-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-52">
+<clipPath id="terminal-1181880005-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-53">
+<clipPath id="terminal-1181880005-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-54">
+<clipPath id="terminal-1181880005-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-55">
+<clipPath id="terminal-1181880005-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-56">
+<clipPath id="terminal-1181880005-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-57">
+<clipPath id="terminal-1181880005-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-58">
+<clipPath id="terminal-1181880005-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-59">
+<clipPath id="terminal-1181880005-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-60">
+<clipPath id="terminal-1181880005-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-61">
+<clipPath id="terminal-1181880005-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-62">
+<clipPath id="terminal-1181880005-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-63">
+<clipPath id="terminal-1181880005-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-64">
+<clipPath id="terminal-1181880005-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-65">
+<clipPath id="terminal-1181880005-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-66">
+<clipPath id="terminal-1181880005-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-67">
+<clipPath id="terminal-1181880005-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-68">
+<clipPath id="terminal-1181880005-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-69">
+<clipPath id="terminal-1181880005-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-70">
+<clipPath id="terminal-1181880005-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-71">
+<clipPath id="terminal-1181880005-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-72">
+<clipPath id="terminal-1181880005-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-73">
+<clipPath id="terminal-1181880005-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-74">
+<clipPath id="terminal-1181880005-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-75">
+<clipPath id="terminal-1181880005-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-76">
+<clipPath id="terminal-1181880005-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-77">
+<clipPath id="terminal-1181880005-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2793073061-line-78">
+<clipPath id="terminal-1181880005-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="2000" rx="8"/><text class="terminal-2793073061-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="2024.4" rx="8"/><text class="terminal-1181880005-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-2793073061-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1181880005-clip-terminal)">
     
-    <g class="terminal-2793073061-matrix">
-    <text class="terminal-2793073061-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2793073061-line-0)">
-</text><text class="terminal-2793073061-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-1)">Usage:&#160;</text><text class="terminal-2793073061-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-2793073061-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-2793073061-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-1)">
-</text><text class="terminal-2793073061-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-2)">
-</text><text class="terminal-2793073061-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-2793073061-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-2793073061-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-3)">
-</text><text class="terminal-2793073061-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-4)">
-</text><text class="terminal-2793073061-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2793073061-line-5)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2793073061-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-279307 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-6)">│</text><text class="terminal-2793073061-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-6)">-</text><text class="terminal-2793073061-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-6)">-python</text><text class="terminal-2793073061-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-279 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-7)">│</text><text class="terminal-2793073061-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-8)">│</text><text class="terminal-2793073061-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-9)">│</text><text class="terminal-2793073061-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-9)">-</text><text class="terminal-2793073061-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-2793073061-line-9)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2793073061-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2793073061-line-10)">│</text><text class="terminal-2793073061-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2793073061-line-10)">-</text><text class="terminal-2793073061-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-2793073061-line-10)">-upgrade</text><text class="terminal-2793073061-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-2793 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-11)">│</text><text class="terminal-2793073061-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-11)">-</text><text class="terminal-2793073061-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-11)">-debian</text><text class="terminal-2793073061-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-2793073061-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-12)">│</text><text class="terminal-2793073061-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-12)">-</text><text class="terminal-2793073061-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-2793073061-line-12)">-image</text><text class="terminal-2793073061-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2793073061-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-13)">│</text><text class="terminal-2793073061-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-13)">-</text><text class="terminal-2793073061-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-2793073061-line-13)">-tag</text><text class="terminal-2793073061-r5" x="85.4" y="337.2" textLength="122" clip-path="url(#terminal-279 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-14)">│</text><text class="terminal-2793073061-r2" x="475.8" y="361.6" textLength="414.8" clip-path="url(#terminal-2793073061-line-14)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-2793073061-r5" x="890.6" y="361.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-14)">-</text><text class="terminal-2793073061- [...]
-</text><text class="terminal-2793073061-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2793073061-line-15)">│</text><text class="terminal-2793073061-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2793073061-line-15)">-</text><text class="terminal-2793073061-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-2793073061-line-15)">-docker</text><text class="terminal-2793073061-r5" x="122" y="386" textLength="73.2" clip-path="url(#terminal-27930730 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-16)">│</text><text class="terminal-2793073061-r4" x="475.8" y="410.4" textLength="549" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="1451.8" y="41 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-2793073061-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-17)">
-</text><text class="terminal-2793073061-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-2793073061-line-18)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-2793073061-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-2793073061-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-19)">│</text><text class="terminal-2793073061-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-19)">-</text><text class="terminal-2793073061-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-2793073061-line-19)">-run</text><text class="terminal-2793073061-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2793073061-line-20)">│</text><text class="terminal-2793073061-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2793073061-line-20)">-</text><text class="terminal-2793073061-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-2793073061-line-20)">-parallelism</text><text class="terminal-2793073061-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-21)">│</text><text class="terminal-2793073061-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-22)">│</text><text class="terminal-2793073061-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-22)">-</text><text class="terminal-2793073061-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-2793073061-line-22)">-python</text><text class="terminal-2793073061-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2793073061-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-23)">│</text><text class="terminal-2793073061-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-2793073061-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-24)">
-</text><text class="terminal-2793073061-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-2793073061-line-25)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-2793073061-line-25)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="630" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-2793073061-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-26)">│</text><text class="terminal-2793073061-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-26)">-</text><text class="terminal-2793073061-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-26)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-2793073061-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-27)">│</text><text class="terminal-2793073061-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-27)">-</text><text class="terminal-2793073061-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-27)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="678.8" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2793073061-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-28)">│</text><text class="terminal-2793073061-r7" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-29)">│</text><text class="terminal-2793073061-r4" x="463.6" y="727.6" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2793073061-line-30)">│</text><text class="terminal-2793073061-r4" x="463.6" y="752" textLength="976" clip-path="url(#terminal-2793073061-line-30)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-2793073061-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-2793073061-line-30)">│</text><text class="terminal-2793073 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-31)">│</text><text class="terminal-2793073061-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-31)">-</text><text class="terminal-2793073061-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-31)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="776.4" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-2793073061-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-32)">│</text><text class="terminal-2793073061-r7" x="463.6" y="800.8" textLength="866.2" clip-path="url(#terminal-2793073061-line-32)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-2793073061-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-32)">│</text><text clas [...]
-</text><text class="terminal-2793073061-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-33)">│</text><text class="terminal-2793073061-r4" x="463.6" y="825.2" textLength="866.2" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-34)">│</text><text class="terminal-2793073061-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-34)">-</text><text class="terminal-2793073061-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-2793073061-line-34)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="849.6" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-2793073061-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2793073061-line-35)">│</text><text class="terminal-2793073061-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2793073061-line-35)">-</text><text class="terminal-2793073061-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-2793073061-line-35)">-python</text><text class="terminal-2793073061-r5" x="122" y="874" textLength="73.2" clip-path="url(#terminal-27930730 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-36)">│</text><text class="terminal-2793073061-r2" x="463.6" y="898.4" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-37)">│</text><text class="terminal-2793073061-r7" x="463.6" y="922.8" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-38)">│</text><text class="terminal-2793073061-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-38)">-</text><text class="terminal-2793073061-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-2793073061-line-38)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="947.2" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-39)">│</text><text class="terminal-2793073061-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-39)">-</text><text class="terminal-2793073061-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-2793073061-line-39)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="971.6" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-2793073061-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2793073061-line-40)">│</text><text class="terminal-2793073061-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-2793073061-line-40)">-</text><text class="terminal-2793073061-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-2793073061-line-40)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="996" textLength="207.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-41)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-41)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-2793073061-line-41)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1020.4" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-42)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-42)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-2793073061-line-42)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1044.8" textLength="244" clip-path="url( [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-43)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-43)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-2793073061-line-43)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1069.2" textLength="158.6" clip-path="ur [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-44)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-44)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-2793073061-line-44)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1093.6" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2793073061-line-45)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-2793073061-line-45)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-2793073061-line-45)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1118" textLength="195.2" clip-path="url(#termi [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-46)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-46)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-46)">-runtime</text><text class="terminal-2793073061-r5" x="134.2" y="1142.4" textLength="109.8" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-47)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-47)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-47)">-runtime</text><text class="terminal-2793073061-r5" x="134.2" y="1166.8" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-48)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-48)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#terminal-2793073061-line-48)">-dev</text><text class="terminal-2793073061-r5" x="85.4" y="1191.2" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-49)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-49)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1215.6" textLength="48.8" clip-path="url(#terminal-2793073061-line-49)">-dev</text><text class="terminal-2793073061-r5" x="85.4" y="1215.6" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-2793073061-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-2793073061-line-50)">
-</text><text class="terminal-2793073061-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-2793073061-line-51)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-2793073061-line-51)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="1264.4" textLength="24.4"  [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-52)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-52)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-52)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="1288.8" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-53)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-53)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-2793073061-line-53)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="1313.2" textLength="170.8" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-54)">│</text><text class="terminal-2793073061-r2" x="536.8" y="1337.6" textLength="902.8" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-2793073061-line-55)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-2793073061-line-55)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-2793073061-line-55)">-cleanup</text><text class="terminal-2793073061-r5" x="134.2" y="1362" textLength="97.6" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-56)">│</text><text class="terminal-2793073061-r2" x="536.8" y="1386.4" textLength="170.8" clip-path="url(#terminal-2793073061-line-56)">together&#160;with&#160;</text><text class="terminal-2793073061-r5" x="707.6" y="1386.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-56)">-</text><text class="terminal-2793073061-r5" x="719.8" y="1386.4" textLength="97.6" [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-57)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-57)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-57)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1410.8" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-58)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-58)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-2793073061-line-58)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1435.2" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-59)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-59)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-2793073061-line-59)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1459.6" textLength="353.8" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-2793073061-line-60)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-2793073061-line-60)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-2793073061-line-60)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1484" textLength="231.8" clip-path="url(#terminal- [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-61)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-61)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-61)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="1508.4" textLength="219.6" clip-path="url(#t [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-62)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-62)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1532.8" textLength="158.6" clip-path="url(#terminal-2793073061-line-62)">-installation</text><text class="terminal-2793073061-r5" x="195.2" y="1532.8" textLength="85.4" clip-path="u [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1557.2" textLength="1464" clip-path="url(#terminal-2793073061-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1557.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-63)">
-</text><text class="terminal-2793073061-r4" x="0" y="1581.6" textLength="24.4" clip-path="url(#terminal-2793073061-line-64)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="1581.6" textLength="1415.2" clip-path="url(#terminal-2793073061-line-64)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="1581.6" textLeng [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-2793073061-line-65)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-2793073061-line-65)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1606" textLength="85.4" clip-path="url(#terminal-2793073061-line-65)">-github</text><text class="terminal-2793073061-r5" x="122" y="1606" textLength="73.2" clip-path="url(#terminal-2793 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-66)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-66)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1630.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-66)">-github</text><text class="terminal-2793073061-r5" x="122" y="1630.4" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-67)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-67)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1654.8" textLength="109.8" clip-path="url(#terminal-2793073061-line-67)">-platform</text><text class="terminal-2793073061-r2" x="341.6" y="1654.8" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-68)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-68)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1679.2" textLength="61" clip-path="url(#terminal-2793073061-line-68)">-push</text><text class="terminal-2793073061-r5" x="97.6" y="1679.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-69)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-69)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1703.6" textLength="73.2" clip-path="url(#terminal-2793073061-line-69)">-empty</text><text class="terminal-2793073061-r5" x="109.8" y="1703.6" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-2793073061-line-70)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1728" textLength="12.2" clip-path="url(#terminal-2793073061-line-70)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1728" textLength="97.6" clip-path="url(#terminal-2793073061-line-70)">-prepare</text><text class="terminal-2793073061-r5" x="134.2" y="1728" textLength="158.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-71)">│</text><text class="terminal-2793073061-r2" x="341.6" y="1752.4" textLength="1098" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-2793073061-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-72)">
-</text><text class="terminal-2793073061-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-2793073061-line-73)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-2793073061-line-73)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-74)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-74)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1825.6" textLength="85.4" clip-path="url(#terminal-2793073061-line-74)">-github</text><text class="terminal-2793073061-r5" x="122" y="1825.6" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-2793073061-line-75)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-2793073061-line-75)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1850" textLength="85.4" clip-path="url(#terminal-2793073061-line-75)">-answer</text><text class="terminal-2793073061-r6" x="280.6" y="1850" textLength="24.4" clip-path="url(#terminal-27 [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-76)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-76)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1874.4" textLength="48.8" clip-path="url(#terminal-2793073061-line-76)">-dry</text><text class="terminal-2793073061-r5" x="85.4" y="1874.4" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-77)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-77)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1898.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-77)">-verbose</text><text class="terminal-2793073061-r6" x="280.6" y="1898.8" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-78)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-78)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1923.2" textLength="61" clip-path="url(#terminal-2793073061-line-78)">-help</text><text class="terminal-2793073061-r6" x="280.6" y="1923.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2793073061-r4" x="0" y="1947.6" textLength="1464" clip-path="url(#terminal-2793073061-line-79)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1947.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-79)">
+    <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)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 044b799ce0..0af29de136 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,4 +2,10 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
+<<<<<<< HEAD
 e1bc752aeb5e9c4095bb9d3cbb614252
+||||||| parent of 2fbd750d35 (Add ARM image building for regular PRs (#24664))
+81bb48610ea6c4b13c1fa5d7d7cbd061
+=======
+d382b111fddf3b8c0fd3434fce8aa948
+>>>>>>> 2fbd750d35 (Add ARM image building for regular PRs (#24664))


[airflow] 13/39: Improve production image release workflow (#24481)

Posted by po...@apache.org.
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 0c106a47d0ce378abb6216981b99e05836d2dfb4
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Thu Jun 16 10:50:19 2022 +0200

    Improve production image release workflow (#24481)
    
    Few improvements:
    
    * direct link to workflow in the docs
    * "green" success screenshots (separate screenshot for rc)
    * job and step names contain both Airflow version and python version
    * running subsequent build with same version will cancel past
      in-progress build (in case you quickly make constraint fis for
      example and re-run)
    
    (cherry picked from commit 8ad18bf02924d1677502231e678951bc5b8cb420)
---
 .github/workflows/release_dockerhub_image.yml |  13 +++++++++----
 dev/README_RELEASE_AIRFLOW.md                 |  18 +++++++++---------
 dev/images/release_prod_image.png             | Bin 112569 -> 76309 bytes
 dev/images/release_prod_image_rc.png          | Bin 0 -> 65816 bytes
 4 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml
index bd9fdaec1e..a6c3e86ddd 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -16,7 +16,7 @@
 # under the License.
 #
 ---
-name: "Release PROD image"
+name: "Release PROD images"
 on:  # yamllint disable-line rule:truthy
   workflow_dispatch:
     inputs:
@@ -27,6 +27,9 @@ on:  # yamllint disable-line rule:truthy
         description: 'Skip Latest: Set to true if not latest.'
         default: ''
         required: false
+concurrency:
+  group: ${{ github.event.inputs.airflowVersion }}
+  cancel-in-progress: true
 jobs:
   build-info:
     timeout-minutes: 10
@@ -53,7 +56,7 @@ jobs:
         run: ./scripts/ci/selective_ci_checks.sh
   release-images:
     timeout-minutes: 120
-    name: "Release images"
+    name: "Release images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}"
     runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
     needs: [build-info]
     strategy:
@@ -98,7 +101,8 @@ jobs:
         run: >
           echo ${{ secrets.DOCKERHUB_TOKEN }} |
           docker login --password-stdin --username ${{ secrets.DOCKERHUB_USER }}
-      - name: "Release regular images"
+      - name: >
+          Release regular images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
         run: >
           breeze release-prod-images
           --dockerhub-repo ${{ github.repository }}
@@ -106,7 +110,8 @@ jobs:
           ${{ needs.build-info.outputs.skipLatest }}
           ${{ needs.build-info.outputs.limitPlatform }}
           --limit-python ${{ matrix.python-version }}
-      - name: "Release slim images"
+      - name: >
+          Release slim images: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
         run: >
           breeze release-prod-images
           --dockerhub-repo ${{ github.repository }}
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index 3d242ff9d4..98f3062134 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -27,7 +27,7 @@
   - [Build RC artifacts](#build-rc-artifacts)
   - [[\Optional\] Prepare new release branches and cache](#%5Coptional%5C-prepare-new-release-branches-and-cache)
   - [Prepare PyPI convenience "snapshot" packages](#prepare-pypi-convenience-snapshot-packages)
-  - [Prepare production Docker Image](#prepare-production-docker-image)
+  - [Prepare production Docker Image RC](#prepare-production-docker-image-rc)
   - [Prepare issue for testing status of rc](#prepare-issue-for-testing-status-of-rc)
   - [Prepare Vote email on the Apache Airflow release candidate](#prepare-vote-email-on-the-apache-airflow-release-candidate)
 - [Verify the release candidate by PMCs](#verify-the-release-candidate-by-pmcs)
@@ -486,7 +486,7 @@ is not supposed to be used by and advertised to the end-users who do not read th
     git push origin tag ${VERSION}
     ```
 
-## Prepare production Docker Image
+## Prepare production Docker Image RC
 
 Production Docker images should be manually prepared and pushed by the release manager or another committer
 who has access to Airflow's DockerHub. Note that we started releasing a multi-platform build, so you need
@@ -496,15 +496,15 @@ to have an environment prepared to build multi-platform images. You can achieve
 * Emulation (very slow)
 * Hardware builders if you have both AMD64 and ARM64 hardware locally
 
-Building the image is triggered by running the `Release PROD image` workflow via
-[GitHub Actions](https://github.com/apache/airflow/actions).
+Building the image is triggered by running the
+[Release PROD Images](https://github.com/apache/airflow/actions/workflows/release_dockerhub_image.yml) workflow.
 
 When you trigger it you need to pass:
 
-* Airflow Version
-* Optional "true" in skip latest field if you do not want to retag the latest image
+* Airflow Version (including the right rc suffix)
+* Optional "true" in the "Skip latest:" field if you do not want to re-tag the latest image
 
-![Release prod image](images/release_prod_image.png)
+![Release prod image](images/release_prod_image_rc.png)
 
 The manual building is described in [MANUALLY_BUILDING_IMAGES.md](MANUALLY_BUILDING_IMAGES.md).
 
@@ -957,8 +957,8 @@ At this point we release an official package:
 
 ## Manually prepare production Docker Image
 
-Building the image is triggered by running the `Release PROD image` workflow via
-[GitHub Actions](https://github.com/apache/airflow/actions).
+Building the image is triggered by running the
+[Release PROD Images](https://github.com/apache/airflow/actions/workflows/release_dockerhub_image.yml) workflow.
 
 When you trigger it you need to pass:
 
diff --git a/dev/images/release_prod_image.png b/dev/images/release_prod_image.png
index 78f941a43b..50336e5194 100644
Binary files a/dev/images/release_prod_image.png and b/dev/images/release_prod_image.png differ
diff --git a/dev/images/release_prod_image_rc.png b/dev/images/release_prod_image_rc.png
new file mode 100644
index 0000000000..c88b1285c8
Binary files /dev/null and b/dev/images/release_prod_image_rc.png differ


[airflow] 05/39: Switch Markdown engine to markdown-it-py (#19702)

Posted by po...@apache.org.
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 0c8cda1dd44a6e9688bbe5e3a5149e6c26f4424a
Author: Torbjørn Vatn <to...@unacast.com>
AuthorDate: Tue Jun 21 11:24:13 2022 +0200

    Switch Markdown engine to markdown-it-py (#19702)
    
    (cherry picked from commit 88363b543f6f963247c332e9d7830bc782ed6e2d)
---
 airflow/www/static/css/main.css |   4 ++
 airflow/www/utils.py            |   5 +-
 setup.cfg                       |   3 ++
 tests/www/test_utils.py         | 112 +++++++++++++++++++++++++++++++++-------
 4 files changed, 103 insertions(+), 21 deletions(-)

diff --git a/airflow/www/static/css/main.css b/airflow/www/static/css/main.css
index 37bee892bd..8a7a7eeec7 100644
--- a/airflow/www/static/css/main.css
+++ b/airflow/www/static/css/main.css
@@ -465,6 +465,10 @@ label[for="timezone-other"],
   z-index: 1070;
 }
 
+details summary {
+  display: list-item;
+}
+
 .menu-scroll {
   max-height: 300px;
   overflow-y: auto;
diff --git a/airflow/www/utils.py b/airflow/www/utils.py
index 8c05f37885..3c63584e88 100644
--- a/airflow/www/utils.py
+++ b/airflow/www/utils.py
@@ -21,7 +21,6 @@ import time
 from typing import Any, Dict, List, Optional, Union
 from urllib.parse import urlencode
 
-import markdown
 import sqlalchemy as sqla
 from flask import Response, request, url_for
 from flask.helpers import flash
@@ -31,6 +30,7 @@ from flask_appbuilder.models.sqla import filters as fab_sqlafilters
 from flask_appbuilder.models.sqla.filters import get_field_setup_query, set_value_to_type
 from flask_appbuilder.models.sqla.interface import SQLAInterface
 from flask_babel import lazy_gettext
+from markdown_it import MarkdownIt
 from markupsafe import Markup
 from pendulum.datetime import DateTime
 from pygments import highlight, lexers
@@ -521,10 +521,11 @@ def json_render(obj, lexer):
 
 def wrapped_markdown(s, css_class='rich_doc'):
     """Convert a Markdown string to HTML."""
+    md = MarkdownIt("gfm-like")
     if s is None:
         return None
     s = textwrap.dedent(s)
-    return Markup(f'<div class="{css_class}" >' + markdown.markdown(s, extensions=['tables']) + "</div>")
+    return Markup(f'<div class="{css_class}" >{md.render(s)}</div>')
 
 
 def get_attr_renderer():
diff --git a/setup.cfg b/setup.cfg
index bd73104996..8d996337eb 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -135,6 +135,7 @@ install_requires =
     # we pin to the same upper-bound as connexion.
     jsonschema>=3.2.0, <5.0
     lazy-object-proxy
+    linkify-it-py>=2.0.0
     lockfile>=0.12.2
     markdown>=3.0
     # Markupsafe 2.1.0 breaks with error: import name 'soft_unicode' from 'markupsafe'.
@@ -142,8 +143,10 @@ install_requires =
     # https://github.com/pallets/markupsafe/issues/284
     # or when we will be able to upgrade JINJA to newer version (currently limited due to Flask and
     # Flask Application Builder)
+    markdown-it-py>=2.1.0
     markupsafe>=1.1.1,<2.1.0
     marshmallow-oneofschema>=2.0.1
+    mdit-py-plugins>=0.3.0
     packaging>=14.0
     pathspec~=0.9.0
     pendulum>=2.0
diff --git a/tests/www/test_utils.py b/tests/www/test_utils.py
index 01c49e1fdc..8ac06f75de 100644
--- a/tests/www/test_utils.py
+++ b/tests/www/test_utils.py
@@ -184,29 +184,54 @@ class TestAttrRenderer(unittest.TestCase):
 class TestWrappedMarkdown(unittest.TestCase):
     def test_wrapped_markdown_with_docstring_curly_braces(self):
         rendered = wrapped_markdown("{braces}", css_class="a_class")
-        assert '<div class="a_class" ><p>{braces}</p></div>' == rendered
+        assert (
+            '''<div class="a_class" ><p>{braces}</p>
+</div>'''
+            == rendered
+        )
 
     def test_wrapped_markdown_with_some_markdown(self):
-        rendered = wrapped_markdown("*italic*\n**bold**\n", css_class="a_class")
+        rendered = wrapped_markdown(
+            """*italic*
+        **bold**
+        """,
+            css_class="a_class",
+        )
+
         assert (
             '''<div class="a_class" ><p><em>italic</em>
-<strong>bold</strong></p></div>'''
+<strong>bold</strong></p>
+</div>'''
             == rendered
         )
 
     def test_wrapped_markdown_with_table(self):
         rendered = wrapped_markdown(
-            """| Job | Duration |
-               | ----------- | ----------- |
-               | ETL | 14m |"""
+            """
+| Job | Duration |
+| ----------- | ----------- |
+| ETL | 14m |
+"""
         )
 
         assert (
-            '<div class="rich_doc" ><table>\n<thead>\n<tr>\n<th>Job</th>\n'
-            '<th>Duration</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ETL'
-            '</td>\n<td>14m</td>\n</tr>\n</tbody>\n'
-            '</table></div>'
-        ) == rendered
+            '''<div class="rich_doc" ><table>
+<thead>
+<tr>
+<th>Job</th>
+<th>Duration</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>ETL</td>
+<td>14m</td>
+</tr>
+</tbody>
+</table>
+</div>'''
+            == rendered
+        )
 
     def test_wrapped_markdown_with_indented_lines(self):
         rendered = wrapped_markdown(
@@ -217,7 +242,11 @@ class TestWrappedMarkdown(unittest.TestCase):
             """
         )
 
-        assert '<div class="rich_doc" ><h1>header</h1>\n<p>1st line\n2nd line</p></div>' == rendered
+        assert (
+            '''<div class="rich_doc" ><h1>header</h1>\n<p>1st line\n2nd line</p>
+</div>'''
+            == rendered
+        )
 
     def test_wrapped_markdown_with_raw_code_block(self):
         rendered = wrapped_markdown(
@@ -235,10 +264,12 @@ class TestWrappedMarkdown(unittest.TestCase):
         )
 
         assert (
-            '<div class="rich_doc" ><h1>Markdown code block</h1>\n'
-            '<p>Inline <code>code</code> works well.</p>\n'
-            '<pre><code>Code block\ndoes not\nrespect\nnewlines\n</code></pre></div>'
-        ) == rendered
+            '''<div class="rich_doc" ><h1>Markdown code block</h1>
+<p>Inline <code>code</code> works well.</p>
+<pre><code>Code block\ndoes not\nrespect\nnewlines\n</code></pre>
+</div>'''
+            == rendered
+        )
 
     def test_wrapped_markdown_with_nested_list(self):
         rendered = wrapped_markdown(
@@ -251,6 +282,49 @@ class TestWrappedMarkdown(unittest.TestCase):
         )
 
         assert (
-            '<div class="rich_doc" ><h3>Docstring with a code block</h3>\n'
-            '<ul>\n<li>And<ul>\n<li>A nested list</li>\n</ul>\n</li>\n</ul></div>'
-        ) == rendered
+            '''<div class="rich_doc" ><h3>Docstring with a code block</h3>
+<ul>
+<li>And
+<ul>
+<li>A nested list</li>
+</ul>
+</li>
+</ul>
+</div>'''
+            == rendered
+        )
+
+    def test_wrapped_markdown_with_collapsible_section(self):
+        rendered = wrapped_markdown(
+            """
+# A collapsible section with markdown
+<details>
+  <summary>Click to expand!</summary>
+
+  ## Heading
+  1. A numbered
+  2. list
+     * With some
+     * Sub bullets
+</details>
+            """
+        )
+
+        assert (
+            '''<div class="rich_doc" ><h1>A collapsible section with markdown</h1>
+<details>
+  <summary>Click to expand!</summary>
+<h2>Heading</h2>
+<ol>
+<li>A numbered</li>
+<li>list
+<ul>
+<li>With some</li>
+<li>Sub bullets</li>
+</ul>
+</li>
+</ol>
+</details>
+</div>'''
+            == rendered
+        )


[airflow] 04/39: Refresh list of committers (#24398)

Posted by po...@apache.org.
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 1641b496141f36f74c6d600fde3bbca2bcf9a0e4
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sun Jun 12 17:29:32 2022 +0200

    Refresh list of committers (#24398)
    
    (cherry picked from commit 4d2536584ba1e8fea79be93c009041d1d9deb933)
---
 .github/workflows/ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 05781d33d7..32283ed26d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -80,7 +80,6 @@ jobs:
             "XD-DENG",
             "aijamalnk",
             "alexvanboxel",
-            "aneesh-joseph",
             "aoen",
             "artwr",
             "ashb",
@@ -107,6 +106,7 @@ jobs:
             "milton0825",
             "mistercrunch",
             "msumit",
+            "pingzh",
             "potiuk",
             "r39132",
             "ryanahamilton",


[airflow] 16/39: Add verification steps when releasing the images. (#24520)

Posted by po...@apache.org.
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 c7fafc6516af9287c5c4da6af87d15d563d63137
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sun Jun 19 16:16:59 2022 +0200

    Add verification steps when releasing the images. (#24520)
    
    After the images are pushed in CI we are running the verification
    of the AMD image now.
    
    This cannot be really done during building and pushing the image,
    because we are using multi-platform images using remote builders
    so the image is not even available locally, so we need to actually
    pull the images after they are built in order to verify them.
    
    This PR adds those features:
    * ability to pull images for verification with --pull-flag
    * ability to verify slim images (regular tests are skipped and
      we only expect the preinstalled providers to be available
    * the steps to verify the images (both regular and slim) are
      added to the workflow
    
    (cherry picked from commit 2936759256273a66cf6343e451d81013a95ec47e)
---
 .github/workflows/release_dockerhub_image.yml      |  21 +++-
 .../airflow_breeze/commands/ci_image_commands.py   |  12 ++-
 .../commands/production_image_commands.py          |  14 +++
 .../src/airflow_breeze/utils/common_options.py     |   6 ++
 dev/breeze/src/airflow_breeze/utils/image.py       |   1 +
 dev/breeze/src/airflow_breeze/utils/run_tests.py   |   4 +-
 docker_tests/test_prod_image.py                    |  10 +-
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output-verify-image.svg              | 108 ++++++++++----------
 images/breeze/output-verify-prod-image.svg         | 112 +++++++++++----------
 10 files changed, 177 insertions(+), 113 deletions(-)

diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml
index a6c3e86ddd..cd5fe6e9ce 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -119,12 +119,27 @@ jobs:
           ${{ needs.build-info.outputs.skipLatest }}
           ${{ needs.build-info.outputs.limitPlatform }}
           --limit-python ${{ matrix.python-version }} --slim-images
-      - name: "Docker logout"
-        run: docker logout
-        if: always()
       - name: "Stop ARM instance"
         run: ./scripts/ci/images/ci_stop_arm_instance.sh
         if: always() && github.repository == 'apache/airflow'
+      - name: >
+          Verify regular AMD64 image: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
+        run: >
+          breeze verify-prod-image
+          --pull-image
+          --image-name
+          ${{github.repository}}:${{github.event.inputs.airflowVersion}}-python${{matrix.python-version}}
+      - name: >
+          Verify slim AMD64 image: ${{ github.event.inputs.airflowVersion }}, ${{ matrix.python-version }}
+        run: >
+          breeze verify-prod-image
+          --pull-image
+          --slim-image
+          --image-name
+          ${{github.repository}}:slim-${{github.event.inputs.airflowVersion}}-python${{matrix.python-version}}
+      - name: "Docker logout"
+        run: docker logout
+        if: always()
       - name: "Fix ownership"
         run: breeze fix-ownership
         if: always()
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index 374dac76cf..9ce895578e 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -54,6 +54,7 @@ from airflow_breeze.utils.common_options import (
     option_parallelism,
     option_platform,
     option_prepare_buildx_cache,
+    option_pull_image,
     option_push_image,
     option_python,
     option_python_versions,
@@ -181,6 +182,7 @@ CI_IMAGE_TOOLS_PARAMETERS = {
                 "--image-name",
                 "--python",
                 "--image-tag",
+                "--pull-image",
             ],
         }
     ],
@@ -270,7 +272,7 @@ def build_image(
 @option_image_tag
 @option_tag_as_latest
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
-def pull_image(
+def pull_ci_image(
     verbose: bool,
     dry_run: bool,
     python: str,
@@ -338,14 +340,16 @@ def pull_image(
 @option_github_repository
 @option_image_tag
 @option_image_name
+@option_pull_image
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
-def verify_image(
+def verify_ci_image(
     verbose: bool,
     dry_run: bool,
     python: str,
     github_repository: str,
     image_name: str,
     image_tag: str,
+    pull_image: bool,
     extra_pytest_args: Tuple,
 ):
     """Verify CI image."""
@@ -353,12 +357,16 @@ def verify_image(
     if image_name is None:
         build_params = BuildCiParams(python=python, image_tag=image_tag, github_repository=github_repository)
         image_name = build_params.airflow_image_name_with_tag
+    if pull_image:
+        command_to_run = ["docker", "pull", image_name]
+        run_command(command_to_run, verbose=verbose, dry_run=dry_run, check=True)
     get_console().print(f"[info]Verifying CI image: {image_name}[/]")
     return_code, info = verify_an_image(
         image_name=image_name,
         verbose=verbose,
         dry_run=dry_run,
         image_type='CI',
+        slim_image=False,
         extra_pytest_args=extra_pytest_args,
     )
     sys.exit(return_code)
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 8ac7aacab0..0b5ed2e68b 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -52,6 +52,7 @@ from airflow_breeze.utils.common_options import (
     option_parallelism,
     option_platform,
     option_prepare_buildx_cache,
+    option_pull_image,
     option_push_image,
     option_python,
     option_python_versions,
@@ -184,6 +185,7 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS = {
                 "--image-name",
                 "--python",
                 "--image-tag",
+                "--pull-image",
             ],
         }
     ],
@@ -382,6 +384,12 @@ def pull_prod_image(
 @option_github_repository
 @option_image_tag
 @option_image_name
+@option_pull_image
+@click.option(
+    '--slim-image',
+    help='The image to verify is slim and non-slim tests should be skipped.',
+    is_flag=True,
+)
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
 def verify_prod_image(
     verbose: bool,
@@ -390,6 +398,8 @@ def verify_prod_image(
     github_repository: str,
     image_name: str,
     image_tag: str,
+    pull_image: bool,
+    slim_image: bool,
     extra_pytest_args: Tuple,
 ):
     """Verify Production image."""
@@ -399,6 +409,9 @@ def verify_prod_image(
             python=python, image_tag=image_tag, github_repository=github_repository
         )
         image_name = build_params.airflow_image_name_with_tag
+    if pull_image:
+        command_to_run = ["docker", "pull", image_name]
+        run_command(command_to_run, verbose=verbose, dry_run=dry_run, check=True)
     get_console().print(f"[info]Verifying PROD image: {image_name}[/]")
     return_code, info = verify_an_image(
         image_name=image_name,
@@ -406,6 +419,7 @@ def verify_prod_image(
         dry_run=dry_run,
         image_type='PROD',
         extra_pytest_args=extra_pytest_args,
+        slim_image=slim_image,
     )
     sys.exit(return_code)
 
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index 628bb81979..0bc4d5af9f 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -434,3 +434,9 @@ option_airflow_constraints_mode_prod = click.option(
     show_default=True,
     help='Mode of constraints for PROD image building',
 )
+option_pull_image = click.option(
+    '--pull-image',
+    help="Pull image is missing before attempting to verify it.",
+    is_flag=True,
+    envvar='PULL_IMAGE',
+)
diff --git a/dev/breeze/src/airflow_breeze/utils/image.py b/dev/breeze/src/airflow_breeze/utils/image.py
index 36c40cf05a..57ccc2e3a1 100644
--- a/dev/breeze/src/airflow_breeze/utils/image.py
+++ b/dev/breeze/src/airflow_breeze/utils/image.py
@@ -201,6 +201,7 @@ def run_pull_and_verify_image(
         image_type=image_params.image_type,
         dry_run=dry_run,
         verbose=verbose,
+        slim_image=False,
         extra_pytest_args=extra_pytest_args,
     )
 
diff --git a/dev/breeze/src/airflow_breeze/utils/run_tests.py b/dev/breeze/src/airflow_breeze/utils/run_tests.py
index 63c507afe4..6cda9efa1e 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_tests.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_tests.py
@@ -26,7 +26,7 @@ from airflow_breeze.utils.run_utils import run_command
 
 
 def verify_an_image(
-    image_name: str, image_type: str, dry_run: bool, verbose: bool, extra_pytest_args: Tuple
+    image_name: str, image_type: str, dry_run: bool, verbose: bool, slim_image: bool, extra_pytest_args: Tuple
 ) -> Tuple[int, str]:
     command_result = run_command(
         ["docker", "inspect", image_name], dry_run=dry_run, verbose=verbose, check=False, stdout=DEVNULL
@@ -43,6 +43,8 @@ def verify_an_image(
         test_path = AIRFLOW_SOURCES_ROOT / "docker_tests" / "test_ci_image.py"
     env = os.environ.copy()
     env['DOCKER_IMAGE'] = image_name
+    if slim_image:
+        env['TEST_SLIM_IMAGE'] = 'true'
     command_result = run_command(
         [sys.executable, "-m", "pytest", str(test_path), *pytest_args, *extra_pytest_args],
         dry_run=dry_run,
diff --git a/docker_tests/test_prod_image.py b/docker_tests/test_prod_image.py
index 6e47cb0a9d..aae374c4d0 100644
--- a/docker_tests/test_prod_image.py
+++ b/docker_tests/test_prod_image.py
@@ -16,6 +16,7 @@
 # under the License.
 
 import json
+import os
 import subprocess
 import tempfile
 from pathlib import Path
@@ -30,6 +31,7 @@ from docker_tests.docker_tests_utils import (
     run_bash_in_docker,
     run_python_in_docker,
 )
+from setup import PREINSTALLED_PROVIDERS
 
 INSTALLED_PROVIDER_PATH = SOURCE_ROOT / "scripts" / "ci" / "installed_providers.txt"
 
@@ -74,8 +76,11 @@ class TestCommands:
 
 class TestPythonPackages:
     def test_required_providers_are_installed(self):
-        lines = (d.strip() for d in INSTALLED_PROVIDER_PATH.read_text().splitlines())
-        lines = (d for d in lines)
+        if os.environ.get("TEST_SLIM_IMAGE"):
+            lines = PREINSTALLED_PROVIDERS
+        else:
+            lines = (d.strip() for d in INSTALLED_PROVIDER_PATH.read_text().splitlines())
+            lines = (d for d in lines)
         packages_to_install = {f"apache-airflow-providers-{d.replace('.', '-')}" for d in lines}
         assert len(packages_to_install) != 0
 
@@ -163,6 +168,7 @@ class TestPythonPackages:
         "virtualenv": ["virtualenv"],
     }
 
+    @pytest.mark.skipif(os.environ.get("TEST_SLIM_IMAGE") == "true", reason="Skipped with slim image")
     @pytest.mark.parametrize("package_name,import_names", PACKAGE_IMPORTS.items())
     def test_check_dependencies_imports(self, package_name, import_names):
         run_python_in_docker(f"import {','.join(import_names)}")
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index dacbf6c6e2..58b9c9981f 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1 @@
-bdc63bfd5f0967029b8b32a8068303cf
+a5442e2ce4b79e862afacff8e79e43bd
diff --git a/images/breeze/output-verify-image.svg b/images/breeze/output-verify-image.svg
index 9c6d1a641f..e2dfddcbb0 100644
--- a/images/breeze/output-verify-image.svg
+++ b/images/breeze/output-verify-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 538.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,117 +19,121 @@
         font-weight: 700;
     }
 
-    .terminal-4078052804-matrix {
+    .terminal-2021148750-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-4078052804-title {
+    .terminal-2021148750-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-4078052804-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4078052804-r2 { fill: #c5c8c6 }
-.terminal-4078052804-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4078052804-r4 { fill: #868887 }
-.terminal-4078052804-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4078052804-r6 { fill: #98a84b;font-weight: bold }
-.terminal-4078052804-r7 { fill: #8d7b39 }
+    .terminal-2021148750-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2021148750-r2 { fill: #c5c8c6 }
+.terminal-2021148750-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2021148750-r4 { fill: #868887 }
+.terminal-2021148750-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2021148750-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2021148750-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-4078052804-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+    <clipPath id="terminal-2021148750-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="487.0" />
     </clipPath>
-    <clipPath id="terminal-4078052804-line-0">
+    <clipPath id="terminal-2021148750-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-1">
+<clipPath id="terminal-2021148750-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-2">
+<clipPath id="terminal-2021148750-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-3">
+<clipPath id="terminal-2021148750-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-4">
+<clipPath id="terminal-2021148750-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-5">
+<clipPath id="terminal-2021148750-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-6">
+<clipPath id="terminal-2021148750-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-7">
+<clipPath id="terminal-2021148750-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-8">
+<clipPath id="terminal-2021148750-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-9">
+<clipPath id="terminal-2021148750-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-10">
+<clipPath id="terminal-2021148750-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-11">
+<clipPath id="terminal-2021148750-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-12">
+<clipPath id="terminal-2021148750-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-13">
+<clipPath id="terminal-2021148750-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-14">
+<clipPath id="terminal-2021148750-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-15">
+<clipPath id="terminal-2021148750-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-16">
+<clipPath id="terminal-2021148750-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4078052804-line-17">
+<clipPath id="terminal-2021148750-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2021148750-line-18">
+    <rect x="0" y="440.7" 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="511.6" rx="8"/><text class="terminal-4078052804-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="536" rx="8"/><text class="terminal-2021148750-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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-4078052804-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2021148750-clip-terminal)">
     
-    <g class="terminal-4078052804-matrix">
-    <text class="terminal-4078052804-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4078052804-line-0)">
-</text><text class="terminal-4078052804-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4078052804-line-1)">Usage:&#160;</text><text class="terminal-4078052804-r1" x="97.6" y="44.4" textLength="634.4" clip-path="url(#terminal-4078052804-line-1)">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4078052804-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-1)">
-</text><text class="terminal-4078052804-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-2)">
-</text><text class="terminal-4078052804-r2" x="12.2" y="93.2" textLength="195.2" clip-path="url(#terminal-4078052804-line-3)">Verify&#160;CI&#160;image.</text><text class="terminal-4078052804-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4078052804-line-3)">
-</text><text class="terminal-4078052804-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-4)">
-</text><text class="terminal-4078052804-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4078052804-line-5)">╭─</text><text class="terminal-4078052804-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4078052804-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4078052804-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-6)">│</text><text class="terminal-4078052804-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-6)">-</text><text class="terminal-4078052804-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-4078052804-line-6)">-image</text><text class="terminal-4078052804-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-4078 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-7)">│</text><text class="terminal-4078052804-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-7)">-</text><text class="terminal-4078052804-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-4078052804-line-7)">-python</text><text class="terminal-4078052804-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4078052804-line-8)">│</text><text class="terminal-4078052804-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-4078052804-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;&#1 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-9)">│</text><text class="terminal-4078052804-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-9)">-</text><text class="terminal-4078052804-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-4078052804-line-9)">-image</text><text class="terminal-4078052804-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4078052804-line-10)">│</text><text class="terminal-4078052804-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-4078052804-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-4078052804-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-11)">│</text><text class="terminal-4078052804-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-4078052804-line-11)">(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-4078052804-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-4078052804-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4078052804-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-12)">
-</text><text class="terminal-4078052804-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-4078052804-line-13)">╭─</text><text class="terminal-4078052804-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-4078052804-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4078052804-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-407 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-14)">│</text><text class="terminal-4078052804-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-14)">-</text><text class="terminal-4078052804-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-4078052804-line-14)">-verbose</text><text class="terminal-4078052804-r6" x="280.6" y="361.6" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-4078052804-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4078052804-line-15)">│</text><text class="terminal-4078052804-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4078052804-line-15)">-</text><text class="terminal-4078052804-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-4078052804-line-15)">-dry</text><text class="terminal-4078052804-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-4078052804 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-16)">│</text><text class="terminal-4078052804-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-16)">-</text><text class="terminal-4078052804-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-4078052804-line-16)">-github</text><text class="terminal-4078052804-r5" x="122" y="410.4" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-4078052804-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-17)">│</text><text class="terminal-4078052804-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-17)">-</text><text class="terminal-4078052804-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-4078052804-line-17)">-help</text><text class="terminal-4078052804-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-40 [...]
-</text><text class="terminal-4078052804-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-4078052804-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4078052804-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-4078052804-line-18)">
+    <g class="terminal-2021148750-matrix">
+    <text class="terminal-2021148750-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2021148750-line-0)">
+</text><text class="terminal-2021148750-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2021148750-line-1)">Usage:&#160;</text><text class="terminal-2021148750-r1" x="97.6" y="44.4" textLength="634.4" clip-path="url(#terminal-2021148750-line-1)">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2021148750-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-1)">
+</text><text class="terminal-2021148750-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-2)">
+</text><text class="terminal-2021148750-r2" x="12.2" y="93.2" textLength="195.2" clip-path="url(#terminal-2021148750-line-3)">Verify&#160;CI&#160;image.</text><text class="terminal-2021148750-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-3)">
+</text><text class="terminal-2021148750-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-4)">
+</text><text class="terminal-2021148750-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2021148750-line-5)">╭─</text><text class="terminal-2021148750-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2021148750-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2021148750-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-6)">│</text><text class="terminal-2021148750-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-6)">-</text><text class="terminal-2021148750-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2021148750-line-6)">-image</text><text class="terminal-2021148750-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-2021 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-7)">│</text><text class="terminal-2021148750-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-7)">-</text><text class="terminal-2021148750-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-2021148750-line-7)">-python</text><text class="terminal-2021148750-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-8)">│</text><text class="terminal-2021148750-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-2021148750-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;&#1 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-9)">│</text><text class="terminal-2021148750-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-9)">-</text><text class="terminal-2021148750-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2021148750-line-9)">-image</text><text class="terminal-2021148750-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-20 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2021148750-line-10)">│</text><text class="terminal-2021148750-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-2021148750-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-2021148750-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-11)">│</text><text class="terminal-2021148750-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-2021148750-line-11)">(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-2021148750-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-12)">│</text><text class="terminal-2021148750-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-12)">-</text><text class="terminal-2021148750-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-2021148750-line-12)">-pull</text><text class="terminal-2021148750-r5" x="97.6" y="312.8" textLength="73.2" clip-path="url(#terminal-202 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-2021148750-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2021148750-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-13)">
+</text><text class="terminal-2021148750-r4" x="0" y="361.6" textLength="24.4" clip-path="url(#terminal-2021148750-line-14)">╭─</text><text class="terminal-2021148750-r4" x="24.4" y="361.6" textLength="1415.2" clip-path="url(#terminal-2021148750-line-14)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2021148750-r4" x="1439.6" y="361.6" textLength="24.4" clip-path="url(#terminal-202 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2021148750-line-15)">│</text><text class="terminal-2021148750-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2021148750-line-15)">-</text><text class="terminal-2021148750-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-2021148750-line-15)">-verbose</text><text class="terminal-2021148750-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-20211 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-16)">│</text><text class="terminal-2021148750-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-16)">-</text><text class="terminal-2021148750-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-2021148750-line-16)">-dry</text><text class="terminal-2021148750-r5" x="85.4" y="410.4" textLength="48.8" clip-path="url(#terminal-20 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-17)">│</text><text class="terminal-2021148750-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-17)">-</text><text class="terminal-2021148750-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-2021148750-line-17)">-github</text><text class="terminal-2021148750-r5" x="122" y="434.8" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2021148750-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-18)">│</text><text class="terminal-2021148750-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-18)">-</text><text class="terminal-2021148750-r5" x="36.6" y="459.2" textLength="61" clip-path="url(#terminal-2021148750-line-18)">-help</text><text class="terminal-2021148750-r6" x="280.6" y="459.2" textLength="24.4" clip-path="url(#terminal-20 [...]
+</text><text class="terminal-2021148750-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-2021148750-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2021148750-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-19)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-verify-prod-image.svg b/images/breeze/output-verify-prod-image.svg
index 48b61a3082..31c7b66b72 100644
--- a/images/breeze/output-verify-prod-image.svg
+++ b/images/breeze/output-verify-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 562.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,117 +19,125 @@
         font-weight: 700;
     }
 
-    .terminal-1294281603-matrix {
+    .terminal-464155386-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1294281603-title {
+    .terminal-464155386-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1294281603-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1294281603-r2 { fill: #c5c8c6 }
-.terminal-1294281603-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1294281603-r4 { fill: #868887 }
-.terminal-1294281603-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1294281603-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1294281603-r7 { fill: #8d7b39 }
+    .terminal-464155386-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-464155386-r2 { fill: #c5c8c6 }
+.terminal-464155386-r3 { fill: #d0b344;font-weight: bold }
+.terminal-464155386-r4 { fill: #868887 }
+.terminal-464155386-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-464155386-r6 { fill: #98a84b;font-weight: bold }
+.terminal-464155386-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1294281603-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+    <clipPath id="terminal-464155386-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="511.4" />
     </clipPath>
-    <clipPath id="terminal-1294281603-line-0">
+    <clipPath id="terminal-464155386-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-1">
+<clipPath id="terminal-464155386-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-2">
+<clipPath id="terminal-464155386-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-3">
+<clipPath id="terminal-464155386-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-4">
+<clipPath id="terminal-464155386-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-5">
+<clipPath id="terminal-464155386-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-6">
+<clipPath id="terminal-464155386-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-7">
+<clipPath id="terminal-464155386-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-8">
+<clipPath id="terminal-464155386-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-9">
+<clipPath id="terminal-464155386-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-10">
+<clipPath id="terminal-464155386-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-11">
+<clipPath id="terminal-464155386-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-12">
+<clipPath id="terminal-464155386-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-13">
+<clipPath id="terminal-464155386-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-14">
+<clipPath id="terminal-464155386-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-15">
+<clipPath id="terminal-464155386-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-16">
+<clipPath id="terminal-464155386-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1294281603-line-17">
+<clipPath id="terminal-464155386-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-464155386-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-464155386-line-19">
+    <rect x="0" y="465.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="511.6" rx="8"/><text class="terminal-1294281603-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-prod-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="560.4" rx="8"/><text class="terminal-464155386-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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-1294281603-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-464155386-clip-terminal)">
     
-    <g class="terminal-1294281603-matrix">
-    <text class="terminal-1294281603-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1294281603-line-0)">
-</text><text class="terminal-1294281603-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1294281603-line-1)">Usage:&#160;</text><text class="terminal-1294281603-r1" x="97.6" y="44.4" textLength="695.4" clip-path="url(#terminal-1294281603-line-1)">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1294281603-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-1)">
-</text><text class="terminal-1294281603-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-2)">
-</text><text class="terminal-1294281603-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#terminal-1294281603-line-3)">Verify&#160;Production&#160;image.</text><text class="terminal-1294281603-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1294281603-line-3)">
-</text><text class="terminal-1294281603-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-4)">
-</text><text class="terminal-1294281603-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1294281603-line-5)">╭─</text><text class="terminal-1294281603-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1294281603-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1294281603-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-6)">│</text><text class="terminal-1294281603-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-6)">-</text><text class="terminal-1294281603-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-1294281603-line-6)">-image</text><text class="terminal-1294281603-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-1294 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-7)">│</text><text class="terminal-1294281603-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-7)">-</text><text class="terminal-1294281603-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-1294281603-line-7)">-python</text><text class="terminal-1294281603-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1294281603-line-8)">│</text><text class="terminal-1294281603-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-1294281603-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;&#1 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-9)">│</text><text class="terminal-1294281603-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-9)">-</text><text class="terminal-1294281603-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-1294281603-line-9)">-image</text><text class="terminal-1294281603-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1294281603-line-10)">│</text><text class="terminal-1294281603-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-1294281603-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-1294281603-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-11)">│</text><text class="terminal-1294281603-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-1294281603-line-11)">(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-1294281603-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-1294281603-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1294281603-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-12)">
-</text><text class="terminal-1294281603-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-1294281603-line-13)">╭─</text><text class="terminal-1294281603-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-1294281603-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1294281603-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-129 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-14)">│</text><text class="terminal-1294281603-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-14)">-</text><text class="terminal-1294281603-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1294281603-line-14)">-verbose</text><text class="terminal-1294281603-r6" x="280.6" y="361.6" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1294281603-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1294281603-line-15)">│</text><text class="terminal-1294281603-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1294281603-line-15)">-</text><text class="terminal-1294281603-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1294281603-line-15)">-dry</text><text class="terminal-1294281603-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-1294281603 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-16)">│</text><text class="terminal-1294281603-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-16)">-</text><text class="terminal-1294281603-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-1294281603-line-16)">-github</text><text class="terminal-1294281603-r5" x="122" y="410.4" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1294281603-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-17)">│</text><text class="terminal-1294281603-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-17)">-</text><text class="terminal-1294281603-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-1294281603-line-17)">-help</text><text class="terminal-1294281603-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1294281603-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-1294281603-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1294281603-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-1294281603-line-18)">
+    <g class="terminal-464155386-matrix">
+    <text class="terminal-464155386-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-464155386-line-0)">
+</text><text class="terminal-464155386-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-464155386-line-1)">Usage:&#160;</text><text class="terminal-464155386-r1" x="97.6" y="44.4" textLength="695.4" clip-path="url(#terminal-464155386-line-1)">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-464155386-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-464155386-line-1)">
+</text><text class="terminal-464155386-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-464155386-line-2)">
+</text><text class="terminal-464155386-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#terminal-464155386-line-3)">Verify&#160;Production&#160;image.</text><text class="terminal-464155386-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-464155386-line-3)">
+</text><text class="terminal-464155386-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-464155386-line-4)">
+</text><text class="terminal-464155386-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-464155386-line-5)">╭─</text><text class="terminal-464155386-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-464155386-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-464155386-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-464155 [...]
+</text><text class="terminal-464155386-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-464155386-line-6)">│</text><text class="terminal-464155386-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-464155386-line-6)">-</text><text class="terminal-464155386-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-464155386-line-6)">-image</text><text class="terminal-464155386-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-464155386-l [...]
+</text><text class="terminal-464155386-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-464155386-line-7)">│</text><text class="terminal-464155386-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-464155386-line-7)">-</text><text class="terminal-464155386-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-464155386-line-7)">-python</text><text class="terminal-464155386-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-46415538 [...]
+</text><text class="terminal-464155386-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-464155386-line-8)">│</text><text class="terminal-464155386-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-464155386-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;&#160;& [...]
+</text><text class="terminal-464155386-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-464155386-line-9)">│</text><text class="terminal-464155386-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-464155386-line-9)">-</text><text class="terminal-464155386-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-464155386-line-9)">-image</text><text class="terminal-464155386-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-464155386 [...]
+</text><text class="terminal-464155386-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-464155386-line-10)">│</text><text class="terminal-464155386-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-464155386-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-464155386-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-464155386-line-11)">│</text><text class="terminal-464155386-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-464155386-line-11)">(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;&#1 [...]
+</text><text class="terminal-464155386-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-464155386-line-12)">│</text><text class="terminal-464155386-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-464155386-line-12)">-</text><text class="terminal-464155386-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-464155386-line-12)">-pull</text><text class="terminal-464155386-r5" x="97.6" y="312.8" textLength="73.2" clip-path="url(#terminal-464155386- [...]
+</text><text class="terminal-464155386-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-464155386-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-464155386-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-464155386-line-13)">
+</text><text class="terminal-464155386-r4" x="0" y="361.6" textLength="24.4" clip-path="url(#terminal-464155386-line-14)">╭─</text><text class="terminal-464155386-r4" x="24.4" y="361.6" textLength="1415.2" clip-path="url(#terminal-464155386-line-14)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-464155386-r4" x="1439.6" y="361.6" textLength="24.4" clip-path="url(#terminal-46415538 [...]
+</text><text class="terminal-464155386-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-464155386-line-15)">│</text><text class="terminal-464155386-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-464155386-line-15)">-</text><text class="terminal-464155386-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-464155386-line-15)">-verbose</text><text class="terminal-464155386-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-464155386-li [...]
+</text><text class="terminal-464155386-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-464155386-line-16)">│</text><text class="terminal-464155386-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-464155386-line-16)">-</text><text class="terminal-464155386-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-464155386-line-16)">-dry</text><text class="terminal-464155386-r5" x="85.4" y="410.4" textLength="48.8" clip-path="url(#terminal-464155386 [...]
+</text><text class="terminal-464155386-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-464155386-line-17)">│</text><text class="terminal-464155386-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-464155386-line-17)">-</text><text class="terminal-464155386-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-464155386-line-17)">-github</text><text class="terminal-464155386-r5" x="122" y="434.8" textLength="134.2" clip-path="url(#terminal-464155 [...]
+</text><text class="terminal-464155386-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-464155386-line-18)">│</text><text class="terminal-464155386-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-464155386-line-18)">-</text><text class="terminal-464155386-r5" x="36.6" y="459.2" textLength="61" clip-path="url(#terminal-464155386-line-18)">-slim</text><text class="terminal-464155386-r5" x="97.6" y="459.2" textLength="73.2" clip-path="url(#terminal-464155386- [...]
+</text><text class="terminal-464155386-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-464155386-line-19)">│</text><text class="terminal-464155386-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-464155386-line-19)">-</text><text class="terminal-464155386-r5" x="36.6" y="483.6" textLength="61" clip-path="url(#terminal-464155386-line-19)">-help</text><text class="terminal-464155386-r6" x="280.6" y="483.6" textLength="24.4" clip-path="url(#terminal-464155386 [...]
+</text><text class="terminal-464155386-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-464155386-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-464155386-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-464155386-line-20)">
 </text>
     </g>
     </g>


[airflow] 24/39: We now need at least Flask-WTF 0.15 (#24621)

Posted by po...@apache.org.
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 4e29345bf24f9aff240f89c2796bbe3645fd4a78
Author: Ash Berlin-Taylor <as...@apache.org>
AuthorDate: Thu Jun 23 20:58:07 2022 +0100

    We now need at least Flask-WTF 0.15 (#24621)
    
    We upgraded flask and werkzeug in #24399, and updated the constraints,
    but not everyone uses them (such as me in my local virtual environment
    when developing) so the min version in setup.cfg has to match as well
    
    (cherry picked from commit 030169dc3e5c17d8cade9c9a431afeee954abc3e)
---
 setup.cfg | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/setup.cfg b/setup.cfg
index 21d5912150..323e21b234 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -111,7 +111,7 @@ install_requires =
     flask-caching>=1.5.0
     flask-login>=0.5
     flask-session>=0.4.0
-    flask-wtf>=0.14.3
+    flask-wtf>=0.15
     graphviz>=0.12
     gunicorn>=20.1.0
     httpx


[airflow] 34/39: Fix behaviour of build/pull after recent Breeze changes (#24657)

Posted by po...@apache.org.
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 174ee470d50f005b4057c215a031576651e826b0
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Mon Jun 27 03:00:10 2022 +0200

    Fix behaviour of build/pull after recent Breeze changes (#24657)
    
    The behaviour of Breeze after some recent changes related to
    pulling and building images in parallel have been slightly broken.
    Nothing serious but slightly annoying behaviour:
    
    * when starting breeze shell, the image was attempted to be
      build even if it was not needed (but cache efficiency made it fast
      enough to not be too annoying (unless we updated to newer
      python base image
    
    * breeze pull command for "latest" branch makes no sense any more -
      we stopped pushing "latest" image to ghcr.io, we only push
      cache and "tagged" images. We are now turning --image-tag as
      required in "pull_image" and when someone specifies latest,
      error and helpful message is printed
    
    * --force-build flag in "shell-related-commands" was not
      properly propagated to build-image so it did not actually
      force image building.
    
    All those problems are fixed now.
    
    (cherry picked from commit b678dc25f6604ddf603e42500e3e5583b6663df6)
---
 .../airflow_breeze/commands/ci_image_commands.py   |  51 +--
 .../airflow_breeze/commands/developer_commands.py  |  12 +-
 .../commands/production_image_commands.py          |  21 +-
 .../commands/release_management_commands.py        |   6 +-
 .../airflow_breeze/commands/testing_commands.py    |   8 +-
 .../src/airflow_breeze/utils/common_options.py     |  24 +-
 images/breeze/output-build-image.svg               | 288 ++++++++---------
 images/breeze/output-build-prod-image.svg          | 356 ++++++++++-----------
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output-docker-compose-tests.svg      | 104 +++---
 images/breeze/output-generate-constraints.svg      | 152 +++++----
 images/breeze/output-pull-image.svg                | 150 +++++----
 images/breeze/output-pull-prod-image.svg           | 150 +++++----
 images/breeze/output-shell.svg                     | 224 +++++++------
 images/breeze/output-start-airflow.svg             | 232 +++++++-------
 images/breeze/output-tests.svg                     | 164 +++++-----
 images/breeze/output-verify-image.svg              | 108 +++----
 images/breeze/output-verify-prod-image.svg         | 112 +++----
 18 files changed, 1062 insertions(+), 1102 deletions(-)

diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index b9cfa28957..298d264b0b 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -37,6 +37,7 @@ from airflow_breeze.utils.common_options import (
     option_airflow_constraints_mode_ci,
     option_airflow_constraints_reference_build,
     option_answer,
+    option_builder,
     option_debian_version,
     option_dev_apt_command,
     option_dev_apt_deps,
@@ -48,10 +49,12 @@ from airflow_breeze.utils.common_options import (
     option_github_token,
     option_github_username,
     option_image_name,
-    option_image_tag,
+    option_image_tag_for_building,
+    option_image_tag_for_pulling,
+    option_image_tag_for_verifying,
     option_install_providers_from_sources,
     option_parallelism,
-    option_platform,
+    option_platform_multiple,
     option_prepare_buildx_cache,
     option_pull_image,
     option_push_image,
@@ -191,7 +194,7 @@ CI_IMAGE_TOOLS_PARAMETERS = {
 }
 
 
-def start_building(ci_image_params: BuildCiParams, dry_run: bool, verbose: bool) -> bool:
+def check_if_image_building_is_needed(ci_image_params: BuildCiParams, dry_run: bool, verbose: bool) -> bool:
     """Starts building attempt. Returns false if we should not continue"""
     if not ci_image_params.force_build and not ci_image_params.upgrade_to_newer_dependencies:
         if not should_we_run_the_build(build_ci_params=ci_image_params):
@@ -233,12 +236,12 @@ def run_build_in_parallel(
 @option_parallelism
 @option_python_versions
 @option_upgrade_to_newer_dependencies
-@option_platform
+@option_platform_multiple
 @option_debian_version
 @option_github_token
 @option_github_username
 @option_docker_cache
-@option_image_tag
+@option_image_tag_for_building
 @option_prepare_buildx_cache
 @option_push_image
 @option_empty_image
@@ -252,13 +255,13 @@ def run_build_in_parallel(
 @option_additional_dev_apt_env
 @option_additional_runtime_apt_env
 @option_additional_runtime_apt_command
+@option_builder
 @option_dev_apt_command
 @option_dev_apt_deps
 @option_force_build
 @option_python_image
 @option_runtime_apt_command
 @option_runtime_apt_deps
-@option_force_build
 @option_airflow_constraints_mode_ci
 @option_airflow_constraints_reference_build
 @option_tag_as_latest
@@ -293,7 +296,7 @@ def build_image(
             params.python = python
             params.answer = answer
             params_list.append(params)
-        start_building(params_list[0], dry_run=dry_run, verbose=verbose)
+        check_if_image_building_is_needed(params_list[0], dry_run=dry_run, verbose=verbose)
         run_build_in_parallel(
             image_params_list=params_list,
             python_version_list=python_version_list,
@@ -303,7 +306,7 @@ def build_image(
         )
     else:
         params = BuildCiParams(**parameters_passed)
-        start_building(params, dry_run=dry_run, verbose=verbose)
+        check_if_image_building_is_needed(params, dry_run=dry_run, verbose=verbose)
         run_build(ci_image_params=params)
 
 
@@ -318,7 +321,7 @@ def build_image(
 @option_github_token
 @option_verify_image
 @option_wait_for_image
-@option_image_tag
+@option_image_tag_for_pulling
 @option_tag_as_latest
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
 def pull_ci_image(
@@ -330,13 +333,20 @@ def pull_ci_image(
     python_versions: str,
     github_token: str,
     parallelism: int,
-    image_tag: Optional[str],
+    image_tag: str,
     wait_for_image: bool,
     tag_as_latest: bool,
     verify_image: bool,
     extra_pytest_args: Tuple,
 ):
     """Pull and optionally verify CI images - possibly in parallel for all Python versions."""
+    if image_tag == "latest":
+        get_console().print("[red]You cannot pull latest images because they are not published any more!\n")
+        get_console().print(
+            "[yellow]You need to specify commit tag to pull and image. If you wish to get"
+            " the latest image, you need to run `breeze build-image` command\n"
+        )
+        sys.exit(1)
     perform_environment_checks(verbose=verbose)
     if run_in_parallel:
         python_version_list = get_python_version_list(python_versions)
@@ -387,7 +397,7 @@ def pull_ci_image(
 @option_dry_run
 @option_python
 @option_github_repository
-@option_image_tag
+@option_image_tag_for_verifying
 @option_image_name
 @option_pull_image
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
@@ -397,7 +407,7 @@ def verify_ci_image(
     python: str,
     github_repository: str,
     image_name: str,
-    image_tag: str,
+    image_tag: Optional[str],
     pull_image: bool,
     extra_pytest_args: Tuple,
 ):
@@ -421,7 +431,7 @@ def verify_ci_image(
     sys.exit(return_code)
 
 
-def should_we_run_the_build(build_ci_params: BuildCiParams, verbose: bool) -> bool:
+def should_we_run_the_build(build_ci_params: BuildCiParams) -> bool:
     """
     Check if we should run the build based on what files have been modified since last build and answer from
     the user.
@@ -436,9 +446,7 @@ def should_we_run_the_build(build_ci_params: BuildCiParams, verbose: bool) -> bo
     # We import those locally so that click autocomplete works
     from inputimeout import TimeoutOccurred
 
-    if not md5sum_check_if_build_is_needed(
-        md5sum_cache_dir=build_ci_params.md5sum_cache_dir, verbose=verbose
-    ):
+    if not md5sum_check_if_build_is_needed(md5sum_cache_dir=build_ci_params.md5sum_cache_dir):
         return False
     try:
         answer = user_confirm(
@@ -581,9 +589,13 @@ def rebuild_or_pull_ci_image_if_needed(
         BUILD_CACHE_DIR, command_params.airflow_branch, f".built_{command_params.python}"
     )
     ci_image_params = BuildCiParams(
-        python=command_params.python, upgrade_to_newer_dependencies=False, image_tag=command_params.image_tag
+        python=command_params.python,
+        upgrade_to_newer_dependencies=False,
+        image_tag=command_params.image_tag,
+        platform=command_params.platform,
+        force_build=command_params.force_build,
     )
-    if command_params.image_tag is not None:
+    if command_params.image_tag is not None and command_params.image_tag != "latest":
         return_code, message = run_pull_image(
             image_params=ci_image_params,
             dry_run=dry_run,
@@ -605,4 +617,5 @@ def rebuild_or_pull_ci_image_if_needed(
             'Forcing build.[/]'
         )
         ci_image_params.force_build = True
-    run_build_ci_image(verbose, dry_run=dry_run, ci_image_params=ci_image_params, parallel=False)
+    if check_if_image_building_is_needed(ci_image_params=ci_image_params, dry_run=dry_run, verbose=verbose):
+        run_build_ci_image(verbose, dry_run=dry_run, ci_image_params=ci_image_params, parallel=False)
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index bc324bf7e3..a81ae92745 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -45,7 +45,7 @@ from airflow_breeze.utils.common_options import (
     option_force_build,
     option_forward_credentials,
     option_github_repository,
-    option_image_tag,
+    option_image_tag_for_running,
     option_installation_package_format,
     option_integration,
     option_load_default_connection,
@@ -112,9 +112,9 @@ DEVELOPER_PARAMETERS = {
                 "--use-packages-from-dist",
                 "--package-format",
                 "--force-build",
+                "--image-tag",
                 "--mount-sources",
                 "--debian-version",
-                "--image-tag",
             ],
         },
     ],
@@ -141,9 +141,9 @@ DEVELOPER_PARAMETERS = {
                 "--use-packages-from-dist",
                 "--package-format",
                 "--force-build",
+                "--image-tag",
                 "--mount-sources",
                 "--debian-version",
-                "--image-tag",
             ],
         },
     ],
@@ -172,8 +172,8 @@ DEVELOPER_PARAMETERS = {
                 "--use-packages-from-dist",
                 "--package-format",
                 "--force-build",
-                "--mount-sources",
                 "--image-tag",
+                "--mount-sources",
             ],
         },
     ],
@@ -242,7 +242,7 @@ DEVELOPER_PARAMETERS = {
 @option_mount_sources
 @option_integration
 @option_db_reset
-@option_image_tag
+@option_image_tag_for_running
 @option_answer
 @click.argument('extra-args', nargs=-1, type=click.UNPROCESSED)
 def shell(
@@ -319,7 +319,7 @@ def shell(
 @option_installation_package_format
 @option_mount_sources
 @option_integration
-@option_image_tag
+@option_image_tag_for_running
 @option_db_reset
 @option_answer
 @click.argument('extra-args', nargs=-1, type=click.UNPROCESSED)
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 c8dca4cae1..07bd42cab9 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -47,7 +47,9 @@ from airflow_breeze.utils.common_options import (
     option_github_token,
     option_github_username,
     option_image_name,
-    option_image_tag,
+    option_image_tag_for_building,
+    option_image_tag_for_pulling,
+    option_image_tag_for_verifying,
     option_install_providers_from_sources,
     option_parallelism,
     option_platform,
@@ -246,7 +248,7 @@ def run_build_in_parallel(
 @option_github_token
 @option_github_username
 @option_docker_cache
-@option_image_tag
+@option_image_tag_for_building
 @option_prepare_buildx_cache
 @option_push_image
 @option_empty_image
@@ -363,7 +365,7 @@ def build_prod_image(
 @option_parallelism
 @option_python_versions
 @option_github_token
-@option_image_tag
+@option_image_tag_for_pulling
 @option_wait_for_image
 @option_tag_as_latest
 @option_verify_image
@@ -377,13 +379,20 @@ def pull_prod_image(
     parallelism: int,
     python_versions: str,
     github_token: str,
-    image_tag: Optional[str],
+    image_tag: str,
     wait_for_image: bool,
     tag_as_latest: bool,
     verify_image: bool,
     extra_pytest_args: Tuple,
 ):
     """Pull and optionally verify Production images - possibly in parallel for all Python versions."""
+    if image_tag == "latest":
+        get_console().print("[red]You cannot pull latest images because they are not published any more!\n")
+        get_console().print(
+            "[yellow]You need to specify commit tag to pull and image. If you wish to get"
+            " the latest image, you need to run `breeze build-image` command\n"
+        )
+        sys.exit(1)
     perform_environment_checks(verbose=verbose)
     if run_in_parallel:
         python_version_list = get_python_version_list(python_versions)
@@ -436,7 +445,7 @@ def pull_prod_image(
 @option_dry_run
 @option_python
 @option_github_repository
-@option_image_tag
+@option_image_tag_for_verifying
 @option_image_name
 @option_pull_image
 @click.option(
@@ -451,7 +460,7 @@ def verify_prod_image(
     python: str,
     github_repository: str,
     image_name: str,
-    image_tag: str,
+    image_tag: Optional[str],
     pull_image: bool,
     slim_image: bool,
     extra_pytest_args: Tuple,
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 17bf70b3af..6a2c331e6d 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -43,7 +43,7 @@ from airflow_breeze.utils.common_options import (
     option_answer,
     option_dry_run,
     option_github_repository,
-    option_image_tag,
+    option_image_tag_for_running,
     option_installation_package_format,
     option_package_format,
     option_parallelism,
@@ -402,7 +402,7 @@ def run_generate_constraints_in_parallel(
 @option_run_in_parallel
 @option_parallelism
 @option_python_versions
-@option_image_tag
+@option_image_tag_for_running
 @option_answer
 @option_debug_release_management
 @option_airflow_constraints_mode_ci
@@ -414,7 +414,7 @@ def generate_constraints(
     run_in_parallel: bool,
     parallelism: int,
     python_versions: str,
-    image_tag: str,
+    image_tag: Optional[str],
     answer: Optional[str],
     debug: bool,
     airflow_constraints_mode: str,
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 45df368afa..8c9200a840 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -38,7 +38,7 @@ from airflow_breeze.utils.common_options import (
     option_dry_run,
     option_github_repository,
     option_image_name,
-    option_image_tag,
+    option_image_tag_for_running,
     option_integration,
     option_mount_sources,
     option_mssql_version,
@@ -109,7 +109,7 @@ TESTING_PARAMETERS = {
 @option_dry_run
 @option_python
 @option_github_repository
-@option_image_tag
+@option_image_tag_for_running
 @option_image_name
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
 def docker_compose_tests(
@@ -118,7 +118,7 @@ def docker_compose_tests(
     python: str,
     github_repository: str,
     image_name: str,
-    image_tag: str,
+    image_tag: Optional[str],
     extra_pytest_args: Tuple,
 ):
     """Run docker-compose tests."""
@@ -243,7 +243,7 @@ def run_with_progress(
     help="Limit progress to percentage only and just show the summary when tests complete.",
     is_flag=True,
 )
-@option_image_tag
+@option_image_tag_for_running
 @option_mount_sources
 @click.option(
     "--test-type",
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index 65f0040f89..af2b6c75e0 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -186,11 +186,29 @@ option_github_username = click.option(
     help='The user name used to authenticate to GitHub.',
     envvar='GITHUB_USERNAME',
 )
-option_image_tag = click.option(
+option_image_tag_for_pulling = click.option(
     '-t',
     '--image-tag',
-    help='Tag of the image which is used to pull or run the image (implies --mount-sources=skip'
-    ' when using to run shell or tests) ',
+    help='Tag of the image which is used to pull the image',
+    envvar='IMAGE_TAG',
+    required=True,
+)
+option_image_tag_for_building = click.option(
+    '-t',
+    '--image-tag',
+    help='Tag the image after building it',
+    envvar='IMAGE_TAG',
+)
+option_image_tag_for_running = click.option(
+    '-t',
+    '--image-tag',
+    help='Tag of the image which is used to run the image (implies --mount-sources=skip)',
+    envvar='IMAGE_TAG',
+)
+option_image_tag_for_verifying = click.option(
+    '-t',
+    '--image-tag',
+    help='Tag of the image when verifying it',
     envvar='IMAGE_TAG',
 )
 option_image_name = click.option(
diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg
index 082e97adef..e84a5e189a 100644
--- a/images/breeze/output-build-image.svg
+++ b/images/breeze/output-build-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1636.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1587.1999999999998" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,301 +19,293 @@
         font-weight: 700;
     }
 
-    .terminal-763863226-matrix {
+    .terminal-1518364354-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-763863226-title {
+    .terminal-1518364354-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-763863226-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-763863226-r2 { fill: #c5c8c6 }
-.terminal-763863226-r3 { fill: #d0b344;font-weight: bold }
-.terminal-763863226-r4 { fill: #868887 }
-.terminal-763863226-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-763863226-r6 { fill: #98a84b;font-weight: bold }
-.terminal-763863226-r7 { fill: #8d7b39 }
+    .terminal-1518364354-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1518364354-r2 { fill: #c5c8c6 }
+.terminal-1518364354-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1518364354-r4 { fill: #868887 }
+.terminal-1518364354-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1518364354-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1518364354-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-763863226-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1585.0" />
+    <clipPath id="terminal-1518364354-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1536.1999999999998" />
     </clipPath>
-    <clipPath id="terminal-763863226-line-0">
+    <clipPath id="terminal-1518364354-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-1">
+<clipPath id="terminal-1518364354-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-2">
+<clipPath id="terminal-1518364354-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-3">
+<clipPath id="terminal-1518364354-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-4">
+<clipPath id="terminal-1518364354-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-5">
+<clipPath id="terminal-1518364354-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-6">
+<clipPath id="terminal-1518364354-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-7">
+<clipPath id="terminal-1518364354-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-8">
+<clipPath id="terminal-1518364354-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-9">
+<clipPath id="terminal-1518364354-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-10">
+<clipPath id="terminal-1518364354-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-11">
+<clipPath id="terminal-1518364354-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-12">
+<clipPath id="terminal-1518364354-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-13">
+<clipPath id="terminal-1518364354-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-14">
+<clipPath id="terminal-1518364354-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-15">
+<clipPath id="terminal-1518364354-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-16">
+<clipPath id="terminal-1518364354-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-17">
+<clipPath id="terminal-1518364354-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-18">
+<clipPath id="terminal-1518364354-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-19">
+<clipPath id="terminal-1518364354-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-20">
+<clipPath id="terminal-1518364354-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-21">
+<clipPath id="terminal-1518364354-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-22">
+<clipPath id="terminal-1518364354-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-23">
+<clipPath id="terminal-1518364354-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-24">
+<clipPath id="terminal-1518364354-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-25">
+<clipPath id="terminal-1518364354-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-26">
+<clipPath id="terminal-1518364354-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-27">
+<clipPath id="terminal-1518364354-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-28">
+<clipPath id="terminal-1518364354-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-29">
+<clipPath id="terminal-1518364354-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-30">
+<clipPath id="terminal-1518364354-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-31">
+<clipPath id="terminal-1518364354-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-32">
+<clipPath id="terminal-1518364354-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-33">
+<clipPath id="terminal-1518364354-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-34">
+<clipPath id="terminal-1518364354-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-35">
+<clipPath id="terminal-1518364354-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-36">
+<clipPath id="terminal-1518364354-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-37">
+<clipPath id="terminal-1518364354-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-38">
+<clipPath id="terminal-1518364354-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-39">
+<clipPath id="terminal-1518364354-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-40">
+<clipPath id="terminal-1518364354-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-41">
+<clipPath id="terminal-1518364354-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-42">
+<clipPath id="terminal-1518364354-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-43">
+<clipPath id="terminal-1518364354-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-44">
+<clipPath id="terminal-1518364354-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-45">
+<clipPath id="terminal-1518364354-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-46">
+<clipPath id="terminal-1518364354-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-47">
+<clipPath id="terminal-1518364354-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-48">
+<clipPath id="terminal-1518364354-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-49">
+<clipPath id="terminal-1518364354-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-50">
+<clipPath id="terminal-1518364354-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-51">
+<clipPath id="terminal-1518364354-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-52">
+<clipPath id="terminal-1518364354-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-53">
+<clipPath id="terminal-1518364354-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-54">
+<clipPath id="terminal-1518364354-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-55">
+<clipPath id="terminal-1518364354-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-56">
+<clipPath id="terminal-1518364354-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-57">
+<clipPath id="terminal-1518364354-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-58">
+<clipPath id="terminal-1518364354-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-59">
+<clipPath id="terminal-1518364354-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-60">
+<clipPath id="terminal-1518364354-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-61">
+<clipPath id="terminal-1518364354-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-763863226-line-62">
-    <rect x="0" y="1514.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-763863226-line-63">
-    <rect x="0" y="1538.7" 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="1634" rx="8"/><text class="terminal-763863226-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1585.2" rx="8"/><text class="terminal-1518364354-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-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-763863226-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1518364354-clip-terminal)">
     
-    <g class="terminal-763863226-matrix">
-    <text class="terminal-763863226-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-763863226-line-0)">
-</text><text class="terminal-763863226-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-763863226-line-1)">Usage:&#160;</text><text class="terminal-763863226-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-763863226-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-763863226-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-763863226-line-1)">
-</text><text class="terminal-763863226-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-763863226-line-2)">
-</text><text class="terminal-763863226-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-763863226-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-763863226-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-763863226-line-3)">
-</text><text class="terminal-763863226-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-763863226-line-4)">
-</text><text class="terminal-763863226-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-763863226-line-5)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-763863226-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-763863226-l [...]
-</text><text class="terminal-763863226-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-763863226-line-6)">│</text><text class="terminal-763863226-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-763863226-line-6)">-</text><text class="terminal-763863226-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-763863226-line-6)">-python</text><text class="terminal-763863226-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-763863226- [...]
-</text><text class="terminal-763863226-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-763863226-line-7)">│</text><text class="terminal-763863226-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-763863226-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;&#16 [...]
-</text><text class="terminal-763863226-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-763863226-line-8)">│</text><text class="terminal-763863226-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-763863226-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;&#160 [...]
-</text><text class="terminal-763863226-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-763863226-line-9)">│</text><text class="terminal-763863226-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-763863226-line-9)">-</text><text class="terminal-763863226-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-763863226-line-9)">-upgrade</text><text class="terminal-763863226-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal-763863 [...]
-</text><text class="terminal-763863226-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-763863226-line-10)">│</text><text class="terminal-763863226-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-763863226-line-10)">-</text><text class="terminal-763863226-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-763863226-line-10)">-debian</text><text class="terminal-763863226-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-763863226-line- [...]
-</text><text class="terminal-763863226-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-763863226-line-11)">│</text><text class="terminal-763863226-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-763863226-line-11)">-</text><text class="terminal-763863226-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-763863226-line-11)">-image</text><text class="terminal-763863226-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal-763863 [...]
-</text><text class="terminal-763863226-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-763863226-line-12)">│</text><text class="terminal-763863226-r5" x="475.8" y="312.8" textLength="12.2" clip-path="url(#terminal-763863226-line-12)">-</text><text class="terminal-763863226-r5" x="488" y="312.8" textLength="73.2" clip-path="url(#terminal-763863226-line-12)">-mount</text><text class="terminal-763863226-r5" x="561.2" y="312.8" textLength="97.6" clip-path="url(#terminal-763863 [...]
-</text><text class="terminal-763863226-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-763863226-line-13)">│</text><text class="terminal-763863226-r7" x="475.8" y="337.2" textLength="963.8" clip-path="url(#terminal-763863226-line-13)">(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-763863226-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-763863226-line-14)">│</text><text class="terminal-763863226-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-763863226-line-14)">-</text><text class="terminal-763863226-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-763863226-line-14)">-tag</text><text class="terminal-763863226-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-763863226- [...]
-</text><text class="terminal-763863226-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-763863226-line-15)">│</text><text class="terminal-763863226-r2" x="475.8" y="386" textLength="414.8" clip-path="url(#terminal-763863226-line-15)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-763863226-r5" x="890.6" y="386" textLength="12.2" clip-path="url(#terminal-763863226-line-15)">-</text><text class="terminal-763863226-r5" x="902.8" [...]
-</text><text class="terminal-763863226-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-763863226-line-16)">│</text><text class="terminal-763863226-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-763863226-line-16)">-</text><text class="terminal-763863226-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-763863226-line-16)">-docker</text><text class="terminal-763863226-r5" x="122" y="410.4" textLength="73.2" clip-path="url(#terminal-7638632 [...]
-</text><text class="terminal-763863226-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-763863226-line-17)">│</text><text class="terminal-763863226-r4" x="475.8" y="434.8" textLength="549" clip-path="url(#terminal-763863226-line-17)">[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-763863226-r4" x="1451.8" y="434.8"  [...]
-</text><text class="terminal-763863226-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-763863226-line-18)">│</text><text class="terminal-763863226-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-763863226-line-18)">-</text><text class="terminal-763863226-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-763863226-line-18)">-force</text><text class="terminal-763863226-r5" x="109.8" y="459.2" textLength="73.2" clip-path="url(#terminal-763863 [...]
-</text><text class="terminal-763863226-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-763863226-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-763863226-line-19)">
-</text><text class="terminal-763863226-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-763863226-line-20)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-763863226-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-763863226-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-763863226-line-21)">│</text><text class="terminal-763863226-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-763863226-line-21)">-</text><text class="terminal-763863226-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-763863226-line-21)">-run</text><text class="terminal-763863226-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-76386322 [...]
-</text><text class="terminal-763863226-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-763863226-line-22)">│</text><text class="terminal-763863226-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-763863226-line-22)">-</text><text class="terminal-763863226-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-763863226-line-22)">-parallelism</text><text class="terminal-763863226-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#terminal- [...]
-</text><text class="terminal-763863226-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-763863226-line-23)">│</text><text class="terminal-763863226-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-763863226-line-23)">[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;&#1 [...]
-</text><text class="terminal-763863226-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-763863226-line-24)">│</text><text class="terminal-763863226-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-763863226-line-24)">-</text><text class="terminal-763863226-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-763863226-line-24)">-python</text><text class="terminal-763863226-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal-763863 [...]
-</text><text class="terminal-763863226-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-763863226-line-25)">│</text><text class="terminal-763863226-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-763863226-line-25)">[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;&#160;& [...]
-</text><text class="terminal-763863226-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-763863226-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-763863226-line-26)">
-</text><text class="terminal-763863226-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-763863226-line-27)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-763863226-line-27)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="678.8" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-763863226-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-763863226-line-28)">│</text><text class="terminal-763863226-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-763863226-line-28)">-</text><text class="terminal-763863226-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-763863226-line-28)">-install</text><text class="terminal-763863226-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#terminal-763 [...]
-</text><text class="terminal-763863226-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-763863226-line-29)">│</text><text class="terminal-763863226-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-763863226-line-29)">-</text><text class="terminal-763863226-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-763863226-line-29)">-airflow</text><text class="terminal-763863226-r5" x="134.2" y="727.6" textLength="207.4" clip-path="url(#terminal-763 [...]
-</text><text class="terminal-763863226-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-763863226-line-30)">│</text><text class="terminal-763863226-r7" x="463.6" y="752" textLength="866.2" clip-path="url(#terminal-763863226-line-30)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-763863226-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-763863226-line-30)">│</text><text class="terminal- [...]
-</text><text class="terminal-763863226-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-763863226-line-31)">│</text><text class="terminal-763863226-r4" x="463.6" y="776.4" textLength="866.2" clip-path="url(#terminal-763863226-line-31)">[default:&#160;constraints-source-providers]&#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><text class="terminal-763863226-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-763863226-line-32)">│</text><text class="terminal-763863226-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-763863226-line-32)">-</text><text class="terminal-763863226-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-763863226-line-32)">-airflow</text><text class="terminal-763863226-r5" x="134.2" y="800.8" textLength="268.4" clip-path="url(#terminal-763 [...]
-</text><text class="terminal-763863226-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-763863226-line-33)">│</text><text class="terminal-763863226-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-763863226-line-33)">-</text><text class="terminal-763863226-r5" x="36.6" y="825.2" textLength="85.4" clip-path="url(#terminal-763863226-line-33)">-python</text><text class="terminal-763863226-r5" x="122" y="825.2" textLength="73.2" clip-path="url(#terminal-7638632 [...]
-</text><text class="terminal-763863226-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-763863226-line-34)">│</text><text class="terminal-763863226-r2" x="463.6" y="849.6" textLength="976" clip-path="url(#terminal-763863226-line-34)">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;&#16 [...]
-</text><text class="terminal-763863226-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-763863226-line-35)">│</text><text class="terminal-763863226-r7" x="463.6" y="874" textLength="976" clip-path="url(#terminal-763863226-line-35)">(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;&#160;&# [...]
-</text><text class="terminal-763863226-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-763863226-line-36)">│</text><text class="terminal-763863226-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-763863226-line-36)">-</text><text class="terminal-763863226-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-763863226-line-36)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="898.4" textLength="146.4" clip-path="url(#terminal [...]
-</text><text class="terminal-763863226-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-763863226-line-37)">│</text><text class="terminal-763863226-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-763863226-line-37)">-</text><text class="terminal-763863226-r5" x="36.6" y="922.8" textLength="97.6" clip-path="url(#terminal-763863226-line-37)">-runtime</text><text class="terminal-763863226-r5" x="134.2" y="922.8" textLength="109.8" clip-path="url(#terminal-763 [...]
-</text><text class="terminal-763863226-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-763863226-line-38)">│</text><text class="terminal-763863226-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-763863226-line-38)">-</text><text class="terminal-763863226-r5" x="36.6" y="947.2" textLength="97.6" clip-path="url(#terminal-763863226-line-38)">-runtime</text><text class="terminal-763863226-r5" x="134.2" y="947.2" textLength="146.4" clip-path="url(#terminal-763 [...]
-</text><text class="terminal-763863226-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-763863226-line-39)">│</text><text class="terminal-763863226-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-763863226-line-39)">-</text><text class="terminal-763863226-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-763863226-line-39)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="971.6" textLength="85.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-763863226-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-763863226-line-40)">│</text><text class="terminal-763863226-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-763863226-line-40)">-</text><text class="terminal-763863226-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-763863226-line-40)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="996" textLength="207.4" clip-path="url(#terminal-7638632 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-763863226-line-41)">│</text><text class="terminal-763863226-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-763863226-line-41)">-</text><text class="terminal-763863226-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-763863226-line-41)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1020.4" textLength="195.2" clip-path="url(#term [...]
-</text><text class="terminal-763863226-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-763863226-line-42)">│</text><text class="terminal-763863226-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-763863226-line-42)">-</text><text class="terminal-763863226-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-763863226-line-42)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1044.8" textLength="244" clip-path="url(#termin [...]
-</text><text class="terminal-763863226-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-763863226-line-43)">│</text><text class="terminal-763863226-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-763863226-line-43)">-</text><text class="terminal-763863226-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-763863226-line-43)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1069.2" textLength="158.6" clip-path="url(#term [...]
-</text><text class="terminal-763863226-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-763863226-line-44)">│</text><text class="terminal-763863226-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-763863226-line-44)">-</text><text class="terminal-763863226-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-763863226-line-44)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1093.6" textLength="146.4" clip-path="url(#term [...]
-</text><text class="terminal-763863226-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-763863226-line-45)">│</text><text class="terminal-763863226-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-763863226-line-45)">-</text><text class="terminal-763863226-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-763863226-line-45)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1118" textLength="195.2" clip-path="url(#terminal-763 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-763863226-line-46)">│</text><text class="terminal-763863226-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-763863226-line-46)">-</text><text class="terminal-763863226-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-763863226-line-46)">-dev</text><text class="terminal-763863226-r5" x="85.4" y="1142.4" textLength="109.8" clip-path="url(#terminal-7638 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-763863226-line-47)">│</text><text class="terminal-763863226-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-763863226-line-47)">-</text><text class="terminal-763863226-r5" x="36.6" y="1166.8" textLength="48.8" clip-path="url(#terminal-763863226-line-47)">-dev</text><text class="terminal-763863226-r5" x="85.4" y="1166.8" textLength="146.4" clip-path="url(#terminal-7638 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-763863226-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-763863226-line-48)">
-</text><text class="terminal-763863226-r4" x="0" y="1215.6" textLength="24.4" clip-path="url(#terminal-763863226-line-49)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="1215.6" textLength="1415.2" clip-path="url(#terminal-763863226-line-49)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="1215.6" textLength="2 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-763863226-line-50)">│</text><text class="terminal-763863226-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-763863226-line-50)">-</text><text class="terminal-763863226-r5" x="36.6" y="1240" textLength="85.4" clip-path="url(#terminal-763863226-line-50)">-github</text><text class="terminal-763863226-r5" x="122" y="1240" textLength="73.2" clip-path="url(#terminal-763863226-l [...]
-</text><text class="terminal-763863226-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-763863226-line-51)">│</text><text class="terminal-763863226-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-763863226-line-51)">-</text><text class="terminal-763863226-r5" x="36.6" y="1264.4" textLength="85.4" clip-path="url(#terminal-763863226-line-51)">-github</text><text class="terminal-763863226-r5" x="122" y="1264.4" textLength="109.8" clip-path="url(#terminal-76 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-763863226-line-52)">│</text><text class="terminal-763863226-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-763863226-line-52)">-</text><text class="terminal-763863226-r5" x="36.6" y="1288.8" textLength="109.8" clip-path="url(#terminal-763863226-line-52)">-platform</text><text class="terminal-763863226-r2" x="341.6" y="1288.8" textLength="329.4" clip-path="url(#termin [...]
-</text><text class="terminal-763863226-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-763863226-line-53)">│</text><text class="terminal-763863226-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-763863226-line-53)">-</text><text class="terminal-763863226-r5" x="36.6" y="1313.2" textLength="61" clip-path="url(#terminal-763863226-line-53)">-push</text><text class="terminal-763863226-r5" x="97.6" y="1313.2" textLength="73.2" clip-path="url(#terminal-763863 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-763863226-line-54)">│</text><text class="terminal-763863226-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-763863226-line-54)">-</text><text class="terminal-763863226-r5" x="36.6" y="1337.6" textLength="73.2" clip-path="url(#terminal-763863226-line-54)">-empty</text><text class="terminal-763863226-r5" x="109.8" y="1337.6" textLength="73.2" clip-path="url(#terminal-76 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-763863226-line-55)">│</text><text class="terminal-763863226-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-763863226-line-55)">-</text><text class="terminal-763863226-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-763863226-line-55)">-prepare</text><text class="terminal-763863226-r5" x="134.2" y="1362" textLength="158.6" clip-path="url(#terminal-7638632 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-763863226-line-56)">│</text><text class="terminal-763863226-r2" x="341.6" y="1386.4" textLength="1098" clip-path="url(#terminal-763863226-line-56)">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-763863226-r4" x="0" y="1410.8" textLength="1464" clip-path="url(#terminal-763863226-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="1410.8" textLength="12.2" clip-path="url(#terminal-763863226-line-57)">
-</text><text class="terminal-763863226-r4" x="0" y="1435.2" textLength="24.4" clip-path="url(#terminal-763863226-line-58)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="1435.2" textLength="1415.2" clip-path="url(#terminal-763863226-line-58)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="1435.2" textLength="24.4" clip-path="url(#terminal-76386 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-763863226-line-59)">│</text><text class="terminal-763863226-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-763863226-line-59)">-</text><text class="terminal-763863226-r5" x="36.6" y="1459.6" textLength="85.4" clip-path="url(#terminal-763863226-line-59)">-github</text><text class="terminal-763863226-r5" x="122" y="1459.6" textLength="134.2" clip-path="url(#terminal-76 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-763863226-line-60)">│</text><text class="terminal-763863226-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-763863226-line-60)">-</text><text class="terminal-763863226-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-763863226-line-60)">-verbose</text><text class="terminal-763863226-r6" x="280.6" y="1484" textLength="24.4" clip-path="url(#terminal-76386322 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-763863226-line-61)">│</text><text class="terminal-763863226-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-763863226-line-61)">-</text><text class="terminal-763863226-r5" x="36.6" y="1508.4" textLength="48.8" clip-path="url(#terminal-763863226-line-61)">-dry</text><text class="terminal-763863226-r5" x="85.4" y="1508.4" textLength="48.8" clip-path="url(#terminal-76386 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-763863226-line-62)">│</text><text class="terminal-763863226-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-763863226-line-62)">-</text><text class="terminal-763863226-r5" x="36.6" y="1532.8" textLength="85.4" clip-path="url(#terminal-763863226-line-62)">-answer</text><text class="terminal-763863226-r6" x="280.6" y="1532.8" textLength="24.4" clip-path="url(#terminal-7 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-763863226-line-63)">│</text><text class="terminal-763863226-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-763863226-line-63)">-</text><text class="terminal-763863226-r5" x="36.6" y="1557.2" textLength="61" clip-path="url(#terminal-763863226-line-63)">-help</text><text class="terminal-763863226-r6" x="280.6" y="1557.2" textLength="24.4" clip-path="url(#terminal-76386 [...]
-</text><text class="terminal-763863226-r4" x="0" y="1581.6" textLength="1464" clip-path="url(#terminal-763863226-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="1581.6" textLength="12.2" clip-path="url(#terminal-763863226-line-64)">
+    <g class="terminal-1518364354-matrix">
+    <text class="terminal-1518364354-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1518364354-line-0)">
+</text><text class="terminal-1518364354-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1518364354-line-1)">Usage:&#160;</text><text class="terminal-1518364354-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-1518364354-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-1518364354-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-1)">
+</text><text class="terminal-1518364354-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-2)">
+</text><text class="terminal-1518364354-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-1518364354-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-1518364354-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-3)">
+</text><text class="terminal-1518364354-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-4)">
+</text><text class="terminal-1518364354-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1518364354-line-5)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1518364354-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-151836 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-6)">│</text><text class="terminal-1518364354-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-6)">-</text><text class="terminal-1518364354-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1518364354-line-6)">-python</text><text class="terminal-1518364354-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-151 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-7)">│</text><text class="terminal-1518364354-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-8)">│</text><text class="terminal-1518364354-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-9)">│</text><text class="terminal-1518364354-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-9)">-</text><text class="terminal-1518364354-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1518364354-line-9)">-upgrade</text><text class="terminal-1518364354-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
+</text><text class="terminal-1518364354-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1518364354-line-10)">│</text><text class="terminal-1518364354-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1518364354-line-10)">-</text><text class="terminal-1518364354-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-1518364354-line-10)">-debian</text><text class="terminal-1518364354-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-15183643 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-11)">│</text><text class="terminal-1518364354-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-11)">-</text><text class="terminal-1518364354-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1518364354-line-11)">-image</text><text class="terminal-1518364354-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1518364354-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-12)">│</text><text class="terminal-1518364354-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-12)">-</text><text class="terminal-1518364354-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-1518364354-line-12)">-tag</text><text class="terminal-1518364354-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-151 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-13)">│</text><text class="terminal-1518364354-r2" x="475.8" y="337.2" textLength="414.8" clip-path="url(#terminal-1518364354-line-13)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1518364354-r5" x="890.6" y="337.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-13)">-</text><text class="terminal-1518364354- [...]
+</text><text class="terminal-1518364354-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-14)">│</text><text class="terminal-1518364354-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-14)">-</text><text class="terminal-1518364354-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-1518364354-line-14)">-docker</text><text class="terminal-1518364354-r5" x="122" y="361.6" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1518364354-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1518364354-line-15)">│</text><text class="terminal-1518364354-r4" x="475.8" y="386" textLength="549" clip-path="url(#terminal-1518364354-line-15)">[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-1518364354-r4" x="1451.8" y="386" t [...]
+</text><text class="terminal-1518364354-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-16)">│</text><text class="terminal-1518364354-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-16)">-</text><text class="terminal-1518364354-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-1518364354-line-16)">-force</text><text class="terminal-1518364354-r5" x="109.8" y="410.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1518364354-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1518364354-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-17)">
+</text><text class="terminal-1518364354-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-1518364354-line-18)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-1518364354-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-1518364354-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-19)">│</text><text class="terminal-1518364354-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-19)">-</text><text class="terminal-1518364354-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-1518364354-line-19)">-run</text><text class="terminal-1518364354-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1518364354-line-20)">│</text><text class="terminal-1518364354-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-1518364354-line-20)">-</text><text class="terminal-1518364354-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-1518364354-line-20)">-parallelism</text><text class="terminal-1518364354-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-21)">│</text><text class="terminal-1518364354-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-22)">│</text><text class="terminal-1518364354-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-22)">-</text><text class="terminal-1518364354-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-1518364354-line-22)">-python</text><text class="terminal-1518364354-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1518364354-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-23)">│</text><text class="terminal-1518364354-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-1518364354-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-1518364354-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-1518364354-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-24)">
+</text><text class="terminal-1518364354-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-1518364354-line-25)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-1518364354-line-25)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="630" textLength="24.4" clip-path="url [...]
+</text><text class="terminal-1518364354-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-26)">│</text><text class="terminal-1518364354-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-26)">-</text><text class="terminal-1518364354-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1518364354-line-26)">-install</text><text class="terminal-1518364354-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-1518364354-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-27)">│</text><text class="terminal-1518364354-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-27)">-</text><text class="terminal-1518364354-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-1518364354-line-27)">-airflow</text><text class="terminal-1518364354-r5" x="134.2" y="678.8" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-1518364354-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-28)">│</text><text class="terminal-1518364354-r7" x="463.6" y="703.2" textLength="866.2" clip-path="url(#terminal-1518364354-line-28)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-1518364354-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-28)">│</text><text clas [...]
+</text><text class="terminal-1518364354-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-29)">│</text><text class="terminal-1518364354-r4" x="463.6" y="727.6" textLength="866.2" clip-path="url(#terminal-1518364354-line-29)">[default:&#160;constraints-source-providers]&#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-1518364354-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1518364354-line-30)">│</text><text class="terminal-1518364354-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1518364354-line-30)">-</text><text class="terminal-1518364354-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-1518364354-line-30)">-airflow</text><text class="terminal-1518364354-r5" x="134.2" y="752" textLength="268.4" clip-path="url(#terminal-1518 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-31)">│</text><text class="terminal-1518364354-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-31)">-</text><text class="terminal-1518364354-r5" x="36.6" y="776.4" textLength="85.4" clip-path="url(#terminal-1518364354-line-31)">-python</text><text class="terminal-1518364354-r5" x="122" y="776.4" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1518364354-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-32)">│</text><text class="terminal-1518364354-r2" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-1518364354-line-32)">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-1518364354-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-33)">│</text><text class="terminal-1518364354-r7" x="463.6" y="825.2" textLength="976" clip-path="url(#terminal-1518364354-line-33)">(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-1518364354-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-34)">│</text><text class="terminal-1518364354-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-34)">-</text><text class="terminal-1518364354-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-1518364354-line-34)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="849.6" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-1518364354-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1518364354-line-35)">│</text><text class="terminal-1518364354-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1518364354-line-35)">-</text><text class="terminal-1518364354-r5" x="36.6" y="874" textLength="97.6" clip-path="url(#terminal-1518364354-line-35)">-runtime</text><text class="terminal-1518364354-r5" x="134.2" y="874" textLength="109.8" clip-path="url(#terminal-1518 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-36)">│</text><text class="terminal-1518364354-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-36)">-</text><text class="terminal-1518364354-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-1518364354-line-36)">-runtime</text><text class="terminal-1518364354-r5" x="134.2" y="898.4" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-1518364354-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-37)">│</text><text class="terminal-1518364354-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-37)">-</text><text class="terminal-1518364354-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1518364354-line-37)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="922.8" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-1518364354-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-38)">│</text><text class="terminal-1518364354-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-38)">-</text><text class="terminal-1518364354-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1518364354-line-38)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="947.2" textLength="207.4" clip-path="url(#t [...]
+</text><text class="terminal-1518364354-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-39)">│</text><text class="terminal-1518364354-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-39)">-</text><text class="terminal-1518364354-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-1518364354-line-39)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="971.6" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-1518364354-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1518364354-line-40)">│</text><text class="terminal-1518364354-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1518364354-line-40)">-</text><text class="terminal-1518364354-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1518364354-line-40)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="996" textLength="244" clip-path="url(#terminal-15 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-41)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-41)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-1518364354-line-41)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="1020.4" textLength="158.6" clip-path="ur [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-42)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-42)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-1518364354-line-42)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="1044.8" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-43)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-43)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-1518364354-line-43)">-additional</text><text class="terminal-1518364354-r5" x="170.8" y="1069.2" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-44)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-44)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-1518364354-line-44)">-dev</text><text class="terminal-1518364354-r5" x="85.4" y="1093.6" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1518364354-line-45)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1518364354-line-45)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-1518364354-line-45)">-dev</text><text class="terminal-1518364354-r5" x="85.4" y="1118" textLength="146.4" clip-path="url(#terminal-15183 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-1518364354-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-46)">
+</text><text class="terminal-1518364354-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-1518364354-line-47)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-1518364354-line-47)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="1166.8" textLeng [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-48)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-48)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#terminal-1518364354-line-48)">-github</text><text class="terminal-1518364354-r5" x="122" y="1191.2" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-49)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-49)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#terminal-1518364354-line-49)">-github</text><text class="terminal-1518364354-r5" x="122" y="1215.6" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1518364354-line-50)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1518364354-line-50)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1240" textLength="109.8" clip-path="url(#terminal-1518364354-line-50)">-platform</text><text class="terminal-1518364354-r2" x="341.6" y="1240" textLength="329.4" clip-path="url(#termina [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-51)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-51)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1264.4" textLength="61" clip-path="url(#terminal-1518364354-line-51)">-push</text><text class="terminal-1518364354-r5" x="97.6" y="1264.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-52)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-52)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1288.8" textLength="73.2" clip-path="url(#terminal-1518364354-line-52)">-empty</text><text class="terminal-1518364354-r5" x="109.8" y="1288.8" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-53)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-53)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-1518364354-line-53)">-prepare</text><text class="terminal-1518364354-r5" x="134.2" y="1313.2" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-54)">│</text><text class="terminal-1518364354-r2" x="341.6" y="1337.6" textLength="1098" clip-path="url(#terminal-1518364354-line-54)">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-1518364354-r4" x="0" y="1362" textLength="1464" clip-path="url(#terminal-1518364354-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="1362" textLength="12.2" clip-path="url(#terminal-1518364354-line-55)">
+</text><text class="terminal-1518364354-r4" x="0" y="1386.4" textLength="24.4" clip-path="url(#terminal-1518364354-line-56)">╭─</text><text class="terminal-1518364354-r4" x="24.4" y="1386.4" textLength="1415.2" clip-path="url(#terminal-1518364354-line-56)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1518364354-r4" x="1439.6" y="1386.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-57)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-57)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1410.8" textLength="85.4" clip-path="url(#terminal-1518364354-line-57)">-github</text><text class="terminal-1518364354-r5" x="122" y="1410.8" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-58)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-1518364354-line-58)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-1518364354-line-58)">-verbose</text><text class="terminal-1518364354-r6" x="280.6" y="1435.2" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-59)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-1518364354-line-59)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1459.6" textLength="48.8" clip-path="url(#terminal-1518364354-line-59)">-dry</text><text class="terminal-1518364354-r5" x="85.4" y="1459.6" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1518364354-line-60)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-1518364354-line-60)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1484" textLength="85.4" clip-path="url(#terminal-1518364354-line-60)">-answer</text><text class="terminal-1518364354-r6" x="280.6" y="1484" textLength="24.4" clip-path="url(#terminal-15 [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-61)">│</text><text class="terminal-1518364354-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-1518364354-line-61)">-</text><text class="terminal-1518364354-r5" x="36.6" y="1508.4" textLength="61" clip-path="url(#terminal-1518364354-line-61)">-help</text><text class="terminal-1518364354-r6" x="280.6" y="1508.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1518364354-r4" x="0" y="1532.8" textLength="1464" clip-path="url(#terminal-1518364354-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1518364354-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#terminal-1518364354-line-62)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
index 0a18dfecae..9efd67fc9c 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 2050.8" 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,369 +19,361 @@
         font-weight: 700;
     }
 
-    .terminal-1022829484-matrix {
+    .terminal-2793073061-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1022829484-title {
+    .terminal-2793073061-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1022829484-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1022829484-r2 { fill: #c5c8c6 }
-.terminal-1022829484-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1022829484-r4 { fill: #868887 }
-.terminal-1022829484-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1022829484-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1022829484-r7 { fill: #8d7b39 }
+    .terminal-2793073061-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2793073061-r2 { fill: #c5c8c6 }
+.terminal-2793073061-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2793073061-r4 { fill: #868887 }
+.terminal-2793073061-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2793073061-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2793073061-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1022829484-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1999.8" />
+    <clipPath id="terminal-2793073061-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1951.0" />
     </clipPath>
-    <clipPath id="terminal-1022829484-line-0">
+    <clipPath id="terminal-2793073061-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-1">
+<clipPath id="terminal-2793073061-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-2">
+<clipPath id="terminal-2793073061-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-3">
+<clipPath id="terminal-2793073061-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-4">
+<clipPath id="terminal-2793073061-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-5">
+<clipPath id="terminal-2793073061-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-6">
+<clipPath id="terminal-2793073061-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-7">
+<clipPath id="terminal-2793073061-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-8">
+<clipPath id="terminal-2793073061-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-9">
+<clipPath id="terminal-2793073061-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-10">
+<clipPath id="terminal-2793073061-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-11">
+<clipPath id="terminal-2793073061-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-12">
+<clipPath id="terminal-2793073061-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-13">
+<clipPath id="terminal-2793073061-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-14">
+<clipPath id="terminal-2793073061-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-15">
+<clipPath id="terminal-2793073061-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-16">
+<clipPath id="terminal-2793073061-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-17">
+<clipPath id="terminal-2793073061-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-18">
+<clipPath id="terminal-2793073061-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-19">
+<clipPath id="terminal-2793073061-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-20">
+<clipPath id="terminal-2793073061-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-21">
+<clipPath id="terminal-2793073061-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-22">
+<clipPath id="terminal-2793073061-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-23">
+<clipPath id="terminal-2793073061-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-24">
+<clipPath id="terminal-2793073061-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-25">
+<clipPath id="terminal-2793073061-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-26">
+<clipPath id="terminal-2793073061-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-27">
+<clipPath id="terminal-2793073061-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-28">
+<clipPath id="terminal-2793073061-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-29">
+<clipPath id="terminal-2793073061-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-30">
+<clipPath id="terminal-2793073061-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-31">
+<clipPath id="terminal-2793073061-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-32">
+<clipPath id="terminal-2793073061-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-33">
+<clipPath id="terminal-2793073061-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-34">
+<clipPath id="terminal-2793073061-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-35">
+<clipPath id="terminal-2793073061-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-36">
+<clipPath id="terminal-2793073061-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-37">
+<clipPath id="terminal-2793073061-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-38">
+<clipPath id="terminal-2793073061-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-39">
+<clipPath id="terminal-2793073061-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-40">
+<clipPath id="terminal-2793073061-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-41">
+<clipPath id="terminal-2793073061-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-42">
+<clipPath id="terminal-2793073061-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-43">
+<clipPath id="terminal-2793073061-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-44">
+<clipPath id="terminal-2793073061-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-45">
+<clipPath id="terminal-2793073061-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-46">
+<clipPath id="terminal-2793073061-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-47">
+<clipPath id="terminal-2793073061-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-48">
+<clipPath id="terminal-2793073061-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-49">
+<clipPath id="terminal-2793073061-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-50">
+<clipPath id="terminal-2793073061-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-51">
+<clipPath id="terminal-2793073061-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-52">
+<clipPath id="terminal-2793073061-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-53">
+<clipPath id="terminal-2793073061-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-54">
+<clipPath id="terminal-2793073061-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-55">
+<clipPath id="terminal-2793073061-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-56">
+<clipPath id="terminal-2793073061-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-57">
+<clipPath id="terminal-2793073061-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-58">
+<clipPath id="terminal-2793073061-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-59">
+<clipPath id="terminal-2793073061-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-60">
+<clipPath id="terminal-2793073061-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-61">
+<clipPath id="terminal-2793073061-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-62">
+<clipPath id="terminal-2793073061-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-63">
+<clipPath id="terminal-2793073061-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-64">
+<clipPath id="terminal-2793073061-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-65">
+<clipPath id="terminal-2793073061-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-66">
+<clipPath id="terminal-2793073061-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-67">
+<clipPath id="terminal-2793073061-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-68">
+<clipPath id="terminal-2793073061-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-69">
+<clipPath id="terminal-2793073061-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-70">
+<clipPath id="terminal-2793073061-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-71">
+<clipPath id="terminal-2793073061-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-72">
+<clipPath id="terminal-2793073061-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-73">
+<clipPath id="terminal-2793073061-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-74">
+<clipPath id="terminal-2793073061-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-75">
+<clipPath id="terminal-2793073061-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-76">
+<clipPath id="terminal-2793073061-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-77">
+<clipPath id="terminal-2793073061-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-78">
+<clipPath id="terminal-2793073061-line-78">
     <rect x="0" y="1904.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1022829484-line-79">
-    <rect x="0" y="1929.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1022829484-line-80">
-    <rect x="0" y="1953.5" 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="2048.8" rx="8"/><text class="terminal-1022829484-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-2793073061-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-1022829484-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2793073061-clip-terminal)">
     
-    <g class="terminal-1022829484-matrix">
-    <text class="terminal-1022829484-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1022829484-line-0)">
-</text><text class="terminal-1022829484-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-1)">Usage:&#160;</text><text class="terminal-1022829484-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-1022829484-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-1022829484-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-1)">
-</text><text class="terminal-1022829484-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-2)">
-</text><text class="terminal-1022829484-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-1022829484-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-1022829484-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-3)">
-</text><text class="terminal-1022829484-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-4)">
-</text><text class="terminal-1022829484-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1022829484-line-5)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1022829484-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-102282 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-6)">│</text><text class="terminal-1022829484-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-6)">-</text><text class="terminal-1022829484-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-6)">-python</text><text class="terminal-1022829484-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-102 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-7)">│</text><text class="terminal-1022829484-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1022829484-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-1022829484-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-8)">│</text><text class="terminal-1022829484-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1022829484-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-1022829484-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-9)">│</text><text class="terminal-1022829484-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-9)">-</text><text class="terminal-1022829484-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-9)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1022829484-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1022829484-line-10)">│</text><text class="terminal-1022829484-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1022829484-line-10)">-</text><text class="terminal-1022829484-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-1022829484-line-10)">-upgrade</text><text class="terminal-1022829484-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-1022 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-11)">│</text><text class="terminal-1022829484-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-11)">-</text><text class="terminal-1022829484-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-11)">-debian</text><text class="terminal-1022829484-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-12)">│</text><text class="terminal-1022829484-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-12)">-</text><text class="terminal-1022829484-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-1022829484-line-12)">-image</text><text class="terminal-1022829484-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1022829484-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-13)">│</text><text class="terminal-1022829484-r5" x="475.8" y="337.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-13)">-</text><text class="terminal-1022829484-r5" x="488" y="337.2" textLength="73.2" clip-path="url(#terminal-1022829484-line-13)">-mount</text><text class="terminal-1022829484-r5" x="561.2" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1022829484-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-14)">│</text><text class="terminal-1022829484-r7" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-1022829484-line-14)">(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;&#16 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1022829484-line-15)">│</text><text class="terminal-1022829484-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1022829484-line-15)">-</text><text class="terminal-1022829484-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1022829484-line-15)">-tag</text><text class="terminal-1022829484-r5" x="85.4" y="386" textLength="122" clip-path="url(#terminal-1022829484- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-16)">│</text><text class="terminal-1022829484-r2" x="475.8" y="410.4" textLength="414.8" clip-path="url(#terminal-1022829484-line-16)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1022829484-r5" x="890.6" y="410.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-16)">-</text><text class="terminal-1022829484- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-17)">│</text><text class="terminal-1022829484-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-17)">-</text><text class="terminal-1022829484-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-17)">-docker</text><text class="terminal-1022829484-r5" x="122" y="434.8" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-18)">│</text><text class="terminal-1022829484-r4" x="475.8" y="459.2" textLength="549" clip-path="url(#terminal-1022829484-line-18)">[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-1022829484-r4" x="1451.8" y="45 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-1022829484-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-19)">
-</text><text class="terminal-1022829484-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-1022829484-line-20)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-1022829484-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-1022829484-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-21)">│</text><text class="terminal-1022829484-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-21)">-</text><text class="terminal-1022829484-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-1022829484-line-21)">-run</text><text class="terminal-1022829484-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-22)">│</text><text class="terminal-1022829484-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-22)">-</text><text class="terminal-1022829484-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-1022829484-line-22)">-parallelism</text><text class="terminal-1022829484-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-1022829484-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-23)">│</text><text class="terminal-1022829484-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-1022829484-line-23)">[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-1022829484-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-24)">│</text><text class="terminal-1022829484-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-24)">-</text><text class="terminal-1022829484-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-1022829484-line-24)">-python</text><text class="terminal-1022829484-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1022829484-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1022829484-line-25)">│</text><text class="terminal-1022829484-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-1022829484-line-25)">[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;&#1 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-1022829484-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-26)">
-</text><text class="terminal-1022829484-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-1022829484-line-27)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-1022829484-line-27)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="678.8" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-1022829484-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-28)">│</text><text class="terminal-1022829484-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-28)">-</text><text class="terminal-1022829484-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-28)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-1022829484-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-29)">│</text><text class="terminal-1022829484-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-29)">-</text><text class="terminal-1022829484-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-29)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1022829484-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1022829484-line-30)">│</text><text class="terminal-1022829484-r7" x="463.6" y="752" textLength="976" clip-path="url(#terminal-1022829484-line-30)">(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;&#16 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-31)">│</text><text class="terminal-1022829484-r4" x="463.6" y="776.4" textLength="976" clip-path="url(#terminal-1022829484-line-31)">[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-1022829484-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-32)">│</text><text class="terminal-1022829484-r4" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-1022829484-line-32)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-1022829484-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-32)">│</text><text class="terminal-1 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-33)">│</text><text class="terminal-1022829484-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-33)">-</text><text class="terminal-1022829484-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-33)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="825.2" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-1022829484-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-34)">│</text><text class="terminal-1022829484-r7" x="463.6" y="849.6" textLength="866.2" clip-path="url(#terminal-1022829484-line-34)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-1022829484-r4" x="1451.8" y="849.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-34)">│</text><text clas [...]
-</text><text class="terminal-1022829484-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1022829484-line-35)">│</text><text class="terminal-1022829484-r4" x="463.6" y="874" textLength="866.2" clip-path="url(#terminal-1022829484-line-35)">[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;&#160 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-36)">│</text><text class="terminal-1022829484-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-36)">-</text><text class="terminal-1022829484-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-1022829484-line-36)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="898.4" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-1022829484-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-37)">│</text><text class="terminal-1022829484-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-37)">-</text><text class="terminal-1022829484-r5" x="36.6" y="922.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-37)">-python</text><text class="terminal-1022829484-r5" x="122" y="922.8" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-38)">│</text><text class="terminal-1022829484-r2" x="463.6" y="947.2" textLength="976" clip-path="url(#terminal-1022829484-line-38)">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-1022829484-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-39)">│</text><text class="terminal-1022829484-r7" x="463.6" y="971.6" textLength="976" clip-path="url(#terminal-1022829484-line-39)">(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-1022829484-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1022829484-line-40)">│</text><text class="terminal-1022829484-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1022829484-line-40)">-</text><text class="terminal-1022829484-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1022829484-line-40)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="996" textLength="146.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-41)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-41)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-1022829484-line-41)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1020.4" textLength="85.4" clip-path="url [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-42)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-42)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-1022829484-line-42)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1044.8" textLength="207.4" clip-path="ur [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-43)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-43)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-1022829484-line-43)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1069.2" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-44)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-44)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-1022829484-line-44)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1093.6" textLength="244" clip-path="url( [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1022829484-line-45)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1022829484-line-45)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-1022829484-line-45)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1118" textLength="158.6" clip-path="url(#termi [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-46)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-46)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1142.4" textLength="134.2" clip-path="url(#terminal-1022829484-line-46)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1142.4" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-47)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-47)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1166.8" textLength="134.2" clip-path="url(#terminal-1022829484-line-47)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1166.8" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-48)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-48)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-48)">-runtime</text><text class="terminal-1022829484-r5" x="134.2" y="1191.2" textLength="109.8" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-49)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-49)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1215.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-49)">-runtime</text><text class="terminal-1022829484-r5" x="134.2" y="1215.6" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1022829484-line-50)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1022829484-line-50)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1240" textLength="48.8" clip-path="url(#terminal-1022829484-line-50)">-dev</text><text class="terminal-1022829484-r5" x="85.4" y="1240" textLength="109.8" clip-path="url(#terminal-10228 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-51)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-51)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1264.4" textLength="48.8" clip-path="url(#terminal-1022829484-line-51)">-dev</text><text class="terminal-1022829484-r5" x="85.4" y="1264.4" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1288.8" textLength="1464" clip-path="url(#terminal-1022829484-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1288.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-52)">
-</text><text class="terminal-1022829484-r4" x="0" y="1313.2" textLength="24.4" clip-path="url(#terminal-1022829484-line-53)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="1313.2" textLength="1415.2" clip-path="url(#terminal-1022829484-line-53)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="1313.2" textLength="24.4"  [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-54)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-54)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-54)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="1337.6" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1022829484-line-55)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1022829484-line-55)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-1022829484-line-55)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="1362" textLength="170.8" clip-path="url(#terminal- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-56)">│</text><text class="terminal-1022829484-r2" x="536.8" y="1386.4" textLength="902.8" clip-path="url(#terminal-1022829484-line-56)">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-1022829484-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-57)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-57)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-1022829484-line-57)">-cleanup</text><text class="terminal-1022829484-r5" x="134.2" y="1410.8" textLength="97.6" clip-path="url(#te [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-58)">│</text><text class="terminal-1022829484-r2" x="536.8" y="1435.2" textLength="170.8" clip-path="url(#terminal-1022829484-line-58)">together&#160;with&#160;</text><text class="terminal-1022829484-r5" x="707.6" y="1435.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-58)">-</text><text class="terminal-1022829484-r5" x="719.8" y="1435.2" textLength="97.6" [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-59)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-59)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-59)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1459.6" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1022829484-line-60)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-1022829484-line-60)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-1022829484-line-60)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1484" textLength="317.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-61)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-61)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#terminal-1022829484-line-61)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1508.4" textLength="353.8" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-62)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-62)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1532.8" textLength="97.6" clip-path="url(#terminal-1022829484-line-62)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1532.8" textLength="231.8" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-63)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-63)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1557.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-63)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="1557.2" textLength="219.6" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-64)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-64)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1581.6" textLength="158.6" clip-path="url(#terminal-1022829484-line-64)">-installation</text><text class="terminal-1022829484-r5" x="195.2" y="1581.6" textLength="85.4" clip-path="u [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1606" textLength="1464" clip-path="url(#terminal-1022829484-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1606" textLength="12.2" clip-path="url(#terminal-1022829484-line-65)">
-</text><text class="terminal-1022829484-r4" x="0" y="1630.4" textLength="24.4" clip-path="url(#terminal-1022829484-line-66)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="1630.4" textLength="1415.2" clip-path="url(#terminal-1022829484-line-66)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="1630.4" textLeng [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-67)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-67)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1654.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-67)">-github</text><text class="terminal-1022829484-r5" x="122" y="1654.8" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-68)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-68)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1679.2" textLength="85.4" clip-path="url(#terminal-1022829484-line-68)">-github</text><text class="terminal-1022829484-r5" x="122" y="1679.2" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-69)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-69)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1703.6" textLength="109.8" clip-path="url(#terminal-1022829484-line-69)">-platform</text><text class="terminal-1022829484-r2" x="341.6" y="1703.6" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-1022829484-line-70)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1728" textLength="12.2" clip-path="url(#terminal-1022829484-line-70)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1728" textLength="61" clip-path="url(#terminal-1022829484-line-70)">-push</text><text class="terminal-1022829484-r5" x="97.6" y="1728" textLength="73.2" clip-path="url(#terminal-1022829 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-71)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-71)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1752.4" textLength="73.2" clip-path="url(#terminal-1022829484-line-71)">-empty</text><text class="terminal-1022829484-r5" x="109.8" y="1752.4" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-72)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-72)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1776.8" textLength="97.6" clip-path="url(#terminal-1022829484-line-72)">-prepare</text><text class="terminal-1022829484-r5" x="134.2" y="1776.8" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-73)">│</text><text class="terminal-1022829484-r2" x="341.6" y="1801.2" textLength="1098" clip-path="url(#terminal-1022829484-line-73)">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-1022829484-r4" x="0" y="1825.6" textLength="1464" clip-path="url(#terminal-1022829484-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1825.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-74)">
-</text><text class="terminal-1022829484-r4" x="0" y="1850" textLength="24.4" clip-path="url(#terminal-1022829484-line-75)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="1850" textLength="1415.2" clip-path="url(#terminal-1022829484-line-75)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="1850" textLength="24.4" clip-path="url(#terminal-102282 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-76)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-76)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1874.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-76)">-github</text><text class="terminal-1022829484-r5" x="122" y="1874.4" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-77)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-77)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1898.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-77)">-answer</text><text class="terminal-1022829484-r6" x="280.6" y="1898.8" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-78)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-78)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1923.2" textLength="48.8" clip-path="url(#terminal-1022829484-line-78)">-dry</text><text class="terminal-1022829484-r5" x="85.4" y="1923.2" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-79)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-79)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1947.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-79)">-verbose</text><text class="terminal-1022829484-r6" x="280.6" y="1947.6" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-1022829484-line-80)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1972" textLength="12.2" clip-path="url(#terminal-1022829484-line-80)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1972" textLength="61" clip-path="url(#terminal-1022829484-line-80)">-help</text><text class="terminal-1022829484-r6" x="280.6" y="1972" textLength="24.4" clip-path="url(#terminal-102282 [...]
-</text><text class="terminal-1022829484-r4" x="0" y="1996.4" textLength="1464" clip-path="url(#terminal-1022829484-line-81)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1996.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-81)">
+    <g class="terminal-2793073061-matrix">
+    <text class="terminal-2793073061-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2793073061-line-0)">
+</text><text class="terminal-2793073061-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-1)">Usage:&#160;</text><text class="terminal-2793073061-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-2793073061-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-2793073061-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-1)">
+</text><text class="terminal-2793073061-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-2)">
+</text><text class="terminal-2793073061-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-2793073061-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-2793073061-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-3)">
+</text><text class="terminal-2793073061-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-4)">
+</text><text class="terminal-2793073061-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2793073061-line-5)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2793073061-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-279307 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-6)">│</text><text class="terminal-2793073061-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-6)">-</text><text class="terminal-2793073061-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-6)">-python</text><text class="terminal-2793073061-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-279 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-7)">│</text><text class="terminal-2793073061-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-8)">│</text><text class="terminal-2793073061-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-9)">│</text><text class="terminal-2793073061-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-9)">-</text><text class="terminal-2793073061-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-2793073061-line-9)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2793073061-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2793073061-line-10)">│</text><text class="terminal-2793073061-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2793073061-line-10)">-</text><text class="terminal-2793073061-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-2793073061-line-10)">-upgrade</text><text class="terminal-2793073061-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-2793 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-11)">│</text><text class="terminal-2793073061-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-11)">-</text><text class="terminal-2793073061-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-11)">-debian</text><text class="terminal-2793073061-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-2793073061-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-12)">│</text><text class="terminal-2793073061-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-12)">-</text><text class="terminal-2793073061-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-2793073061-line-12)">-image</text><text class="terminal-2793073061-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2793073061-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-13)">│</text><text class="terminal-2793073061-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-13)">-</text><text class="terminal-2793073061-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-2793073061-line-13)">-tag</text><text class="terminal-2793073061-r5" x="85.4" y="337.2" textLength="122" clip-path="url(#terminal-279 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-14)">│</text><text class="terminal-2793073061-r2" x="475.8" y="361.6" textLength="414.8" clip-path="url(#terminal-2793073061-line-14)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-2793073061-r5" x="890.6" y="361.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-14)">-</text><text class="terminal-2793073061- [...]
+</text><text class="terminal-2793073061-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2793073061-line-15)">│</text><text class="terminal-2793073061-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2793073061-line-15)">-</text><text class="terminal-2793073061-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-2793073061-line-15)">-docker</text><text class="terminal-2793073061-r5" x="122" y="386" textLength="73.2" clip-path="url(#terminal-27930730 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-16)">│</text><text class="terminal-2793073061-r4" x="475.8" y="410.4" textLength="549" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="1451.8" y="41 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-2793073061-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-17)">
+</text><text class="terminal-2793073061-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-2793073061-line-18)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-2793073061-line-18)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-2793073061-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-19)">│</text><text class="terminal-2793073061-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-19)">-</text><text class="terminal-2793073061-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-2793073061-line-19)">-run</text><text class="terminal-2793073061-r5" x="85.4" y="483.6" textLength="146.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2793073061-line-20)">│</text><text class="terminal-2793073061-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2793073061-line-20)">-</text><text class="terminal-2793073061-r5" x="36.6" y="508" textLength="146.4" clip-path="url(#terminal-2793073061-line-20)">-parallelism</text><text class="terminal-2793073061-r2" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-21)">│</text><text class="terminal-2793073061-r4" x="280.6" y="532.4" textLength="915" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-22)">│</text><text class="terminal-2793073061-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-22)">-</text><text class="terminal-2793073061-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-2793073061-line-22)">-python</text><text class="terminal-2793073061-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2793073061-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-23)">│</text><text class="terminal-2793073061-r4" x="280.6" y="581.2" textLength="951.6" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-2793073061-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-24)">
+</text><text class="terminal-2793073061-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-2793073061-line-25)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-2793073061-line-25)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="630" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-2793073061-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-26)">│</text><text class="terminal-2793073061-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-26)">-</text><text class="terminal-2793073061-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-26)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-2793073061-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-27)">│</text><text class="terminal-2793073061-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-27)">-</text><text class="terminal-2793073061-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-27)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="678.8" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2793073061-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-28)">│</text><text class="terminal-2793073061-r7" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-29)">│</text><text class="terminal-2793073061-r4" x="463.6" y="727.6" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2793073061-line-30)">│</text><text class="terminal-2793073061-r4" x="463.6" y="752" textLength="976" clip-path="url(#terminal-2793073061-line-30)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-2793073061-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-2793073061-line-30)">│</text><text class="terminal-2793073 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-31)">│</text><text class="terminal-2793073061-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-31)">-</text><text class="terminal-2793073061-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-31)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="776.4" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-2793073061-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-32)">│</text><text class="terminal-2793073061-r7" x="463.6" y="800.8" textLength="866.2" clip-path="url(#terminal-2793073061-line-32)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-2793073061-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-32)">│</text><text clas [...]
+</text><text class="terminal-2793073061-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-33)">│</text><text class="terminal-2793073061-r4" x="463.6" y="825.2" textLength="866.2" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-34)">│</text><text class="terminal-2793073061-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-34)">-</text><text class="terminal-2793073061-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-2793073061-line-34)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="849.6" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-2793073061-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2793073061-line-35)">│</text><text class="terminal-2793073061-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2793073061-line-35)">-</text><text class="terminal-2793073061-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-2793073061-line-35)">-python</text><text class="terminal-2793073061-r5" x="122" y="874" textLength="73.2" clip-path="url(#terminal-27930730 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-36)">│</text><text class="terminal-2793073061-r2" x="463.6" y="898.4" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-37)">│</text><text class="terminal-2793073061-r7" x="463.6" y="922.8" textLength="976" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-38)">│</text><text class="terminal-2793073061-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-38)">-</text><text class="terminal-2793073061-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-2793073061-line-38)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="947.2" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-39)">│</text><text class="terminal-2793073061-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-39)">-</text><text class="terminal-2793073061-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-2793073061-line-39)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="971.6" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-2793073061-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2793073061-line-40)">│</text><text class="terminal-2793073061-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-2793073061-line-40)">-</text><text class="terminal-2793073061-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-2793073061-line-40)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="996" textLength="207.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-41)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-41)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-2793073061-line-41)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1020.4" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-42)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-42)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-2793073061-line-42)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1044.8" textLength="244" clip-path="url( [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-43)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-43)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-2793073061-line-43)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1069.2" textLength="158.6" clip-path="ur [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-44)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-44)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-2793073061-line-44)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1093.6" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2793073061-line-45)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-2793073061-line-45)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-2793073061-line-45)">-additional</text><text class="terminal-2793073061-r5" x="170.8" y="1118" textLength="195.2" clip-path="url(#termi [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-46)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-46)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-46)">-runtime</text><text class="terminal-2793073061-r5" x="134.2" y="1142.4" textLength="109.8" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-47)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-47)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-47)">-runtime</text><text class="terminal-2793073061-r5" x="134.2" y="1166.8" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-48)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-48)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#terminal-2793073061-line-48)">-dev</text><text class="terminal-2793073061-r5" x="85.4" y="1191.2" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-49)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-49)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1215.6" textLength="48.8" clip-path="url(#terminal-2793073061-line-49)">-dev</text><text class="terminal-2793073061-r5" x="85.4" y="1215.6" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-2793073061-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-2793073061-line-50)">
+</text><text class="terminal-2793073061-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-2793073061-line-51)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-2793073061-line-51)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="1264.4" textLength="24.4"  [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-52)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-52)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-52)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="1288.8" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-53)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-53)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-2793073061-line-53)">-airflow</text><text class="terminal-2793073061-r5" x="134.2" y="1313.2" textLength="170.8" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-54)">│</text><text class="terminal-2793073061-r2" x="536.8" y="1337.6" textLength="902.8" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-2793073061-line-55)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-2793073061-line-55)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-2793073061-line-55)">-cleanup</text><text class="terminal-2793073061-r5" x="134.2" y="1362" textLength="97.6" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-56)">│</text><text class="terminal-2793073061-r2" x="536.8" y="1386.4" textLength="170.8" clip-path="url(#terminal-2793073061-line-56)">together&#160;with&#160;</text><text class="terminal-2793073061-r5" x="707.6" y="1386.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-56)">-</text><text class="terminal-2793073061-r5" x="719.8" y="1386.4" textLength="97.6" [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-57)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-57)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-57)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1410.8" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-58)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-58)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-2793073061-line-58)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1435.2" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-59)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-59)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-2793073061-line-59)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1459.6" textLength="353.8" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-2793073061-line-60)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-2793073061-line-60)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-2793073061-line-60)">-disable</text><text class="terminal-2793073061-r5" x="134.2" y="1484" textLength="231.8" clip-path="url(#terminal- [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-61)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-61)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#terminal-2793073061-line-61)">-install</text><text class="terminal-2793073061-r5" x="134.2" y="1508.4" textLength="219.6" clip-path="url(#t [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-62)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-62)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1532.8" textLength="158.6" clip-path="url(#terminal-2793073061-line-62)">-installation</text><text class="terminal-2793073061-r5" x="195.2" y="1532.8" textLength="85.4" clip-path="u [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1557.2" textLength="1464" clip-path="url(#terminal-2793073061-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1557.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-63)">
+</text><text class="terminal-2793073061-r4" x="0" y="1581.6" textLength="24.4" clip-path="url(#terminal-2793073061-line-64)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="1581.6" textLength="1415.2" clip-path="url(#terminal-2793073061-line-64)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="1581.6" textLeng [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-2793073061-line-65)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-2793073061-line-65)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1606" textLength="85.4" clip-path="url(#terminal-2793073061-line-65)">-github</text><text class="terminal-2793073061-r5" x="122" y="1606" textLength="73.2" clip-path="url(#terminal-2793 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-66)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-66)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1630.4" textLength="85.4" clip-path="url(#terminal-2793073061-line-66)">-github</text><text class="terminal-2793073061-r5" x="122" y="1630.4" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-67)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-67)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1654.8" textLength="109.8" clip-path="url(#terminal-2793073061-line-67)">-platform</text><text class="terminal-2793073061-r2" x="341.6" y="1654.8" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-68)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-68)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1679.2" textLength="61" clip-path="url(#terminal-2793073061-line-68)">-push</text><text class="terminal-2793073061-r5" x="97.6" y="1679.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-69)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-69)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1703.6" textLength="73.2" clip-path="url(#terminal-2793073061-line-69)">-empty</text><text class="terminal-2793073061-r5" x="109.8" y="1703.6" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-2793073061-line-70)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1728" textLength="12.2" clip-path="url(#terminal-2793073061-line-70)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1728" textLength="97.6" clip-path="url(#terminal-2793073061-line-70)">-prepare</text><text class="terminal-2793073061-r5" x="134.2" y="1728" textLength="158.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-71)">│</text><text class="terminal-2793073061-r2" x="341.6" y="1752.4" textLength="1098" clip-path="url(#terminal-2793073061-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-2793073061-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-2793073061-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-72)">
+</text><text class="terminal-2793073061-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-2793073061-line-73)">╭─</text><text class="terminal-2793073061-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-2793073061-line-73)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2793073061-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-74)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-74)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1825.6" textLength="85.4" clip-path="url(#terminal-2793073061-line-74)">-github</text><text class="terminal-2793073061-r5" x="122" y="1825.6" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-2793073061-line-75)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-2793073061-line-75)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1850" textLength="85.4" clip-path="url(#terminal-2793073061-line-75)">-answer</text><text class="terminal-2793073061-r6" x="280.6" y="1850" textLength="24.4" clip-path="url(#terminal-27 [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-76)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-2793073061-line-76)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1874.4" textLength="48.8" clip-path="url(#terminal-2793073061-line-76)">-dry</text><text class="terminal-2793073061-r5" x="85.4" y="1874.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-77)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-2793073061-line-77)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1898.8" textLength="97.6" clip-path="url(#terminal-2793073061-line-77)">-verbose</text><text class="terminal-2793073061-r6" x="280.6" y="1898.8" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-78)">│</text><text class="terminal-2793073061-r5" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#terminal-2793073061-line-78)">-</text><text class="terminal-2793073061-r5" x="36.6" y="1923.2" textLength="61" clip-path="url(#terminal-2793073061-line-78)">-help</text><text class="terminal-2793073061-r6" x="280.6" y="1923.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2793073061-r4" x="0" y="1947.6" textLength="1464" clip-path="url(#terminal-2793073061-line-79)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2793073061-r2" x="1464" y="1947.6" textLength="12.2" clip-path="url(#terminal-2793073061-line-79)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index e7e333b83e..044b799ce0 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,4 +2,4 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-60ea24df0a84c6739fc5f06197cdd201
+e1bc752aeb5e9c4095bb9d3cbb614252
diff --git a/images/breeze/output-docker-compose-tests.svg b/images/breeze/output-docker-compose-tests.svg
index c652741d47..424d3cda29 100644
--- a/images/breeze/output-docker-compose-tests.svg
+++ b/images/breeze/output-docker-compose-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,117 +19,109 @@
         font-weight: 700;
     }
 
-    .terminal-68428568-matrix {
+    .terminal-4060083131-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-68428568-title {
+    .terminal-4060083131-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-68428568-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-68428568-r2 { fill: #c5c8c6 }
-.terminal-68428568-r3 { fill: #d0b344;font-weight: bold }
-.terminal-68428568-r4 { fill: #868887 }
-.terminal-68428568-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-68428568-r6 { fill: #98a84b;font-weight: bold }
-.terminal-68428568-r7 { fill: #8d7b39 }
+    .terminal-4060083131-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4060083131-r2 { fill: #c5c8c6 }
+.terminal-4060083131-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4060083131-r4 { fill: #868887 }
+.terminal-4060083131-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4060083131-r6 { fill: #98a84b;font-weight: bold }
+.terminal-4060083131-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-68428568-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+    <clipPath id="terminal-4060083131-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
     </clipPath>
-    <clipPath id="terminal-68428568-line-0">
+    <clipPath id="terminal-4060083131-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-1">
+<clipPath id="terminal-4060083131-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-2">
+<clipPath id="terminal-4060083131-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-3">
+<clipPath id="terminal-4060083131-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-4">
+<clipPath id="terminal-4060083131-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-5">
+<clipPath id="terminal-4060083131-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-6">
+<clipPath id="terminal-4060083131-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-7">
+<clipPath id="terminal-4060083131-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-8">
+<clipPath id="terminal-4060083131-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-9">
+<clipPath id="terminal-4060083131-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-10">
+<clipPath id="terminal-4060083131-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-11">
+<clipPath id="terminal-4060083131-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-12">
+<clipPath id="terminal-4060083131-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-13">
+<clipPath id="terminal-4060083131-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-14">
+<clipPath id="terminal-4060083131-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-15">
+<clipPath id="terminal-4060083131-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-68428568-line-16">
-    <rect x="0" y="391.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-68428568-line-17">
-    <rect x="0" y="416.3" 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="511.6" rx="8"/><text class="terminal-68428568-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="462.8" rx="8"/><text class="terminal-4060083131-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</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-68428568-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4060083131-clip-terminal)">
     
-    <g class="terminal-68428568-matrix">
-    <text class="terminal-68428568-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-68428568-line-0)">
-</text><text class="terminal-68428568-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-68428568-line-1)">Usage:&#160;</text><text class="terminal-68428568-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-68428568-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-68428568-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-68428568-line-1)">
-</text><text class="terminal-68428568-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-68428568-line-2)">
-</text><text class="terminal-68428568-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-68428568-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-68428568-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-68428568-line-3)">
-</text><text class="terminal-68428568-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-68428568-line-4)">
-</text><text class="terminal-68428568-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-68428568-line-5)">╭─</text><text class="terminal-68428568-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-68428568-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-68428568-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-68428568-li [...]
-</text><text class="terminal-68428568-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-68428568-line-6)">│</text><text class="terminal-68428568-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-68428568-line-6)">-</text><text class="terminal-68428568-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-68428568-line-6)">-image</text><text class="terminal-68428568-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-68428568-line-6)"> [...]
-</text><text class="terminal-68428568-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-68428568-line-7)">│</text><text class="terminal-68428568-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-68428568-line-7)">-</text><text class="terminal-68428568-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-68428568-line-7)">-image</text><text class="terminal-68428568-r5" x="109.8" y="190.8" textLength="48.8" clip-path="url(#terminal-68428568-line-7) [...]
-</text><text class="terminal-68428568-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-68428568-line-8)">│</text><text class="terminal-68428568-r2" x="244" y="215.2" textLength="1195.6" clip-path="url(#terminal-68428568-line-8)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-68428568-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-68428568-line-9)">│</text><text class="terminal-68428568-r7" x="244" y="239.6" textLength="1195.6" clip-path="url(#terminal-68428568-line-9)">(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;&#160;&#1 [...]
-</text><text class="terminal-68428568-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-68428568-line-10)">│</text><text class="terminal-68428568-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-68428568-line-10)">-</text><text class="terminal-68428568-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-68428568-line-10)">-python</text><text class="terminal-68428568-r6" x="195.2" y="264" textLength="24.4" clip-path="url(#terminal-68428568-line-10)">- [...]
-</text><text class="terminal-68428568-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-68428568-line-11)">│</text><text class="terminal-68428568-r4" x="244" y="288.4" textLength="732" clip-path="url(#terminal-68428568-line-11)">[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;&#160;&#1 [...]
-</text><text class="terminal-68428568-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-68428568-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-68428568-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-68428568-line-12)">
-</text><text class="terminal-68428568-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-68428568-line-13)">╭─</text><text class="terminal-68428568-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-68428568-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-68428568-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-68428568-line [...]
-</text><text class="terminal-68428568-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-68428568-line-14)">│</text><text class="terminal-68428568-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-68428568-line-14)">-</text><text class="terminal-68428568-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-68428568-line-14)">-verbose</text><text class="terminal-68428568-r6" x="280.6" y="361.6" textLength="24.4" clip-path="url(#terminal-68428568-li [...]
-</text><text class="terminal-68428568-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-68428568-line-15)">│</text><text class="terminal-68428568-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-68428568-line-15)">-</text><text class="terminal-68428568-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-68428568-line-15)">-dry</text><text class="terminal-68428568-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-68428568-line-15)">-run< [...]
-</text><text class="terminal-68428568-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-68428568-line-16)">│</text><text class="terminal-68428568-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-68428568-line-16)">-</text><text class="terminal-68428568-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-68428568-line-16)">-github</text><text class="terminal-68428568-r5" x="122" y="410.4" textLength="134.2" clip-path="url(#terminal-68428568-line [...]
-</text><text class="terminal-68428568-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-68428568-line-17)">│</text><text class="terminal-68428568-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-68428568-line-17)">-</text><text class="terminal-68428568-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-68428568-line-17)">-help</text><text class="terminal-68428568-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-68428568-line-17 [...]
-</text><text class="terminal-68428568-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-68428568-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-68428568-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-68428568-line-18)">
+    <g class="terminal-4060083131-matrix">
+    <text class="terminal-4060083131-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4060083131-line-0)">
+</text><text class="terminal-4060083131-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4060083131-line-1)">Usage:&#160;</text><text class="terminal-4060083131-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-4060083131-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4060083131-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-1)">
+</text><text class="terminal-4060083131-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-2)">
+</text><text class="terminal-4060083131-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-4060083131-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-4060083131-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-3)">
+</text><text class="terminal-4060083131-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-4)">
+</text><text class="terminal-4060083131-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4060083131-line-5)">╭─</text><text class="terminal-4060083131-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4060083131-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4060083131-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-6)">│</text><text class="terminal-4060083131-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-6)">-</text><text class="terminal-4060083131-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-4060083131-line-6)">-image</text><text class="terminal-4060083131-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-4060 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-7)">│</text><text class="terminal-4060083131-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-7)">-</text><text class="terminal-4060083131-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-4060083131-line-7)">-image</text><text class="terminal-4060083131-r5" x="109.8" y="190.8" textLength="48.8" clip-path="url(#terminal-40 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-8)">│</text><text class="terminal-4060083131-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-8)">-</text><text class="terminal-4060083131-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-4060083131-line-8)">-python</text><text class="terminal-4060083131-r6" x="195.2" y="215.2" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-9)">│</text><text class="terminal-4060083131-r4" x="244" y="239.6" textLength="732" clip-path="url(#terminal-4060083131-line-9)">[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;&#1 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-4060083131-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4060083131-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-4060083131-line-10)">
+</text><text class="terminal-4060083131-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-4060083131-line-11)">╭─</text><text class="terminal-4060083131-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-4060083131-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4060083131-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-406 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-12)">│</text><text class="terminal-4060083131-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-4060083131-line-12)">-</text><text class="terminal-4060083131-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-4060083131-line-12)">-verbose</text><text class="terminal-4060083131-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-4060083131-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-13)">│</text><text class="terminal-4060083131-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-4060083131-line-13)">-</text><text class="terminal-4060083131-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-4060083131-line-13)">-dry</text><text class="terminal-4060083131-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-40 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-14)">│</text><text class="terminal-4060083131-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4060083131-line-14)">-</text><text class="terminal-4060083131-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-4060083131-line-14)">-github</text><text class="terminal-4060083131-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-4060083131-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4060083131-line-15)">│</text><text class="terminal-4060083131-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4060083131-line-15)">-</text><text class="terminal-4060083131-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-4060083131-line-15)">-help</text><text class="terminal-4060083131-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-4060083131 [...]
+</text><text class="terminal-4060083131-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-4060083131-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4060083131-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-4060083131-line-16)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-generate-constraints.svg b/images/breeze/output-generate-constraints.svg
index e0b54f182e..24663d4bc7 100644
--- a/images/breeze/output-generate-constraints.svg
+++ b/images/breeze/output-generate-constraints.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 806.4" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 782.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,165 +19,161 @@
         font-weight: 700;
     }
 
-    .terminal-2861575501-matrix {
+    .terminal-3187609785-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2861575501-title {
+    .terminal-3187609785-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2861575501-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2861575501-r2 { fill: #c5c8c6 }
-.terminal-2861575501-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2861575501-r4 { fill: #868887 }
-.terminal-2861575501-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2861575501-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2861575501-r7 { fill: #8d7b39 }
+    .terminal-3187609785-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3187609785-r2 { fill: #c5c8c6 }
+.terminal-3187609785-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3187609785-r4 { fill: #868887 }
+.terminal-3187609785-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3187609785-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3187609785-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2861575501-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="755.4" />
+    <clipPath id="terminal-3187609785-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="731.0" />
     </clipPath>
-    <clipPath id="terminal-2861575501-line-0">
+    <clipPath id="terminal-3187609785-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-1">
+<clipPath id="terminal-3187609785-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-2">
+<clipPath id="terminal-3187609785-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-3">
+<clipPath id="terminal-3187609785-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-4">
+<clipPath id="terminal-3187609785-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-5">
+<clipPath id="terminal-3187609785-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-6">
+<clipPath id="terminal-3187609785-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-7">
+<clipPath id="terminal-3187609785-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-8">
+<clipPath id="terminal-3187609785-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-9">
+<clipPath id="terminal-3187609785-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-10">
+<clipPath id="terminal-3187609785-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-11">
+<clipPath id="terminal-3187609785-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-12">
+<clipPath id="terminal-3187609785-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-13">
+<clipPath id="terminal-3187609785-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-14">
+<clipPath id="terminal-3187609785-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-15">
+<clipPath id="terminal-3187609785-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-16">
+<clipPath id="terminal-3187609785-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-17">
+<clipPath id="terminal-3187609785-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-18">
+<clipPath id="terminal-3187609785-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-19">
+<clipPath id="terminal-3187609785-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-20">
+<clipPath id="terminal-3187609785-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-21">
+<clipPath id="terminal-3187609785-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-22">
+<clipPath id="terminal-3187609785-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-23">
+<clipPath id="terminal-3187609785-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-24">
+<clipPath id="terminal-3187609785-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-25">
+<clipPath id="terminal-3187609785-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-26">
+<clipPath id="terminal-3187609785-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-27">
+<clipPath id="terminal-3187609785-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-28">
+<clipPath id="terminal-3187609785-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2861575501-line-29">
-    <rect x="0" y="709.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="804.4" rx="8"/><text class="terminal-2861575501-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;generate-constraints</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="780" rx="8"/><text class="terminal-3187609785-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;generate-constraints</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-2861575501-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3187609785-clip-terminal)">
     
-    <g class="terminal-2861575501-matrix">
-    <text class="terminal-2861575501-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2861575501-line-0)">
-</text><text class="terminal-2861575501-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2861575501-line-1)">Usage:&#160;</text><text class="terminal-2861575501-r1" x="97.6" y="44.4" textLength="451.4" clip-path="url(#terminal-2861575501-line-1)">breeze&#160;generate-constraints&#160;[OPTIONS]</text><text class="terminal-2861575501-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-1)">
-</text><text class="terminal-2861575501-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-2)">
-</text><text class="terminal-2861575501-r2" x="12.2" y="93.2" textLength="927.2" clip-path="url(#terminal-2861575501-line-3)">Generates&#160;pinned&#160;constraint&#160;files&#160;with&#160;all&#160;extras&#160;from&#160;setup.py&#160;in&#160;parallel.</text><text class="terminal-2861575501-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-3)">
-</text><text class="terminal-2861575501-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-4)">
-</text><text class="terminal-2861575501-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2861575501-line-5)">╭─</text><text class="terminal-2861575501-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2861575501-line-5)">&#160;Generate&#160;constraints&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2861575501-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-6)">│</text><text class="terminal-2861575501-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-6)">-</text><text class="terminal-2861575501-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2861575501-line-6)">-image</text><text class="terminal-2861575501-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-28 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-7)">│</text><text class="terminal-2861575501-r5" x="414.8" y="190.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-7)">-</text><text class="terminal-2861575501-r5" x="427" y="190.8" textLength="73.2" clip-path="url(#terminal-2861575501-line-7)">-mount</text><text class="terminal-2861575501-r5" x="500.2" y="190.8" textLength="97.6" clip-path="url(#terminal-28 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-8)">│</text><text class="terminal-2861575501-r7" x="414.8" y="215.2" textLength="1024.8" clip-path="url(#terminal-2861575501-line-8)">(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-2861575501-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-9)">│</text><text class="terminal-2861575501-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-9)">-</text><text class="terminal-2861575501-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-2861575501-line-9)">-python</text><text class="terminal-2861575501-r6" x="366" y="239.6" textLength="24.4" clip-path="url(#terminal-286 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2861575501-line-10)">│</text><text class="terminal-2861575501-r7" x="414.8" y="264" textLength="732" clip-path="url(#terminal-2861575501-line-10)">(&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-2861575501-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-11)">│</text><text class="terminal-2861575501-r4" x="414.8" y="288.4" textLength="732" clip-path="url(#terminal-2861575501-line-11)">[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-2861575501-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-12)">│</text><text class="terminal-2861575501-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-12)">-</text><text class="terminal-2861575501-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-2861575501-line-12)">-airflow</text><text class="terminal-2861575501-r5" x="134.2" y="312.8" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-2861575501-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-13)">│</text><text class="terminal-2861575501-r7" x="414.8" y="337.2" textLength="866.2" clip-path="url(#terminal-2861575501-line-13)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-2861575501-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-13)">│</text><text clas [...]
-</text><text class="terminal-2861575501-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-14)">│</text><text class="terminal-2861575501-r4" x="414.8" y="361.6" textLength="866.2" clip-path="url(#terminal-2861575501-line-14)">[default:&#160;constraints-source-providers]&#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-2861575501-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2861575501-line-15)">│</text><text class="terminal-2861575501-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2861575501-line-15)">-</text><text class="terminal-2861575501-r5" x="36.6" y="386" textLength="73.2" clip-path="url(#terminal-2861575501-line-15)">-debug</text><text class="terminal-2861575501-r2" x="414.8" y="386" textLength="878.4" clip-path="url(#terminal-286157 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2861575501-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2861575501-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-16)">
-</text><text class="terminal-2861575501-r4" x="0" y="434.8" textLength="24.4" clip-path="url(#terminal-2861575501-line-17)">╭─</text><text class="terminal-2861575501-r4" x="24.4" y="434.8" textLength="1415.2" clip-path="url(#terminal-2861575501-line-17)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2861575501-r4" x="1439.6" y="434.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2861575501-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-18)">│</text><text class="terminal-2861575501-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-18)">-</text><text class="terminal-2861575501-r5" x="36.6" y="459.2" textLength="48.8" clip-path="url(#terminal-2861575501-line-18)">-run</text><text class="terminal-2861575501-r5" x="85.4" y="459.2" textLength="146.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-19)">│</text><text class="terminal-2861575501-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-19)">-</text><text class="terminal-2861575501-r5" x="36.6" y="483.6" textLength="146.4" clip-path="url(#terminal-2861575501-line-19)">-parallelism</text><text class="terminal-2861575501-r2" x="280.6" y="483.6" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-2861575501-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2861575501-line-20)">│</text><text class="terminal-2861575501-r4" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2861575501-line-20)">[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;&#1 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-21)">│</text><text class="terminal-2861575501-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-21)">-</text><text class="terminal-2861575501-r5" x="36.6" y="532.4" textLength="85.4" clip-path="url(#terminal-2861575501-line-21)">-python</text><text class="terminal-2861575501-r5" x="122" y="532.4" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2861575501-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-22)">│</text><text class="terminal-2861575501-r4" x="280.6" y="556.8" textLength="951.6" clip-path="url(#terminal-2861575501-line-22)">[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-2861575501-r4" x="0" y="581.2" textLength="1464" clip-path="url(#terminal-2861575501-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2861575501-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-23)">
-</text><text class="terminal-2861575501-r4" x="0" y="605.6" textLength="24.4" clip-path="url(#terminal-2861575501-line-24)">╭─</text><text class="terminal-2861575501-r4" x="24.4" y="605.6" textLength="1415.2" clip-path="url(#terminal-2861575501-line-24)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2861575501-r4" x="1439.6" y="605.6" textLength="24.4" clip-path="url(#terminal-286 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2861575501-line-25)">│</text><text class="terminal-2861575501-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2861575501-line-25)">-</text><text class="terminal-2861575501-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-2861575501-line-25)">-verbose</text><text class="terminal-2861575501-r6" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-28615 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-26)">│</text><text class="terminal-2861575501-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-26)">-</text><text class="terminal-2861575501-r5" x="36.6" y="654.4" textLength="48.8" clip-path="url(#terminal-2861575501-line-26)">-dry</text><text class="terminal-2861575501-r5" x="85.4" y="654.4" textLength="48.8" clip-path="url(#terminal-28 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-27)">│</text><text class="terminal-2861575501-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-27)">-</text><text class="terminal-2861575501-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-2861575501-line-27)">-github</text><text class="terminal-2861575501-r5" x="122" y="678.8" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2861575501-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-28)">│</text><text class="terminal-2861575501-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-28)">-</text><text class="terminal-2861575501-r5" x="36.6" y="703.2" textLength="85.4" clip-path="url(#terminal-2861575501-line-28)">-answer</text><text class="terminal-2861575501-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2861575501-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-29)">│</text><text class="terminal-2861575501-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-29)">-</text><text class="terminal-2861575501-r5" x="36.6" y="727.6" textLength="61" clip-path="url(#terminal-2861575501-line-29)">-help</text><text class="terminal-2861575501-r6" x="280.6" y="727.6" textLength="24.4" clip-path="url(#terminal-28 [...]
-</text><text class="terminal-2861575501-r4" x="0" y="752" textLength="1464" clip-path="url(#terminal-2861575501-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2861575501-r2" x="1464" y="752" textLength="12.2" clip-path="url(#terminal-2861575501-line-30)">
+    <g class="terminal-3187609785-matrix">
+    <text class="terminal-3187609785-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3187609785-line-0)">
+</text><text class="terminal-3187609785-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3187609785-line-1)">Usage:&#160;</text><text class="terminal-3187609785-r1" x="97.6" y="44.4" textLength="451.4" clip-path="url(#terminal-3187609785-line-1)">breeze&#160;generate-constraints&#160;[OPTIONS]</text><text class="terminal-3187609785-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-1)">
+</text><text class="terminal-3187609785-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-2)">
+</text><text class="terminal-3187609785-r2" x="12.2" y="93.2" textLength="927.2" clip-path="url(#terminal-3187609785-line-3)">Generates&#160;pinned&#160;constraint&#160;files&#160;with&#160;all&#160;extras&#160;from&#160;setup.py&#160;in&#160;parallel.</text><text class="terminal-3187609785-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-3)">
+</text><text class="terminal-3187609785-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-4)">
+</text><text class="terminal-3187609785-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3187609785-line-5)">╭─</text><text class="terminal-3187609785-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3187609785-line-5)">&#160;Generate&#160;constraints&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3187609785-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-6)">│</text><text class="terminal-3187609785-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-6)">-</text><text class="terminal-3187609785-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-3187609785-line-6)">-image</text><text class="terminal-3187609785-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-31 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-7)">│</text><text class="terminal-3187609785-r7" x="414.8" y="190.8" textLength="951.6" clip-path="url(#terminal-3187609785-line-7)">(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-3187609785-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-8)">│</text><text class="terminal-3187609785-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-8)">-</text><text class="terminal-3187609785-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-3187609785-line-8)">-python</text><text class="terminal-3187609785-r6" x="366" y="215.2" textLength="24.4" clip-path="url(#terminal-318 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-9)">│</text><text class="terminal-3187609785-r7" x="414.8" y="239.6" textLength="732" clip-path="url(#terminal-3187609785-line-9)">(&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-3187609785-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3187609785-line-10)">│</text><text class="terminal-3187609785-r4" x="414.8" y="264" textLength="732" clip-path="url(#terminal-3187609785-line-10)">[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;&#1 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-11)">│</text><text class="terminal-3187609785-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-11)">-</text><text class="terminal-3187609785-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-3187609785-line-11)">-airflow</text><text class="terminal-3187609785-r5" x="134.2" y="288.4" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-3187609785-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-12)">│</text><text class="terminal-3187609785-r7" x="414.8" y="312.8" textLength="866.2" clip-path="url(#terminal-3187609785-line-12)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-3187609785-r4" x="1451.8" y="312.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-12)">│</text><text clas [...]
+</text><text class="terminal-3187609785-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-13)">│</text><text class="terminal-3187609785-r4" x="414.8" y="337.2" textLength="866.2" clip-path="url(#terminal-3187609785-line-13)">[default:&#160;constraints-source-providers]&#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-3187609785-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-14)">│</text><text class="terminal-3187609785-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-14)">-</text><text class="terminal-3187609785-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-3187609785-line-14)">-debug</text><text class="terminal-3187609785-r2" x="414.8" y="361.6" textLength="878.4" clip-path="url(#termina [...]
+</text><text class="terminal-3187609785-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-3187609785-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3187609785-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-3187609785-line-15)">
+</text><text class="terminal-3187609785-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-3187609785-line-16)">╭─</text><text class="terminal-3187609785-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-3187609785-line-16)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3187609785-r4" x="1439.6" y="410.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3187609785-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-17)">│</text><text class="terminal-3187609785-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-17)">-</text><text class="terminal-3187609785-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-3187609785-line-17)">-run</text><text class="terminal-3187609785-r5" x="85.4" y="434.8" textLength="146.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-18)">│</text><text class="terminal-3187609785-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-18)">-</text><text class="terminal-3187609785-r5" x="36.6" y="459.2" textLength="146.4" clip-path="url(#terminal-3187609785-line-18)">-parallelism</text><text class="terminal-3187609785-r2" x="280.6" y="459.2" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-3187609785-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-19)">│</text><text class="terminal-3187609785-r4" x="280.6" y="483.6" textLength="915" clip-path="url(#terminal-3187609785-line-19)">[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-3187609785-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3187609785-line-20)">│</text><text class="terminal-3187609785-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3187609785-line-20)">-</text><text class="terminal-3187609785-r5" x="36.6" y="508" textLength="85.4" clip-path="url(#terminal-3187609785-line-20)">-python</text><text class="terminal-3187609785-r5" x="122" y="508" textLength="109.8" clip-path="url(#terminal-3187609 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-21)">│</text><text class="terminal-3187609785-r4" x="280.6" y="532.4" textLength="951.6" clip-path="url(#terminal-3187609785-line-21)">[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-3187609785-r4" x="0" y="556.8" textLength="1464" clip-path="url(#terminal-3187609785-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3187609785-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-22)">
+</text><text class="terminal-3187609785-r4" x="0" y="581.2" textLength="24.4" clip-path="url(#terminal-3187609785-line-23)">╭─</text><text class="terminal-3187609785-r4" x="24.4" y="581.2" textLength="1415.2" clip-path="url(#terminal-3187609785-line-23)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3187609785-r4" x="1439.6" y="581.2" textLength="24.4" clip-path="url(#terminal-318 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-24)">│</text><text class="terminal-3187609785-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-24)">-</text><text class="terminal-3187609785-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-3187609785-line-24)">-verbose</text><text class="terminal-3187609785-r6" x="280.6" y="605.6" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3187609785-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3187609785-line-25)">│</text><text class="terminal-3187609785-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3187609785-line-25)">-</text><text class="terminal-3187609785-r5" x="36.6" y="630" textLength="48.8" clip-path="url(#terminal-3187609785-line-25)">-dry</text><text class="terminal-3187609785-r5" x="85.4" y="630" textLength="48.8" clip-path="url(#terminal-3187609785 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-26)">│</text><text class="terminal-3187609785-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3187609785-line-26)">-</text><text class="terminal-3187609785-r5" x="36.6" y="654.4" textLength="85.4" clip-path="url(#terminal-3187609785-line-26)">-github</text><text class="terminal-3187609785-r5" x="122" y="654.4" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3187609785-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-27)">│</text><text class="terminal-3187609785-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-3187609785-line-27)">-</text><text class="terminal-3187609785-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-3187609785-line-27)">-answer</text><text class="terminal-3187609785-r6" x="280.6" y="678.8" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3187609785-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-28)">│</text><text class="terminal-3187609785-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-3187609785-line-28)">-</text><text class="terminal-3187609785-r5" x="36.6" y="703.2" textLength="61" clip-path="url(#terminal-3187609785-line-28)">-help</text><text class="terminal-3187609785-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#terminal-31 [...]
+</text><text class="terminal-3187609785-r4" x="0" y="727.6" textLength="1464" clip-path="url(#terminal-3187609785-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3187609785-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#terminal-3187609785-line-29)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-pull-image.svg b/images/breeze/output-pull-image.svg
index edb77e062e..7ebae02e45 100644
--- a/images/breeze/output-pull-image.svg
+++ b/images/breeze/output-pull-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 782.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,161 +19,155 @@
         font-weight: 700;
     }
 
-    .terminal-2760841362-matrix {
+    .terminal-668722442-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2760841362-title {
+    .terminal-668722442-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2760841362-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2760841362-r2 { fill: #c5c8c6 }
-.terminal-2760841362-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2760841362-r4 { fill: #868887 }
-.terminal-2760841362-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2760841362-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2760841362-r7 { fill: #8d7b39 }
+    .terminal-668722442-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-668722442-r2 { fill: #c5c8c6 }
+.terminal-668722442-r3 { fill: #d0b344;font-weight: bold }
+.terminal-668722442-r4 { fill: #868887 }
+.terminal-668722442-r5 { fill: #cc555a }
+.terminal-668722442-r6 { fill: #68a0b3;font-weight: bold }
+.terminal-668722442-r7 { fill: #98a84b;font-weight: bold }
+.terminal-668722442-r8 { fill: #8d7b39 }
+.terminal-668722442-r9 { fill: #8a4346 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2760841362-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="731.0" />
+    <clipPath id="terminal-668722442-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
     </clipPath>
-    <clipPath id="terminal-2760841362-line-0">
+    <clipPath id="terminal-668722442-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-1">
+<clipPath id="terminal-668722442-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-2">
+<clipPath id="terminal-668722442-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-3">
+<clipPath id="terminal-668722442-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-4">
+<clipPath id="terminal-668722442-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-5">
+<clipPath id="terminal-668722442-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-6">
+<clipPath id="terminal-668722442-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-7">
+<clipPath id="terminal-668722442-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-8">
+<clipPath id="terminal-668722442-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-9">
+<clipPath id="terminal-668722442-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-10">
+<clipPath id="terminal-668722442-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-11">
+<clipPath id="terminal-668722442-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-12">
+<clipPath id="terminal-668722442-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-13">
+<clipPath id="terminal-668722442-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-14">
+<clipPath id="terminal-668722442-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-15">
+<clipPath id="terminal-668722442-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-16">
+<clipPath id="terminal-668722442-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-17">
+<clipPath id="terminal-668722442-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-18">
+<clipPath id="terminal-668722442-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-19">
+<clipPath id="terminal-668722442-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-20">
+<clipPath id="terminal-668722442-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-21">
+<clipPath id="terminal-668722442-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-22">
+<clipPath id="terminal-668722442-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-23">
+<clipPath id="terminal-668722442-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-24">
+<clipPath id="terminal-668722442-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-25">
+<clipPath id="terminal-668722442-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-26">
+<clipPath id="terminal-668722442-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2760841362-line-27">
-    <rect x="0" y="660.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2760841362-line-28">
-    <rect x="0" y="684.7" 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="780" rx="8"/><text class="terminal-2760841362-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="terminal-668722442-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-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-2760841362-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-668722442-clip-terminal)">
     
-    <g class="terminal-2760841362-matrix">
-    <text class="terminal-2760841362-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2760841362-line-0)">
-</text><text class="terminal-2760841362-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2760841362-line-1)">Usage:&#160;</text><text class="terminal-2760841362-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-2760841362-line-1)">breeze&#160;pull-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2760841362-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-1)">
-</text><text class="terminal-2760841362-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-2)">
-</text><text class="terminal-2760841362-r2" x="12.2" y="93.2" textLength="1024.8" clip-path="url(#terminal-2760841362-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-2760841362-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-3)">
-</text><text class="terminal-2760841362-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-4)">
-</text><text class="terminal-2760841362-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2760841362-line-5)">╭─</text><text class="terminal-2760841362-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2760841362-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2760841362-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-6)">│</text><text class="terminal-2760841362-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-6)">-</text><text class="terminal-2760841362-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2760841362-line-6)">-image</text><text class="terminal-2760841362-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-27 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-7)">│</text><text class="terminal-2760841362-r2" x="292.8" y="190.8" textLength="1146.8" clip-path="url(#terminal-2760841362-line-7)">using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2760841362-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-8)">│</text><text class="terminal-2760841362-r7" x="292.8" y="215.2" textLength="1146.8" clip-path="url(#terminal-2760841362-line-8)">(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-2760841362-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-9)">│</text><text class="terminal-2760841362-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-9)">-</text><text class="terminal-2760841362-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-2760841362-line-9)">-python</text><text class="terminal-2760841362-r6" x="244" y="239.6" textLength="24.4" clip-path="url(#terminal-276 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2760841362-line-10)">│</text><text class="terminal-2760841362-r4" x="292.8" y="264" textLength="732" clip-path="url(#terminal-2760841362-line-10)">[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;&#1 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-11)">│</text><text class="terminal-2760841362-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-11)">-</text><text class="terminal-2760841362-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-2760841362-line-11)">-github</text><text class="terminal-2760841362-r5" x="122" y="288.4" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-2760841362-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-12)">│</text><text class="terminal-2760841362-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-12)">-</text><text class="terminal-2760841362-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-2760841362-line-12)">-verify</text><text class="terminal-2760841362-r5" x="122" y="312.8" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-2760841362-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-13)">│</text><text class="terminal-2760841362-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-13)">-</text><text class="terminal-2760841362-r5" x="36.6" y="337.2" textLength="61" clip-path="url(#terminal-2760841362-line-13)">-wait</text><text class="terminal-2760841362-r5" x="97.6" y="337.2" textLength="122" clip-path="url(#terminal-2760 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-14)">│</text><text class="terminal-2760841362-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-14)">-</text><text class="terminal-2760841362-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-2760841362-line-14)">-tag</text><text class="terminal-2760841362-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-276 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2760841362-line-15)">│</text><text class="terminal-2760841362-r2" x="292.8" y="386" textLength="231.8" clip-path="url(#terminal-2760841362-line-15)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-2760841362-r5" x="524.6" y="386" textLength="12.2" clip-path="url(#terminal-2760841362-line-15)">-</text><text class="terminal-2760841362-r5" x="536.8" y="386" textLength="73 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2760841362-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2760841362-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-16)">
-</text><text class="terminal-2760841362-r4" x="0" y="434.8" textLength="24.4" clip-path="url(#terminal-2760841362-line-17)">╭─</text><text class="terminal-2760841362-r4" x="24.4" y="434.8" textLength="1415.2" clip-path="url(#terminal-2760841362-line-17)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2760841362-r4" x="1439.6" y="434.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2760841362-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-18)">│</text><text class="terminal-2760841362-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-18)">-</text><text class="terminal-2760841362-r5" x="36.6" y="459.2" textLength="48.8" clip-path="url(#terminal-2760841362-line-18)">-run</text><text class="terminal-2760841362-r5" x="85.4" y="459.2" textLength="146.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-19)">│</text><text class="terminal-2760841362-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-19)">-</text><text class="terminal-2760841362-r5" x="36.6" y="483.6" textLength="146.4" clip-path="url(#terminal-2760841362-line-19)">-parallelism</text><text class="terminal-2760841362-r2" x="280.6" y="483.6" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-2760841362-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2760841362-line-20)">│</text><text class="terminal-2760841362-r4" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2760841362-line-20)">[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;&#1 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-21)">│</text><text class="terminal-2760841362-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-21)">-</text><text class="terminal-2760841362-r5" x="36.6" y="532.4" textLength="85.4" clip-path="url(#terminal-2760841362-line-21)">-python</text><text class="terminal-2760841362-r5" x="122" y="532.4" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2760841362-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-22)">│</text><text class="terminal-2760841362-r4" x="280.6" y="556.8" textLength="951.6" clip-path="url(#terminal-2760841362-line-22)">[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-2760841362-r4" x="0" y="581.2" textLength="1464" clip-path="url(#terminal-2760841362-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2760841362-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-23)">
-</text><text class="terminal-2760841362-r4" x="0" y="605.6" textLength="24.4" clip-path="url(#terminal-2760841362-line-24)">╭─</text><text class="terminal-2760841362-r4" x="24.4" y="605.6" textLength="1415.2" clip-path="url(#terminal-2760841362-line-24)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2760841362-r4" x="1439.6" y="605.6" textLength="24.4" clip-path="url(#terminal-276 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2760841362-line-25)">│</text><text class="terminal-2760841362-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2760841362-line-25)">-</text><text class="terminal-2760841362-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-2760841362-line-25)">-verbose</text><text class="terminal-2760841362-r6" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-27608 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-26)">│</text><text class="terminal-2760841362-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-26)">-</text><text class="terminal-2760841362-r5" x="36.6" y="654.4" textLength="48.8" clip-path="url(#terminal-2760841362-line-26)">-dry</text><text class="terminal-2760841362-r5" x="85.4" y="654.4" textLength="48.8" clip-path="url(#terminal-27 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-27)">│</text><text class="terminal-2760841362-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-27)">-</text><text class="terminal-2760841362-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-2760841362-line-27)">-github</text><text class="terminal-2760841362-r5" x="122" y="678.8" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2760841362-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-28)">│</text><text class="terminal-2760841362-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-28)">-</text><text class="terminal-2760841362-r5" x="36.6" y="703.2" textLength="61" clip-path="url(#terminal-2760841362-line-28)">-help</text><text class="terminal-2760841362-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#terminal-27 [...]
-</text><text class="terminal-2760841362-r4" x="0" y="727.6" textLength="1464" clip-path="url(#terminal-2760841362-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2760841362-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-29)">
+    <g class="terminal-668722442-matrix">
+    <text class="terminal-668722442-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-668722442-line-0)">
+</text><text class="terminal-668722442-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-668722442-line-1)">Usage:&#160;</text><text class="terminal-668722442-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-668722442-line-1)">breeze&#160;pull-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-668722442-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-668722442-line-1)">
+</text><text class="terminal-668722442-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-668722442-line-2)">
+</text><text class="terminal-668722442-r2" x="12.2" y="93.2" textLength="1024.8" clip-path="url(#terminal-668722442-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-668722442-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-668722442-line-3)">
+</text><text class="terminal-668722442-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-668722442-line-4)">
+</text><text class="terminal-668722442-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-668722442-line-5)">╭─</text><text class="terminal-668722442-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-668722442-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-668722442-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-668722 [...]
+</text><text class="terminal-668722442-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-668722442-line-6)">│</text><text class="terminal-668722442-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-668722442-line-6)">*</text><text class="terminal-668722442-r6" x="61" y="166.4" textLength="12.2" clip-path="url(#terminal-668722442-line-6)">-</text><text class="terminal-668722442-r6" x="73.2" y="166.4" textLength="73.2" clip-path="url(#terminal-668722442-line-6) [...]
+</text><text class="terminal-668722442-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-668722442-line-7)">│</text><text class="terminal-668722442-r6" x="61" y="190.8" textLength="12.2" clip-path="url(#terminal-668722442-line-7)">-</text><text class="terminal-668722442-r6" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-668722442-line-7)">-python</text><text class="terminal-668722442-r7" x="280.6" y="190.8" textLength="24.4" clip-path="url(#terminal-668722442- [...]
+</text><text class="terminal-668722442-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-668722442-line-8)">│</text><text class="terminal-668722442-r4" x="329.4" y="215.2" textLength="732" clip-path="url(#terminal-668722442-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;&#160 [...]
+</text><text class="terminal-668722442-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-668722442-line-9)">│</text><text class="terminal-668722442-r6" x="61" y="239.6" textLength="12.2" clip-path="url(#terminal-668722442-line-9)">-</text><text class="terminal-668722442-r6" x="73.2" y="239.6" textLength="85.4" clip-path="url(#terminal-668722442-line-9)">-github</text><text class="terminal-668722442-r6" x="158.6" y="239.6" textLength="73.2" clip-path="url(#terminal-668722442- [...]
+</text><text class="terminal-668722442-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-668722442-line-10)">│</text><text class="terminal-668722442-r6" x="61" y="264" textLength="12.2" clip-path="url(#terminal-668722442-line-10)">-</text><text class="terminal-668722442-r6" x="73.2" y="264" textLength="85.4" clip-path="url(#terminal-668722442-line-10)">-verify</text><text class="terminal-668722442-r6" x="158.6" y="264" textLength="73.2" clip-path="url(#terminal-668722442-line- [...]
+</text><text class="terminal-668722442-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-668722442-line-11)">│</text><text class="terminal-668722442-r6" x="61" y="288.4" textLength="12.2" clip-path="url(#terminal-668722442-line-11)">-</text><text class="terminal-668722442-r6" x="73.2" y="288.4" textLength="61" clip-path="url(#terminal-668722442-line-11)">-wait</text><text class="terminal-668722442-r6" x="134.2" y="288.4" textLength="122" clip-path="url(#terminal-668722442-li [...]
+</text><text class="terminal-668722442-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-668722442-line-12)">│</text><text class="terminal-668722442-r6" x="61" y="312.8" textLength="12.2" clip-path="url(#terminal-668722442-line-12)">-</text><text class="terminal-668722442-r6" x="73.2" y="312.8" textLength="48.8" clip-path="url(#terminal-668722442-line-12)">-tag</text><text class="terminal-668722442-r6" x="122" y="312.8" textLength="122" clip-path="url(#terminal-668722442-lin [...]
+</text><text class="terminal-668722442-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-668722442-line-13)">│</text><text class="terminal-668722442-r2" x="329.4" y="337.2" textLength="305" clip-path="url(#terminal-668722442-line-13)">build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-668722442-r6" x="634.4" y="337.2" textLength="12.2" clip-path="url(#terminal-668722442-line-13)">-</text><text class="terminal-668722442-r6" x="646.6" y="337.2" text [...]
+</text><text class="terminal-668722442-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-668722442-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-668722442-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-668722442-line-14)">
+</text><text class="terminal-668722442-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-668722442-line-15)">╭─</text><text class="terminal-668722442-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-668722442-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-668722442-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-668722442 [...]
+</text><text class="terminal-668722442-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-668722442-line-16)">│</text><text class="terminal-668722442-r6" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-668722442-line-16)">-</text><text class="terminal-668722442-r6" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-668722442-line-16)">-run</text><text class="terminal-668722442-r6" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-66872244 [...]
+</text><text class="terminal-668722442-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-668722442-line-17)">│</text><text class="terminal-668722442-r6" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-668722442-line-17)">-</text><text class="terminal-668722442-r6" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-668722442-line-17)">-parallelism</text><text class="terminal-668722442-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#terminal- [...]
+</text><text class="terminal-668722442-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-668722442-line-18)">│</text><text class="terminal-668722442-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-668722442-line-18)">[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;&#1 [...]
+</text><text class="terminal-668722442-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-668722442-line-19)">│</text><text class="terminal-668722442-r6" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-668722442-line-19)">-</text><text class="terminal-668722442-r6" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-668722442-line-19)">-python</text><text class="terminal-668722442-r6" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal-668722 [...]
+</text><text class="terminal-668722442-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-668722442-line-20)">│</text><text class="terminal-668722442-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-668722442-line-20)">[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;&#160;& [...]
+</text><text class="terminal-668722442-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-668722442-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-668722442-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-668722442-line-21)">
+</text><text class="terminal-668722442-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-668722442-line-22)">╭─</text><text class="terminal-668722442-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-668722442-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-668722442-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-66872244 [...]
+</text><text class="terminal-668722442-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-668722442-line-23)">│</text><text class="terminal-668722442-r6" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-668722442-line-23)">-</text><text class="terminal-668722442-r6" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-668722442-line-23)">-verbose</text><text class="terminal-668722442-r7" x="280.6" y="581.2" textLength="24.4" clip-path="url(#terminal-6687 [...]
+</text><text class="terminal-668722442-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-668722442-line-24)">│</text><text class="terminal-668722442-r6" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-668722442-line-24)">-</text><text class="terminal-668722442-r6" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-668722442-line-24)">-dry</text><text class="terminal-668722442-r6" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-668722442 [...]
+</text><text class="terminal-668722442-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-668722442-line-25)">│</text><text class="terminal-668722442-r6" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-668722442-line-25)">-</text><text class="terminal-668722442-r6" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-668722442-line-25)">-github</text><text class="terminal-668722442-r6" x="122" y="630" textLength="134.2" clip-path="url(#terminal-668722442-line [...]
+</text><text class="terminal-668722442-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-668722442-line-26)">│</text><text class="terminal-668722442-r6" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-668722442-line-26)">-</text><text class="terminal-668722442-r6" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-668722442-line-26)">-help</text><text class="terminal-668722442-r7" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-668722442 [...]
+</text><text class="terminal-668722442-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-668722442-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-668722442-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-668722442-line-27)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-pull-prod-image.svg b/images/breeze/output-pull-prod-image.svg
index e714d08acd..6cb1051d80 100644
--- a/images/breeze/output-pull-prod-image.svg
+++ b/images/breeze/output-pull-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 782.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,161 +19,155 @@
         font-weight: 700;
     }
 
-    .terminal-2333548113-matrix {
+    .terminal-1189735113-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2333548113-title {
+    .terminal-1189735113-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2333548113-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2333548113-r2 { fill: #c5c8c6 }
-.terminal-2333548113-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2333548113-r4 { fill: #868887 }
-.terminal-2333548113-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2333548113-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2333548113-r7 { fill: #8d7b39 }
+    .terminal-1189735113-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1189735113-r2 { fill: #c5c8c6 }
+.terminal-1189735113-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1189735113-r4 { fill: #868887 }
+.terminal-1189735113-r5 { fill: #cc555a }
+.terminal-1189735113-r6 { fill: #68a0b3;font-weight: bold }
+.terminal-1189735113-r7 { fill: #98a84b;font-weight: bold }
+.terminal-1189735113-r8 { fill: #8d7b39 }
+.terminal-1189735113-r9 { fill: #8a4346 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2333548113-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="731.0" />
+    <clipPath id="terminal-1189735113-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
     </clipPath>
-    <clipPath id="terminal-2333548113-line-0">
+    <clipPath id="terminal-1189735113-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-1">
+<clipPath id="terminal-1189735113-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-2">
+<clipPath id="terminal-1189735113-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-3">
+<clipPath id="terminal-1189735113-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-4">
+<clipPath id="terminal-1189735113-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-5">
+<clipPath id="terminal-1189735113-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-6">
+<clipPath id="terminal-1189735113-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-7">
+<clipPath id="terminal-1189735113-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-8">
+<clipPath id="terminal-1189735113-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-9">
+<clipPath id="terminal-1189735113-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-10">
+<clipPath id="terminal-1189735113-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-11">
+<clipPath id="terminal-1189735113-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-12">
+<clipPath id="terminal-1189735113-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-13">
+<clipPath id="terminal-1189735113-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-14">
+<clipPath id="terminal-1189735113-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-15">
+<clipPath id="terminal-1189735113-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-16">
+<clipPath id="terminal-1189735113-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-17">
+<clipPath id="terminal-1189735113-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-18">
+<clipPath id="terminal-1189735113-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-19">
+<clipPath id="terminal-1189735113-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-20">
+<clipPath id="terminal-1189735113-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-21">
+<clipPath id="terminal-1189735113-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-22">
+<clipPath id="terminal-1189735113-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-23">
+<clipPath id="terminal-1189735113-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-24">
+<clipPath id="terminal-1189735113-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-25">
+<clipPath id="terminal-1189735113-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-26">
+<clipPath id="terminal-1189735113-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2333548113-line-27">
-    <rect x="0" y="660.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2333548113-line-28">
-    <rect x="0" y="684.7" 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="780" rx="8"/><text class="terminal-2333548113-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-prod-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="731.2" rx="8"/><text class="terminal-1189735113-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-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-2333548113-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1189735113-clip-terminal)">
     
-    <g class="terminal-2333548113-matrix">
-    <text class="terminal-2333548113-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2333548113-line-0)">
-</text><text class="terminal-2333548113-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2333548113-line-1)">Usage:&#160;</text><text class="terminal-2333548113-r1" x="97.6" y="44.4" textLength="671" clip-path="url(#terminal-2333548113-line-1)">breeze&#160;pull-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2333548113-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-1)">
-</text><text class="terminal-2333548113-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-2)">
-</text><text class="terminal-2333548113-r2" x="12.2" y="93.2" textLength="1122.4" clip-path="url(#terminal-2333548113-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-2333548113-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-3)">
-</text><text class="terminal-2333548113-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-4)">
-</text><text class="terminal-2333548113-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2333548113-line-5)">╭─</text><text class="terminal-2333548113-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2333548113-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2333548113-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-6)">│</text><text class="terminal-2333548113-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-6)">-</text><text class="terminal-2333548113-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2333548113-line-6)">-image</text><text class="terminal-2333548113-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-7)">│</text><text class="terminal-2333548113-r2" x="292.8" y="190.8" textLength="1146.8" clip-path="url(#terminal-2333548113-line-7)">using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2333548113-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-8)">│</text><text class="terminal-2333548113-r7" x="292.8" y="215.2" textLength="1146.8" clip-path="url(#terminal-2333548113-line-8)">(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-2333548113-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-9)">│</text><text class="terminal-2333548113-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-9)">-</text><text class="terminal-2333548113-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-2333548113-line-9)">-python</text><text class="terminal-2333548113-r6" x="244" y="239.6" textLength="24.4" clip-path="url(#terminal-233 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2333548113-line-10)">│</text><text class="terminal-2333548113-r4" x="292.8" y="264" textLength="732" clip-path="url(#terminal-2333548113-line-10)">[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;&#1 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-11)">│</text><text class="terminal-2333548113-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-11)">-</text><text class="terminal-2333548113-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-2333548113-line-11)">-github</text><text class="terminal-2333548113-r5" x="122" y="288.4" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-2333548113-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-12)">│</text><text class="terminal-2333548113-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-12)">-</text><text class="terminal-2333548113-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-2333548113-line-12)">-verify</text><text class="terminal-2333548113-r5" x="122" y="312.8" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-2333548113-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-13)">│</text><text class="terminal-2333548113-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-13)">-</text><text class="terminal-2333548113-r5" x="36.6" y="337.2" textLength="61" clip-path="url(#terminal-2333548113-line-13)">-wait</text><text class="terminal-2333548113-r5" x="97.6" y="337.2" textLength="122" clip-path="url(#terminal-2333 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-14)">│</text><text class="terminal-2333548113-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-14)">-</text><text class="terminal-2333548113-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-2333548113-line-14)">-tag</text><text class="terminal-2333548113-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-233 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2333548113-line-15)">│</text><text class="terminal-2333548113-r2" x="292.8" y="386" textLength="231.8" clip-path="url(#terminal-2333548113-line-15)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-2333548113-r5" x="524.6" y="386" textLength="12.2" clip-path="url(#terminal-2333548113-line-15)">-</text><text class="terminal-2333548113-r5" x="536.8" y="386" textLength="73 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2333548113-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2333548113-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-16)">
-</text><text class="terminal-2333548113-r4" x="0" y="434.8" textLength="24.4" clip-path="url(#terminal-2333548113-line-17)">╭─</text><text class="terminal-2333548113-r4" x="24.4" y="434.8" textLength="1415.2" clip-path="url(#terminal-2333548113-line-17)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2333548113-r4" x="1439.6" y="434.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2333548113-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-18)">│</text><text class="terminal-2333548113-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-18)">-</text><text class="terminal-2333548113-r5" x="36.6" y="459.2" textLength="48.8" clip-path="url(#terminal-2333548113-line-18)">-run</text><text class="terminal-2333548113-r5" x="85.4" y="459.2" textLength="146.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-19)">│</text><text class="terminal-2333548113-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-19)">-</text><text class="terminal-2333548113-r5" x="36.6" y="483.6" textLength="146.4" clip-path="url(#terminal-2333548113-line-19)">-parallelism</text><text class="terminal-2333548113-r2" x="280.6" y="483.6" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-2333548113-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2333548113-line-20)">│</text><text class="terminal-2333548113-r4" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2333548113-line-20)">[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;&#1 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-21)">│</text><text class="terminal-2333548113-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-21)">-</text><text class="terminal-2333548113-r5" x="36.6" y="532.4" textLength="85.4" clip-path="url(#terminal-2333548113-line-21)">-python</text><text class="terminal-2333548113-r5" x="122" y="532.4" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2333548113-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-22)">│</text><text class="terminal-2333548113-r4" x="280.6" y="556.8" textLength="951.6" clip-path="url(#terminal-2333548113-line-22)">[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-2333548113-r4" x="0" y="581.2" textLength="1464" clip-path="url(#terminal-2333548113-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2333548113-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-23)">
-</text><text class="terminal-2333548113-r4" x="0" y="605.6" textLength="24.4" clip-path="url(#terminal-2333548113-line-24)">╭─</text><text class="terminal-2333548113-r4" x="24.4" y="605.6" textLength="1415.2" clip-path="url(#terminal-2333548113-line-24)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2333548113-r4" x="1439.6" y="605.6" textLength="24.4" clip-path="url(#terminal-233 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2333548113-line-25)">│</text><text class="terminal-2333548113-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2333548113-line-25)">-</text><text class="terminal-2333548113-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-2333548113-line-25)">-verbose</text><text class="terminal-2333548113-r6" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-23335 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-26)">│</text><text class="terminal-2333548113-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-26)">-</text><text class="terminal-2333548113-r5" x="36.6" y="654.4" textLength="48.8" clip-path="url(#terminal-2333548113-line-26)">-dry</text><text class="terminal-2333548113-r5" x="85.4" y="654.4" textLength="48.8" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-27)">│</text><text class="terminal-2333548113-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-27)">-</text><text class="terminal-2333548113-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-2333548113-line-27)">-github</text><text class="terminal-2333548113-r5" x="122" y="678.8" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2333548113-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-28)">│</text><text class="terminal-2333548113-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-28)">-</text><text class="terminal-2333548113-r5" x="36.6" y="703.2" textLength="61" clip-path="url(#terminal-2333548113-line-28)">-help</text><text class="terminal-2333548113-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2333548113-r4" x="0" y="727.6" textLength="1464" clip-path="url(#terminal-2333548113-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2333548113-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-29)">
+    <g class="terminal-1189735113-matrix">
+    <text class="terminal-1189735113-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1189735113-line-0)">
+</text><text class="terminal-1189735113-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1189735113-line-1)">Usage:&#160;</text><text class="terminal-1189735113-r1" x="97.6" y="44.4" textLength="671" clip-path="url(#terminal-1189735113-line-1)">breeze&#160;pull-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1189735113-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-1)">
+</text><text class="terminal-1189735113-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-2)">
+</text><text class="terminal-1189735113-r2" x="12.2" y="93.2" textLength="1122.4" clip-path="url(#terminal-1189735113-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-1189735113-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-3)">
+</text><text class="terminal-1189735113-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-4)">
+</text><text class="terminal-1189735113-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1189735113-line-5)">╭─</text><text class="terminal-1189735113-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1189735113-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1189735113-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-6)">│</text><text class="terminal-1189735113-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-6)">*</text><text class="terminal-1189735113-r6" x="61" y="166.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-6)">-</text><text class="terminal-1189735113-r6" x="73.2" y="166.4" textLength="73.2" clip-path="url(#terminal-1189735113 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-7)">│</text><text class="terminal-1189735113-r6" x="61" y="190.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-7)">-</text><text class="terminal-1189735113-r6" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-1189735113-line-7)">-python</text><text class="terminal-1189735113-r7" x="280.6" y="190.8" textLength="24.4" clip-path="url(#terminal-118 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-8)">│</text><text class="terminal-1189735113-r4" x="329.4" y="215.2" textLength="732" clip-path="url(#terminal-1189735113-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-1189735113-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-9)">│</text><text class="terminal-1189735113-r6" x="61" y="239.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-9)">-</text><text class="terminal-1189735113-r6" x="73.2" y="239.6" textLength="85.4" clip-path="url(#terminal-1189735113-line-9)">-github</text><text class="terminal-1189735113-r6" x="158.6" y="239.6" textLength="73.2" clip-path="url(#terminal-118 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1189735113-line-10)">│</text><text class="terminal-1189735113-r6" x="61" y="264" textLength="12.2" clip-path="url(#terminal-1189735113-line-10)">-</text><text class="terminal-1189735113-r6" x="73.2" y="264" textLength="85.4" clip-path="url(#terminal-1189735113-line-10)">-verify</text><text class="terminal-1189735113-r6" x="158.6" y="264" textLength="73.2" clip-path="url(#terminal-11897351 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-11)">│</text><text class="terminal-1189735113-r6" x="61" y="288.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-11)">-</text><text class="terminal-1189735113-r6" x="73.2" y="288.4" textLength="61" clip-path="url(#terminal-1189735113-line-11)">-wait</text><text class="terminal-1189735113-r6" x="134.2" y="288.4" textLength="122" clip-path="url(#terminal-11897 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-12)">│</text><text class="terminal-1189735113-r6" x="61" y="312.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-12)">-</text><text class="terminal-1189735113-r6" x="73.2" y="312.8" textLength="48.8" clip-path="url(#terminal-1189735113-line-12)">-tag</text><text class="terminal-1189735113-r6" x="122" y="312.8" textLength="122" clip-path="url(#terminal-118973 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-13)">│</text><text class="terminal-1189735113-r2" x="329.4" y="337.2" textLength="305" clip-path="url(#terminal-1189735113-line-13)">build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1189735113-r6" x="634.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-13)">-</text><text class="terminal-1189735113-r6" x="646.6" y="337. [...]
+</text><text class="terminal-1189735113-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-1189735113-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1189735113-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-14)">
+</text><text class="terminal-1189735113-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-1189735113-line-15)">╭─</text><text class="terminal-1189735113-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-1189735113-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1189735113-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-1189 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-16)">│</text><text class="terminal-1189735113-r6" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-16)">-</text><text class="terminal-1189735113-r6" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-1189735113-line-16)">-run</text><text class="terminal-1189735113-r6" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-17)">│</text><text class="terminal-1189735113-r6" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-17)">-</text><text class="terminal-1189735113-r6" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-1189735113-line-17)">-parallelism</text><text class="terminal-1189735113-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-1189735113-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-18)">│</text><text class="terminal-1189735113-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-1189735113-line-18)">[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-1189735113-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-19)">│</text><text class="terminal-1189735113-r6" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-19)">-</text><text class="terminal-1189735113-r6" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-1189735113-line-19)">-python</text><text class="terminal-1189735113-r6" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1189735113-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1189735113-line-20)">│</text><text class="terminal-1189735113-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-1189735113-line-20)">[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;&#1 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-1189735113-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1189735113-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-21)">
+</text><text class="terminal-1189735113-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-1189735113-line-22)">╭─</text><text class="terminal-1189735113-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-1189735113-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1189735113-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-118 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-23)">│</text><text class="terminal-1189735113-r6" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1189735113-line-23)">-</text><text class="terminal-1189735113-r6" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-1189735113-line-23)">-verbose</text><text class="terminal-1189735113-r7" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1189735113-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-24)">│</text><text class="terminal-1189735113-r6" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1189735113-line-24)">-</text><text class="terminal-1189735113-r6" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-1189735113-line-24)">-dry</text><text class="terminal-1189735113-r6" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-11 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1189735113-line-25)">│</text><text class="terminal-1189735113-r6" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1189735113-line-25)">-</text><text class="terminal-1189735113-r6" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-1189735113-line-25)">-github</text><text class="terminal-1189735113-r6" x="122" y="630" textLength="134.2" clip-path="url(#terminal-1189735 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-26)">│</text><text class="terminal-1189735113-r6" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1189735113-line-26)">-</text><text class="terminal-1189735113-r6" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-1189735113-line-26)">-help</text><text class="terminal-1189735113-r7" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-11 [...]
+</text><text class="terminal-1189735113-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-1189735113-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1189735113-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-1189735113-line-27)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-shell.svg b/images/breeze/output-shell.svg
index 2c29bda22a..415b1b09c2 100644
--- a/images/breeze/output-shell.svg
+++ b/images/breeze/output-shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1245.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1196.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,237 +19,229 @@
         font-weight: 700;
     }
 
-    .terminal-1533840119-matrix {
+    .terminal-2380684201-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1533840119-title {
+    .terminal-2380684201-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1533840119-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1533840119-r2 { fill: #c5c8c6 }
-.terminal-1533840119-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1533840119-r4 { fill: #868887 }
-.terminal-1533840119-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1533840119-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1533840119-r7 { fill: #8d7b39 }
+    .terminal-2380684201-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2380684201-r2 { fill: #c5c8c6 }
+.terminal-2380684201-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2380684201-r4 { fill: #868887 }
+.terminal-2380684201-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2380684201-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2380684201-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1533840119-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1194.6" />
+    <clipPath id="terminal-2380684201-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1145.8" />
     </clipPath>
-    <clipPath id="terminal-1533840119-line-0">
+    <clipPath id="terminal-2380684201-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-1">
+<clipPath id="terminal-2380684201-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-2">
+<clipPath id="terminal-2380684201-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-3">
+<clipPath id="terminal-2380684201-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-4">
+<clipPath id="terminal-2380684201-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-5">
+<clipPath id="terminal-2380684201-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-6">
+<clipPath id="terminal-2380684201-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-7">
+<clipPath id="terminal-2380684201-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-8">
+<clipPath id="terminal-2380684201-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-9">
+<clipPath id="terminal-2380684201-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-10">
+<clipPath id="terminal-2380684201-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-11">
+<clipPath id="terminal-2380684201-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-12">
+<clipPath id="terminal-2380684201-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-13">
+<clipPath id="terminal-2380684201-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-14">
+<clipPath id="terminal-2380684201-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-15">
+<clipPath id="terminal-2380684201-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-16">
+<clipPath id="terminal-2380684201-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-17">
+<clipPath id="terminal-2380684201-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-18">
+<clipPath id="terminal-2380684201-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-19">
+<clipPath id="terminal-2380684201-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-20">
+<clipPath id="terminal-2380684201-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-21">
+<clipPath id="terminal-2380684201-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-22">
+<clipPath id="terminal-2380684201-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-23">
+<clipPath id="terminal-2380684201-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-24">
+<clipPath id="terminal-2380684201-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-25">
+<clipPath id="terminal-2380684201-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-26">
+<clipPath id="terminal-2380684201-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-27">
+<clipPath id="terminal-2380684201-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-28">
+<clipPath id="terminal-2380684201-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-29">
+<clipPath id="terminal-2380684201-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-30">
+<clipPath id="terminal-2380684201-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-31">
+<clipPath id="terminal-2380684201-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-32">
+<clipPath id="terminal-2380684201-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-33">
+<clipPath id="terminal-2380684201-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-34">
+<clipPath id="terminal-2380684201-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-35">
+<clipPath id="terminal-2380684201-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-36">
+<clipPath id="terminal-2380684201-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-37">
+<clipPath id="terminal-2380684201-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-38">
+<clipPath id="terminal-2380684201-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-39">
+<clipPath id="terminal-2380684201-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-40">
+<clipPath id="terminal-2380684201-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-41">
+<clipPath id="terminal-2380684201-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-42">
+<clipPath id="terminal-2380684201-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-43">
+<clipPath id="terminal-2380684201-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-44">
+<clipPath id="terminal-2380684201-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-45">
+<clipPath id="terminal-2380684201-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1533840119-line-46">
-    <rect x="0" y="1123.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-1533840119-line-47">
-    <rect x="0" y="1148.3" 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="1243.6" rx="8"/><text class="terminal-1533840119-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1194.8" rx="8"/><text class="terminal-2380684201-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</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-1533840119-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2380684201-clip-terminal)">
     
-    <g class="terminal-1533840119-matrix">
-    <text class="terminal-1533840119-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1533840119-line-0)">
-</text><text class="terminal-1533840119-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-1)">Usage:&#160;</text><text class="terminal-1533840119-r1" x="97.6" y="44.4" textLength="463.6" clip-path="url(#terminal-1533840119-line-1)">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-1533840119-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-1)">
-</text><text class="terminal-1533840119-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-2)">
-</text><text class="terminal-1533840119-r2" x="12.2" y="93.2" textLength="1061.4" clip-path="url(#terminal-1533840119-line-3)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="terminal-1533840119-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-3)">
-</text><text class="terminal-1533840119-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-4)">
-</text><text class="terminal-1533840119-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1533840119-line-5)">╭─</text><text class="terminal-1533840119-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1533840119-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1533840119-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-153384 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-6)">│</text><text class="terminal-1533840119-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-6)">-</text><text class="terminal-1533840119-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-6)">-python</text><text class="terminal-1533840119-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-153 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-7)">│</text><text class="terminal-1533840119-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-1533840119-line-7)">[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-1533840119-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-8)">│</text><text class="terminal-1533840119-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-8)">-</text><text class="terminal-1533840119-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-1533840119-line-8)">-backend</text><text class="terminal-1533840119-r6" x="305" y="215.2" textLength="24.4" clip-path="url(#terminal-15 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-9)">│</text><text class="terminal-1533840119-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-9)">-</text><text class="terminal-1533840119-r5" x="36.6" y="239.6" textLength="109.8" clip-path="url(#terminal-1533840119-line-9)">-postgres</text><text class="terminal-1533840119-r5" x="146.4" y="239.6" textLength="97.6" clip-path="url(#termina [...]
-</text><text class="terminal-1533840119-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1533840119-line-10)">│</text><text class="terminal-1533840119-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1533840119-line-10)">-</text><text class="terminal-1533840119-r5" x="36.6" y="264" textLength="73.2" clip-path="url(#terminal-1533840119-line-10)">-mysql</text><text class="terminal-1533840119-r5" x="109.8" y="264" textLength="97.6" clip-path="url(#terminal-1533840 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-11)">│</text><text class="terminal-1533840119-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-11)">-</text><text class="terminal-1533840119-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1533840119-line-11)">-mssql</text><text class="terminal-1533840119-r5" x="109.8" y="288.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1533840119-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-12)">│</text><text class="terminal-1533840119-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-12)">-</text><text class="terminal-1533840119-r5" x="36.6" y="312.8" textLength="146.4" clip-path="url(#terminal-1533840119-line-12)">-integration</text><text class="terminal-1533840119-r2" x="353.8" y="312.8" textLength="1085.8" clip-path="url( [...]
-</text><text class="terminal-1533840119-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-13)">│</text><text class="terminal-1533840119-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#terminal-1533840119-line-13)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-1533840119-r4" x="1 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-14)">│</text><text class="terminal-1533840119-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#terminal-1533840119-line-14)">all)&#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-1533840119-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1533840119-line-15)">│</text><text class="terminal-1533840119-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1533840119-line-15)">-</text><text class="terminal-1533840119-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-1533840119-line-15)">-forward</text><text class="terminal-1533840119-r5" x="134.2" y="386" textLength="146.4" clip-path="url(#terminal-1533 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-16)">│</text><text class="terminal-1533840119-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-16)">-</text><text class="terminal-1533840119-r5" x="36.6" y="410.4" textLength="36.6" clip-path="url(#terminal-1533840119-line-16)">-db</text><text class="terminal-1533840119-r5" x="73.2" y="410.4" textLength="73.2" clip-path="url(#terminal-153 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1533840119-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1533840119-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-17)">
-</text><text class="terminal-1533840119-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-1533840119-line-18)">╭─</text><text class="terminal-1533840119-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-1533840119-line-18)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1533840119-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-1533840119-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-19)">│</text><text class="terminal-1533840119-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-19)">-</text><text class="terminal-1533840119-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-1533840119-line-19)">-use</text><text class="terminal-1533840119-r5" x="85.4" y="483.6" textLength="195.2" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1533840119-line-20)">│</text><text class="terminal-1533840119-r2" x="390.4" y="508" textLength="1049.2" clip-path="url(#terminal-1533840119-line-20)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-1533840119-r4" x="1451.8" y="508" textLength="12.2" clip-path [...]
-</text><text class="terminal-1533840119-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-21)">│</text><text class="terminal-1533840119-r2" x="390.4" y="532.4" textLength="573.4" clip-path="url(#terminal-1533840119-line-21)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1533840119-r5" x="963.8" y="532.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-21)">-</text><text class="terminal-153 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-22)">│</text><text class="terminal-1533840119-r7" x="390.4" y="556.8" textLength="1049.2" clip-path="url(#terminal-1533840119-line-22)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1533840119-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-23)">│</text><text class="terminal-1533840119-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-23)">-</text><text class="terminal-1533840119-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-1533840119-line-23)">-airflow</text><text class="terminal-1533840119-r5" x="134.2" y="581.2" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1533840119-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-24)">│</text><text class="terminal-1533840119-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-24)">-</text><text class="terminal-1533840119-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-1533840119-line-24)">-use</text><text class="terminal-1533840119-r5" x="85.4" y="605.6" textLength="231.8" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1533840119-line-25)">│</text><text class="terminal-1533840119-r2" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-1533840119-line-25)">entering&#160;breeze.&#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;&#16 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-26)">│</text><text class="terminal-1533840119-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-26)">-</text><text class="terminal-1533840119-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1533840119-line-26)">-package</text><text class="terminal-1533840119-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1533840119-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-27)">│</text><text class="terminal-1533840119-r4" x="390.4" y="678.8" textLength="658.8" clip-path="url(#terminal-1533840119-line-27)">[default:&#160;wheel]&#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-1533840119-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-28)">│</text><text class="terminal-1533840119-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-28)">-</text><text class="terminal-1533840119-r5" x="36.6" y="703.2" textLength="73.2" clip-path="url(#terminal-1533840119-line-28)">-force</text><text class="terminal-1533840119-r5" x="109.8" y="703.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1533840119-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-29)">│</text><text class="terminal-1533840119-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-29)">-</text><text class="terminal-1533840119-r5" x="36.6" y="727.6" textLength="73.2" clip-path="url(#terminal-1533840119-line-29)">-mount</text><text class="terminal-1533840119-r5" x="109.8" y="727.6" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1533840119-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1533840119-line-30)">│</text><text class="terminal-1533840119-r2" x="390.4" y="752" textLength="1049.2" clip-path="url(#terminal-1533840119-line-30)">selected).&#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-1533840119-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-31)">│</text><text class="terminal-1533840119-r7" x="390.4" y="776.4" textLength="1049.2" clip-path="url(#terminal-1533840119-line-31)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-1533840119-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-32)">│</text><text class="terminal-1533840119-r4" x="390.4" y="800.8" textLength="1049.2" clip-path="url(#terminal-1533840119-line-32)">[default:&#160;selected]&#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-1533840119-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-33)">│</text><text class="terminal-1533840119-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-33)">-</text><text class="terminal-1533840119-r5" x="36.6" y="825.2" textLength="85.4" clip-path="url(#terminal-1533840119-line-33)">-debian</text><text class="terminal-1533840119-r5" x="122" y="825.2" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-1533840119-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-34)">│</text><text class="terminal-1533840119-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-34)">-</text><text class="terminal-1533840119-r5" x="36.6" y="849.6" textLength="73.2" clip-path="url(#terminal-1533840119-line-34)">-image</text><text class="terminal-1533840119-r5" x="109.8" y="849.6" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1533840119-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1533840119-line-35)">│</text><text class="terminal-1533840119-r2" x="390.4" y="874" textLength="1049.2" clip-path="url(#terminal-1533840119-line-35)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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;&#16 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-36)">│</text><text class="terminal-1533840119-r7" x="390.4" y="898.4" textLength="1049.2" clip-path="url(#terminal-1533840119-line-36)">(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;&#1 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-1533840119-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1533840119-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-37)">
-</text><text class="terminal-1533840119-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-1533840119-line-38)">╭─</text><text class="terminal-1533840119-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-1533840119-line-38)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1533840119-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#terminal-153 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-39)">│</text><text class="terminal-1533840119-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-39)">-</text><text class="terminal-1533840119-r5" x="36.6" y="971.6" textLength="97.6" clip-path="url(#terminal-1533840119-line-39)">-verbose</text><text class="terminal-1533840119-r6" x="427" y="971.6" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-1533840119-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1533840119-line-40)">│</text><text class="terminal-1533840119-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1533840119-line-40)">-</text><text class="terminal-1533840119-r5" x="36.6" y="996" textLength="48.8" clip-path="url(#terminal-1533840119-line-40)">-dry</text><text class="terminal-1533840119-r5" x="85.4" y="996" textLength="48.8" clip-path="url(#terminal-1533840119 [...]
-</text><text class="terminal-1533840119-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-41)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-41)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-41)">-github</text><text class="terminal-1533840119-r5" x="122" y="1020.4" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1533840119-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-42)">│</text><text class="terminal-1533840119-r4" x="475.8" y="1044.8" textLength="585.6" clip-path="url(#terminal-1533840119-line-42)">[default:&#160;apache/airflow]&#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-1533840119-r4" x="1451.8" y="1044.8" te [...]
-</text><text class="terminal-1533840119-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-43)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-43)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-1533840119-line-43)">-airflow</text><text class="terminal-1533840119-r5" x="134.2" y="1069.2" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-1533840119-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-44)">│</text><text class="terminal-1533840119-r2" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#terminal-1533840119-line-44)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-1533840119-r4" x="1451.8" y="1093.6" textLength="12.2" clip-pat [...]
-</text><text class="terminal-1533840119-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1533840119-line-45)">│</text><text class="terminal-1533840119-r7" x="475.8" y="1118" textLength="963.8" clip-path="url(#terminal-1533840119-line-45)">(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-1533840119-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-46)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-46)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-46)">-answer</text><text class="terminal-1533840119-r6" x="427" y="1142.4" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-1533840119-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-47)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-47)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1166.8" textLength="61" clip-path="url(#terminal-1533840119-line-47)">-help</text><text class="terminal-1533840119-r6" x="427" y="1166.8" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1533840119-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-1533840119-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1533840119-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-48)">
+    <g class="terminal-2380684201-matrix">
+    <text class="terminal-2380684201-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2380684201-line-0)">
+</text><text class="terminal-2380684201-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2380684201-line-1)">Usage:&#160;</text><text class="terminal-2380684201-r1" x="97.6" y="44.4" textLength="463.6" clip-path="url(#terminal-2380684201-line-1)">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-2380684201-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-1)">
+</text><text class="terminal-2380684201-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-2)">
+</text><text class="terminal-2380684201-r2" x="12.2" y="93.2" textLength="1061.4" clip-path="url(#terminal-2380684201-line-3)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="terminal-2380684201-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-3)">
+</text><text class="terminal-2380684201-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-4)">
+</text><text class="terminal-2380684201-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2380684201-line-5)">╭─</text><text class="terminal-2380684201-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2380684201-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2380684201-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-238068 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-6)">│</text><text class="terminal-2380684201-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-6)">-</text><text class="terminal-2380684201-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2380684201-line-6)">-python</text><text class="terminal-2380684201-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-238 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-7)">│</text><text class="terminal-2380684201-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-2380684201-line-7)">[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-2380684201-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-8)">│</text><text class="terminal-2380684201-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-8)">-</text><text class="terminal-2380684201-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-2380684201-line-8)">-backend</text><text class="terminal-2380684201-r6" x="305" y="215.2" textLength="24.4" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-9)">│</text><text class="terminal-2380684201-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-9)">-</text><text class="terminal-2380684201-r5" x="36.6" y="239.6" textLength="109.8" clip-path="url(#terminal-2380684201-line-9)">-postgres</text><text class="terminal-2380684201-r5" x="146.4" y="239.6" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-2380684201-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2380684201-line-10)">│</text><text class="terminal-2380684201-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2380684201-line-10)">-</text><text class="terminal-2380684201-r5" x="36.6" y="264" textLength="73.2" clip-path="url(#terminal-2380684201-line-10)">-mysql</text><text class="terminal-2380684201-r5" x="109.8" y="264" textLength="97.6" clip-path="url(#terminal-2380684 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-11)">│</text><text class="terminal-2380684201-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-11)">-</text><text class="terminal-2380684201-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-2380684201-line-11)">-mssql</text><text class="terminal-2380684201-r5" x="109.8" y="288.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2380684201-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-12)">│</text><text class="terminal-2380684201-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-12)">-</text><text class="terminal-2380684201-r5" x="36.6" y="312.8" textLength="146.4" clip-path="url(#terminal-2380684201-line-12)">-integration</text><text class="terminal-2380684201-r2" x="353.8" y="312.8" textLength="1085.8" clip-path="url( [...]
+</text><text class="terminal-2380684201-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-13)">│</text><text class="terminal-2380684201-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#terminal-2380684201-line-13)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2380684201-r4" x="1 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-14)">│</text><text class="terminal-2380684201-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#terminal-2380684201-line-14)">all)&#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-2380684201-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2380684201-line-15)">│</text><text class="terminal-2380684201-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2380684201-line-15)">-</text><text class="terminal-2380684201-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-2380684201-line-15)">-forward</text><text class="terminal-2380684201-r5" x="134.2" y="386" textLength="146.4" clip-path="url(#terminal-2380 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-16)">│</text><text class="terminal-2380684201-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-16)">-</text><text class="terminal-2380684201-r5" x="36.6" y="410.4" textLength="36.6" clip-path="url(#terminal-2380684201-line-16)">-db</text><text class="terminal-2380684201-r5" x="73.2" y="410.4" textLength="73.2" clip-path="url(#terminal-238 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-2380684201-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2380684201-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-17)">
+</text><text class="terminal-2380684201-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-2380684201-line-18)">╭─</text><text class="terminal-2380684201-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-2380684201-line-18)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2380684201-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-2380684201-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-19)">│</text><text class="terminal-2380684201-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-19)">-</text><text class="terminal-2380684201-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-2380684201-line-19)">-use</text><text class="terminal-2380684201-r5" x="85.4" y="483.6" textLength="195.2" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2380684201-line-20)">│</text><text class="terminal-2380684201-r2" x="390.4" y="508" textLength="1049.2" clip-path="url(#terminal-2380684201-line-20)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-2380684201-r4" x="1451.8" y="508" textLength="12.2" clip-path [...]
+</text><text class="terminal-2380684201-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-21)">│</text><text class="terminal-2380684201-r2" x="390.4" y="532.4" textLength="573.4" clip-path="url(#terminal-2380684201-line-21)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2380684201-r5" x="963.8" y="532.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-21)">-</text><text class="terminal-238 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-22)">│</text><text class="terminal-2380684201-r7" x="390.4" y="556.8" textLength="1049.2" clip-path="url(#terminal-2380684201-line-22)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2380684201-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-23)">│</text><text class="terminal-2380684201-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-23)">-</text><text class="terminal-2380684201-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-2380684201-line-23)">-airflow</text><text class="terminal-2380684201-r5" x="134.2" y="581.2" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2380684201-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-24)">│</text><text class="terminal-2380684201-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-24)">-</text><text class="terminal-2380684201-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-2380684201-line-24)">-use</text><text class="terminal-2380684201-r5" x="85.4" y="605.6" textLength="231.8" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2380684201-line-25)">│</text><text class="terminal-2380684201-r2" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-2380684201-line-25)">entering&#160;breeze.&#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;&#16 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-26)">│</text><text class="terminal-2380684201-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-26)">-</text><text class="terminal-2380684201-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2380684201-line-26)">-package</text><text class="terminal-2380684201-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2380684201-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-27)">│</text><text class="terminal-2380684201-r4" x="390.4" y="678.8" textLength="658.8" clip-path="url(#terminal-2380684201-line-27)">[default:&#160;wheel]&#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-2380684201-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-28)">│</text><text class="terminal-2380684201-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-28)">-</text><text class="terminal-2380684201-r5" x="36.6" y="703.2" textLength="73.2" clip-path="url(#terminal-2380684201-line-28)">-force</text><text class="terminal-2380684201-r5" x="109.8" y="703.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2380684201-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-29)">│</text><text class="terminal-2380684201-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-29)">-</text><text class="terminal-2380684201-r5" x="36.6" y="727.6" textLength="73.2" clip-path="url(#terminal-2380684201-line-29)">-image</text><text class="terminal-2380684201-r5" x="109.8" y="727.6" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2380684201-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2380684201-line-30)">│</text><text class="terminal-2380684201-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-2380684201-line-30)">-</text><text class="terminal-2380684201-r5" x="36.6" y="752" textLength="73.2" clip-path="url(#terminal-2380684201-line-30)">-mount</text><text class="terminal-2380684201-r5" x="109.8" y="752" textLength="97.6" clip-path="url(#terminal-2380684 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-31)">│</text><text class="terminal-2380684201-r2" x="390.4" y="776.4" textLength="1049.2" clip-path="url(#terminal-2380684201-line-31)">selected).&#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-2380684201-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-32)">│</text><text class="terminal-2380684201-r7" x="390.4" y="800.8" textLength="1049.2" clip-path="url(#terminal-2380684201-line-32)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-2380684201-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-33)">│</text><text class="terminal-2380684201-r4" x="390.4" y="825.2" textLength="1049.2" clip-path="url(#terminal-2380684201-line-33)">[default:&#160;selected]&#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-2380684201-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-34)">│</text><text class="terminal-2380684201-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-34)">-</text><text class="terminal-2380684201-r5" x="36.6" y="849.6" textLength="85.4" clip-path="url(#terminal-2380684201-line-34)">-debian</text><text class="terminal-2380684201-r5" x="122" y="849.6" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-2380684201-r4" x="0" y="874" textLength="1464" clip-path="url(#terminal-2380684201-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2380684201-r2" x="1464" y="874" textLength="12.2" clip-path="url(#terminal-2380684201-line-35)">
+</text><text class="terminal-2380684201-r4" x="0" y="898.4" textLength="24.4" clip-path="url(#terminal-2380684201-line-36)">╭─</text><text class="terminal-2380684201-r4" x="24.4" y="898.4" textLength="1415.2" clip-path="url(#terminal-2380684201-line-36)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2380684201-r4" x="1439.6" y="898.4" textLength="24.4" clip-path="url(#terminal-238 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-37)">│</text><text class="terminal-2380684201-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-37)">-</text><text class="terminal-2380684201-r5" x="36.6" y="922.8" textLength="97.6" clip-path="url(#terminal-2380684201-line-37)">-verbose</text><text class="terminal-2380684201-r6" x="427" y="922.8" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-2380684201-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-38)">│</text><text class="terminal-2380684201-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-38)">-</text><text class="terminal-2380684201-r5" x="36.6" y="947.2" textLength="48.8" clip-path="url(#terminal-2380684201-line-38)">-dry</text><text class="terminal-2380684201-r5" x="85.4" y="947.2" textLength="48.8" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-39)">│</text><text class="terminal-2380684201-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-39)">-</text><text class="terminal-2380684201-r5" x="36.6" y="971.6" textLength="85.4" clip-path="url(#terminal-2380684201-line-39)">-github</text><text class="terminal-2380684201-r5" x="122" y="971.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2380684201-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2380684201-line-40)">│</text><text class="terminal-2380684201-r4" x="475.8" y="996" textLength="585.6" clip-path="url(#terminal-2380684201-line-40)">[default:&#160;apache/airflow]&#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-2380684201-r4" x="1451.8" y="996" textLength= [...]
+</text><text class="terminal-2380684201-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-41)">│</text><text class="terminal-2380684201-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-41)">-</text><text class="terminal-2380684201-r5" x="36.6" y="1020.4" textLength="97.6" clip-path="url(#terminal-2380684201-line-41)">-airflow</text><text class="terminal-2380684201-r5" x="134.2" y="1020.4" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-2380684201-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-42)">│</text><text class="terminal-2380684201-r2" x="475.8" y="1044.8" textLength="963.8" clip-path="url(#terminal-2380684201-line-42)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-2380684201-r4" x="1451.8" y="1044.8" textLength="12.2" clip-pat [...]
+</text><text class="terminal-2380684201-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-43)">│</text><text class="terminal-2380684201-r7" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#terminal-2380684201-line-43)">(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;&# [...]
+</text><text class="terminal-2380684201-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-44)">│</text><text class="terminal-2380684201-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-44)">-</text><text class="terminal-2380684201-r5" x="36.6" y="1093.6" textLength="85.4" clip-path="url(#terminal-2380684201-line-44)">-answer</text><text class="terminal-2380684201-r6" x="427" y="1093.6" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-2380684201-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2380684201-line-45)">│</text><text class="terminal-2380684201-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-2380684201-line-45)">-</text><text class="terminal-2380684201-r5" x="36.6" y="1118" textLength="61" clip-path="url(#terminal-2380684201-line-45)">-help</text><text class="terminal-2380684201-r6" x="427" y="1118" textLength="24.4" clip-path="url(#terminal-23806842 [...]
+</text><text class="terminal-2380684201-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-2380684201-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2380684201-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-46)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-start-airflow.svg b/images/breeze/output-start-airflow.svg
index 3e21e1f5e9..d7cf283cd2 100644
--- a/images/breeze/output-start-airflow.svg
+++ b/images/breeze/output-start-airflow.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1294.3999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1245.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,245 +19,237 @@
         font-weight: 700;
     }
 
-    .terminal-2392640782-matrix {
+    .terminal-3710885312-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2392640782-title {
+    .terminal-3710885312-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2392640782-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2392640782-r2 { fill: #c5c8c6 }
-.terminal-2392640782-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2392640782-r4 { fill: #868887 }
-.terminal-2392640782-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2392640782-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2392640782-r7 { fill: #8d7b39 }
+    .terminal-3710885312-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3710885312-r2 { fill: #c5c8c6 }
+.terminal-3710885312-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3710885312-r4 { fill: #868887 }
+.terminal-3710885312-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3710885312-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3710885312-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2392640782-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1243.3999999999999" />
+    <clipPath id="terminal-3710885312-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1194.6" />
     </clipPath>
-    <clipPath id="terminal-2392640782-line-0">
+    <clipPath id="terminal-3710885312-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-1">
+<clipPath id="terminal-3710885312-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-2">
+<clipPath id="terminal-3710885312-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-3">
+<clipPath id="terminal-3710885312-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-4">
+<clipPath id="terminal-3710885312-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-5">
+<clipPath id="terminal-3710885312-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-6">
+<clipPath id="terminal-3710885312-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-7">
+<clipPath id="terminal-3710885312-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-8">
+<clipPath id="terminal-3710885312-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-9">
+<clipPath id="terminal-3710885312-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-10">
+<clipPath id="terminal-3710885312-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-11">
+<clipPath id="terminal-3710885312-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-12">
+<clipPath id="terminal-3710885312-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-13">
+<clipPath id="terminal-3710885312-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-14">
+<clipPath id="terminal-3710885312-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-15">
+<clipPath id="terminal-3710885312-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-16">
+<clipPath id="terminal-3710885312-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-17">
+<clipPath id="terminal-3710885312-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-18">
+<clipPath id="terminal-3710885312-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-19">
+<clipPath id="terminal-3710885312-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-20">
+<clipPath id="terminal-3710885312-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-21">
+<clipPath id="terminal-3710885312-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-22">
+<clipPath id="terminal-3710885312-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-23">
+<clipPath id="terminal-3710885312-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-24">
+<clipPath id="terminal-3710885312-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-25">
+<clipPath id="terminal-3710885312-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-26">
+<clipPath id="terminal-3710885312-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-27">
+<clipPath id="terminal-3710885312-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-28">
+<clipPath id="terminal-3710885312-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-29">
+<clipPath id="terminal-3710885312-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-30">
+<clipPath id="terminal-3710885312-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-31">
+<clipPath id="terminal-3710885312-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-32">
+<clipPath id="terminal-3710885312-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-33">
+<clipPath id="terminal-3710885312-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-34">
+<clipPath id="terminal-3710885312-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-35">
+<clipPath id="terminal-3710885312-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-36">
+<clipPath id="terminal-3710885312-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-37">
+<clipPath id="terminal-3710885312-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-38">
+<clipPath id="terminal-3710885312-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-39">
+<clipPath id="terminal-3710885312-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-40">
+<clipPath id="terminal-3710885312-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-41">
+<clipPath id="terminal-3710885312-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-42">
+<clipPath id="terminal-3710885312-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-43">
+<clipPath id="terminal-3710885312-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-44">
+<clipPath id="terminal-3710885312-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-45">
+<clipPath id="terminal-3710885312-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-46">
+<clipPath id="terminal-3710885312-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-47">
+<clipPath id="terminal-3710885312-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2392640782-line-48">
-    <rect x="0" y="1172.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2392640782-line-49">
-    <rect x="0" y="1197.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="1292.4" rx="8"/><text class="terminal-2392640782-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1243.6" rx="8"/><text class="terminal-3710885312-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</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-2392640782-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3710885312-clip-terminal)">
     
-    <g class="terminal-2392640782-matrix">
-    <text class="terminal-2392640782-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2392640782-line-0)">
-</text><text class="terminal-2392640782-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2392640782-line-1)">Usage:&#160;</text><text class="terminal-2392640782-r1" x="97.6" y="44.4" textLength="561.2" clip-path="url(#terminal-2392640782-line-1)">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-2392640782-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-1)">
-</text><text class="terminal-2392640782-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-2)">
-</text><text class="terminal-2392640782-r2" x="12.2" y="93.2" textLength="1000.4" clip-path="url(#terminal-2392640782-line-3)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.</text><text class="terminal-2392640782-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-3)">
-</text><text class="terminal-2392640782-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-4)">
-</text><text class="terminal-2392640782-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2392640782-line-5)">╭─</text><text class="terminal-2392640782-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2392640782-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2392640782-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-239264 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-6)">│</text><text class="terminal-2392640782-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-6)">-</text><text class="terminal-2392640782-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2392640782-line-6)">-python</text><text class="terminal-2392640782-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#terminal-239 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-7)">│</text><text class="terminal-2392640782-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#terminal-2392640782-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-2392640782-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-8)">│</text><text class="terminal-2392640782-r4" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-2392640782-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-2392640782-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-9)">│</text><text class="terminal-2392640782-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-9)">-</text><text class="terminal-2392640782-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-2392640782-line-9)">-load</text><text class="terminal-2392640782-r5" x="97.6" y="239.6" textLength="158.6" clip-path="url(#terminal-23926 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2392640782-line-10)">│</text><text class="terminal-2392640782-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2392640782-line-10)">-</text><text class="terminal-2392640782-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-2392640782-line-10)">-load</text><text class="terminal-2392640782-r5" x="97.6" y="264" textLength="244" clip-path="url(#terminal-2392640782-l [...]
-</text><text class="terminal-2392640782-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-11)">│</text><text class="terminal-2392640782-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-11)">-</text><text class="terminal-2392640782-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-2392640782-line-11)">-backend</text><text class="terminal-2392640782-r6" x="366" y="288.4" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-2392640782-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-12)">│</text><text class="terminal-2392640782-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-12)">-</text><text class="terminal-2392640782-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-2392640782-line-12)">-postgres</text><text class="terminal-2392640782-r5" x="146.4" y="312.8" textLength="97.6" clip-path="url(#term [...]
-</text><text class="terminal-2392640782-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-13)">│</text><text class="terminal-2392640782-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-13)">-</text><text class="terminal-2392640782-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-2392640782-line-13)">-mysql</text><text class="terminal-2392640782-r5" x="109.8" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2392640782-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-14)">│</text><text class="terminal-2392640782-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-14)">-</text><text class="terminal-2392640782-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-2392640782-line-14)">-mssql</text><text class="terminal-2392640782-r5" x="109.8" y="361.6" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2392640782-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2392640782-line-15)">│</text><text class="terminal-2392640782-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2392640782-line-15)">-</text><text class="terminal-2392640782-r5" x="36.6" y="386" textLength="146.4" clip-path="url(#terminal-2392640782-line-15)">-integration</text><text class="terminal-2392640782-r2" x="414.8" y="386" textLength="1024.8" clip-path="url(#termina [...]
-</text><text class="terminal-2392640782-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-16)">│</text><text class="terminal-2392640782-r7" x="414.8" y="410.4" textLength="1024.8" clip-path="url(#terminal-2392640782-line-16)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino</text><text class="terminal-2392640782-r4" x="1451.8" y="410.4" textLeng [...]
-</text><text class="terminal-2392640782-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-17)">│</text><text class="terminal-2392640782-r7" x="414.8" y="434.8" textLength="1024.8" clip-path="url(#terminal-2392640782-line-17)">|&#160;all)&#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;&#16 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-18)">│</text><text class="terminal-2392640782-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-18)">-</text><text class="terminal-2392640782-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-2392640782-line-18)">-forward</text><text class="terminal-2392640782-r5" x="134.2" y="459.2" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-2392640782-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-19)">│</text><text class="terminal-2392640782-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-19)">-</text><text class="terminal-2392640782-r5" x="36.6" y="483.6" textLength="36.6" clip-path="url(#terminal-2392640782-line-19)">-db</text><text class="terminal-2392640782-r5" x="73.2" y="483.6" textLength="73.2" clip-path="url(#terminal-239 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-2392640782-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2392640782-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-2392640782-line-20)">
-</text><text class="terminal-2392640782-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-2392640782-line-21)">╭─</text><text class="terminal-2392640782-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-2392640782-line-21)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2392640782-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-2392640782-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-22)">│</text><text class="terminal-2392640782-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-22)">-</text><text class="terminal-2392640782-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-2392640782-line-22)">-use</text><text class="terminal-2392640782-r5" x="85.4" y="556.8" textLength="195.2" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-23)">│</text><text class="terminal-2392640782-r2" x="390.4" y="581.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-23)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-2392640782-r4" x="1451.8" y="581.2" textLength="12.2" cli [...]
-</text><text class="terminal-2392640782-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-24)">│</text><text class="terminal-2392640782-r2" x="390.4" y="605.6" textLength="573.4" clip-path="url(#terminal-2392640782-line-24)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2392640782-r5" x="963.8" y="605.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-24)">-</text><text class="terminal-239 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2392640782-line-25)">│</text><text class="terminal-2392640782-r7" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-2392640782-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2392640782-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-26)">│</text><text class="terminal-2392640782-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-26)">-</text><text class="terminal-2392640782-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2392640782-line-26)">-airflow</text><text class="terminal-2392640782-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2392640782-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-27)">│</text><text class="terminal-2392640782-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-27)">-</text><text class="terminal-2392640782-r5" x="36.6" y="678.8" textLength="48.8" clip-path="url(#terminal-2392640782-line-27)">-use</text><text class="terminal-2392640782-r5" x="85.4" y="678.8" textLength="231.8" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-28)">│</text><text class="terminal-2392640782-r2" x="390.4" y="703.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-28)">entering&#160;breeze.&#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-2392640782-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-29)">│</text><text class="terminal-2392640782-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-29)">-</text><text class="terminal-2392640782-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-2392640782-line-29)">-package</text><text class="terminal-2392640782-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2392640782-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2392640782-line-30)">│</text><text class="terminal-2392640782-r4" x="390.4" y="752" textLength="658.8" clip-path="url(#terminal-2392640782-line-30)">[default:&#160;wheel]&#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-2392640782-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-31)">│</text><text class="terminal-2392640782-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-31)">-</text><text class="terminal-2392640782-r5" x="36.6" y="776.4" textLength="73.2" clip-path="url(#terminal-2392640782-line-31)">-force</text><text class="terminal-2392640782-r5" x="109.8" y="776.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2392640782-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-32)">│</text><text class="terminal-2392640782-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-32)">-</text><text class="terminal-2392640782-r5" x="36.6" y="800.8" textLength="73.2" clip-path="url(#terminal-2392640782-line-32)">-mount</text><text class="terminal-2392640782-r5" x="109.8" y="800.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2392640782-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-33)">│</text><text class="terminal-2392640782-r2" x="390.4" y="825.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-33)">selected).&#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-2392640782-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-34)">│</text><text class="terminal-2392640782-r7" x="390.4" y="849.6" textLength="1049.2" clip-path="url(#terminal-2392640782-line-34)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-2392640782-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2392640782-line-35)">│</text><text class="terminal-2392640782-r4" x="390.4" y="874" textLength="1049.2" clip-path="url(#terminal-2392640782-line-35)">[default:&#160;selected]&#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-2392640782-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-36)">│</text><text class="terminal-2392640782-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-36)">-</text><text class="terminal-2392640782-r5" x="36.6" y="898.4" textLength="73.2" clip-path="url(#terminal-2392640782-line-36)">-image</text><text class="terminal-2392640782-r5" x="109.8" y="898.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2392640782-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-37)">│</text><text class="terminal-2392640782-r2" x="390.4" y="922.8" textLength="1049.2" clip-path="url(#terminal-2392640782-line-37)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2392640782-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-38)">│</text><text class="terminal-2392640782-r7" x="390.4" y="947.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-38)">(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;&#1 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="971.6" textLength="1464" clip-path="url(#terminal-2392640782-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2392640782-r2" x="1464" y="971.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-39)">
-</text><text class="terminal-2392640782-r4" x="0" y="996" textLength="24.4" clip-path="url(#terminal-2392640782-line-40)">╭─</text><text class="terminal-2392640782-r4" x="24.4" y="996" textLength="1415.2" clip-path="url(#terminal-2392640782-line-40)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2392640782-r4" x="1439.6" y="996" textLength="24.4" clip-path="url(#terminal-239264078 [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-41)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-41)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1020.4" textLength="48.8" clip-path="url(#terminal-2392640782-line-41)">-dry</text><text class="terminal-2392640782-r5" x="85.4" y="1020.4" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-42)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-42)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-2392640782-line-42)">-github</text><text class="terminal-2392640782-r5" x="122" y="1044.8" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-43)">│</text><text class="terminal-2392640782-r4" x="475.8" y="1069.2" textLength="585.6" clip-path="url(#terminal-2392640782-line-43)">[default:&#160;apache/airflow]&#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-2392640782-r4" x="1451.8" y="1069.2" te [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-44)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-44)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#terminal-2392640782-line-44)">-airflow</text><text class="terminal-2392640782-r5" x="134.2" y="1093.6" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2392640782-line-45)">│</text><text class="terminal-2392640782-r2" x="475.8" y="1118" textLength="963.8" clip-path="url(#terminal-2392640782-line-45)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-2392640782-r4" x="1451.8" y="1118" textLength="12.2" clip-path="url [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-46)">│</text><text class="terminal-2392640782-r7" x="475.8" y="1142.4" textLength="963.8" clip-path="url(#terminal-2392640782-line-46)">(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;&# [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-47)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-47)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-2392640782-line-47)">-answer</text><text class="terminal-2392640782-r6" x="427" y="1166.8" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-48)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-48)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-2392640782-line-48)">-verbose</text><text class="terminal-2392640782-r6" x="427" y="1191.2" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-49)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-49)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1215.6" textLength="61" clip-path="url(#terminal-2392640782-line-49)">-help</text><text class="terminal-2392640782-r6" x="427" y="1215.6" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-2392640782-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-2392640782-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2392640782-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-2392640782-line-50)">
+    <g class="terminal-3710885312-matrix">
+    <text class="terminal-3710885312-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3710885312-line-0)">
+</text><text class="terminal-3710885312-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3710885312-line-1)">Usage:&#160;</text><text class="terminal-3710885312-r1" x="97.6" y="44.4" textLength="561.2" clip-path="url(#terminal-3710885312-line-1)">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-3710885312-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-1)">
+</text><text class="terminal-3710885312-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-2)">
+</text><text class="terminal-3710885312-r2" x="12.2" y="93.2" textLength="1000.4" clip-path="url(#terminal-3710885312-line-3)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.</text><text class="terminal-3710885312-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-3)">
+</text><text class="terminal-3710885312-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-4)">
+</text><text class="terminal-3710885312-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3710885312-line-5)">╭─</text><text class="terminal-3710885312-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3710885312-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3710885312-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-371088 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-6)">│</text><text class="terminal-3710885312-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-6)">-</text><text class="terminal-3710885312-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3710885312-line-6)">-python</text><text class="terminal-3710885312-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#terminal-371 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-7)">│</text><text class="terminal-3710885312-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#terminal-3710885312-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-3710885312-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-8)">│</text><text class="terminal-3710885312-r4" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-3710885312-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-3710885312-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-9)">│</text><text class="terminal-3710885312-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-9)">-</text><text class="terminal-3710885312-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-3710885312-line-9)">-load</text><text class="terminal-3710885312-r5" x="97.6" y="239.6" textLength="158.6" clip-path="url(#terminal-37108 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3710885312-line-10)">│</text><text class="terminal-3710885312-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3710885312-line-10)">-</text><text class="terminal-3710885312-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-3710885312-line-10)">-load</text><text class="terminal-3710885312-r5" x="97.6" y="264" textLength="244" clip-path="url(#terminal-3710885312-l [...]
+</text><text class="terminal-3710885312-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-11)">│</text><text class="terminal-3710885312-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-11)">-</text><text class="terminal-3710885312-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-3710885312-line-11)">-backend</text><text class="terminal-3710885312-r6" x="366" y="288.4" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-3710885312-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-12)">│</text><text class="terminal-3710885312-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-12)">-</text><text class="terminal-3710885312-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-3710885312-line-12)">-postgres</text><text class="terminal-3710885312-r5" x="146.4" y="312.8" textLength="97.6" clip-path="url(#term [...]
+</text><text class="terminal-3710885312-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-13)">│</text><text class="terminal-3710885312-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-13)">-</text><text class="terminal-3710885312-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-3710885312-line-13)">-mysql</text><text class="terminal-3710885312-r5" x="109.8" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3710885312-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-14)">│</text><text class="terminal-3710885312-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-14)">-</text><text class="terminal-3710885312-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-3710885312-line-14)">-mssql</text><text class="terminal-3710885312-r5" x="109.8" y="361.6" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3710885312-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3710885312-line-15)">│</text><text class="terminal-3710885312-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3710885312-line-15)">-</text><text class="terminal-3710885312-r5" x="36.6" y="386" textLength="146.4" clip-path="url(#terminal-3710885312-line-15)">-integration</text><text class="terminal-3710885312-r2" x="414.8" y="386" textLength="1024.8" clip-path="url(#termina [...]
+</text><text class="terminal-3710885312-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-16)">│</text><text class="terminal-3710885312-r7" x="414.8" y="410.4" textLength="1024.8" clip-path="url(#terminal-3710885312-line-16)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino</text><text class="terminal-3710885312-r4" x="1451.8" y="410.4" textLeng [...]
+</text><text class="terminal-3710885312-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-17)">│</text><text class="terminal-3710885312-r7" x="414.8" y="434.8" textLength="1024.8" clip-path="url(#terminal-3710885312-line-17)">|&#160;all)&#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;&#16 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-18)">│</text><text class="terminal-3710885312-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-18)">-</text><text class="terminal-3710885312-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-3710885312-line-18)">-forward</text><text class="terminal-3710885312-r5" x="134.2" y="459.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-3710885312-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-19)">│</text><text class="terminal-3710885312-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-19)">-</text><text class="terminal-3710885312-r5" x="36.6" y="483.6" textLength="36.6" clip-path="url(#terminal-3710885312-line-19)">-db</text><text class="terminal-3710885312-r5" x="73.2" y="483.6" textLength="73.2" clip-path="url(#terminal-371 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-3710885312-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3710885312-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-3710885312-line-20)">
+</text><text class="terminal-3710885312-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-3710885312-line-21)">╭─</text><text class="terminal-3710885312-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-3710885312-line-21)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3710885312-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-3710885312-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-22)">│</text><text class="terminal-3710885312-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-22)">-</text><text class="terminal-3710885312-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-3710885312-line-22)">-use</text><text class="terminal-3710885312-r5" x="85.4" y="556.8" textLength="195.2" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-23)">│</text><text class="terminal-3710885312-r2" x="390.4" y="581.2" textLength="1049.2" clip-path="url(#terminal-3710885312-line-23)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-3710885312-r4" x="1451.8" y="581.2" textLength="12.2" cli [...]
+</text><text class="terminal-3710885312-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-24)">│</text><text class="terminal-3710885312-r2" x="390.4" y="605.6" textLength="573.4" clip-path="url(#terminal-3710885312-line-24)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-3710885312-r5" x="963.8" y="605.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-24)">-</text><text class="terminal-371 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3710885312-line-25)">│</text><text class="terminal-3710885312-r7" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-3710885312-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-3710885312-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-26)">│</text><text class="terminal-3710885312-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-26)">-</text><text class="terminal-3710885312-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-3710885312-line-26)">-airflow</text><text class="terminal-3710885312-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3710885312-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-27)">│</text><text class="terminal-3710885312-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-27)">-</text><text class="terminal-3710885312-r5" x="36.6" y="678.8" textLength="48.8" clip-path="url(#terminal-3710885312-line-27)">-use</text><text class="terminal-3710885312-r5" x="85.4" y="678.8" textLength="231.8" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-28)">│</text><text class="terminal-3710885312-r2" x="390.4" y="703.2" textLength="1049.2" clip-path="url(#terminal-3710885312-line-28)">entering&#160;breeze.&#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-3710885312-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-29)">│</text><text class="terminal-3710885312-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-29)">-</text><text class="terminal-3710885312-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3710885312-line-29)">-package</text><text class="terminal-3710885312-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3710885312-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3710885312-line-30)">│</text><text class="terminal-3710885312-r4" x="390.4" y="752" textLength="658.8" clip-path="url(#terminal-3710885312-line-30)">[default:&#160;wheel]&#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-3710885312-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-31)">│</text><text class="terminal-3710885312-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-31)">-</text><text class="terminal-3710885312-r5" x="36.6" y="776.4" textLength="73.2" clip-path="url(#terminal-3710885312-line-31)">-force</text><text class="terminal-3710885312-r5" x="109.8" y="776.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3710885312-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-32)">│</text><text class="terminal-3710885312-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-32)">-</text><text class="terminal-3710885312-r5" x="36.6" y="800.8" textLength="73.2" clip-path="url(#terminal-3710885312-line-32)">-image</text><text class="terminal-3710885312-r5" x="109.8" y="800.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3710885312-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-33)">│</text><text class="terminal-3710885312-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-33)">-</text><text class="terminal-3710885312-r5" x="36.6" y="825.2" textLength="73.2" clip-path="url(#terminal-3710885312-line-33)">-mount</text><text class="terminal-3710885312-r5" x="109.8" y="825.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3710885312-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-34)">│</text><text class="terminal-3710885312-r2" x="390.4" y="849.6" textLength="1049.2" clip-path="url(#terminal-3710885312-line-34)">selected).&#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-3710885312-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3710885312-line-35)">│</text><text class="terminal-3710885312-r7" x="390.4" y="874" textLength="1049.2" clip-path="url(#terminal-3710885312-line-35)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-3710885312-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-36)">│</text><text class="terminal-3710885312-r4" x="390.4" y="898.4" textLength="1049.2" clip-path="url(#terminal-3710885312-line-36)">[default:&#160;selected]&#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-3710885312-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-3710885312-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3710885312-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-37)">
+</text><text class="terminal-3710885312-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-3710885312-line-38)">╭─</text><text class="terminal-3710885312-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-3710885312-line-38)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3710885312-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#terminal-371 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-39)">│</text><text class="terminal-3710885312-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-39)">-</text><text class="terminal-3710885312-r5" x="36.6" y="971.6" textLength="48.8" clip-path="url(#terminal-3710885312-line-39)">-dry</text><text class="terminal-3710885312-r5" x="85.4" y="971.6" textLength="48.8" clip-path="url(#terminal-37 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3710885312-line-40)">│</text><text class="terminal-3710885312-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3710885312-line-40)">-</text><text class="terminal-3710885312-r5" x="36.6" y="996" textLength="85.4" clip-path="url(#terminal-3710885312-line-40)">-github</text><text class="terminal-3710885312-r5" x="122" y="996" textLength="134.2" clip-path="url(#terminal-3710885 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-41)">│</text><text class="terminal-3710885312-r4" x="475.8" y="1020.4" textLength="585.6" clip-path="url(#terminal-3710885312-line-41)">[default:&#160;apache/airflow]&#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-3710885312-r4" x="1451.8" y="1020.4" te [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-42)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-42)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#terminal-3710885312-line-42)">-airflow</text><text class="terminal-3710885312-r5" x="134.2" y="1044.8" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-43)">│</text><text class="terminal-3710885312-r2" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#terminal-3710885312-line-43)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-3710885312-r4" x="1451.8" y="1069.2" textLength="12.2" clip-pat [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-44)">│</text><text class="terminal-3710885312-r7" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#terminal-3710885312-line-44)">(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;&# [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3710885312-line-45)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3710885312-line-45)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-3710885312-line-45)">-answer</text><text class="terminal-3710885312-r6" x="427" y="1118" textLength="24.4" clip-path="url(#terminal-3710 [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-46)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-46)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-3710885312-line-46)">-verbose</text><text class="terminal-3710885312-r6" x="427" y="1142.4" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-47)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-47)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1166.8" textLength="61" clip-path="url(#terminal-3710885312-line-47)">-help</text><text class="terminal-3710885312-r6" x="427" y="1166.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3710885312-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-3710885312-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3710885312-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-48)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-tests.svg b/images/breeze/output-tests.svg
index 0bb6680bef..8bdcd0c29b 100644
--- a/images/breeze/output-tests.svg
+++ b/images/breeze/output-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 879.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 830.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,177 +19,169 @@
         font-weight: 700;
     }
 
-    .terminal-2980146706-matrix {
+    .terminal-3386261188-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2980146706-title {
+    .terminal-3386261188-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2980146706-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2980146706-r2 { fill: #c5c8c6 }
-.terminal-2980146706-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2980146706-r4 { fill: #868887 }
-.terminal-2980146706-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2980146706-r6 { fill: #8d7b39 }
-.terminal-2980146706-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-3386261188-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3386261188-r2 { fill: #c5c8c6 }
+.terminal-3386261188-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3386261188-r4 { fill: #868887 }
+.terminal-3386261188-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3386261188-r6 { fill: #8d7b39 }
+.terminal-3386261188-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-2980146706-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="828.5999999999999" />
+    <clipPath id="terminal-3386261188-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="779.8" />
     </clipPath>
-    <clipPath id="terminal-2980146706-line-0">
+    <clipPath id="terminal-3386261188-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-1">
+<clipPath id="terminal-3386261188-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-2">
+<clipPath id="terminal-3386261188-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-3">
+<clipPath id="terminal-3386261188-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-4">
+<clipPath id="terminal-3386261188-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-5">
+<clipPath id="terminal-3386261188-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-6">
+<clipPath id="terminal-3386261188-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-7">
+<clipPath id="terminal-3386261188-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-8">
+<clipPath id="terminal-3386261188-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-9">
+<clipPath id="terminal-3386261188-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-10">
+<clipPath id="terminal-3386261188-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-11">
+<clipPath id="terminal-3386261188-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-12">
+<clipPath id="terminal-3386261188-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-13">
+<clipPath id="terminal-3386261188-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-14">
+<clipPath id="terminal-3386261188-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-15">
+<clipPath id="terminal-3386261188-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-16">
+<clipPath id="terminal-3386261188-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-17">
+<clipPath id="terminal-3386261188-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-18">
+<clipPath id="terminal-3386261188-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-19">
+<clipPath id="terminal-3386261188-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-20">
+<clipPath id="terminal-3386261188-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-21">
+<clipPath id="terminal-3386261188-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-22">
+<clipPath id="terminal-3386261188-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-23">
+<clipPath id="terminal-3386261188-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-24">
+<clipPath id="terminal-3386261188-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-25">
+<clipPath id="terminal-3386261188-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-26">
+<clipPath id="terminal-3386261188-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-27">
+<clipPath id="terminal-3386261188-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-28">
+<clipPath id="terminal-3386261188-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-29">
+<clipPath id="terminal-3386261188-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-30">
+<clipPath id="terminal-3386261188-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2980146706-line-31">
-    <rect x="0" y="757.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2980146706-line-32">
-    <rect x="0" y="782.3" 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="877.6" rx="8"/><text class="terminal-2980146706-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="828.8" rx="8"/><text class="terminal-3386261188-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</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-2980146706-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3386261188-clip-terminal)">
     
-    <g class="terminal-2980146706-matrix">
-    <text class="terminal-2980146706-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2980146706-line-0)">
-</text><text class="terminal-2980146706-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2980146706-line-1)">Usage:&#160;</text><text class="terminal-2980146706-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-2980146706-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2980146706-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-1)">
-</text><text class="terminal-2980146706-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-2)">
-</text><text class="terminal-2980146706-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-2980146706-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-2980146706-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-3)">
-</text><text class="terminal-2980146706-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-4)">
-</text><text class="terminal-2980146706-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2980146706-line-5)">╭─</text><text class="terminal-2980146706-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2980146706-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2980146706-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
-</text><text class="terminal-2980146706-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-6)">│</text><text class="terminal-2980146706-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-6)">-</text><text class="terminal-2980146706-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-2980146706-line-6)">-integration</text><text class="terminal-2980146706-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
-</text><text class="terminal-2980146706-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-7)">│</text><text class="terminal-2980146706-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-2980146706-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-2980146706-r4" x="1451.8" y=" [...]
-</text><text class="terminal-2980146706-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-8)">│</text><text class="terminal-2980146706-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-8)">-</text><text class="terminal-2980146706-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-2980146706-line-8)">-test</text><text class="terminal-2980146706-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-29801467 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-9)">│</text><text class="terminal-2980146706-r6" x="317.2" y="239.6" textLength="1122.4" clip-path="url(#terminal-2980146706-line-9)">(All&#160;|&#160;Always&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;Helm&#160;|&#160;&#160;</text><text class="terminal-298 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2980146706-line-10)">│</text><text class="terminal-2980146706-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-2980146706-line-10)">Postgres&#160;|&#160;MySQL&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Quarantine)&#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-2980146706-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-11)">│</text><text class="terminal-2980146706-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-11)">-</text><text class="terminal-2980146706-r5" x="36.6" y="288.4" textLength="36.6" clip-path="url(#terminal-2980146706-line-11)">-db</text><text class="terminal-2980146706-r5" x="73.2" y="288.4" textLength="73.2" clip-path="url(#terminal-298 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-12)">│</text><text class="terminal-2980146706-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-12)">-</text><text class="terminal-2980146706-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-2980146706-line-12)">-backend</text><text class="terminal-2980146706-r7" x="268.4" y="312.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-2980146706-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-13)">│</text><text class="terminal-2980146706-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-13)">-</text><text class="terminal-2980146706-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-2980146706-line-13)">-python</text><text class="terminal-2980146706-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2980146706-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-14)">│</text><text class="terminal-2980146706-r4" x="317.2" y="361.6" textLength="732" clip-path="url(#terminal-2980146706-line-14)">[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-2980146706-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2980146706-line-15)">│</text><text class="terminal-2980146706-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2980146706-line-15)">-</text><text class="terminal-2980146706-r5" x="36.6" y="386" textLength="109.8" clip-path="url(#terminal-2980146706-line-15)">-postgres</text><text class="terminal-2980146706-r5" x="146.4" y="386" textLength="97.6" clip-path="url(#terminal-298 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-16)">│</text><text class="terminal-2980146706-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-16)">-</text><text class="terminal-2980146706-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-2980146706-line-16)">-mysql</text><text class="terminal-2980146706-r5" x="109.8" y="410.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2980146706-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-17)">│</text><text class="terminal-2980146706-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-17)">-</text><text class="terminal-2980146706-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-2980146706-line-17)">-mssql</text><text class="terminal-2980146706-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2980146706-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-2980146706-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2980146706-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-18)">
-</text><text class="terminal-2980146706-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-2980146706-line-19)">╭─</text><text class="terminal-2980146706-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-2980146706-line-19)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2980146706-r4" x="1439.6" y="483.6" textLength="24.4" clip-pat [...]
-</text><text class="terminal-2980146706-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2980146706-line-20)">│</text><text class="terminal-2980146706-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2980146706-line-20)">-</text><text class="terminal-2980146706-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-2980146706-line-20)">-limit</text><text class="terminal-2980146706-r5" x="109.8" y="508" textLength="195.2" clip-path="url(#terminal-298014 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-21)">│</text><text class="terminal-2980146706-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-21)">-</text><text class="terminal-2980146706-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-2980146706-line-21)">-image</text><text class="terminal-2980146706-r5" x="109.8" y="532.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2980146706-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-22)">│</text><text class="terminal-2980146706-r2" x="378.2" y="556.8" textLength="1061.4" clip-path="url(#terminal-2980146706-line-22)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2980146706-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-23)">│</text><text class="terminal-2980146706-r6" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#terminal-2980146706-line-23)">(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;&#1 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-24)">│</text><text class="terminal-2980146706-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-24)">-</text><text class="terminal-2980146706-r5" x="36.6" y="605.6" textLength="73.2" clip-path="url(#terminal-2980146706-line-24)">-mount</text><text class="terminal-2980146706-r5" x="109.8" y="605.6" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2980146706-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2980146706-line-25)">│</text><text class="terminal-2980146706-r2" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-2980146706-line-25)">selected).&#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-2980146706-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-26)">│</text><text class="terminal-2980146706-r6" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-2980146706-line-26)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-2980146706-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-27)">│</text><text class="terminal-2980146706-r4" x="378.2" y="678.8" textLength="1061.4" clip-path="url(#terminal-2980146706-line-27)">[default:&#160;selected]&#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-2980146706-r4" x="0" y="703.2" textLength="1464" clip-path="url(#terminal-2980146706-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2980146706-r2" x="1464" y="703.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-28)">
-</text><text class="terminal-2980146706-r4" x="0" y="727.6" textLength="24.4" clip-path="url(#terminal-2980146706-line-29)">╭─</text><text class="terminal-2980146706-r4" x="24.4" y="727.6" textLength="1415.2" clip-path="url(#terminal-2980146706-line-29)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2980146706-r4" x="1439.6" y="727.6" textLength="24.4" clip-path="url(#terminal-298 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2980146706-line-30)">│</text><text class="terminal-2980146706-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-2980146706-line-30)">-</text><text class="terminal-2980146706-r5" x="36.6" y="752" textLength="48.8" clip-path="url(#terminal-2980146706-line-30)">-dry</text><text class="terminal-2980146706-r5" x="85.4" y="752" textLength="48.8" clip-path="url(#terminal-2980146706 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-31)">│</text><text class="terminal-2980146706-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-31)">-</text><text class="terminal-2980146706-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-2980146706-line-31)">-verbose</text><text class="terminal-2980146706-r7" x="158.6" y="776.4" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-2980146706-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-32)">│</text><text class="terminal-2980146706-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-32)">-</text><text class="terminal-2980146706-r5" x="36.6" y="800.8" textLength="61" clip-path="url(#terminal-2980146706-line-32)">-help</text><text class="terminal-2980146706-r7" x="158.6" y="800.8" textLength="24.4" clip-path="url(#terminal-29 [...]
-</text><text class="terminal-2980146706-r4" x="0" y="825.2" textLength="1464" clip-path="url(#terminal-2980146706-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2980146706-r2" x="1464" y="825.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-33)">
+    <g class="terminal-3386261188-matrix">
+    <text class="terminal-3386261188-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3386261188-line-0)">
+</text><text class="terminal-3386261188-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3386261188-line-1)">Usage:&#160;</text><text class="terminal-3386261188-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-3386261188-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3386261188-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-1)">
+</text><text class="terminal-3386261188-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-2)">
+</text><text class="terminal-3386261188-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-3386261188-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-3386261188-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-3)">
+</text><text class="terminal-3386261188-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3386261188-line-4)">
+</text><text class="terminal-3386261188-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3386261188-line-5)">╭─</text><text class="terminal-3386261188-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3386261188-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3386261188-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-3386261188-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-6)">│</text><text class="terminal-3386261188-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-6)">-</text><text class="terminal-3386261188-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-3386261188-line-6)">-integration</text><text class="terminal-3386261188-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
+</text><text class="terminal-3386261188-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-7)">│</text><text class="terminal-3386261188-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-3386261188-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-3386261188-r4" x="1451.8" y=" [...]
+</text><text class="terminal-3386261188-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-8)">│</text><text class="terminal-3386261188-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-8)">-</text><text class="terminal-3386261188-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-3386261188-line-8)">-test</text><text class="terminal-3386261188-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-33862611 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3386261188-line-9)">│</text><text class="terminal-3386261188-r6" x="317.2" y="239.6" textLength="1122.4" clip-path="url(#terminal-3386261188-line-9)">(All&#160;|&#160;Always&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;Helm&#160;|&#160;&#160;</text><text class="terminal-338 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3386261188-line-10)">│</text><text class="terminal-3386261188-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-3386261188-line-10)">Postgres&#160;|&#160;MySQL&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Quarantine)&#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-3386261188-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-11)">│</text><text class="terminal-3386261188-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-11)">-</text><text class="terminal-3386261188-r5" x="36.6" y="288.4" textLength="36.6" clip-path="url(#terminal-3386261188-line-11)">-db</text><text class="terminal-3386261188-r5" x="73.2" y="288.4" textLength="73.2" clip-path="url(#terminal-338 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-12)">│</text><text class="terminal-3386261188-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-12)">-</text><text class="terminal-3386261188-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-3386261188-line-12)">-backend</text><text class="terminal-3386261188-r7" x="268.4" y="312.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3386261188-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-13)">│</text><text class="terminal-3386261188-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-13)">-</text><text class="terminal-3386261188-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-3386261188-line-13)">-python</text><text class="terminal-3386261188-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3386261188-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3386261188-line-14)">│</text><text class="terminal-3386261188-r4" x="317.2" y="361.6" textLength="732" clip-path="url(#terminal-3386261188-line-14)">[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-3386261188-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3386261188-line-15)">│</text><text class="terminal-3386261188-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3386261188-line-15)">-</text><text class="terminal-3386261188-r5" x="36.6" y="386" textLength="109.8" clip-path="url(#terminal-3386261188-line-15)">-postgres</text><text class="terminal-3386261188-r5" x="146.4" y="386" textLength="97.6" clip-path="url(#terminal-338 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-16)">│</text><text class="terminal-3386261188-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-16)">-</text><text class="terminal-3386261188-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-3386261188-line-16)">-mysql</text><text class="terminal-3386261188-r5" x="109.8" y="410.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3386261188-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-17)">│</text><text class="terminal-3386261188-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-17)">-</text><text class="terminal-3386261188-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-3386261188-line-17)">-mssql</text><text class="terminal-3386261188-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3386261188-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-3386261188-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3386261188-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-18)">
+</text><text class="terminal-3386261188-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-3386261188-line-19)">╭─</text><text class="terminal-3386261188-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-3386261188-line-19)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3386261188-r4" x="1439.6" y="483.6" textLength="24.4" clip-pat [...]
+</text><text class="terminal-3386261188-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3386261188-line-20)">│</text><text class="terminal-3386261188-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3386261188-line-20)">-</text><text class="terminal-3386261188-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-3386261188-line-20)">-limit</text><text class="terminal-3386261188-r5" x="109.8" y="508" textLength="195.2" clip-path="url(#terminal-338626 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-21)">│</text><text class="terminal-3386261188-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-21)">-</text><text class="terminal-3386261188-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-3386261188-line-21)">-image</text><text class="terminal-3386261188-r5" x="109.8" y="532.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3386261188-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-22)">│</text><text class="terminal-3386261188-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3386261188-line-22)">-</text><text class="terminal-3386261188-r5" x="36.6" y="556.8" textLength="73.2" clip-path="url(#terminal-3386261188-line-22)">-mount</text><text class="terminal-3386261188-r5" x="109.8" y="556.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3386261188-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-23)">│</text><text class="terminal-3386261188-r2" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#terminal-3386261188-line-23)">selected).&#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-3386261188-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3386261188-line-24)">│</text><text class="terminal-3386261188-r6" x="378.2" y="605.6" textLength="1061.4" clip-path="url(#terminal-3386261188-line-24)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-3386261188-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3386261188-line-25)">│</text><text class="terminal-3386261188-r4" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-3386261188-line-25)">[default:&#160;selected]&#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-3386261188-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-3386261188-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3386261188-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-26)">
+</text><text class="terminal-3386261188-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-3386261188-line-27)">╭─</text><text class="terminal-3386261188-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-3386261188-line-27)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3386261188-r4" x="1439.6" y="678.8" textLength="24.4" clip-path="url(#terminal-338 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-28)">│</text><text class="terminal-3386261188-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-3386261188-line-28)">-</text><text class="terminal-3386261188-r5" x="36.6" y="703.2" textLength="48.8" clip-path="url(#terminal-3386261188-line-28)">-dry</text><text class="terminal-3386261188-r5" x="85.4" y="703.2" textLength="48.8" clip-path="url(#terminal-33 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3386261188-line-29)">│</text><text class="terminal-3386261188-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3386261188-line-29)">-</text><text class="terminal-3386261188-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3386261188-line-29)">-verbose</text><text class="terminal-3386261188-r7" x="158.6" y="727.6" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3386261188-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3386261188-line-30)">│</text><text class="terminal-3386261188-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-3386261188-line-30)">-</text><text class="terminal-3386261188-r5" x="36.6" y="752" textLength="61" clip-path="url(#terminal-3386261188-line-30)">-help</text><text class="terminal-3386261188-r7" x="158.6" y="752" textLength="24.4" clip-path="url(#terminal-3386261188 [...]
+</text><text class="terminal-3386261188-r4" x="0" y="776.4" textLength="1464" clip-path="url(#terminal-3386261188-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3386261188-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#terminal-3386261188-line-31)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-verify-image.svg b/images/breeze/output-verify-image.svg
index e2dfddcbb0..44dc59c17b 100644
--- a/images/breeze/output-verify-image.svg
+++ b/images/breeze/output-verify-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 538.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,121 +19,113 @@
         font-weight: 700;
     }
 
-    .terminal-2021148750-matrix {
+    .terminal-3931836176-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2021148750-title {
+    .terminal-3931836176-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2021148750-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2021148750-r2 { fill: #c5c8c6 }
-.terminal-2021148750-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2021148750-r4 { fill: #868887 }
-.terminal-2021148750-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2021148750-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2021148750-r7 { fill: #8d7b39 }
+    .terminal-3931836176-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3931836176-r2 { fill: #c5c8c6 }
+.terminal-3931836176-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3931836176-r4 { fill: #868887 }
+.terminal-3931836176-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3931836176-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3931836176-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2021148750-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="487.0" />
+    <clipPath id="terminal-3931836176-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="438.2" />
     </clipPath>
-    <clipPath id="terminal-2021148750-line-0">
+    <clipPath id="terminal-3931836176-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-1">
+<clipPath id="terminal-3931836176-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-2">
+<clipPath id="terminal-3931836176-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-3">
+<clipPath id="terminal-3931836176-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-4">
+<clipPath id="terminal-3931836176-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-5">
+<clipPath id="terminal-3931836176-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-6">
+<clipPath id="terminal-3931836176-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-7">
+<clipPath id="terminal-3931836176-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-8">
+<clipPath id="terminal-3931836176-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-9">
+<clipPath id="terminal-3931836176-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-10">
+<clipPath id="terminal-3931836176-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-11">
+<clipPath id="terminal-3931836176-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-12">
+<clipPath id="terminal-3931836176-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-13">
+<clipPath id="terminal-3931836176-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-14">
+<clipPath id="terminal-3931836176-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-15">
+<clipPath id="terminal-3931836176-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-16">
+<clipPath id="terminal-3931836176-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2021148750-line-17">
-    <rect x="0" y="416.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-2021148750-line-18">
-    <rect x="0" y="440.7" 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="536" rx="8"/><text class="terminal-2021148750-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="487.2" rx="8"/><text class="terminal-3931836176-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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-2021148750-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3931836176-clip-terminal)">
     
-    <g class="terminal-2021148750-matrix">
-    <text class="terminal-2021148750-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2021148750-line-0)">
-</text><text class="terminal-2021148750-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2021148750-line-1)">Usage:&#160;</text><text class="terminal-2021148750-r1" x="97.6" y="44.4" textLength="634.4" clip-path="url(#terminal-2021148750-line-1)">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2021148750-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-1)">
-</text><text class="terminal-2021148750-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-2)">
-</text><text class="terminal-2021148750-r2" x="12.2" y="93.2" textLength="195.2" clip-path="url(#terminal-2021148750-line-3)">Verify&#160;CI&#160;image.</text><text class="terminal-2021148750-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-3)">
-</text><text class="terminal-2021148750-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-4)">
-</text><text class="terminal-2021148750-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2021148750-line-5)">╭─</text><text class="terminal-2021148750-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2021148750-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2021148750-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-6)">│</text><text class="terminal-2021148750-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-6)">-</text><text class="terminal-2021148750-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2021148750-line-6)">-image</text><text class="terminal-2021148750-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-2021 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-7)">│</text><text class="terminal-2021148750-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-7)">-</text><text class="terminal-2021148750-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-2021148750-line-7)">-python</text><text class="terminal-2021148750-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-8)">│</text><text class="terminal-2021148750-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-2021148750-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;&#1 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-9)">│</text><text class="terminal-2021148750-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-9)">-</text><text class="terminal-2021148750-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2021148750-line-9)">-image</text><text class="terminal-2021148750-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-20 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2021148750-line-10)">│</text><text class="terminal-2021148750-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-2021148750-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-2021148750-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-11)">│</text><text class="terminal-2021148750-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-2021148750-line-11)">(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-2021148750-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-12)">│</text><text class="terminal-2021148750-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-12)">-</text><text class="terminal-2021148750-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-2021148750-line-12)">-pull</text><text class="terminal-2021148750-r5" x="97.6" y="312.8" textLength="73.2" clip-path="url(#terminal-202 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-2021148750-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2021148750-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-13)">
-</text><text class="terminal-2021148750-r4" x="0" y="361.6" textLength="24.4" clip-path="url(#terminal-2021148750-line-14)">╭─</text><text class="terminal-2021148750-r4" x="24.4" y="361.6" textLength="1415.2" clip-path="url(#terminal-2021148750-line-14)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2021148750-r4" x="1439.6" y="361.6" textLength="24.4" clip-path="url(#terminal-202 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2021148750-line-15)">│</text><text class="terminal-2021148750-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2021148750-line-15)">-</text><text class="terminal-2021148750-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-2021148750-line-15)">-verbose</text><text class="terminal-2021148750-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-20211 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-16)">│</text><text class="terminal-2021148750-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2021148750-line-16)">-</text><text class="terminal-2021148750-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-2021148750-line-16)">-dry</text><text class="terminal-2021148750-r5" x="85.4" y="410.4" textLength="48.8" clip-path="url(#terminal-20 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-17)">│</text><text class="terminal-2021148750-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2021148750-line-17)">-</text><text class="terminal-2021148750-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-2021148750-line-17)">-github</text><text class="terminal-2021148750-r5" x="122" y="434.8" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2021148750-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-18)">│</text><text class="terminal-2021148750-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2021148750-line-18)">-</text><text class="terminal-2021148750-r5" x="36.6" y="459.2" textLength="61" clip-path="url(#terminal-2021148750-line-18)">-help</text><text class="terminal-2021148750-r6" x="280.6" y="459.2" textLength="24.4" clip-path="url(#terminal-20 [...]
-</text><text class="terminal-2021148750-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-2021148750-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2021148750-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-2021148750-line-19)">
+    <g class="terminal-3931836176-matrix">
+    <text class="terminal-3931836176-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3931836176-line-0)">
+</text><text class="terminal-3931836176-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3931836176-line-1)">Usage:&#160;</text><text class="terminal-3931836176-r1" x="97.6" y="44.4" textLength="634.4" clip-path="url(#terminal-3931836176-line-1)">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3931836176-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3931836176-line-1)">
+</text><text class="terminal-3931836176-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3931836176-line-2)">
+</text><text class="terminal-3931836176-r2" x="12.2" y="93.2" textLength="195.2" clip-path="url(#terminal-3931836176-line-3)">Verify&#160;CI&#160;image.</text><text class="terminal-3931836176-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3931836176-line-3)">
+</text><text class="terminal-3931836176-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3931836176-line-4)">
+</text><text class="terminal-3931836176-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3931836176-line-5)">╭─</text><text class="terminal-3931836176-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3931836176-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3931836176-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3931836176-line-6)">│</text><text class="terminal-3931836176-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3931836176-line-6)">-</text><text class="terminal-3931836176-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-3931836176-line-6)">-image</text><text class="terminal-3931836176-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-3931 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3931836176-line-7)">│</text><text class="terminal-3931836176-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3931836176-line-7)">-</text><text class="terminal-3931836176-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-3931836176-line-7)">-python</text><text class="terminal-3931836176-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3931836176-line-8)">│</text><text class="terminal-3931836176-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-3931836176-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;&#1 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3931836176-line-9)">│</text><text class="terminal-3931836176-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3931836176-line-9)">-</text><text class="terminal-3931836176-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-3931836176-line-9)">-image</text><text class="terminal-3931836176-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-39 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3931836176-line-10)">│</text><text class="terminal-3931836176-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3931836176-line-10)">-</text><text class="terminal-3931836176-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-3931836176-line-10)">-pull</text><text class="terminal-3931836176-r5" x="97.6" y="264" textLength="73.2" clip-path="url(#terminal-3931836176- [...]
+</text><text class="terminal-3931836176-r4" x="0" y="288.4" textLength="1464" clip-path="url(#terminal-3931836176-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3931836176-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#terminal-3931836176-line-11)">
+</text><text class="terminal-3931836176-r4" x="0" y="312.8" textLength="24.4" clip-path="url(#terminal-3931836176-line-12)">╭─</text><text class="terminal-3931836176-r4" x="24.4" y="312.8" textLength="1415.2" clip-path="url(#terminal-3931836176-line-12)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3931836176-r4" x="1439.6" y="312.8" textLength="24.4" clip-path="url(#terminal-393 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3931836176-line-13)">│</text><text class="terminal-3931836176-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3931836176-line-13)">-</text><text class="terminal-3931836176-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-3931836176-line-13)">-verbose</text><text class="terminal-3931836176-r6" x="280.6" y="337.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3931836176-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3931836176-line-14)">│</text><text class="terminal-3931836176-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3931836176-line-14)">-</text><text class="terminal-3931836176-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-3931836176-line-14)">-dry</text><text class="terminal-3931836176-r5" x="85.4" y="361.6" textLength="48.8" clip-path="url(#terminal-39 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3931836176-line-15)">│</text><text class="terminal-3931836176-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3931836176-line-15)">-</text><text class="terminal-3931836176-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-3931836176-line-15)">-github</text><text class="terminal-3931836176-r5" x="122" y="386" textLength="134.2" clip-path="url(#terminal-3931836 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3931836176-line-16)">│</text><text class="terminal-3931836176-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3931836176-line-16)">-</text><text class="terminal-3931836176-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-3931836176-line-16)">-help</text><text class="terminal-3931836176-r6" x="280.6" y="410.4" textLength="24.4" clip-path="url(#terminal-39 [...]
+</text><text class="terminal-3931836176-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3931836176-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3931836176-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3931836176-line-17)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-verify-prod-image.svg b/images/breeze/output-verify-prod-image.svg
index 31c7b66b72..242ba205e5 100644
--- a/images/breeze/output-verify-prod-image.svg
+++ b/images/breeze/output-verify-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 562.4" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,125 +19,117 @@
         font-weight: 700;
     }
 
-    .terminal-464155386-matrix {
+    .terminal-3025156540-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-464155386-title {
+    .terminal-3025156540-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-464155386-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-464155386-r2 { fill: #c5c8c6 }
-.terminal-464155386-r3 { fill: #d0b344;font-weight: bold }
-.terminal-464155386-r4 { fill: #868887 }
-.terminal-464155386-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-464155386-r6 { fill: #98a84b;font-weight: bold }
-.terminal-464155386-r7 { fill: #8d7b39 }
+    .terminal-3025156540-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3025156540-r2 { fill: #c5c8c6 }
+.terminal-3025156540-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3025156540-r4 { fill: #868887 }
+.terminal-3025156540-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3025156540-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3025156540-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-464155386-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="511.4" />
+    <clipPath id="terminal-3025156540-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
     </clipPath>
-    <clipPath id="terminal-464155386-line-0">
+    <clipPath id="terminal-3025156540-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-1">
+<clipPath id="terminal-3025156540-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-2">
+<clipPath id="terminal-3025156540-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-3">
+<clipPath id="terminal-3025156540-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-4">
+<clipPath id="terminal-3025156540-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-5">
+<clipPath id="terminal-3025156540-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-6">
+<clipPath id="terminal-3025156540-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-7">
+<clipPath id="terminal-3025156540-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-8">
+<clipPath id="terminal-3025156540-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-9">
+<clipPath id="terminal-3025156540-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-10">
+<clipPath id="terminal-3025156540-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-11">
+<clipPath id="terminal-3025156540-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-12">
+<clipPath id="terminal-3025156540-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-13">
+<clipPath id="terminal-3025156540-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-14">
+<clipPath id="terminal-3025156540-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-15">
+<clipPath id="terminal-3025156540-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-16">
+<clipPath id="terminal-3025156540-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-17">
+<clipPath id="terminal-3025156540-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-464155386-line-18">
-    <rect x="0" y="440.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="terminal-464155386-line-19">
-    <rect x="0" y="465.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="560.4" rx="8"/><text class="terminal-464155386-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-prod-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="terminal-3025156540-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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-464155386-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3025156540-clip-terminal)">
     
-    <g class="terminal-464155386-matrix">
-    <text class="terminal-464155386-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-464155386-line-0)">
-</text><text class="terminal-464155386-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-464155386-line-1)">Usage:&#160;</text><text class="terminal-464155386-r1" x="97.6" y="44.4" textLength="695.4" clip-path="url(#terminal-464155386-line-1)">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-464155386-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-464155386-line-1)">
-</text><text class="terminal-464155386-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-464155386-line-2)">
-</text><text class="terminal-464155386-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#terminal-464155386-line-3)">Verify&#160;Production&#160;image.</text><text class="terminal-464155386-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-464155386-line-3)">
-</text><text class="terminal-464155386-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-464155386-line-4)">
-</text><text class="terminal-464155386-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-464155386-line-5)">╭─</text><text class="terminal-464155386-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-464155386-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-464155386-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-464155 [...]
-</text><text class="terminal-464155386-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-464155386-line-6)">│</text><text class="terminal-464155386-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-464155386-line-6)">-</text><text class="terminal-464155386-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-464155386-line-6)">-image</text><text class="terminal-464155386-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-464155386-l [...]
-</text><text class="terminal-464155386-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-464155386-line-7)">│</text><text class="terminal-464155386-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-464155386-line-7)">-</text><text class="terminal-464155386-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-464155386-line-7)">-python</text><text class="terminal-464155386-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-46415538 [...]
-</text><text class="terminal-464155386-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-464155386-line-8)">│</text><text class="terminal-464155386-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-464155386-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;&#160;& [...]
-</text><text class="terminal-464155386-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-464155386-line-9)">│</text><text class="terminal-464155386-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-464155386-line-9)">-</text><text class="terminal-464155386-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-464155386-line-9)">-image</text><text class="terminal-464155386-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-464155386 [...]
-</text><text class="terminal-464155386-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-464155386-line-10)">│</text><text class="terminal-464155386-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-464155386-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-464155386-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-464155386-line-11)">│</text><text class="terminal-464155386-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-464155386-line-11)">(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;&#1 [...]
-</text><text class="terminal-464155386-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-464155386-line-12)">│</text><text class="terminal-464155386-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-464155386-line-12)">-</text><text class="terminal-464155386-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-464155386-line-12)">-pull</text><text class="terminal-464155386-r5" x="97.6" y="312.8" textLength="73.2" clip-path="url(#terminal-464155386- [...]
-</text><text class="terminal-464155386-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-464155386-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-464155386-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-464155386-line-13)">
-</text><text class="terminal-464155386-r4" x="0" y="361.6" textLength="24.4" clip-path="url(#terminal-464155386-line-14)">╭─</text><text class="terminal-464155386-r4" x="24.4" y="361.6" textLength="1415.2" clip-path="url(#terminal-464155386-line-14)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-464155386-r4" x="1439.6" y="361.6" textLength="24.4" clip-path="url(#terminal-46415538 [...]
-</text><text class="terminal-464155386-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-464155386-line-15)">│</text><text class="terminal-464155386-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-464155386-line-15)">-</text><text class="terminal-464155386-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-464155386-line-15)">-verbose</text><text class="terminal-464155386-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-464155386-li [...]
-</text><text class="terminal-464155386-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-464155386-line-16)">│</text><text class="terminal-464155386-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-464155386-line-16)">-</text><text class="terminal-464155386-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-464155386-line-16)">-dry</text><text class="terminal-464155386-r5" x="85.4" y="410.4" textLength="48.8" clip-path="url(#terminal-464155386 [...]
-</text><text class="terminal-464155386-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-464155386-line-17)">│</text><text class="terminal-464155386-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-464155386-line-17)">-</text><text class="terminal-464155386-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-464155386-line-17)">-github</text><text class="terminal-464155386-r5" x="122" y="434.8" textLength="134.2" clip-path="url(#terminal-464155 [...]
-</text><text class="terminal-464155386-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-464155386-line-18)">│</text><text class="terminal-464155386-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-464155386-line-18)">-</text><text class="terminal-464155386-r5" x="36.6" y="459.2" textLength="61" clip-path="url(#terminal-464155386-line-18)">-slim</text><text class="terminal-464155386-r5" x="97.6" y="459.2" textLength="73.2" clip-path="url(#terminal-464155386- [...]
-</text><text class="terminal-464155386-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-464155386-line-19)">│</text><text class="terminal-464155386-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-464155386-line-19)">-</text><text class="terminal-464155386-r5" x="36.6" y="483.6" textLength="61" clip-path="url(#terminal-464155386-line-19)">-help</text><text class="terminal-464155386-r6" x="280.6" y="483.6" textLength="24.4" clip-path="url(#terminal-464155386 [...]
-</text><text class="terminal-464155386-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-464155386-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-464155386-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-464155386-line-20)">
+    <g class="terminal-3025156540-matrix">
+    <text class="terminal-3025156540-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3025156540-line-0)">
+</text><text class="terminal-3025156540-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3025156540-line-1)">Usage:&#160;</text><text class="terminal-3025156540-r1" x="97.6" y="44.4" textLength="695.4" clip-path="url(#terminal-3025156540-line-1)">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3025156540-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3025156540-line-1)">
+</text><text class="terminal-3025156540-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3025156540-line-2)">
+</text><text class="terminal-3025156540-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#terminal-3025156540-line-3)">Verify&#160;Production&#160;image.</text><text class="terminal-3025156540-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3025156540-line-3)">
+</text><text class="terminal-3025156540-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3025156540-line-4)">
+</text><text class="terminal-3025156540-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3025156540-line-5)">╭─</text><text class="terminal-3025156540-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3025156540-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3025156540-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3025156540-line-6)">│</text><text class="terminal-3025156540-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3025156540-line-6)">-</text><text class="terminal-3025156540-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-3025156540-line-6)">-image</text><text class="terminal-3025156540-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-3025 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3025156540-line-7)">│</text><text class="terminal-3025156540-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3025156540-line-7)">-</text><text class="terminal-3025156540-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-3025156540-line-7)">-python</text><text class="terminal-3025156540-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3025156540-line-8)">│</text><text class="terminal-3025156540-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-3025156540-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;&#1 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3025156540-line-9)">│</text><text class="terminal-3025156540-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3025156540-line-9)">-</text><text class="terminal-3025156540-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-3025156540-line-9)">-image</text><text class="terminal-3025156540-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-30 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3025156540-line-10)">│</text><text class="terminal-3025156540-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3025156540-line-10)">-</text><text class="terminal-3025156540-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-3025156540-line-10)">-pull</text><text class="terminal-3025156540-r5" x="97.6" y="264" textLength="73.2" clip-path="url(#terminal-3025156540- [...]
+</text><text class="terminal-3025156540-r4" x="0" y="288.4" textLength="1464" clip-path="url(#terminal-3025156540-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3025156540-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#terminal-3025156540-line-11)">
+</text><text class="terminal-3025156540-r4" x="0" y="312.8" textLength="24.4" clip-path="url(#terminal-3025156540-line-12)">╭─</text><text class="terminal-3025156540-r4" x="24.4" y="312.8" textLength="1415.2" clip-path="url(#terminal-3025156540-line-12)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3025156540-r4" x="1439.6" y="312.8" textLength="24.4" clip-path="url(#terminal-302 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3025156540-line-13)">│</text><text class="terminal-3025156540-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3025156540-line-13)">-</text><text class="terminal-3025156540-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-3025156540-line-13)">-verbose</text><text class="terminal-3025156540-r6" x="280.6" y="337.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3025156540-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3025156540-line-14)">│</text><text class="terminal-3025156540-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3025156540-line-14)">-</text><text class="terminal-3025156540-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-3025156540-line-14)">-dry</text><text class="terminal-3025156540-r5" x="85.4" y="361.6" textLength="48.8" clip-path="url(#terminal-30 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3025156540-line-15)">│</text><text class="terminal-3025156540-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3025156540-line-15)">-</text><text class="terminal-3025156540-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-3025156540-line-15)">-github</text><text class="terminal-3025156540-r5" x="122" y="386" textLength="134.2" clip-path="url(#terminal-3025156 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3025156540-line-16)">│</text><text class="terminal-3025156540-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3025156540-line-16)">-</text><text class="terminal-3025156540-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-3025156540-line-16)">-slim</text><text class="terminal-3025156540-r5" x="97.6" y="410.4" textLength="73.2" clip-path="url(#terminal-302 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3025156540-line-17)">│</text><text class="terminal-3025156540-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3025156540-line-17)">-</text><text class="terminal-3025156540-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-3025156540-line-17)">-help</text><text class="terminal-3025156540-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-30 [...]
+</text><text class="terminal-3025156540-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-3025156540-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3025156540-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-3025156540-line-18)">
 </text>
     </g>
     </g>


[airflow] 08/39: Add command to regenerate breeze command output images (#24216)

Posted by po...@apache.org.
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 797fce76e3c870b08637a5c9426b00964fe623fb
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 7 11:29:10 2022 +0200

    Add command to regenerate breeze command output images (#24216)
    
    (cherry picked from commit 2d687e4b7b39fc5c133440de7f66f58327d33db7)
---
 .gitignore                                         |   4 +
 BREEZE.rst                                         |  11 +
 .../configuration_and_maintenance_commands.py      |  27 +-
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output-commands.svg                  | 364 +++++++++++----------
 images/breeze/output-regenerate-command-images.svg |  99 ++++++
 6 files changed, 327 insertions(+), 180 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9a00d53fa3..fe3d74aa23 100644
--- a/.gitignore
+++ b/.gitignore
@@ -225,3 +225,7 @@ licenses/LICENSES-ui.txt
 
 # Packaged breeze on Windows
 /breeze.exe
+
+# Generated out dir
+
+/out
diff --git a/BREEZE.rst b/BREEZE.rst
index 1ddd32dfbe..36b10759d3 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -426,6 +426,17 @@ of help of the commands only when they change.
   :width: 100%
   :alt: Breeze command-hash-export
 
+Regenerating images for documentation
+=====================================
+
+This documentation contains exported images with "help" of their commands and parameters. You can
+regenerate all those images (which might be needed in case new version of rich is used) via
+``regenerate-breeze-images`` command.
+
+.. image:: ./images/breeze/output-regenerate-command-images.svg
+  :width: 100%
+  :alt: Breeze regenerate-command-images
+
 
 Starting complete Airflow installation
 ======================================
diff --git a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
index 818ba49ee8..d4ca3bcf46 100644
--- a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
@@ -62,7 +62,7 @@ from airflow_breeze.utils.path_utils import (
 )
 from airflow_breeze.utils.recording import output_file_for_recording
 from airflow_breeze.utils.reinstall import ask_to_reinstall_breeze, reinstall_breeze, warn_non_editable
-from airflow_breeze.utils.run_utils import run_command
+from airflow_breeze.utils.run_utils import assert_pre_commit_installed, run_command
 from airflow_breeze.utils.visuals import ASCIIART, ASCIIART_STYLE
 
 CONFIGURATION_AND_MAINTENANCE_COMMANDS = {
@@ -75,6 +75,7 @@ CONFIGURATION_AND_MAINTENANCE_COMMANDS = {
         "resource-check",
         "free-space",
         "fix-ownership",
+        "regenerate-command-images",
         "command-hash-export",
         "version",
     ],
@@ -533,3 +534,27 @@ def remove_autogenerated_code(script_path: str):
 
 def backup(script_path_file: Path):
     shutil.copy(str(script_path_file), str(script_path_file) + ".bak")
+
+
+@main.command(name="regenerate-command-images", help="Regenerate breeze command images.")
+@option_verbose
+@option_dry_run
+def regenerate_command_images(verbose: bool, dry_run: bool):
+    assert_pre_commit_installed(verbose=verbose)
+    perform_environment_checks(verbose=verbose)
+    try:
+        (AIRFLOW_SOURCES_ROOT / "images" / "breeze" / "output-commands-hash.txt").unlink()
+    except FileNotFoundError:
+        # when we go to Python 3.8+ we can add missing_ok = True instead of try/except
+        pass
+    command_to_execute = [sys.executable, "-m", "pre_commit", 'run', 'update-breeze-file', '--all-files']
+    env = os.environ.copy()
+    run_command(
+        command_to_execute,
+        verbose=verbose,
+        dry_run=dry_run,
+        check=False,
+        no_output_dump_on_exception=True,
+        text=True,
+        env=env,
+    )
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 08e0c94ed2..c6b12db9fa 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1 @@
-c227c66369d92c76c0e52939e3e4ecf1
+ed70b784364f0b604176ea142305906b
diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg
index be4ea5a514..a592f4642e 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2050.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2099.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,369 +19,377 @@
         font-weight: 700;
     }
 
-    .terminal-2398605327-matrix {
+    .terminal-2950431877-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2398605327-title {
+    .terminal-2950431877-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2398605327-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2398605327-r2 { fill: #c5c8c6 }
-.terminal-2398605327-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2398605327-r4 { fill: #868887 }
-.terminal-2398605327-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2398605327-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2398605327-r7 { fill: #8d7b39 }
+    .terminal-2950431877-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2950431877-r2 { fill: #c5c8c6 }
+.terminal-2950431877-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2950431877-r4 { fill: #868887 }
+.terminal-2950431877-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2950431877-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2950431877-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2398605327-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1999.8" />
+    <clipPath id="terminal-2950431877-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="2048.6" />
     </clipPath>
-    <clipPath id="terminal-2398605327-line-0">
+    <clipPath id="terminal-2950431877-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-1">
+<clipPath id="terminal-2950431877-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-2">
+<clipPath id="terminal-2950431877-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-3">
+<clipPath id="terminal-2950431877-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-4">
+<clipPath id="terminal-2950431877-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-5">
+<clipPath id="terminal-2950431877-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-6">
+<clipPath id="terminal-2950431877-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-7">
+<clipPath id="terminal-2950431877-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-8">
+<clipPath id="terminal-2950431877-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-9">
+<clipPath id="terminal-2950431877-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-10">
+<clipPath id="terminal-2950431877-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-11">
+<clipPath id="terminal-2950431877-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-12">
+<clipPath id="terminal-2950431877-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-13">
+<clipPath id="terminal-2950431877-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-14">
+<clipPath id="terminal-2950431877-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-15">
+<clipPath id="terminal-2950431877-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-16">
+<clipPath id="terminal-2950431877-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-17">
+<clipPath id="terminal-2950431877-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-18">
+<clipPath id="terminal-2950431877-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-19">
+<clipPath id="terminal-2950431877-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-20">
+<clipPath id="terminal-2950431877-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-21">
+<clipPath id="terminal-2950431877-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-22">
+<clipPath id="terminal-2950431877-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-23">
+<clipPath id="terminal-2950431877-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-24">
+<clipPath id="terminal-2950431877-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-25">
+<clipPath id="terminal-2950431877-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-26">
+<clipPath id="terminal-2950431877-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-27">
+<clipPath id="terminal-2950431877-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-28">
+<clipPath id="terminal-2950431877-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-29">
+<clipPath id="terminal-2950431877-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-30">
+<clipPath id="terminal-2950431877-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-31">
+<clipPath id="terminal-2950431877-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-32">
+<clipPath id="terminal-2950431877-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-33">
+<clipPath id="terminal-2950431877-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-34">
+<clipPath id="terminal-2950431877-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-35">
+<clipPath id="terminal-2950431877-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-36">
+<clipPath id="terminal-2950431877-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-37">
+<clipPath id="terminal-2950431877-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-38">
+<clipPath id="terminal-2950431877-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-39">
+<clipPath id="terminal-2950431877-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-40">
+<clipPath id="terminal-2950431877-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-41">
+<clipPath id="terminal-2950431877-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-42">
+<clipPath id="terminal-2950431877-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-43">
+<clipPath id="terminal-2950431877-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-44">
+<clipPath id="terminal-2950431877-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-45">
+<clipPath id="terminal-2950431877-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-46">
+<clipPath id="terminal-2950431877-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-47">
+<clipPath id="terminal-2950431877-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-48">
+<clipPath id="terminal-2950431877-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-49">
+<clipPath id="terminal-2950431877-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-50">
+<clipPath id="terminal-2950431877-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-51">
+<clipPath id="terminal-2950431877-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-52">
+<clipPath id="terminal-2950431877-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-53">
+<clipPath id="terminal-2950431877-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-54">
+<clipPath id="terminal-2950431877-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-55">
+<clipPath id="terminal-2950431877-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-56">
+<clipPath id="terminal-2950431877-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-57">
+<clipPath id="terminal-2950431877-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-58">
+<clipPath id="terminal-2950431877-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-59">
+<clipPath id="terminal-2950431877-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-60">
+<clipPath id="terminal-2950431877-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-61">
+<clipPath id="terminal-2950431877-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-62">
+<clipPath id="terminal-2950431877-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-63">
+<clipPath id="terminal-2950431877-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-64">
+<clipPath id="terminal-2950431877-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-65">
+<clipPath id="terminal-2950431877-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-66">
+<clipPath id="terminal-2950431877-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-67">
+<clipPath id="terminal-2950431877-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-68">
+<clipPath id="terminal-2950431877-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-69">
+<clipPath id="terminal-2950431877-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-70">
+<clipPath id="terminal-2950431877-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-71">
+<clipPath id="terminal-2950431877-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-72">
+<clipPath id="terminal-2950431877-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-73">
+<clipPath id="terminal-2950431877-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-74">
+<clipPath id="terminal-2950431877-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-75">
+<clipPath id="terminal-2950431877-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-76">
+<clipPath id="terminal-2950431877-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-77">
+<clipPath id="terminal-2950431877-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-78">
+<clipPath id="terminal-2950431877-line-78">
     <rect x="0" y="1904.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-79">
+<clipPath id="terminal-2950431877-line-79">
     <rect x="0" y="1929.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2398605327-line-80">
+<clipPath id="terminal-2950431877-line-80">
     <rect x="0" y="1953.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2950431877-line-81">
+    <rect x="0" y="1977.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2950431877-line-82">
+    <rect x="0" y="2002.3" 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="2048.8" rx="8"/><text class="terminal-2398605327-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2097.6" rx="8"/><text class="terminal-2950431877-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</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-2398605327-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2950431877-clip-terminal)">
     
-    <g class="terminal-2398605327-matrix">
-    <text class="terminal-2398605327-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2398605327-line-0)">
-</text><text class="terminal-2398605327-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2398605327-line-1)">Usage:&#160;</text><text class="terminal-2398605327-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-2398605327-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-2398605327-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-1)">
-</text><text class="terminal-2398605327-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-2)">
-</text><text class="terminal-2398605327-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-2398605327-line-3)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-2398605327-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
-</text><text class="terminal-2398605327-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-4)">│</text><text class="terminal-2398605327-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-4)">-</text><text class="terminal-2398605327-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-2398605327-line-4)">-python</text><text class="terminal-2398605327-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-239 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-2398605327-line-5)">│</text><text class="terminal-2398605327-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-2398605327-line-5)">[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;&#160 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-6)">│</text><text class="terminal-2398605327-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-6)">-</text><text class="terminal-2398605327-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2398605327-line-6)">-backend</text><text class="terminal-2398605327-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-7)">│</text><text class="terminal-2398605327-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-7)">-</text><text class="terminal-2398605327-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-2398605327-line-7)">-postgres</text><text class="terminal-2398605327-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
-</text><text class="terminal-2398605327-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-8)">│</text><text class="terminal-2398605327-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-8)">-</text><text class="terminal-2398605327-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-2398605327-line-8)">-mysql</text><text class="terminal-2398605327-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-9)">│</text><text class="terminal-2398605327-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-9)">-</text><text class="terminal-2398605327-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2398605327-line-9)">-mssql</text><text class="terminal-2398605327-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2398605327-line-10)">│</text><text class="terminal-2398605327-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2398605327-line-10)">-</text><text class="terminal-2398605327-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-2398605327-line-10)">-integration</text><text class="terminal-2398605327-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
-</text><text class="terminal-2398605327-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-11)">│</text><text class="terminal-2398605327-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-2398605327-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2398605327-r4" x="1 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-12)">│</text><text class="terminal-2398605327-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-2398605327-line-12)">all)&#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-2398605327-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-13)">│</text><text class="terminal-2398605327-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-13)">-</text><text class="terminal-2398605327-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-2398605327-line-13)">-forward</text><text class="terminal-2398605327-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-2398605327-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-14)">│</text><text class="terminal-2398605327-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-14)">-</text><text class="terminal-2398605327-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-2398605327-line-14)">-db</text><text class="terminal-2398605327-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-239 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-2398605327-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2398605327-line-15)">
-</text><text class="terminal-2398605327-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-2398605327-line-16)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-2398605327-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="410.4" textLength="24.4 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-17)">│</text><text class="terminal-2398605327-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-17)">-</text><text class="terminal-2398605327-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-2398605327-line-17)">-use</text><text class="terminal-2398605327-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-18)">│</text><text class="terminal-2398605327-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-2398605327-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-2398605327-r4" x="1451.8" y="459.2" textLength= [...]
-</text><text class="terminal-2398605327-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-19)">│</text><text class="terminal-2398605327-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-2398605327-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2398605327-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-19)">-</text><text class="terminal-23986 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2398605327-line-20)">│</text><text class="terminal-2398605327-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-2398605327-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2398605327-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-21)">│</text><text class="terminal-2398605327-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-21)">-</text><text class="terminal-2398605327-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-2398605327-line-21)">-airflow</text><text class="terminal-2398605327-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2398605327-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-22)">│</text><text class="terminal-2398605327-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-22)">-</text><text class="terminal-2398605327-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-2398605327-line-22)">-use</text><text class="terminal-2398605327-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-23)">│</text><text class="terminal-2398605327-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-2398605327-line-23)">entering&#160;breeze.&#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-2398605327-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-24)">│</text><text class="terminal-2398605327-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-24)">-</text><text class="terminal-2398605327-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-2398605327-line-24)">-package</text><text class="terminal-2398605327-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2398605327-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2398605327-line-25)">│</text><text class="terminal-2398605327-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2398605327-line-25)">-</text><text class="terminal-2398605327-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-2398605327-line-25)">-force</text><text class="terminal-2398605327-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-2398605 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-26)">│</text><text class="terminal-2398605327-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-26)">-</text><text class="terminal-2398605327-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-2398605327-line-26)">-mount</text><text class="terminal-2398605327-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2398605327-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-27)">│</text><text class="terminal-2398605327-r7" x="366" y="678.8" textLength="841.8" clip-path="url(#terminal-2398605327-line-27)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-2398605327-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-28)">│</text><text class="terminal-2398605327-r4" x="366" y="703.2" textLength="841.8" clip-path="url(#terminal-2398605327-line-28)">[default:&#160;selected]&#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-2398605327-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-29)">│</text><text class="terminal-2398605327-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-29)">-</text><text class="terminal-2398605327-r5" x="36.6" y="727.6" textLength="85.4" clip-path="url(#terminal-2398605327-line-29)">-debian</text><text class="terminal-2398605327-r5" x="122" y="727.6" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-2398605327-r4" x="0" y="752" textLength="1464" clip-path="url(#terminal-2398605327-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="752" textLength="12.2" clip-path="url(#terminal-2398605327-line-30)">
-</text><text class="terminal-2398605327-r4" x="0" y="776.4" textLength="24.4" clip-path="url(#terminal-2398605327-line-31)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="776.4" textLength="1415.2" clip-path="url(#terminal-2398605327-line-31)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="776.4" textLength="24.4" clip-path="url(#terminal-239 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-32)">│</text><text class="terminal-2398605327-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-32)">-</text><text class="terminal-2398605327-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-2398605327-line-32)">-verbose</text><text class="terminal-2398605327-r6" x="280.6" y="800.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-2398605327-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-33)">│</text><text class="terminal-2398605327-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-33)">-</text><text class="terminal-2398605327-r5" x="36.6" y="825.2" textLength="48.8" clip-path="url(#terminal-2398605327-line-33)">-dry</text><text class="terminal-2398605327-r5" x="85.4" y="825.2" textLength="48.8" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-34)">│</text><text class="terminal-2398605327-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-34)">-</text><text class="terminal-2398605327-r5" x="36.6" y="849.6" textLength="85.4" clip-path="url(#terminal-2398605327-line-34)">-github</text><text class="terminal-2398605327-r5" x="122" y="849.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2398605327-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2398605327-line-35)">│</text><text class="terminal-2398605327-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2398605327-line-35)">-</text><text class="terminal-2398605327-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-2398605327-line-35)">-answer</text><text class="terminal-2398605327-r6" x="280.6" y="874" textLength="24.4" clip-path="url(#terminal-239860 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-36)">│</text><text class="terminal-2398605327-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-36)">-</text><text class="terminal-2398605327-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-2398605327-line-36)">-help</text><text class="terminal-2398605327-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-2398605327-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-37)">
-</text><text class="terminal-2398605327-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-2398605327-line-38)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-2398605327-line-38)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2398605327-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-39)">│</text><text class="terminal-2398605327-r5" x="24.4" y="971.6" textLength="183" clip-path="url(#terminal-2398605327-line-39)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="971.6" textLength="1207.8" clip-path="url(#terminal-2398605327-line-39)">Enter&#160;breeze.py&#160;environment.&#160;th [...]
-</text><text class="terminal-2398605327-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2398605327-line-40)">│</text><text class="terminal-2398605327-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-2398605327-line-40)">start-airflow&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-2398605327-line-40)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;compon [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-41)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-2398605327-line-41)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-2398605327-line-41)">Joins&#160;the&#160;interactive&#160;s [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-42)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-2398605327-line-42)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-2398605327-line-42)">Stop&#160;running&#160;breeze&#160;env [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-43)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-2398605327-line-43)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-2398605327-line-43)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-44)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-2398605327-line-44)">static-checks&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-2398605327-line-44)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-2398605327-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-2398605327-line-45)">
-</text><text class="terminal-2398605327-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-2398605327-line-46)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-2398605327-line-46)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1142.4" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-47)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1166.8" textLength="256.2" clip-path="url(#terminal-2398605327-line-47)">docker-compose-tests&#160;</text><text class="terminal-2398605327-r2" x="305" y="1166.8" textLength="1134.6" clip-path="url(#terminal-2398605327-line-47)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-48)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-2398605327-line-48)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-2398605327-line-48)">Run&#16 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-2398605327-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-49)">
-</text><text class="terminal-2398605327-r4" x="0" y="1240" textLength="24.4" clip-path="url(#terminal-2398605327-line-50)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1240" textLength="1415.2" clip-path="url(#terminal-2398605327-line-50)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1240" textLength="24.4" clip-path="url(#t [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-51)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1264.4" textLength="231.8" clip-path="url(#terminal-2398605327-line-51)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1264.4" textLength="1159" clip-path="url(#terminal-2398605327-line-51)">Cleans&#160;the&#160;cache&#1 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-52)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1288.8" textLength="231.8" clip-path="url(#terminal-2398605327-line-52)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1288.8" textLength="1159" clip-path="url(#terminal-2398605327-line-52)">Self&#160;upgrade&#160;Breeze.&#160;&#160;&#160;&#160; [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-53)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1313.2" textLength="231.8" clip-path="url(#terminal-2398605327-line-53)">setup-autocomplete&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1313.2" textLength="1159" clip-path="url(#terminal-2398605327-line-53)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;commands.&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-54)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1337.6" textLength="231.8" clip-path="url(#terminal-2398605327-line-54)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1337.6" textLength="1159" clip-path="url(#terminal-2398605327-line-54)">Show/update&#160;configu [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-2398605327-line-55)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1362" textLength="231.8" clip-path="url(#terminal-2398605327-line-55)">resource-check&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1362" textLength="1159" clip-path="url(#terminal-2398605327-line-55)">Check&#160;if&#160;available&#160;docker&#160;resources&#160;are&#160; [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-56)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1386.4" textLength="231.8" clip-path="url(#terminal-2398605327-line-56)">free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1386.4" textLength="1159" clip-path="url(#terminal-2398605327-line-56)">Free&#160;space&#160;for&#160;jobs&#160;run& [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-57)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1410.8" textLength="231.8" clip-path="url(#terminal-2398605327-line-57)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1410.8" textLength="1159" clip-path="url(#terminal-2398605327-line-57)">Fix&#160;ownership&#160;of&#160;source&#160;files&#160;to&# [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-58)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1435.2" textLength="231.8" clip-path="url(#terminal-2398605327-line-58)">command-hash-export</text><text class="terminal-2398605327-r2" x="280.6" y="1435.2" textLength="1159" clip-path="url(#terminal-2398605327-line-58)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands&#160;to&#160;file&#160;or&#16 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-59)">│</text><text class="terminal-2398605327-r2" x="280.6" y="1459.6" textLength="1159" clip-path="url(#terminal-2398605327-line-59)">should&#160;be&#160;regenerated).&#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-2398605327-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-2398605327-line-60)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1484" textLength="231.8" clip-path="url(#terminal-2398605327-line-60)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1484" textLength="1159" clip-path="url(#terminal-2398605327-line-60)">Print&#160;information&#160;about&# [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1508.4" textLength="1464" clip-path="url(#terminal-2398605327-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1508.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-61)">
-</text><text class="terminal-2398605327-r4" x="0" y="1532.8" textLength="24.4" clip-path="url(#terminal-2398605327-line-62)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1532.8" textLength="1415.2" clip-path="url(#terminal-2398605327-line-62)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1532.8" textLength="24.4" clip-path="url( [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-63)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1557.2" textLength="170.8" clip-path="url(#terminal-2398605327-line-63)">build-image&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="219.6" y="1557.2" textLength="1220" clip-path="url(#terminal-2398605327-line-63)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images& [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-64)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1581.6" textLength="170.8" clip-path="url(#terminal-2398605327-line-64)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="219.6" y="1581.6" textLength="1220" clip-path="url(#terminal-2398605327-line-64)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160; [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-2398605327-line-65)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-2398605327-line-65)">verify-image&#160;&#160;</text><text class="terminal-2398605327-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-2398605327-line-65)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1630.4" textLength="1464" clip-path="url(#terminal-2398605327-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1630.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-66)">
-</text><text class="terminal-2398605327-r4" x="0" y="1654.8" textLength="24.4" clip-path="url(#terminal-2398605327-line-67)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1654.8" textLength="1415.2" clip-path="url(#terminal-2398605327-line-67)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1654.8" textLength="24.4" clip-path="url( [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-68)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1679.2" textLength="207.4" clip-path="url(#terminal-2398605327-line-68)">build-prod-image&#160;</text><text class="terminal-2398605327-r2" x="256.2" y="1679.2" textLength="1183.4" clip-path="url(#terminal-2398605327-line-68)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;imag [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-69)">│</text><text class="terminal-2398605327-r2" x="256.2" y="1703.6" textLength="1183.4" clip-path="url(#terminal-2398605327-line-69)">sequentially.&#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-2398605327-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-2398605327-line-70)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1728" textLength="207.4" clip-path="url(#terminal-2398605327-line-70)">pull-prod-image&#160;&#160;</text><text class="terminal-2398605327-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-2398605327-line-70)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;pos [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-71)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-2398605327-line-71)">verify-prod-image</text><text class="terminal-2398605327-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-2398605327-line-71)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-2398605327-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-72)">
-</text><text class="terminal-2398605327-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-2398605327-line-73)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-2398605327-line-73)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-74)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1825.6" textLength="402.6" clip-path="url(#terminal-2398605327-line-74)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1825.6" textLength="988.2" clip-path="url(#terminal-2398605327-line-74)">Verifies&#160;if&#160;all&#16 [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-2398605327-line-75)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1850" textLength="402.6" clip-path="url(#terminal-2398605327-line-75)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1850" textLength="988.2" clip-path="url(#terminal-2398605327-line-75)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;in [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-76)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1874.4" textLength="402.6" clip-path="url(#terminal-2398605327-line-76)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1874.4" textLength="988.2" clip-path="url(#terminal-2398605327-line-76)">Prepare&#160;sdist/whl&#160;packag [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-77)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1898.8" textLength="402.6" clip-path="url(#terminal-2398605327-line-77)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1898.8" textLength="988.2" clip-path="url(#terminal-2398605327-line-77)">Prepare&#160;sdist/whl&# [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-78)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1923.2" textLength="402.6" clip-path="url(#terminal-2398605327-line-78)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1923.2" textLength="988.2" clip-path="url(#terminal-2398605327-line-78)">Rele [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-79)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1947.6" textLength="402.6" clip-path="url(#terminal-2398605327-line-79)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1947.6" textLength="988.2" clip-path="url(#terminal-2398605327-line-79)">Generates [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-2398605327-line-80)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1972" textLength="402.6" clip-path="url(#terminal-2398605327-line-80)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1972" textLength="988.2" clip-path="url(#terminal-2398605327-line-80)">Finds&#160;which&#160;dependen [...]
-</text><text class="terminal-2398605327-r4" x="0" y="1996.4" textLength="1464" clip-path="url(#terminal-2398605327-line-81)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1996.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-81)">
+    <g class="terminal-2950431877-matrix">
+    <text class="terminal-2950431877-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2950431877-line-0)">
+</text><text class="terminal-2950431877-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2950431877-line-1)">Usage:&#160;</text><text class="terminal-2950431877-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-2950431877-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-2950431877-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-1)">
+</text><text class="terminal-2950431877-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-2)">
+</text><text class="terminal-2950431877-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-2950431877-line-3)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-2950431877-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
+</text><text class="terminal-2950431877-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-4)">│</text><text class="terminal-2950431877-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-4)">-</text><text class="terminal-2950431877-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-2950431877-line-4)">-python</text><text class="terminal-2950431877-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-295 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-2950431877-line-5)">│</text><text class="terminal-2950431877-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-2950431877-line-5)">[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;&#160 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-6)">│</text><text class="terminal-2950431877-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-6)">-</text><text class="terminal-2950431877-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2950431877-line-6)">-backend</text><text class="terminal-2950431877-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-29 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-7)">│</text><text class="terminal-2950431877-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-7)">-</text><text class="terminal-2950431877-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-2950431877-line-7)">-postgres</text><text class="terminal-2950431877-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-2950431877-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-8)">│</text><text class="terminal-2950431877-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-8)">-</text><text class="terminal-2950431877-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-2950431877-line-8)">-mysql</text><text class="terminal-2950431877-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-29 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-9)">│</text><text class="terminal-2950431877-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-9)">-</text><text class="terminal-2950431877-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2950431877-line-9)">-mssql</text><text class="terminal-2950431877-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-29 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2950431877-line-10)">│</text><text class="terminal-2950431877-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2950431877-line-10)">-</text><text class="terminal-2950431877-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-2950431877-line-10)">-integration</text><text class="terminal-2950431877-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
+</text><text class="terminal-2950431877-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-11)">│</text><text class="terminal-2950431877-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-2950431877-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2950431877-r4" x="1 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-12)">│</text><text class="terminal-2950431877-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-2950431877-line-12)">all)&#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-2950431877-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-13)">│</text><text class="terminal-2950431877-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-13)">-</text><text class="terminal-2950431877-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-2950431877-line-13)">-forward</text><text class="terminal-2950431877-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-2950431877-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-14)">│</text><text class="terminal-2950431877-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-14)">-</text><text class="terminal-2950431877-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-2950431877-line-14)">-db</text><text class="terminal-2950431877-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-295 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-2950431877-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2950431877-line-15)">
+</text><text class="terminal-2950431877-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-2950431877-line-16)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-2950431877-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="410.4" textLength="24.4 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-17)">│</text><text class="terminal-2950431877-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-17)">-</text><text class="terminal-2950431877-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-2950431877-line-17)">-use</text><text class="terminal-2950431877-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-18)">│</text><text class="terminal-2950431877-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-2950431877-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-2950431877-r4" x="1451.8" y="459.2" textLength= [...]
+</text><text class="terminal-2950431877-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-19)">│</text><text class="terminal-2950431877-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-2950431877-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2950431877-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-19)">-</text><text class="terminal-29504 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2950431877-line-20)">│</text><text class="terminal-2950431877-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-2950431877-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2950431877-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-21)">│</text><text class="terminal-2950431877-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-21)">-</text><text class="terminal-2950431877-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-2950431877-line-21)">-airflow</text><text class="terminal-2950431877-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2950431877-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-22)">│</text><text class="terminal-2950431877-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-22)">-</text><text class="terminal-2950431877-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-2950431877-line-22)">-use</text><text class="terminal-2950431877-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-23)">│</text><text class="terminal-2950431877-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-2950431877-line-23)">entering&#160;breeze.&#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-2950431877-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-24)">│</text><text class="terminal-2950431877-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-24)">-</text><text class="terminal-2950431877-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-2950431877-line-24)">-package</text><text class="terminal-2950431877-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2950431877-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2950431877-line-25)">│</text><text class="terminal-2950431877-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2950431877-line-25)">-</text><text class="terminal-2950431877-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-2950431877-line-25)">-force</text><text class="terminal-2950431877-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-2950431 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-26)">│</text><text class="terminal-2950431877-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-26)">-</text><text class="terminal-2950431877-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-2950431877-line-26)">-mount</text><text class="terminal-2950431877-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2950431877-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-27)">│</text><text class="terminal-2950431877-r7" x="366" y="678.8" textLength="841.8" clip-path="url(#terminal-2950431877-line-27)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-2950431877-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-28)">│</text><text class="terminal-2950431877-r4" x="366" y="703.2" textLength="841.8" clip-path="url(#terminal-2950431877-line-28)">[default:&#160;selected]&#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-2950431877-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-29)">│</text><text class="terminal-2950431877-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-29)">-</text><text class="terminal-2950431877-r5" x="36.6" y="727.6" textLength="85.4" clip-path="url(#terminal-2950431877-line-29)">-debian</text><text class="terminal-2950431877-r5" x="122" y="727.6" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-2950431877-r4" x="0" y="752" textLength="1464" clip-path="url(#terminal-2950431877-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="752" textLength="12.2" clip-path="url(#terminal-2950431877-line-30)">
+</text><text class="terminal-2950431877-r4" x="0" y="776.4" textLength="24.4" clip-path="url(#terminal-2950431877-line-31)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="776.4" textLength="1415.2" clip-path="url(#terminal-2950431877-line-31)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="776.4" textLength="24.4" clip-path="url(#terminal-295 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-32)">│</text><text class="terminal-2950431877-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-32)">-</text><text class="terminal-2950431877-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-2950431877-line-32)">-verbose</text><text class="terminal-2950431877-r6" x="280.6" y="800.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2950431877-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-33)">│</text><text class="terminal-2950431877-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-33)">-</text><text class="terminal-2950431877-r5" x="36.6" y="825.2" textLength="48.8" clip-path="url(#terminal-2950431877-line-33)">-dry</text><text class="terminal-2950431877-r5" x="85.4" y="825.2" textLength="48.8" clip-path="url(#terminal-29 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-34)">│</text><text class="terminal-2950431877-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-34)">-</text><text class="terminal-2950431877-r5" x="36.6" y="849.6" textLength="85.4" clip-path="url(#terminal-2950431877-line-34)">-github</text><text class="terminal-2950431877-r5" x="122" y="849.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2950431877-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2950431877-line-35)">│</text><text class="terminal-2950431877-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2950431877-line-35)">-</text><text class="terminal-2950431877-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-2950431877-line-35)">-answer</text><text class="terminal-2950431877-r6" x="280.6" y="874" textLength="24.4" clip-path="url(#terminal-295043 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-36)">│</text><text class="terminal-2950431877-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-36)">-</text><text class="terminal-2950431877-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-2950431877-line-36)">-help</text><text class="terminal-2950431877-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#terminal-29 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-2950431877-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-37)">
+</text><text class="terminal-2950431877-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-2950431877-line-38)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-2950431877-line-38)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2950431877-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-39)">│</text><text class="terminal-2950431877-r5" x="24.4" y="971.6" textLength="183" clip-path="url(#terminal-2950431877-line-39)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="971.6" textLength="1207.8" clip-path="url(#terminal-2950431877-line-39)">Enter&#160;breeze.py&#160;environment.&#160;th [...]
+</text><text class="terminal-2950431877-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2950431877-line-40)">│</text><text class="terminal-2950431877-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-2950431877-line-40)">start-airflow&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-2950431877-line-40)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;compon [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-41)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-2950431877-line-41)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-2950431877-line-41)">Joins&#160;the&#160;interactive&#160;s [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-42)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-2950431877-line-42)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-2950431877-line-42)">Stop&#160;running&#160;breeze&#160;env [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-43)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-2950431877-line-43)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-2950431877-line-43)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-44)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-2950431877-line-44)">static-checks&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-2950431877-line-44)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-2950431877-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-2950431877-line-45)">
+</text><text class="terminal-2950431877-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-2950431877-line-46)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-2950431877-line-46)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1142.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-47)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1166.8" textLength="256.2" clip-path="url(#terminal-2950431877-line-47)">docker-compose-tests&#160;</text><text class="terminal-2950431877-r2" x="305" y="1166.8" textLength="1134.6" clip-path="url(#terminal-2950431877-line-47)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-48)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-2950431877-line-48)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-2950431877-line-48)">Run&#16 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-2950431877-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-49)">
+</text><text class="terminal-2950431877-r4" x="0" y="1240" textLength="24.4" clip-path="url(#terminal-2950431877-line-50)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1240" textLength="1415.2" clip-path="url(#terminal-2950431877-line-50)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1240" textLength="24.4" clip-path="url(#t [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-51)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1264.4" textLength="305" clip-path="url(#terminal-2950431877-line-51)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1264.4" textLength="1085.8" clip-path="url(#terminal-2950431877-lin [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-52)">│</text><text class="terminal-2950431877-r2" x="353.8" y="1288.8" textLength="1085.8" clip-path="url(#terminal-2950431877-line-52)">images.&#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-2950431877-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-53)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1313.2" textLength="305" clip-path="url(#terminal-2950431877-line-53)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-2950431877-line-53)">Self&#160;upgrade& [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-54)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1337.6" textLength="305" clip-path="url(#terminal-2950431877-line-54)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-2950431877-line-54)">Enables&#160;autocompletion&#160;of&#160;breeze& [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-2950431877-line-55)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-2950431877-line-55)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-2950431877-line [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-56)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-2950431877-line-56)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-2950431877-line-56)">Check&#160;if&#160;available [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-57)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-2950431877-line-57)">free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-2950431877-line-57)">Free&#16 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-58)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-2950431877-line-58)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-2950431877-line-58)">Fix&#160;ownership&#160 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-59)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1459.6" textLength="305" clip-path="url(#terminal-2950431877-line-59)">regenerate-command-images</text><text class="terminal-2950431877-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-2950431877-line-59)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-2950431877-line-60)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1484" textLength="305" clip-path="url(#terminal-2950431877-line-60)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-2950431877-line-60)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-61)">│</text><text class="terminal-2950431877-r2" x="353.8" y="1508.4" textLength="1085.8" clip-path="url(#terminal-2950431877-line-61)">images&#160;should&#160;be&#160;regenerated).&#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;&#16 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-62)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1532.8" textLength="305" clip-path="url(#terminal-2950431877-line-62)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1532.8" textLength="1085.8" clip-path="url(#terminal-2950431877-lin [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1557.2" textLength="1464" clip-path="url(#terminal-2950431877-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1557.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-63)">
+</text><text class="terminal-2950431877-r4" x="0" y="1581.6" textLength="24.4" clip-path="url(#terminal-2950431877-line-64)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1581.6" textLength="1415.2" clip-path="url(#terminal-2950431877-line-64)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1581.6" textLength="24.4" clip-path="url( [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-2950431877-line-65)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-2950431877-line-65)">build-image&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-2950431877-line-65)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;f [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-66)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1630.4" textLength="170.8" clip-path="url(#terminal-2950431877-line-66)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="219.6" y="1630.4" textLength="1220" clip-path="url(#terminal-2950431877-line-66)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160; [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-67)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1654.8" textLength="170.8" clip-path="url(#terminal-2950431877-line-67)">verify-image&#160;&#160;</text><text class="terminal-2950431877-r2" x="219.6" y="1654.8" textLength="1220" clip-path="url(#terminal-2950431877-line-67)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1679.2" textLength="1464" clip-path="url(#terminal-2950431877-line-68)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1679.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-68)">
+</text><text class="terminal-2950431877-r4" x="0" y="1703.6" textLength="24.4" clip-path="url(#terminal-2950431877-line-69)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1703.6" textLength="1415.2" clip-path="url(#terminal-2950431877-line-69)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1703.6" textLength="24.4" clip-path="url( [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-2950431877-line-70)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1728" textLength="207.4" clip-path="url(#terminal-2950431877-line-70)">build-prod-image&#160;</text><text class="terminal-2950431877-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-2950431877-line-70)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#16 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-71)">│</text><text class="terminal-2950431877-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-2950431877-line-71)">sequentially.&#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-2950431877-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-72)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1776.8" textLength="207.4" clip-path="url(#terminal-2950431877-line-72)">pull-prod-image&#160;&#160;</text><text class="terminal-2950431877-r2" x="256.2" y="1776.8" textLength="1183.4" clip-path="url(#terminal-2950431877-line-72)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#1 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-73)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1801.2" textLength="207.4" clip-path="url(#terminal-2950431877-line-73)">verify-prod-image</text><text class="terminal-2950431877-r2" x="256.2" y="1801.2" textLength="1183.4" clip-path="url(#terminal-2950431877-line-73)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1825.6" textLength="1464" clip-path="url(#terminal-2950431877-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1825.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-74)">
+</text><text class="terminal-2950431877-r4" x="0" y="1850" textLength="24.4" clip-path="url(#terminal-2950431877-line-75)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1850" textLength="1415.2" clip-path="url(#terminal-2950431877-line-75)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1850" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-76)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1874.4" textLength="402.6" clip-path="url(#terminal-2950431877-line-76)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1874.4" textLength="988.2" clip-path="url(#terminal-2950431877-line-76)">Verifies&#160;if&#160;all&#16 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-77)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1898.8" textLength="402.6" clip-path="url(#terminal-2950431877-line-77)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1898.8" textLength="988.2" clip-path="url(#terminal-2950431877-line-77)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&# [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-78)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1923.2" textLength="402.6" clip-path="url(#terminal-2950431877-line-78)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1923.2" textLength="988.2" clip-path="url(#terminal-2950431877-line-78)">Prepare&#160;sdist/whl&#160;packag [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-79)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1947.6" textLength="402.6" clip-path="url(#terminal-2950431877-line-79)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1947.6" textLength="988.2" clip-path="url(#terminal-2950431877-line-79)">Prepare&#160;sdist/whl&# [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-2950431877-line-80)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1972" textLength="402.6" clip-path="url(#terminal-2950431877-line-80)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1972" textLength="988.2" clip-path="url(#terminal-2950431877-line-80)">Release&#1 [...]
+</text><text class="terminal-2950431877-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-81)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1996.4" textLength="402.6" clip-path="url(#terminal-2950431877-line-81)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1996.4" textLength="988.2" clip-path="url(#terminal-2950431877-line-81)">Generates [...]
+</text><text class="terminal-2950431877-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-82)">│</text><text class="terminal-2950431877-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-2950431877-line-82)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-2950431877-line-82)">Finds&#160;which&#160;de [...]
+</text><text class="terminal-2950431877-r4" x="0" y="2045.2" textLength="1464" clip-path="url(#terminal-2950431877-line-83)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="2045.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-83)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-regenerate-command-images.svg b/images/breeze/output-regenerate-command-images.svg
new file mode 100644
index 0000000000..0842e64fa1
--- /dev/null
+++ b/images/breeze/output-regenerate-command-images.svg
@@ -0,0 +1,99 @@
+<svg class="rich-terminal" viewBox="0 0 1482 294.0" xmlns="http://www.w3.org/2000/svg">
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .terminal-311465089-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .terminal-311465089-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .terminal-311465089-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-311465089-r2 { fill: #c5c8c6 }
+.terminal-311465089-r3 { fill: #d0b344;font-weight: bold }
+.terminal-311465089-r4 { fill: #868887 }
+.terminal-311465089-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-311465089-r6 { fill: #98a84b;font-weight: bold }
+    </style>
+
+    <defs>
+    <clipPath id="terminal-311465089-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="243.0" />
+    </clipPath>
+    <clipPath id="terminal-311465089-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-311465089-line-8">
+    <rect x="0" y="196.7" 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="292" rx="8"/><text class="terminal-311465089-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;regenerate-command-images</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-311465089-clip-terminal)">
+    
+    <g class="terminal-311465089-matrix">
+    <text class="terminal-311465089-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-311465089-line-0)">
+</text><text class="terminal-311465089-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-311465089-line-1)">Usage:&#160;</text><text class="terminal-311465089-r1" x="97.6" y="44.4" textLength="512.4" clip-path="url(#terminal-311465089-line-1)">breeze&#160;regenerate-command-images&#160;[OPTIONS]</text><text class="terminal-311465089-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-311465089-line-1)">
+</text><text class="terminal-311465089-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-311465089-line-2)">
+</text><text class="terminal-311465089-r2" x="12.2" y="93.2" textLength="402.6" clip-path="url(#terminal-311465089-line-3)">Regenerate&#160;breeze&#160;command&#160;images.</text><text class="terminal-311465089-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-311465089-line-3)">
+</text><text class="terminal-311465089-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-311465089-line-4)">
+</text><text class="terminal-311465089-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-311465089-line-5)">╭─</text><text class="terminal-311465089-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-311465089-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-311465089-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-311465089-line-5 [...]
+</text><text class="terminal-311465089-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-311465089-line-6)">│</text><text class="terminal-311465089-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-311465089-line-6)">-</text><text class="terminal-311465089-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-311465089-line-6)">-verbose</text><text class="terminal-311465089-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal-3114650 [...]
+</text><text class="terminal-311465089-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-311465089-line-7)">│</text><text class="terminal-311465089-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-311465089-line-7)">-</text><text class="terminal-311465089-r5" x="36.6" y="190.8" textLength="48.8" clip-path="url(#terminal-311465089-line-7)">-dry</text><text class="terminal-311465089-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-311465089-li [...]
+</text><text class="terminal-311465089-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-311465089-line-8)">│</text><text class="terminal-311465089-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-311465089-line-8)">-</text><text class="terminal-311465089-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-311465089-line-8)">-help</text><text class="terminal-311465089-r6" x="158.6" y="215.2" textLength="24.4" clip-path="url(#terminal-311465089-li [...]
+</text><text class="terminal-311465089-r4" x="0" y="239.6" textLength="1464" clip-path="url(#terminal-311465089-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-311465089-r2" x="1464" y="239.6" textLength="12.2" clip-path="url(#terminal-311465089-line-9)">
+</text>
+    </g>
+    </g>
+</svg>


[airflow] 39/39: Merge-friendly output of command hashes for breeze (#24711)

Posted by po...@apache.org.
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 8e4bb850987762265f66cd5eadbcf04e2898edef
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 28 23:58:01 2022 +0200

    Merge-friendly output of command hashes for breeze (#24711)
    
    We had just one hash generated from all commands in breeze and that
    basically meant that when there were two PRs on two different
    commands in Breeze, they resulted with merge conflict which
    should be solved with `breeze regenerate-command-images`.
    
    This change turns the hash output into a multi-command one - i.e.
    each command has its own hash, which will make it much more
    merge-friendly - i.e. if two PRs will work on two different commands
    the rebase should result with merge rather than conflict.
    
    (cherry picked from commit 94f4f81efb8c424bee8336bf6b8720821e48898a)
---
 images/breeze/output-commands-hash.txt             |  40 +++-
 images/breeze/output-config.svg                    | 108 +++++-----
 images/breeze/output-selective-check.svg           | 104 +++++-----
 images/breeze/output-shell.svg                     | 220 ++++++++++----------
 images/breeze/output-start-airflow.svg             | 228 +++++++++++----------
 images/breeze/output-static-checks.svg             | 228 +++++++++++----------
 .../ci/pre_commit/pre_commit_breeze_cmd_line.py    |  17 +-
 7 files changed, 498 insertions(+), 447 deletions(-)

diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 0af29de136..15b755a6e5 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,10 +2,36 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-<<<<<<< HEAD
-e1bc752aeb5e9c4095bb9d3cbb614252
-||||||| parent of 2fbd750d35 (Add ARM image building for regular PRs (#24664))
-81bb48610ea6c4b13c1fa5d7d7cbd061
-=======
-d382b111fddf3b8c0fd3434fce8aa948
->>>>>>> 2fbd750d35 (Add ARM image building for regular PRs (#24664))
+main:fa4319079b275ce966502346f083f2e3
+build-docs:b4f510db97402e0932f1ed86b37b4330
+build-image:b00ae014f9c45c116e8dd0ea72b61d19
+build-prod-image:4a3950d1a61aeb61218eb45659574139
+cleanup:9a94bd1063296ea86e895f671db0b330
+command-hash-export:83bc6a4a8c60b62da3d0f00e81d2c3ea
+config:92653afc11889e1b78e3a2e38f41107f
+docker-compose-tests:8ae3b6211fd31db81a750d1c6b96ec3d
+exec:e4329909b8b2a610fa4fad5116c4b896
+find-newer-dependencies:5c9c5e568a930960a25ece6039e03e5c
+fix-ownership:596143cc74217f0a90850a554220ea45
+free-space:bb8e7ac63d12ab3ede272a898de2f527
+generate-constraints:a5120e79439f30eb7fbee929dca23156
+prepare-airflow-package:cff9d88ca313db10f3cc464c6798f6be
+prepare-provider-documentation:520ffb789ef7174252c8ed3c710f6ae2
+prepare-provider-packages:ada68a213aef9890e4b3e0b9187e449d
+pull-image:a9bb83372b5da5212f48e2affeedc551
+pull-prod-image:6e8467a2b8c833a392c8bdd65189363e
+regenerate-command-images:4fd2e7ecbfd6eebb18b854f3eb0f29c8
+release-prod-images:8858fe5a13989c7c65a79dc97a880928
+resource-check:0fb929ac3496dbbe97acfe99e35accd7
+selective-check:eb1cf022ae43fa9c737b1647142e5a96
+self-upgrade:b5437c0a1a91533a11ee9d0a9692369c
+setup-autocomplete:355b72dee171c2fcba46fc90ac7c97b0
+shell:ab7955da71048b3a695485c152d06786
+start-airflow:30caa077555bef44e5bdf76dfeca092c
+static-checks:96a0bcc981be838ae32f53e804157ee5
+stop:8ebd8a42f1003495d37b884de5ac7ce6
+tests:ae8d62b505ff8f79bddc202fe9d575e3
+verify-image:a6b3c70957aea96a5d4d261f23359a2d
+verify-prod-image:bf3cf39200e010e3015ef071fd387c6f
+verify-provider-packages:ce22b3617436bbe7f48597b2964b9c32
+version:d11da4c17a23179830079b646160149c
diff --git a/images/breeze/output-config.svg b/images/breeze/output-config.svg
index b196ab3306..4f161b859f 100644
--- a/images/breeze/output-config.svg
+++ b/images/breeze/output-config.svg
@@ -19,125 +19,125 @@
         font-weight: 700;
     }
 
-    .terminal-119432441-matrix {
+    .terminal-1878418540-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-119432441-title {
+    .terminal-1878418540-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-119432441-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-119432441-r2 { fill: #c5c8c6 }
-.terminal-119432441-r3 { fill: #d0b344;font-weight: bold }
-.terminal-119432441-r4 { fill: #868887 }
-.terminal-119432441-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-119432441-r6 { fill: #98a84b;font-weight: bold }
-.terminal-119432441-r7 { fill: #8d7b39 }
+    .terminal-1878418540-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1878418540-r2 { fill: #c5c8c6 }
+.terminal-1878418540-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1878418540-r4 { fill: #868887 }
+.terminal-1878418540-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1878418540-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1878418540-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-119432441-clip-terminal">
+    <clipPath id="terminal-1878418540-clip-terminal">
       <rect x="0" y="0" width="1463.0" height="511.4" />
     </clipPath>
-    <clipPath id="terminal-119432441-line-0">
+    <clipPath id="terminal-1878418540-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-1">
+<clipPath id="terminal-1878418540-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-2">
+<clipPath id="terminal-1878418540-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-3">
+<clipPath id="terminal-1878418540-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-4">
+<clipPath id="terminal-1878418540-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-5">
+<clipPath id="terminal-1878418540-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-6">
+<clipPath id="terminal-1878418540-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-7">
+<clipPath id="terminal-1878418540-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-8">
+<clipPath id="terminal-1878418540-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-9">
+<clipPath id="terminal-1878418540-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-10">
+<clipPath id="terminal-1878418540-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-11">
+<clipPath id="terminal-1878418540-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-12">
+<clipPath id="terminal-1878418540-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-13">
+<clipPath id="terminal-1878418540-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-14">
+<clipPath id="terminal-1878418540-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-15">
+<clipPath id="terminal-1878418540-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-16">
+<clipPath id="terminal-1878418540-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-17">
+<clipPath id="terminal-1878418540-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-18">
+<clipPath id="terminal-1878418540-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-119432441-line-19">
+<clipPath id="terminal-1878418540-line-19">
     <rect x="0" y="465.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="560.4" rx="8"/><text class="terminal-119432441-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;config</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="560.4" rx="8"/><text class="terminal-1878418540-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;config</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-119432441-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1878418540-clip-terminal)">
     
-    <g class="terminal-119432441-matrix">
-    <text class="terminal-119432441-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-119432441-line-0)">
-</text><text class="terminal-119432441-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-119432441-line-1)">Usage:&#160;</text><text class="terminal-119432441-r1" x="97.6" y="44.4" textLength="280.6" clip-path="url(#terminal-119432441-line-1)">breeze&#160;config&#160;[OPTIONS]</text><text class="terminal-119432441-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-119432441-line-1)">
-</text><text class="terminal-119432441-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-119432441-line-2)">
-</text><text class="terminal-119432441-r2" x="12.2" y="93.2" textLength="805.2" clip-path="url(#terminal-119432441-line-3)">Show/update&#160;configuration&#160;(Python,&#160;Backend,&#160;Cheatsheet,&#160;ASCIIART).</text><text class="terminal-119432441-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-119432441-line-3)">
-</text><text class="terminal-119432441-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-119432441-line-4)">
-</text><text class="terminal-119432441-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-119432441-line-5)">╭─</text><text class="terminal-119432441-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-119432441-line-5)">&#160;Config&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-119432441-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-119432441-l [...]
-</text><text class="terminal-119432441-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-119432441-line-6)">│</text><text class="terminal-119432441-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-119432441-line-6)">-</text><text class="terminal-119432441-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-119432441-line-6)">-python</text><text class="terminal-119432441-r6" x="390.4" y="166.4" textLength="24.4" clip-path="url(#terminal-11943244 [...]
-</text><text class="terminal-119432441-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-119432441-line-7)">│</text><text class="terminal-119432441-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-119432441-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;&#16 [...]
-</text><text class="terminal-119432441-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-119432441-line-8)">│</text><text class="terminal-119432441-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-119432441-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;&#160 [...]
-</text><text class="terminal-119432441-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-119432441-line-9)">│</text><text class="terminal-119432441-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-119432441-line-9)">-</text><text class="terminal-119432441-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-119432441-line-9)">-backend</text><text class="terminal-119432441-r6" x="390.4" y="239.6" textLength="24.4" clip-path="url(#terminal-1194324 [...]
-</text><text class="terminal-119432441-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-119432441-line-10)">│</text><text class="terminal-119432441-r4" x="475.8" y="264" textLength="292.8" clip-path="url(#terminal-119432441-line-10)">[default:&#160;sqlite]&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-119432441-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-119432441-line-10)">│</text><text class="terminal-119432441-r2" x="1464" y="2 [...]
-</text><text class="terminal-119432441-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-119432441-line-11)">│</text><text class="terminal-119432441-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-119432441-line-11)">-</text><text class="terminal-119432441-r5" x="36.6" y="288.4" textLength="134.2" clip-path="url(#terminal-119432441-line-11)">-cheatsheet</text><text class="terminal-119432441-r2" x="170.8" y="288.4" textLength="12.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-119432441-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-119432441-line-12)">│</text><text class="terminal-119432441-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-119432441-line-12)">-</text><text class="terminal-119432441-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-119432441-line-12)">-asciiart</text><text class="terminal-119432441-r2" x="146.4" y="312.8" textLength="12.2" clip-path="url(#terminal-11 [...]
-</text><text class="terminal-119432441-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-119432441-line-13)">│</text><text class="terminal-119432441-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-119432441-line-13)">-</text><text class="terminal-119432441-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-119432441-line-13)">-colour</text><text class="terminal-119432441-r2" x="122" y="337.2" textLength="12.2" clip-path="url(#terminal-1194324 [...]
-</text><text class="terminal-119432441-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-119432441-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-119432441-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-119432441-line-14)">
-</text><text class="terminal-119432441-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-119432441-line-15)">╭─</text><text class="terminal-119432441-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-119432441-line-15)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-119432441-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-119432441-line [...]
-</text><text class="terminal-119432441-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-119432441-line-16)">│</text><text class="terminal-119432441-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-119432441-line-16)">-</text><text class="terminal-119432441-r5" x="36.6" y="410.4" textLength="109.8" clip-path="url(#terminal-119432441-line-16)">-postgres</text><text class="terminal-119432441-r5" x="146.4" y="410.4" textLength="97.6" clip-path="url(#terminal-11 [...]
-</text><text class="terminal-119432441-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-119432441-line-17)">│</text><text class="terminal-119432441-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-119432441-line-17)">-</text><text class="terminal-119432441-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-119432441-line-17)">-mysql</text><text class="terminal-119432441-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal-119432 [...]
-</text><text class="terminal-119432441-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-119432441-line-18)">│</text><text class="terminal-119432441-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-119432441-line-18)">-</text><text class="terminal-119432441-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-119432441-line-18)">-mssql</text><text class="terminal-119432441-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal-119432 [...]
-</text><text class="terminal-119432441-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-119432441-line-19)">│</text><text class="terminal-119432441-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-119432441-line-19)">-</text><text class="terminal-119432441-r5" x="36.6" y="483.6" textLength="61" clip-path="url(#terminal-119432441-line-19)">-help</text><text class="terminal-119432441-r6" x="268.4" y="483.6" textLength="24.4" clip-path="url(#terminal-119432441 [...]
-</text><text class="terminal-119432441-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-119432441-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-119432441-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-119432441-line-20)">
+    <g class="terminal-1878418540-matrix">
+    <text class="terminal-1878418540-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1878418540-line-0)">
+</text><text class="terminal-1878418540-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1878418540-line-1)">Usage:&#160;</text><text class="terminal-1878418540-r1" x="97.6" y="44.4" textLength="280.6" clip-path="url(#terminal-1878418540-line-1)">breeze&#160;config&#160;[OPTIONS]</text><text class="terminal-1878418540-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-1)">
+</text><text class="terminal-1878418540-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-2)">
+</text><text class="terminal-1878418540-r2" x="12.2" y="93.2" textLength="805.2" clip-path="url(#terminal-1878418540-line-3)">Show/update&#160;configuration&#160;(Python,&#160;Backend,&#160;Cheatsheet,&#160;ASCIIART).</text><text class="terminal-1878418540-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-3)">
+</text><text class="terminal-1878418540-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-4)">
+</text><text class="terminal-1878418540-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1878418540-line-5)">╭─</text><text class="terminal-1878418540-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1878418540-line-5)">&#160;Config&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1878418540-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-187841 [...]
+</text><text class="terminal-1878418540-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-6)">│</text><text class="terminal-1878418540-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-6)">-</text><text class="terminal-1878418540-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1878418540-line-6)">-python</text><text class="terminal-1878418540-r6" x="390.4" y="166.4" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1878418540-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-7)">│</text><text class="terminal-1878418540-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1878418540-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-1878418540-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-8)">│</text><text class="terminal-1878418540-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1878418540-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-1878418540-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-9)">│</text><text class="terminal-1878418540-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-9)">-</text><text class="terminal-1878418540-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1878418540-line-9)">-backend</text><text class="terminal-1878418540-r6" x="390.4" y="239.6" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1878418540-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1878418540-line-10)">│</text><text class="terminal-1878418540-r4" x="475.8" y="264" textLength="292.8" clip-path="url(#terminal-1878418540-line-10)">[default:&#160;sqlite]&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1878418540-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-1878418540-line-10)">│</text><text class="terminal-1878418540-r2" x="146 [...]
+</text><text class="terminal-1878418540-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-11)">│</text><text class="terminal-1878418540-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-11)">-</text><text class="terminal-1878418540-r5" x="36.6" y="288.4" textLength="134.2" clip-path="url(#terminal-1878418540-line-11)">-cheatsheet</text><text class="terminal-1878418540-r2" x="170.8" y="288.4" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-1878418540-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-12)">│</text><text class="terminal-1878418540-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-12)">-</text><text class="terminal-1878418540-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-1878418540-line-12)">-asciiart</text><text class="terminal-1878418540-r2" x="146.4" y="312.8" textLength="12.2" clip-path="url(#term [...]
+</text><text class="terminal-1878418540-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-13)">│</text><text class="terminal-1878418540-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-13)">-</text><text class="terminal-1878418540-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-1878418540-line-13)">-colour</text><text class="terminal-1878418540-r2" x="122" y="337.2" textLength="12.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1878418540-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-1878418540-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1878418540-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-14)">
+</text><text class="terminal-1878418540-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-1878418540-line-15)">╭─</text><text class="terminal-1878418540-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-1878418540-line-15)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1878418540-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-187841854 [...]
+</text><text class="terminal-1878418540-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-16)">│</text><text class="terminal-1878418540-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1878418540-line-16)">-</text><text class="terminal-1878418540-r5" x="36.6" y="410.4" textLength="109.8" clip-path="url(#terminal-1878418540-line-16)">-postgres</text><text class="terminal-1878418540-r5" x="146.4" y="410.4" textLength="97.6" clip-path="url(#term [...]
+</text><text class="terminal-1878418540-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-17)">│</text><text class="terminal-1878418540-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1878418540-line-17)">-</text><text class="terminal-1878418540-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-1878418540-line-17)">-mysql</text><text class="terminal-1878418540-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1878418540-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-18)">│</text><text class="terminal-1878418540-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-1878418540-line-18)">-</text><text class="terminal-1878418540-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-1878418540-line-18)">-mssql</text><text class="terminal-1878418540-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1878418540-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-19)">│</text><text class="terminal-1878418540-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1878418540-line-19)">-</text><text class="terminal-1878418540-r5" x="36.6" y="483.6" textLength="61" clip-path="url(#terminal-1878418540-line-19)">-help</text><text class="terminal-1878418540-r6" x="268.4" y="483.6" textLength="24.4" clip-path="url(#terminal-18 [...]
+</text><text class="terminal-1878418540-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1878418540-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1878418540-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1878418540-line-20)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-selective-check.svg b/images/breeze/output-selective-check.svg
index 67bc6c5253..45a7740819 100644
--- a/images/breeze/output-selective-check.svg
+++ b/images/breeze/output-selective-check.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,113 +19,117 @@
         font-weight: 700;
     }
 
-    .terminal-417995322-matrix {
+    .terminal-2108240815-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-417995322-title {
+    .terminal-2108240815-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-417995322-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-417995322-r2 { fill: #c5c8c6 }
-.terminal-417995322-r3 { fill: #d0b344;font-weight: bold }
-.terminal-417995322-r4 { fill: #868887 }
-.terminal-417995322-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-417995322-r6 { fill: #8d7b39 }
-.terminal-417995322-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-2108240815-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2108240815-r2 { fill: #c5c8c6 }
+.terminal-2108240815-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2108240815-r4 { fill: #868887 }
+.terminal-2108240815-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2108240815-r6 { fill: #8d7b39 }
+.terminal-2108240815-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-417995322-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="438.2" />
+    <clipPath id="terminal-2108240815-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
     </clipPath>
-    <clipPath id="terminal-417995322-line-0">
+    <clipPath id="terminal-2108240815-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-1">
+<clipPath id="terminal-2108240815-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-2">
+<clipPath id="terminal-2108240815-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-3">
+<clipPath id="terminal-2108240815-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-4">
+<clipPath id="terminal-2108240815-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-5">
+<clipPath id="terminal-2108240815-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-6">
+<clipPath id="terminal-2108240815-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-7">
+<clipPath id="terminal-2108240815-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-8">
+<clipPath id="terminal-2108240815-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-9">
+<clipPath id="terminal-2108240815-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-10">
+<clipPath id="terminal-2108240815-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-11">
+<clipPath id="terminal-2108240815-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-12">
+<clipPath id="terminal-2108240815-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-13">
+<clipPath id="terminal-2108240815-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-14">
+<clipPath id="terminal-2108240815-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-15">
+<clipPath id="terminal-2108240815-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-417995322-line-16">
+<clipPath id="terminal-2108240815-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2108240815-line-17">
+    <rect x="0" y="416.3" 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="487.2" rx="8"/><text class="terminal-417995322-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;selective-check</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="terminal-2108240815-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;selective-check</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-417995322-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2108240815-clip-terminal)">
     
-    <g class="terminal-417995322-matrix">
-    <text class="terminal-417995322-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-417995322-line-0)">
-</text><text class="terminal-417995322-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-417995322-line-1)">Usage:&#160;</text><text class="terminal-417995322-r1" x="97.6" y="44.4" textLength="390.4" clip-path="url(#terminal-417995322-line-1)">breeze&#160;selective-check&#160;[OPTIONS]</text><text class="terminal-417995322-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-417995322-line-1)">
-</text><text class="terminal-417995322-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-417995322-line-2)">
-</text><text class="terminal-417995322-r2" x="12.2" y="93.2" textLength="768.6" clip-path="url(#terminal-417995322-line-3)">Checks&#160;what&#160;kind&#160;of&#160;tests&#160;should&#160;be&#160;run&#160;for&#160;an&#160;incoming&#160;commit.</text><text class="terminal-417995322-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-417995322-line-3)">
-</text><text class="terminal-417995322-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-417995322-line-4)">
-</text><text class="terminal-417995322-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-417995322-line-5)">╭─</text><text class="terminal-417995322-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-417995322-line-5)">&#160;Selective&#160;check&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-417995322-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-417995 [...]
-</text><text class="terminal-417995322-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-417995322-line-6)">│</text><text class="terminal-417995322-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-417995322-line-6)">-</text><text class="terminal-417995322-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-417995322-line-6)">-commit</text><text class="terminal-417995322-r5" x="122" y="166.4" textLength="48.8" clip-path="url(#terminal-417995322- [...]
-</text><text class="terminal-417995322-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-417995322-line-7)">│</text><text class="terminal-417995322-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-417995322-line-7)">-</text><text class="terminal-417995322-r5" x="36.6" y="190.8" textLength="36.6" clip-path="url(#terminal-417995322-line-7)">-pr</text><text class="terminal-417995322-r5" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-417995322-lin [...]
-</text><text class="terminal-417995322-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-417995322-line-8)">│</text><text class="terminal-417995322-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-417995322-line-8)">-</text><text class="terminal-417995322-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-417995322-line-8)">-default</text><text class="terminal-417995322-r5" x="134.2" y="215.2" textLength="85.4" clip-path="url(#terminal-4179953 [...]
-</text><text class="terminal-417995322-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-417995322-line-9)">│</text><text class="terminal-417995322-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-417995322-line-9)">-</text><text class="terminal-417995322-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-417995322-line-9)">-github</text><text class="terminal-417995322-r5" x="122" y="239.6" textLength="134.2" clip-path="url(#terminal-417995322 [...]
-</text><text class="terminal-417995322-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-417995322-line-10)">│</text><text class="terminal-417995322-r6" x="305" y="264" textLength="1110.2" clip-path="url(#terminal-417995322-line-10)">(pull_request&#160;|&#160;pull_request_review&#160;|&#160;pull_request_target&#160;|&#160;push&#160;|&#160;schedule&#160;|&#160;workflow_run)</text><text class="terminal-417995322-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-417995322-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-417995322-line-11)">│</text><text class="terminal-417995322-r4" x="305" y="288.4" textLength="1110.2" clip-path="url(#terminal-417995322-line-11)">[default:&#160;pull_request]&#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-417995322-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-417995322-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-417995322-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-417995322-line-12)">
-</text><text class="terminal-417995322-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-417995322-line-13)">╭─</text><text class="terminal-417995322-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-417995322-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-417995322-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-41799532 [...]
-</text><text class="terminal-417995322-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-417995322-line-14)">│</text><text class="terminal-417995322-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-417995322-line-14)">-</text><text class="terminal-417995322-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-417995322-line-14)">-verbose</text><text class="terminal-417995322-r7" x="158.6" y="361.6" textLength="24.4" clip-path="url(#terminal-4179 [...]
-</text><text class="terminal-417995322-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-417995322-line-15)">│</text><text class="terminal-417995322-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-417995322-line-15)">-</text><text class="terminal-417995322-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-417995322-line-15)">-dry</text><text class="terminal-417995322-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-417995322-line-15 [...]
-</text><text class="terminal-417995322-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-417995322-line-16)">│</text><text class="terminal-417995322-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-417995322-line-16)">-</text><text class="terminal-417995322-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-417995322-line-16)">-help</text><text class="terminal-417995322-r7" x="158.6" y="410.4" textLength="24.4" clip-path="url(#terminal-417995322 [...]
-</text><text class="terminal-417995322-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-417995322-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-417995322-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-417995322-line-17)">
+    <g class="terminal-2108240815-matrix">
+    <text class="terminal-2108240815-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2108240815-line-0)">
+</text><text class="terminal-2108240815-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2108240815-line-1)">Usage:&#160;</text><text class="terminal-2108240815-r1" x="97.6" y="44.4" textLength="390.4" clip-path="url(#terminal-2108240815-line-1)">breeze&#160;selective-check&#160;[OPTIONS]</text><text class="terminal-2108240815-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2108240815-line-1)">
+</text><text class="terminal-2108240815-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2108240815-line-2)">
+</text><text class="terminal-2108240815-r2" x="12.2" y="93.2" textLength="768.6" clip-path="url(#terminal-2108240815-line-3)">Checks&#160;what&#160;kind&#160;of&#160;tests&#160;should&#160;be&#160;run&#160;for&#160;an&#160;incoming&#160;commit.</text><text class="terminal-2108240815-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2108240815-line-3)">
+</text><text class="terminal-2108240815-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2108240815-line-4)">
+</text><text class="terminal-2108240815-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2108240815-line-5)">╭─</text><text class="terminal-2108240815-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2108240815-line-5)">&#160;Selective&#160;check&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2108240815-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2108240815-line-6)">│</text><text class="terminal-2108240815-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2108240815-line-6)">-</text><text class="terminal-2108240815-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2108240815-line-6)">-commit</text><text class="terminal-2108240815-r5" x="122" y="166.4" textLength="48.8" clip-path="url(#terminal-210 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2108240815-line-7)">│</text><text class="terminal-2108240815-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2108240815-line-7)">-</text><text class="terminal-2108240815-r5" x="36.6" y="190.8" textLength="36.6" clip-path="url(#terminal-2108240815-line-7)">-pr</text><text class="terminal-2108240815-r5" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-210824 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2108240815-line-8)">│</text><text class="terminal-2108240815-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2108240815-line-8)">-</text><text class="terminal-2108240815-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-2108240815-line-8)">-default</text><text class="terminal-2108240815-r5" x="134.2" y="215.2" textLength="85.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2108240815-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2108240815-line-9)">│</text><text class="terminal-2108240815-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2108240815-line-9)">-</text><text class="terminal-2108240815-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-2108240815-line-9)">-github</text><text class="terminal-2108240815-r5" x="122" y="239.6" textLength="134.2" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2108240815-line-10)">│</text><text class="terminal-2108240815-r6" x="305" y="264" textLength="1134.6" clip-path="url(#terminal-2108240815-line-10)">(pull_request&#160;|&#160;pull_request_review&#160;|&#160;pull_request_target&#160;|&#160;pull_request_workflow&#160;|&#160;push&#160;|&#160;&#160;&#160;</text><text class="terminal-2108240815-r4" x="1451.8" y="264" textLength="12.2" clip-path [...]
+</text><text class="terminal-2108240815-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2108240815-line-11)">│</text><text class="terminal-2108240815-r6" x="305" y="288.4" textLength="1134.6" clip-path="url(#terminal-2108240815-line-11)">schedule&#160;|&#160;workflow_run)&#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-2108240815-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2108240815-line-12)">│</text><text class="terminal-2108240815-r4" x="305" y="312.8" textLength="1134.6" clip-path="url(#terminal-2108240815-line-12)">[default:&#160;pull_request]&#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-2108240815-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-2108240815-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2108240815-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-2108240815-line-13)">
+</text><text class="terminal-2108240815-r4" x="0" y="361.6" textLength="24.4" clip-path="url(#terminal-2108240815-line-14)">╭─</text><text class="terminal-2108240815-r4" x="24.4" y="361.6" textLength="1415.2" clip-path="url(#terminal-2108240815-line-14)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2108240815-r4" x="1439.6" y="361.6" textLength="24.4" clip-path="url(#terminal-210 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2108240815-line-15)">│</text><text class="terminal-2108240815-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2108240815-line-15)">-</text><text class="terminal-2108240815-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-2108240815-line-15)">-verbose</text><text class="terminal-2108240815-r7" x="158.6" y="386" textLength="24.4" clip-path="url(#terminal-21082 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2108240815-line-16)">│</text><text class="terminal-2108240815-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2108240815-line-16)">-</text><text class="terminal-2108240815-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-2108240815-line-16)">-dry</text><text class="terminal-2108240815-r5" x="85.4" y="410.4" textLength="48.8" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2108240815-line-17)">│</text><text class="terminal-2108240815-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2108240815-line-17)">-</text><text class="terminal-2108240815-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-2108240815-line-17)">-help</text><text class="terminal-2108240815-r7" x="158.6" y="434.8" textLength="24.4" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2108240815-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-2108240815-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2108240815-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-2108240815-line-18)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-shell.svg b/images/breeze/output-shell.svg
index 415b1b09c2..86ab4cc408 100644
--- a/images/breeze/output-shell.svg
+++ b/images/breeze/output-shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1196.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,229 +19,233 @@
         font-weight: 700;
     }
 
-    .terminal-2380684201-matrix {
+    .terminal-3611262244-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2380684201-title {
+    .terminal-3611262244-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2380684201-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2380684201-r2 { fill: #c5c8c6 }
-.terminal-2380684201-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2380684201-r4 { fill: #868887 }
-.terminal-2380684201-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2380684201-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2380684201-r7 { fill: #8d7b39 }
+    .terminal-3611262244-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3611262244-r2 { fill: #c5c8c6 }
+.terminal-3611262244-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3611262244-r4 { fill: #868887 }
+.terminal-3611262244-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3611262244-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3611262244-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2380684201-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1145.8" />
+    <clipPath id="terminal-3611262244-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
     </clipPath>
-    <clipPath id="terminal-2380684201-line-0">
+    <clipPath id="terminal-3611262244-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-1">
+<clipPath id="terminal-3611262244-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-2">
+<clipPath id="terminal-3611262244-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-3">
+<clipPath id="terminal-3611262244-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-4">
+<clipPath id="terminal-3611262244-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-5">
+<clipPath id="terminal-3611262244-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-6">
+<clipPath id="terminal-3611262244-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-7">
+<clipPath id="terminal-3611262244-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-8">
+<clipPath id="terminal-3611262244-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-9">
+<clipPath id="terminal-3611262244-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-10">
+<clipPath id="terminal-3611262244-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-11">
+<clipPath id="terminal-3611262244-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-12">
+<clipPath id="terminal-3611262244-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-13">
+<clipPath id="terminal-3611262244-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-14">
+<clipPath id="terminal-3611262244-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-15">
+<clipPath id="terminal-3611262244-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-16">
+<clipPath id="terminal-3611262244-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-17">
+<clipPath id="terminal-3611262244-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-18">
+<clipPath id="terminal-3611262244-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-19">
+<clipPath id="terminal-3611262244-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-20">
+<clipPath id="terminal-3611262244-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-21">
+<clipPath id="terminal-3611262244-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-22">
+<clipPath id="terminal-3611262244-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-23">
+<clipPath id="terminal-3611262244-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-24">
+<clipPath id="terminal-3611262244-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-25">
+<clipPath id="terminal-3611262244-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-26">
+<clipPath id="terminal-3611262244-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-27">
+<clipPath id="terminal-3611262244-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-28">
+<clipPath id="terminal-3611262244-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-29">
+<clipPath id="terminal-3611262244-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-30">
+<clipPath id="terminal-3611262244-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-31">
+<clipPath id="terminal-3611262244-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-32">
+<clipPath id="terminal-3611262244-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-33">
+<clipPath id="terminal-3611262244-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-34">
+<clipPath id="terminal-3611262244-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-35">
+<clipPath id="terminal-3611262244-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-36">
+<clipPath id="terminal-3611262244-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-37">
+<clipPath id="terminal-3611262244-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-38">
+<clipPath id="terminal-3611262244-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-39">
+<clipPath id="terminal-3611262244-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-40">
+<clipPath id="terminal-3611262244-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-41">
+<clipPath id="terminal-3611262244-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-42">
+<clipPath id="terminal-3611262244-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-43">
+<clipPath id="terminal-3611262244-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-44">
+<clipPath id="terminal-3611262244-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2380684201-line-45">
+<clipPath id="terminal-3611262244-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-3611262244-line-46">
+    <rect x="0" y="1123.9" 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="1194.8" rx="8"/><text class="terminal-2380684201-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1219.2" rx="8"/><text class="terminal-3611262244-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</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-2380684201-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3611262244-clip-terminal)">
     
-    <g class="terminal-2380684201-matrix">
-    <text class="terminal-2380684201-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2380684201-line-0)">
-</text><text class="terminal-2380684201-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2380684201-line-1)">Usage:&#160;</text><text class="terminal-2380684201-r1" x="97.6" y="44.4" textLength="463.6" clip-path="url(#terminal-2380684201-line-1)">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-2380684201-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-1)">
-</text><text class="terminal-2380684201-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-2)">
-</text><text class="terminal-2380684201-r2" x="12.2" y="93.2" textLength="1061.4" clip-path="url(#terminal-2380684201-line-3)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="terminal-2380684201-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-3)">
-</text><text class="terminal-2380684201-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-4)">
-</text><text class="terminal-2380684201-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2380684201-line-5)">╭─</text><text class="terminal-2380684201-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2380684201-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2380684201-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-238068 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-6)">│</text><text class="terminal-2380684201-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-6)">-</text><text class="terminal-2380684201-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2380684201-line-6)">-python</text><text class="terminal-2380684201-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-238 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-7)">│</text><text class="terminal-2380684201-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-2380684201-line-7)">[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-2380684201-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-8)">│</text><text class="terminal-2380684201-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-8)">-</text><text class="terminal-2380684201-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-2380684201-line-8)">-backend</text><text class="terminal-2380684201-r6" x="305" y="215.2" textLength="24.4" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-9)">│</text><text class="terminal-2380684201-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-9)">-</text><text class="terminal-2380684201-r5" x="36.6" y="239.6" textLength="109.8" clip-path="url(#terminal-2380684201-line-9)">-postgres</text><text class="terminal-2380684201-r5" x="146.4" y="239.6" textLength="97.6" clip-path="url(#termina [...]
-</text><text class="terminal-2380684201-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2380684201-line-10)">│</text><text class="terminal-2380684201-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2380684201-line-10)">-</text><text class="terminal-2380684201-r5" x="36.6" y="264" textLength="73.2" clip-path="url(#terminal-2380684201-line-10)">-mysql</text><text class="terminal-2380684201-r5" x="109.8" y="264" textLength="97.6" clip-path="url(#terminal-2380684 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-11)">│</text><text class="terminal-2380684201-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-11)">-</text><text class="terminal-2380684201-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-2380684201-line-11)">-mssql</text><text class="terminal-2380684201-r5" x="109.8" y="288.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2380684201-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-12)">│</text><text class="terminal-2380684201-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-12)">-</text><text class="terminal-2380684201-r5" x="36.6" y="312.8" textLength="146.4" clip-path="url(#terminal-2380684201-line-12)">-integration</text><text class="terminal-2380684201-r2" x="353.8" y="312.8" textLength="1085.8" clip-path="url( [...]
-</text><text class="terminal-2380684201-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-13)">│</text><text class="terminal-2380684201-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#terminal-2380684201-line-13)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2380684201-r4" x="1 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-14)">│</text><text class="terminal-2380684201-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#terminal-2380684201-line-14)">all)&#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-2380684201-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2380684201-line-15)">│</text><text class="terminal-2380684201-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2380684201-line-15)">-</text><text class="terminal-2380684201-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-2380684201-line-15)">-forward</text><text class="terminal-2380684201-r5" x="134.2" y="386" textLength="146.4" clip-path="url(#terminal-2380 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-16)">│</text><text class="terminal-2380684201-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-16)">-</text><text class="terminal-2380684201-r5" x="36.6" y="410.4" textLength="36.6" clip-path="url(#terminal-2380684201-line-16)">-db</text><text class="terminal-2380684201-r5" x="73.2" y="410.4" textLength="73.2" clip-path="url(#terminal-238 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-2380684201-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2380684201-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-17)">
-</text><text class="terminal-2380684201-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-2380684201-line-18)">╭─</text><text class="terminal-2380684201-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-2380684201-line-18)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2380684201-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-2380684201-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-19)">│</text><text class="terminal-2380684201-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-19)">-</text><text class="terminal-2380684201-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-2380684201-line-19)">-use</text><text class="terminal-2380684201-r5" x="85.4" y="483.6" textLength="195.2" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2380684201-line-20)">│</text><text class="terminal-2380684201-r2" x="390.4" y="508" textLength="1049.2" clip-path="url(#terminal-2380684201-line-20)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-2380684201-r4" x="1451.8" y="508" textLength="12.2" clip-path [...]
-</text><text class="terminal-2380684201-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-21)">│</text><text class="terminal-2380684201-r2" x="390.4" y="532.4" textLength="573.4" clip-path="url(#terminal-2380684201-line-21)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2380684201-r5" x="963.8" y="532.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-21)">-</text><text class="terminal-238 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-22)">│</text><text class="terminal-2380684201-r7" x="390.4" y="556.8" textLength="1049.2" clip-path="url(#terminal-2380684201-line-22)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2380684201-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-23)">│</text><text class="terminal-2380684201-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-23)">-</text><text class="terminal-2380684201-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-2380684201-line-23)">-airflow</text><text class="terminal-2380684201-r5" x="134.2" y="581.2" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2380684201-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-24)">│</text><text class="terminal-2380684201-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-24)">-</text><text class="terminal-2380684201-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-2380684201-line-24)">-use</text><text class="terminal-2380684201-r5" x="85.4" y="605.6" textLength="231.8" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2380684201-line-25)">│</text><text class="terminal-2380684201-r2" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-2380684201-line-25)">entering&#160;breeze.&#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;&#16 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-26)">│</text><text class="terminal-2380684201-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-26)">-</text><text class="terminal-2380684201-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2380684201-line-26)">-package</text><text class="terminal-2380684201-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2380684201-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-27)">│</text><text class="terminal-2380684201-r4" x="390.4" y="678.8" textLength="658.8" clip-path="url(#terminal-2380684201-line-27)">[default:&#160;wheel]&#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-2380684201-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-28)">│</text><text class="terminal-2380684201-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-28)">-</text><text class="terminal-2380684201-r5" x="36.6" y="703.2" textLength="73.2" clip-path="url(#terminal-2380684201-line-28)">-force</text><text class="terminal-2380684201-r5" x="109.8" y="703.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2380684201-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-29)">│</text><text class="terminal-2380684201-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-29)">-</text><text class="terminal-2380684201-r5" x="36.6" y="727.6" textLength="73.2" clip-path="url(#terminal-2380684201-line-29)">-image</text><text class="terminal-2380684201-r5" x="109.8" y="727.6" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2380684201-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2380684201-line-30)">│</text><text class="terminal-2380684201-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-2380684201-line-30)">-</text><text class="terminal-2380684201-r5" x="36.6" y="752" textLength="73.2" clip-path="url(#terminal-2380684201-line-30)">-mount</text><text class="terminal-2380684201-r5" x="109.8" y="752" textLength="97.6" clip-path="url(#terminal-2380684 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-31)">│</text><text class="terminal-2380684201-r2" x="390.4" y="776.4" textLength="1049.2" clip-path="url(#terminal-2380684201-line-31)">selected).&#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-2380684201-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-32)">│</text><text class="terminal-2380684201-r7" x="390.4" y="800.8" textLength="1049.2" clip-path="url(#terminal-2380684201-line-32)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-2380684201-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-33)">│</text><text class="terminal-2380684201-r4" x="390.4" y="825.2" textLength="1049.2" clip-path="url(#terminal-2380684201-line-33)">[default:&#160;selected]&#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-2380684201-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-34)">│</text><text class="terminal-2380684201-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-34)">-</text><text class="terminal-2380684201-r5" x="36.6" y="849.6" textLength="85.4" clip-path="url(#terminal-2380684201-line-34)">-debian</text><text class="terminal-2380684201-r5" x="122" y="849.6" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-2380684201-r4" x="0" y="874" textLength="1464" clip-path="url(#terminal-2380684201-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2380684201-r2" x="1464" y="874" textLength="12.2" clip-path="url(#terminal-2380684201-line-35)">
-</text><text class="terminal-2380684201-r4" x="0" y="898.4" textLength="24.4" clip-path="url(#terminal-2380684201-line-36)">╭─</text><text class="terminal-2380684201-r4" x="24.4" y="898.4" textLength="1415.2" clip-path="url(#terminal-2380684201-line-36)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2380684201-r4" x="1439.6" y="898.4" textLength="24.4" clip-path="url(#terminal-238 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-37)">│</text><text class="terminal-2380684201-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-37)">-</text><text class="terminal-2380684201-r5" x="36.6" y="922.8" textLength="97.6" clip-path="url(#terminal-2380684201-line-37)">-verbose</text><text class="terminal-2380684201-r6" x="427" y="922.8" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-2380684201-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-38)">│</text><text class="terminal-2380684201-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-38)">-</text><text class="terminal-2380684201-r5" x="36.6" y="947.2" textLength="48.8" clip-path="url(#terminal-2380684201-line-38)">-dry</text><text class="terminal-2380684201-r5" x="85.4" y="947.2" textLength="48.8" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-39)">│</text><text class="terminal-2380684201-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-39)">-</text><text class="terminal-2380684201-r5" x="36.6" y="971.6" textLength="85.4" clip-path="url(#terminal-2380684201-line-39)">-github</text><text class="terminal-2380684201-r5" x="122" y="971.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2380684201-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2380684201-line-40)">│</text><text class="terminal-2380684201-r4" x="475.8" y="996" textLength="585.6" clip-path="url(#terminal-2380684201-line-40)">[default:&#160;apache/airflow]&#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-2380684201-r4" x="1451.8" y="996" textLength= [...]
-</text><text class="terminal-2380684201-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-41)">│</text><text class="terminal-2380684201-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-41)">-</text><text class="terminal-2380684201-r5" x="36.6" y="1020.4" textLength="97.6" clip-path="url(#terminal-2380684201-line-41)">-airflow</text><text class="terminal-2380684201-r5" x="134.2" y="1020.4" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-2380684201-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2380684201-line-42)">│</text><text class="terminal-2380684201-r2" x="475.8" y="1044.8" textLength="963.8" clip-path="url(#terminal-2380684201-line-42)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-2380684201-r4" x="1451.8" y="1044.8" textLength="12.2" clip-pat [...]
-</text><text class="terminal-2380684201-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2380684201-line-43)">│</text><text class="terminal-2380684201-r7" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#terminal-2380684201-line-43)">(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;&# [...]
-</text><text class="terminal-2380684201-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-44)">│</text><text class="terminal-2380684201-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-2380684201-line-44)">-</text><text class="terminal-2380684201-r5" x="36.6" y="1093.6" textLength="85.4" clip-path="url(#terminal-2380684201-line-44)">-answer</text><text class="terminal-2380684201-r6" x="427" y="1093.6" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-2380684201-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2380684201-line-45)">│</text><text class="terminal-2380684201-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-2380684201-line-45)">-</text><text class="terminal-2380684201-r5" x="36.6" y="1118" textLength="61" clip-path="url(#terminal-2380684201-line-45)">-help</text><text class="terminal-2380684201-r6" x="427" y="1118" textLength="24.4" clip-path="url(#terminal-23806842 [...]
-</text><text class="terminal-2380684201-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-2380684201-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2380684201-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-2380684201-line-46)">
+    <g class="terminal-3611262244-matrix">
+    <text class="terminal-3611262244-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3611262244-line-0)">
+</text><text class="terminal-3611262244-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3611262244-line-1)">Usage:&#160;</text><text class="terminal-3611262244-r1" x="97.6" y="44.4" textLength="463.6" clip-path="url(#terminal-3611262244-line-1)">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-3611262244-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-1)">
+</text><text class="terminal-3611262244-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-2)">
+</text><text class="terminal-3611262244-r2" x="12.2" y="93.2" textLength="1061.4" clip-path="url(#terminal-3611262244-line-3)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="terminal-3611262244-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-3)">
+</text><text class="terminal-3611262244-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-4)">
+</text><text class="terminal-3611262244-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3611262244-line-5)">╭─</text><text class="terminal-3611262244-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3611262244-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3611262244-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-361126 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-6)">│</text><text class="terminal-3611262244-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-6)">-</text><text class="terminal-3611262244-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3611262244-line-6)">-python</text><text class="terminal-3611262244-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-361 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-7)">│</text><text class="terminal-3611262244-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-3611262244-line-7)">[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-3611262244-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-8)">│</text><text class="terminal-3611262244-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-8)">-</text><text class="terminal-3611262244-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-3611262244-line-8)">-backend</text><text class="terminal-3611262244-r6" x="305" y="215.2" textLength="24.4" clip-path="url(#terminal-36 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-9)">│</text><text class="terminal-3611262244-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-9)">-</text><text class="terminal-3611262244-r5" x="36.6" y="239.6" textLength="109.8" clip-path="url(#terminal-3611262244-line-9)">-postgres</text><text class="terminal-3611262244-r5" x="146.4" y="239.6" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-3611262244-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3611262244-line-10)">│</text><text class="terminal-3611262244-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3611262244-line-10)">-</text><text class="terminal-3611262244-r5" x="36.6" y="264" textLength="73.2" clip-path="url(#terminal-3611262244-line-10)">-mysql</text><text class="terminal-3611262244-r5" x="109.8" y="264" textLength="97.6" clip-path="url(#terminal-3611262 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-11)">│</text><text class="terminal-3611262244-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-11)">-</text><text class="terminal-3611262244-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-3611262244-line-11)">-mssql</text><text class="terminal-3611262244-r5" x="109.8" y="288.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3611262244-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-12)">│</text><text class="terminal-3611262244-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-12)">-</text><text class="terminal-3611262244-r5" x="36.6" y="312.8" textLength="146.4" clip-path="url(#terminal-3611262244-line-12)">-integration</text><text class="terminal-3611262244-r2" x="353.8" y="312.8" textLength="1085.8" clip-path="url( [...]
+</text><text class="terminal-3611262244-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-13)">│</text><text class="terminal-3611262244-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#terminal-3611262244-line-13)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-3611262244-r4" x="1 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-14)">│</text><text class="terminal-3611262244-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#terminal-3611262244-line-14)">all)&#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-3611262244-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3611262244-line-15)">│</text><text class="terminal-3611262244-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3611262244-line-15)">-</text><text class="terminal-3611262244-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-3611262244-line-15)">-forward</text><text class="terminal-3611262244-r5" x="134.2" y="386" textLength="146.4" clip-path="url(#terminal-3611 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-16)">│</text><text class="terminal-3611262244-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-16)">-</text><text class="terminal-3611262244-r5" x="36.6" y="410.4" textLength="36.6" clip-path="url(#terminal-3611262244-line-16)">-db</text><text class="terminal-3611262244-r5" x="73.2" y="410.4" textLength="73.2" clip-path="url(#terminal-361 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3611262244-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3611262244-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-17)">
+</text><text class="terminal-3611262244-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-3611262244-line-18)">╭─</text><text class="terminal-3611262244-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-3611262244-line-18)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3611262244-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-3611262244-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-19)">│</text><text class="terminal-3611262244-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-19)">-</text><text class="terminal-3611262244-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-3611262244-line-19)">-use</text><text class="terminal-3611262244-r5" x="85.4" y="483.6" textLength="195.2" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3611262244-line-20)">│</text><text class="terminal-3611262244-r2" x="390.4" y="508" textLength="1049.2" clip-path="url(#terminal-3611262244-line-20)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-3611262244-r4" x="1451.8" y="508" textLength="12.2" clip-path [...]
+</text><text class="terminal-3611262244-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-21)">│</text><text class="terminal-3611262244-r2" x="390.4" y="532.4" textLength="573.4" clip-path="url(#terminal-3611262244-line-21)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-3611262244-r5" x="963.8" y="532.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-21)">-</text><text class="terminal-361 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-22)">│</text><text class="terminal-3611262244-r7" x="390.4" y="556.8" textLength="1049.2" clip-path="url(#terminal-3611262244-line-22)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-3611262244-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-23)">│</text><text class="terminal-3611262244-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-23)">-</text><text class="terminal-3611262244-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-3611262244-line-23)">-airflow</text><text class="terminal-3611262244-r5" x="134.2" y="581.2" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3611262244-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-24)">│</text><text class="terminal-3611262244-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-24)">-</text><text class="terminal-3611262244-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-3611262244-line-24)">-use</text><text class="terminal-3611262244-r5" x="85.4" y="605.6" textLength="231.8" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3611262244-line-25)">│</text><text class="terminal-3611262244-r2" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-3611262244-line-25)">entering&#160;breeze.&#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;&#16 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-26)">│</text><text class="terminal-3611262244-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-26)">-</text><text class="terminal-3611262244-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-3611262244-line-26)">-package</text><text class="terminal-3611262244-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3611262244-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-27)">│</text><text class="terminal-3611262244-r4" x="390.4" y="678.8" textLength="658.8" clip-path="url(#terminal-3611262244-line-27)">[default:&#160;wheel]&#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-3611262244-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-28)">│</text><text class="terminal-3611262244-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-28)">-</text><text class="terminal-3611262244-r5" x="36.6" y="703.2" textLength="73.2" clip-path="url(#terminal-3611262244-line-28)">-force</text><text class="terminal-3611262244-r5" x="109.8" y="703.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3611262244-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-29)">│</text><text class="terminal-3611262244-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-29)">-</text><text class="terminal-3611262244-r5" x="36.6" y="727.6" textLength="73.2" clip-path="url(#terminal-3611262244-line-29)">-image</text><text class="terminal-3611262244-r5" x="109.8" y="727.6" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3611262244-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3611262244-line-30)">│</text><text class="terminal-3611262244-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-3611262244-line-30)">-</text><text class="terminal-3611262244-r5" x="36.6" y="752" textLength="73.2" clip-path="url(#terminal-3611262244-line-30)">-mount</text><text class="terminal-3611262244-r5" x="109.8" y="752" textLength="97.6" clip-path="url(#terminal-3611262 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-31)">│</text><text class="terminal-3611262244-r2" x="390.4" y="776.4" textLength="1049.2" clip-path="url(#terminal-3611262244-line-31)">selected).&#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-3611262244-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-32)">│</text><text class="terminal-3611262244-r7" x="390.4" y="800.8" textLength="1049.2" clip-path="url(#terminal-3611262244-line-32)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-3611262244-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-33)">│</text><text class="terminal-3611262244-r4" x="390.4" y="825.2" textLength="1049.2" clip-path="url(#terminal-3611262244-line-33)">[default:&#160;selected]&#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-3611262244-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-34)">│</text><text class="terminal-3611262244-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-34)">-</text><text class="terminal-3611262244-r5" x="36.6" y="849.6" textLength="85.4" clip-path="url(#terminal-3611262244-line-34)">-debian</text><text class="terminal-3611262244-r5" x="122" y="849.6" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-3611262244-r4" x="0" y="874" textLength="1464" clip-path="url(#terminal-3611262244-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3611262244-r2" x="1464" y="874" textLength="12.2" clip-path="url(#terminal-3611262244-line-35)">
+</text><text class="terminal-3611262244-r4" x="0" y="898.4" textLength="24.4" clip-path="url(#terminal-3611262244-line-36)">╭─</text><text class="terminal-3611262244-r4" x="24.4" y="898.4" textLength="1415.2" clip-path="url(#terminal-3611262244-line-36)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3611262244-r4" x="1439.6" y="898.4" textLength="24.4" clip-path="url(#terminal-361 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-37)">│</text><text class="terminal-3611262244-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-37)">-</text><text class="terminal-3611262244-r5" x="36.6" y="922.8" textLength="97.6" clip-path="url(#terminal-3611262244-line-37)">-verbose</text><text class="terminal-3611262244-r6" x="427" y="922.8" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-3611262244-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-38)">│</text><text class="terminal-3611262244-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-38)">-</text><text class="terminal-3611262244-r5" x="36.6" y="947.2" textLength="48.8" clip-path="url(#terminal-3611262244-line-38)">-dry</text><text class="terminal-3611262244-r5" x="85.4" y="947.2" textLength="48.8" clip-path="url(#terminal-36 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-39)">│</text><text class="terminal-3611262244-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-39)">-</text><text class="terminal-3611262244-r5" x="36.6" y="971.6" textLength="109.8" clip-path="url(#terminal-3611262244-line-39)">-platform</text><text class="terminal-3611262244-r2" x="475.8" y="971.6" textLength="329.4" clip-path="url(#ter [...]
+</text><text class="terminal-3611262244-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3611262244-line-40)">│</text><text class="terminal-3611262244-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3611262244-line-40)">-</text><text class="terminal-3611262244-r5" x="36.6" y="996" textLength="85.4" clip-path="url(#terminal-3611262244-line-40)">-github</text><text class="terminal-3611262244-r5" x="122" y="996" textLength="134.2" clip-path="url(#terminal-3611262 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-41)">│</text><text class="terminal-3611262244-r4" x="475.8" y="1020.4" textLength="585.6" clip-path="url(#terminal-3611262244-line-41)">[default:&#160;apache/airflow]&#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-3611262244-r4" x="1451.8" y="1020.4" te [...]
+</text><text class="terminal-3611262244-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-42)">│</text><text class="terminal-3611262244-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-42)">-</text><text class="terminal-3611262244-r5" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#terminal-3611262244-line-42)">-airflow</text><text class="terminal-3611262244-r5" x="134.2" y="1044.8" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-3611262244-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3611262244-line-43)">│</text><text class="terminal-3611262244-r2" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#terminal-3611262244-line-43)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-3611262244-r4" x="1451.8" y="1069.2" textLength="12.2" clip-pat [...]
+</text><text class="terminal-3611262244-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3611262244-line-44)">│</text><text class="terminal-3611262244-r7" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#terminal-3611262244-line-44)">(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;&# [...]
+</text><text class="terminal-3611262244-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3611262244-line-45)">│</text><text class="terminal-3611262244-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3611262244-line-45)">-</text><text class="terminal-3611262244-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-3611262244-line-45)">-answer</text><text class="terminal-3611262244-r6" x="427" y="1118" textLength="24.4" clip-path="url(#terminal-3611 [...]
+</text><text class="terminal-3611262244-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-46)">│</text><text class="terminal-3611262244-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3611262244-line-46)">-</text><text class="terminal-3611262244-r5" x="36.6" y="1142.4" textLength="61" clip-path="url(#terminal-3611262244-line-46)">-help</text><text class="terminal-3611262244-r6" x="427" y="1142.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3611262244-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-3611262244-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3611262244-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-3611262244-line-47)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-start-airflow.svg b/images/breeze/output-start-airflow.svg
index d7cf283cd2..37031e3733 100644
--- a/images/breeze/output-start-airflow.svg
+++ b/images/breeze/output-start-airflow.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1245.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1270.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,237 +19,241 @@
         font-weight: 700;
     }
 
-    .terminal-3710885312-matrix {
+    .terminal-3173367611-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3710885312-title {
+    .terminal-3173367611-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3710885312-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3710885312-r2 { fill: #c5c8c6 }
-.terminal-3710885312-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3710885312-r4 { fill: #868887 }
-.terminal-3710885312-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3710885312-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3710885312-r7 { fill: #8d7b39 }
+    .terminal-3173367611-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3173367611-r2 { fill: #c5c8c6 }
+.terminal-3173367611-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3173367611-r4 { fill: #868887 }
+.terminal-3173367611-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3173367611-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3173367611-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-3710885312-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1194.6" />
+    <clipPath id="terminal-3173367611-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1219.0" />
     </clipPath>
-    <clipPath id="terminal-3710885312-line-0">
+    <clipPath id="terminal-3173367611-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-1">
+<clipPath id="terminal-3173367611-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-2">
+<clipPath id="terminal-3173367611-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-3">
+<clipPath id="terminal-3173367611-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-4">
+<clipPath id="terminal-3173367611-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-5">
+<clipPath id="terminal-3173367611-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-6">
+<clipPath id="terminal-3173367611-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-7">
+<clipPath id="terminal-3173367611-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-8">
+<clipPath id="terminal-3173367611-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-9">
+<clipPath id="terminal-3173367611-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-10">
+<clipPath id="terminal-3173367611-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-11">
+<clipPath id="terminal-3173367611-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-12">
+<clipPath id="terminal-3173367611-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-13">
+<clipPath id="terminal-3173367611-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-14">
+<clipPath id="terminal-3173367611-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-15">
+<clipPath id="terminal-3173367611-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-16">
+<clipPath id="terminal-3173367611-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-17">
+<clipPath id="terminal-3173367611-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-18">
+<clipPath id="terminal-3173367611-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-19">
+<clipPath id="terminal-3173367611-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-20">
+<clipPath id="terminal-3173367611-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-21">
+<clipPath id="terminal-3173367611-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-22">
+<clipPath id="terminal-3173367611-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-23">
+<clipPath id="terminal-3173367611-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-24">
+<clipPath id="terminal-3173367611-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-25">
+<clipPath id="terminal-3173367611-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-26">
+<clipPath id="terminal-3173367611-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-27">
+<clipPath id="terminal-3173367611-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-28">
+<clipPath id="terminal-3173367611-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-29">
+<clipPath id="terminal-3173367611-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-30">
+<clipPath id="terminal-3173367611-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-31">
+<clipPath id="terminal-3173367611-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-32">
+<clipPath id="terminal-3173367611-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-33">
+<clipPath id="terminal-3173367611-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-34">
+<clipPath id="terminal-3173367611-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-35">
+<clipPath id="terminal-3173367611-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-36">
+<clipPath id="terminal-3173367611-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-37">
+<clipPath id="terminal-3173367611-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-38">
+<clipPath id="terminal-3173367611-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-39">
+<clipPath id="terminal-3173367611-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-40">
+<clipPath id="terminal-3173367611-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-41">
+<clipPath id="terminal-3173367611-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-42">
+<clipPath id="terminal-3173367611-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-43">
+<clipPath id="terminal-3173367611-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-44">
+<clipPath id="terminal-3173367611-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-45">
+<clipPath id="terminal-3173367611-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-46">
+<clipPath id="terminal-3173367611-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3710885312-line-47">
+<clipPath id="terminal-3173367611-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-3173367611-line-48">
+    <rect x="0" y="1172.7" 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="1243.6" rx="8"/><text class="terminal-3710885312-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1268" rx="8"/><text class="terminal-3173367611-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</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-3710885312-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3173367611-clip-terminal)">
     
-    <g class="terminal-3710885312-matrix">
-    <text class="terminal-3710885312-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3710885312-line-0)">
-</text><text class="terminal-3710885312-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3710885312-line-1)">Usage:&#160;</text><text class="terminal-3710885312-r1" x="97.6" y="44.4" textLength="561.2" clip-path="url(#terminal-3710885312-line-1)">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-3710885312-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-1)">
-</text><text class="terminal-3710885312-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-2)">
-</text><text class="terminal-3710885312-r2" x="12.2" y="93.2" textLength="1000.4" clip-path="url(#terminal-3710885312-line-3)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.</text><text class="terminal-3710885312-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-3)">
-</text><text class="terminal-3710885312-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-4)">
-</text><text class="terminal-3710885312-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3710885312-line-5)">╭─</text><text class="terminal-3710885312-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3710885312-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3710885312-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-371088 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-6)">│</text><text class="terminal-3710885312-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-6)">-</text><text class="terminal-3710885312-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3710885312-line-6)">-python</text><text class="terminal-3710885312-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#terminal-371 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-7)">│</text><text class="terminal-3710885312-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#terminal-3710885312-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-3710885312-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-8)">│</text><text class="terminal-3710885312-r4" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-3710885312-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-3710885312-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-9)">│</text><text class="terminal-3710885312-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-9)">-</text><text class="terminal-3710885312-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-3710885312-line-9)">-load</text><text class="terminal-3710885312-r5" x="97.6" y="239.6" textLength="158.6" clip-path="url(#terminal-37108 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3710885312-line-10)">│</text><text class="terminal-3710885312-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3710885312-line-10)">-</text><text class="terminal-3710885312-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-3710885312-line-10)">-load</text><text class="terminal-3710885312-r5" x="97.6" y="264" textLength="244" clip-path="url(#terminal-3710885312-l [...]
-</text><text class="terminal-3710885312-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-11)">│</text><text class="terminal-3710885312-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-11)">-</text><text class="terminal-3710885312-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-3710885312-line-11)">-backend</text><text class="terminal-3710885312-r6" x="366" y="288.4" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-3710885312-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-12)">│</text><text class="terminal-3710885312-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-12)">-</text><text class="terminal-3710885312-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-3710885312-line-12)">-postgres</text><text class="terminal-3710885312-r5" x="146.4" y="312.8" textLength="97.6" clip-path="url(#term [...]
-</text><text class="terminal-3710885312-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-13)">│</text><text class="terminal-3710885312-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-13)">-</text><text class="terminal-3710885312-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-3710885312-line-13)">-mysql</text><text class="terminal-3710885312-r5" x="109.8" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3710885312-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-14)">│</text><text class="terminal-3710885312-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-14)">-</text><text class="terminal-3710885312-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-3710885312-line-14)">-mssql</text><text class="terminal-3710885312-r5" x="109.8" y="361.6" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3710885312-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3710885312-line-15)">│</text><text class="terminal-3710885312-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3710885312-line-15)">-</text><text class="terminal-3710885312-r5" x="36.6" y="386" textLength="146.4" clip-path="url(#terminal-3710885312-line-15)">-integration</text><text class="terminal-3710885312-r2" x="414.8" y="386" textLength="1024.8" clip-path="url(#termina [...]
-</text><text class="terminal-3710885312-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-16)">│</text><text class="terminal-3710885312-r7" x="414.8" y="410.4" textLength="1024.8" clip-path="url(#terminal-3710885312-line-16)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino</text><text class="terminal-3710885312-r4" x="1451.8" y="410.4" textLeng [...]
-</text><text class="terminal-3710885312-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-17)">│</text><text class="terminal-3710885312-r7" x="414.8" y="434.8" textLength="1024.8" clip-path="url(#terminal-3710885312-line-17)">|&#160;all)&#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;&#16 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-18)">│</text><text class="terminal-3710885312-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-18)">-</text><text class="terminal-3710885312-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-3710885312-line-18)">-forward</text><text class="terminal-3710885312-r5" x="134.2" y="459.2" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-3710885312-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-19)">│</text><text class="terminal-3710885312-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-19)">-</text><text class="terminal-3710885312-r5" x="36.6" y="483.6" textLength="36.6" clip-path="url(#terminal-3710885312-line-19)">-db</text><text class="terminal-3710885312-r5" x="73.2" y="483.6" textLength="73.2" clip-path="url(#terminal-371 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-3710885312-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3710885312-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-3710885312-line-20)">
-</text><text class="terminal-3710885312-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-3710885312-line-21)">╭─</text><text class="terminal-3710885312-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-3710885312-line-21)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3710885312-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-3710885312-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-22)">│</text><text class="terminal-3710885312-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-22)">-</text><text class="terminal-3710885312-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-3710885312-line-22)">-use</text><text class="terminal-3710885312-r5" x="85.4" y="556.8" textLength="195.2" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-23)">│</text><text class="terminal-3710885312-r2" x="390.4" y="581.2" textLength="1049.2" clip-path="url(#terminal-3710885312-line-23)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-3710885312-r4" x="1451.8" y="581.2" textLength="12.2" cli [...]
-</text><text class="terminal-3710885312-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-24)">│</text><text class="terminal-3710885312-r2" x="390.4" y="605.6" textLength="573.4" clip-path="url(#terminal-3710885312-line-24)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-3710885312-r5" x="963.8" y="605.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-24)">-</text><text class="terminal-371 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3710885312-line-25)">│</text><text class="terminal-3710885312-r7" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-3710885312-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-3710885312-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-26)">│</text><text class="terminal-3710885312-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-26)">-</text><text class="terminal-3710885312-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-3710885312-line-26)">-airflow</text><text class="terminal-3710885312-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-3710885312-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-27)">│</text><text class="terminal-3710885312-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-27)">-</text><text class="terminal-3710885312-r5" x="36.6" y="678.8" textLength="48.8" clip-path="url(#terminal-3710885312-line-27)">-use</text><text class="terminal-3710885312-r5" x="85.4" y="678.8" textLength="231.8" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-28)">│</text><text class="terminal-3710885312-r2" x="390.4" y="703.2" textLength="1049.2" clip-path="url(#terminal-3710885312-line-28)">entering&#160;breeze.&#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-3710885312-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-29)">│</text><text class="terminal-3710885312-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-29)">-</text><text class="terminal-3710885312-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3710885312-line-29)">-package</text><text class="terminal-3710885312-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-3710885312-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3710885312-line-30)">│</text><text class="terminal-3710885312-r4" x="390.4" y="752" textLength="658.8" clip-path="url(#terminal-3710885312-line-30)">[default:&#160;wheel]&#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-3710885312-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-31)">│</text><text class="terminal-3710885312-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-31)">-</text><text class="terminal-3710885312-r5" x="36.6" y="776.4" textLength="73.2" clip-path="url(#terminal-3710885312-line-31)">-force</text><text class="terminal-3710885312-r5" x="109.8" y="776.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3710885312-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-32)">│</text><text class="terminal-3710885312-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-32)">-</text><text class="terminal-3710885312-r5" x="36.6" y="800.8" textLength="73.2" clip-path="url(#terminal-3710885312-line-32)">-image</text><text class="terminal-3710885312-r5" x="109.8" y="800.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3710885312-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-33)">│</text><text class="terminal-3710885312-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-33)">-</text><text class="terminal-3710885312-r5" x="36.6" y="825.2" textLength="73.2" clip-path="url(#terminal-3710885312-line-33)">-mount</text><text class="terminal-3710885312-r5" x="109.8" y="825.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3710885312-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-34)">│</text><text class="terminal-3710885312-r2" x="390.4" y="849.6" textLength="1049.2" clip-path="url(#terminal-3710885312-line-34)">selected).&#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-3710885312-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3710885312-line-35)">│</text><text class="terminal-3710885312-r7" x="390.4" y="874" textLength="1049.2" clip-path="url(#terminal-3710885312-line-35)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-3710885312-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-36)">│</text><text class="terminal-3710885312-r4" x="390.4" y="898.4" textLength="1049.2" clip-path="url(#terminal-3710885312-line-36)">[default:&#160;selected]&#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-3710885312-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-3710885312-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3710885312-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-37)">
-</text><text class="terminal-3710885312-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-3710885312-line-38)">╭─</text><text class="terminal-3710885312-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-3710885312-line-38)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3710885312-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#terminal-371 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-39)">│</text><text class="terminal-3710885312-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-39)">-</text><text class="terminal-3710885312-r5" x="36.6" y="971.6" textLength="48.8" clip-path="url(#terminal-3710885312-line-39)">-dry</text><text class="terminal-3710885312-r5" x="85.4" y="971.6" textLength="48.8" clip-path="url(#terminal-37 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3710885312-line-40)">│</text><text class="terminal-3710885312-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3710885312-line-40)">-</text><text class="terminal-3710885312-r5" x="36.6" y="996" textLength="85.4" clip-path="url(#terminal-3710885312-line-40)">-github</text><text class="terminal-3710885312-r5" x="122" y="996" textLength="134.2" clip-path="url(#terminal-3710885 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-41)">│</text><text class="terminal-3710885312-r4" x="475.8" y="1020.4" textLength="585.6" clip-path="url(#terminal-3710885312-line-41)">[default:&#160;apache/airflow]&#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-3710885312-r4" x="1451.8" y="1020.4" te [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-42)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-42)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#terminal-3710885312-line-42)">-airflow</text><text class="terminal-3710885312-r5" x="134.2" y="1044.8" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-43)">│</text><text class="terminal-3710885312-r2" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#terminal-3710885312-line-43)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-3710885312-r4" x="1451.8" y="1069.2" textLength="12.2" clip-pat [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3710885312-line-44)">│</text><text class="terminal-3710885312-r7" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#terminal-3710885312-line-44)">(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;&# [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3710885312-line-45)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3710885312-line-45)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-3710885312-line-45)">-answer</text><text class="terminal-3710885312-r6" x="427" y="1118" textLength="24.4" clip-path="url(#terminal-3710 [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-46)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3710885312-line-46)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-3710885312-line-46)">-verbose</text><text class="terminal-3710885312-r6" x="427" y="1142.4" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-47)">│</text><text class="terminal-3710885312-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3710885312-line-47)">-</text><text class="terminal-3710885312-r5" x="36.6" y="1166.8" textLength="61" clip-path="url(#terminal-3710885312-line-47)">-help</text><text class="terminal-3710885312-r6" x="427" y="1166.8" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3710885312-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-3710885312-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3710885312-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-3710885312-line-48)">
+    <g class="terminal-3173367611-matrix">
+    <text class="terminal-3173367611-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3173367611-line-0)">
+</text><text class="terminal-3173367611-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3173367611-line-1)">Usage:&#160;</text><text class="terminal-3173367611-r1" x="97.6" y="44.4" textLength="561.2" clip-path="url(#terminal-3173367611-line-1)">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-3173367611-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-1)">
+</text><text class="terminal-3173367611-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-2)">
+</text><text class="terminal-3173367611-r2" x="12.2" y="93.2" textLength="1000.4" clip-path="url(#terminal-3173367611-line-3)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.</text><text class="terminal-3173367611-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-3)">
+</text><text class="terminal-3173367611-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-4)">
+</text><text class="terminal-3173367611-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3173367611-line-5)">╭─</text><text class="terminal-3173367611-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3173367611-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3173367611-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-317336 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-6)">│</text><text class="terminal-3173367611-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-6)">-</text><text class="terminal-3173367611-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3173367611-line-6)">-python</text><text class="terminal-3173367611-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#terminal-317 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-7)">│</text><text class="terminal-3173367611-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#terminal-3173367611-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-3173367611-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-8)">│</text><text class="terminal-3173367611-r4" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-3173367611-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-3173367611-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-9)">│</text><text class="terminal-3173367611-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-9)">-</text><text class="terminal-3173367611-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-3173367611-line-9)">-load</text><text class="terminal-3173367611-r5" x="97.6" y="239.6" textLength="158.6" clip-path="url(#terminal-31733 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3173367611-line-10)">│</text><text class="terminal-3173367611-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3173367611-line-10)">-</text><text class="terminal-3173367611-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-3173367611-line-10)">-load</text><text class="terminal-3173367611-r5" x="97.6" y="264" textLength="244" clip-path="url(#terminal-3173367611-l [...]
+</text><text class="terminal-3173367611-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-11)">│</text><text class="terminal-3173367611-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-11)">-</text><text class="terminal-3173367611-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-3173367611-line-11)">-backend</text><text class="terminal-3173367611-r6" x="366" y="288.4" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-3173367611-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-12)">│</text><text class="terminal-3173367611-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-12)">-</text><text class="terminal-3173367611-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-3173367611-line-12)">-postgres</text><text class="terminal-3173367611-r5" x="146.4" y="312.8" textLength="97.6" clip-path="url(#term [...]
+</text><text class="terminal-3173367611-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-13)">│</text><text class="terminal-3173367611-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-13)">-</text><text class="terminal-3173367611-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-3173367611-line-13)">-mysql</text><text class="terminal-3173367611-r5" x="109.8" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3173367611-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-14)">│</text><text class="terminal-3173367611-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-14)">-</text><text class="terminal-3173367611-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-3173367611-line-14)">-mssql</text><text class="terminal-3173367611-r5" x="109.8" y="361.6" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3173367611-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3173367611-line-15)">│</text><text class="terminal-3173367611-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3173367611-line-15)">-</text><text class="terminal-3173367611-r5" x="36.6" y="386" textLength="146.4" clip-path="url(#terminal-3173367611-line-15)">-integration</text><text class="terminal-3173367611-r2" x="414.8" y="386" textLength="1024.8" clip-path="url(#termina [...]
+</text><text class="terminal-3173367611-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-16)">│</text><text class="terminal-3173367611-r7" x="414.8" y="410.4" textLength="1024.8" clip-path="url(#terminal-3173367611-line-16)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino</text><text class="terminal-3173367611-r4" x="1451.8" y="410.4" textLeng [...]
+</text><text class="terminal-3173367611-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-17)">│</text><text class="terminal-3173367611-r7" x="414.8" y="434.8" textLength="1024.8" clip-path="url(#terminal-3173367611-line-17)">|&#160;all)&#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;&#16 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-18)">│</text><text class="terminal-3173367611-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-18)">-</text><text class="terminal-3173367611-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-3173367611-line-18)">-forward</text><text class="terminal-3173367611-r5" x="134.2" y="459.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-3173367611-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-19)">│</text><text class="terminal-3173367611-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-19)">-</text><text class="terminal-3173367611-r5" x="36.6" y="483.6" textLength="36.6" clip-path="url(#terminal-3173367611-line-19)">-db</text><text class="terminal-3173367611-r5" x="73.2" y="483.6" textLength="73.2" clip-path="url(#terminal-317 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-3173367611-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3173367611-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-3173367611-line-20)">
+</text><text class="terminal-3173367611-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-3173367611-line-21)">╭─</text><text class="terminal-3173367611-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-3173367611-line-21)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3173367611-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-3173367611-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-22)">│</text><text class="terminal-3173367611-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-22)">-</text><text class="terminal-3173367611-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-3173367611-line-22)">-use</text><text class="terminal-3173367611-r5" x="85.4" y="556.8" textLength="195.2" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-23)">│</text><text class="terminal-3173367611-r2" x="390.4" y="581.2" textLength="1049.2" clip-path="url(#terminal-3173367611-line-23)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-3173367611-r4" x="1451.8" y="581.2" textLength="12.2" cli [...]
+</text><text class="terminal-3173367611-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-24)">│</text><text class="terminal-3173367611-r2" x="390.4" y="605.6" textLength="573.4" clip-path="url(#terminal-3173367611-line-24)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-3173367611-r5" x="963.8" y="605.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-24)">-</text><text class="terminal-317 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3173367611-line-25)">│</text><text class="terminal-3173367611-r7" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-3173367611-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-3173367611-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-26)">│</text><text class="terminal-3173367611-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-26)">-</text><text class="terminal-3173367611-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-3173367611-line-26)">-airflow</text><text class="terminal-3173367611-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3173367611-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-27)">│</text><text class="terminal-3173367611-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-27)">-</text><text class="terminal-3173367611-r5" x="36.6" y="678.8" textLength="48.8" clip-path="url(#terminal-3173367611-line-27)">-use</text><text class="terminal-3173367611-r5" x="85.4" y="678.8" textLength="231.8" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-28)">│</text><text class="terminal-3173367611-r2" x="390.4" y="703.2" textLength="1049.2" clip-path="url(#terminal-3173367611-line-28)">entering&#160;breeze.&#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-3173367611-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-29)">│</text><text class="terminal-3173367611-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-29)">-</text><text class="terminal-3173367611-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3173367611-line-29)">-package</text><text class="terminal-3173367611-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3173367611-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3173367611-line-30)">│</text><text class="terminal-3173367611-r4" x="390.4" y="752" textLength="658.8" clip-path="url(#terminal-3173367611-line-30)">[default:&#160;wheel]&#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-3173367611-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-31)">│</text><text class="terminal-3173367611-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-31)">-</text><text class="terminal-3173367611-r5" x="36.6" y="776.4" textLength="73.2" clip-path="url(#terminal-3173367611-line-31)">-force</text><text class="terminal-3173367611-r5" x="109.8" y="776.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3173367611-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-32)">│</text><text class="terminal-3173367611-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-32)">-</text><text class="terminal-3173367611-r5" x="36.6" y="800.8" textLength="73.2" clip-path="url(#terminal-3173367611-line-32)">-image</text><text class="terminal-3173367611-r5" x="109.8" y="800.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3173367611-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-33)">│</text><text class="terminal-3173367611-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-33)">-</text><text class="terminal-3173367611-r5" x="36.6" y="825.2" textLength="73.2" clip-path="url(#terminal-3173367611-line-33)">-mount</text><text class="terminal-3173367611-r5" x="109.8" y="825.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3173367611-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-34)">│</text><text class="terminal-3173367611-r2" x="390.4" y="849.6" textLength="1049.2" clip-path="url(#terminal-3173367611-line-34)">selected).&#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-3173367611-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3173367611-line-35)">│</text><text class="terminal-3173367611-r7" x="390.4" y="874" textLength="1049.2" clip-path="url(#terminal-3173367611-line-35)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-3173367611-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-36)">│</text><text class="terminal-3173367611-r4" x="390.4" y="898.4" textLength="1049.2" clip-path="url(#terminal-3173367611-line-36)">[default:&#160;selected]&#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-3173367611-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-3173367611-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3173367611-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-37)">
+</text><text class="terminal-3173367611-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-3173367611-line-38)">╭─</text><text class="terminal-3173367611-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-3173367611-line-38)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3173367611-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#terminal-317 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-39)">│</text><text class="terminal-3173367611-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-39)">-</text><text class="terminal-3173367611-r5" x="36.6" y="971.6" textLength="48.8" clip-path="url(#terminal-3173367611-line-39)">-dry</text><text class="terminal-3173367611-r5" x="85.4" y="971.6" textLength="48.8" clip-path="url(#terminal-31 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3173367611-line-40)">│</text><text class="terminal-3173367611-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3173367611-line-40)">-</text><text class="terminal-3173367611-r5" x="36.6" y="996" textLength="109.8" clip-path="url(#terminal-3173367611-line-40)">-platform</text><text class="terminal-3173367611-r2" x="475.8" y="996" textLength="329.4" clip-path="url(#terminal-31 [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-41)">│</text><text class="terminal-3173367611-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-41)">-</text><text class="terminal-3173367611-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-3173367611-line-41)">-github</text><text class="terminal-3173367611-r5" x="122" y="1020.4" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-42)">│</text><text class="terminal-3173367611-r4" x="475.8" y="1044.8" textLength="585.6" clip-path="url(#terminal-3173367611-line-42)">[default:&#160;apache/airflow]&#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-3173367611-r4" x="1451.8" y="1044.8" te [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-43)">│</text><text class="terminal-3173367611-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-43)">-</text><text class="terminal-3173367611-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-3173367611-line-43)">-airflow</text><text class="terminal-3173367611-r5" x="134.2" y="1069.2" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-44)">│</text><text class="terminal-3173367611-r2" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#terminal-3173367611-line-44)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-3173367611-r4" x="1451.8" y="1093.6" textLength="12.2" clip-pat [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3173367611-line-45)">│</text><text class="terminal-3173367611-r7" x="475.8" y="1118" textLength="963.8" clip-path="url(#terminal-3173367611-line-45)">(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-3173367611-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-46)">│</text><text class="terminal-3173367611-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3173367611-line-46)">-</text><text class="terminal-3173367611-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-3173367611-line-46)">-answer</text><text class="terminal-3173367611-r6" x="427" y="1142.4" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-47)">│</text><text class="terminal-3173367611-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3173367611-line-47)">-</text><text class="terminal-3173367611-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-3173367611-line-47)">-verbose</text><text class="terminal-3173367611-r6" x="427" y="1166.8" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-48)">│</text><text class="terminal-3173367611-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3173367611-line-48)">-</text><text class="terminal-3173367611-r5" x="36.6" y="1191.2" textLength="61" clip-path="url(#terminal-3173367611-line-48)">-help</text><text class="terminal-3173367611-r6" x="427" y="1191.2" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3173367611-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-3173367611-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3173367611-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-3173367611-line-49)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-static-checks.svg b/images/breeze/output-static-checks.svg
index 5bd4b35dab..ae64d0be23 100644
--- a/images/breeze/output-static-checks.svg
+++ b/images/breeze/output-static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1270.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,233 +19,241 @@
         font-weight: 700;
     }
 
-    .terminal-373974906-matrix {
+    .terminal-1143647577-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-373974906-title {
+    .terminal-1143647577-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-373974906-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-373974906-r2 { fill: #c5c8c6 }
-.terminal-373974906-r3 { fill: #d0b344;font-weight: bold }
-.terminal-373974906-r4 { fill: #868887 }
-.terminal-373974906-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-373974906-r6 { fill: #98a84b;font-weight: bold }
-.terminal-373974906-r7 { fill: #8d7b39 }
+    .terminal-1143647577-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1143647577-r2 { fill: #c5c8c6 }
+.terminal-1143647577-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1143647577-r4 { fill: #868887 }
+.terminal-1143647577-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1143647577-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1143647577-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-373974906-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
+    <clipPath id="terminal-1143647577-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1219.0" />
     </clipPath>
-    <clipPath id="terminal-373974906-line-0">
+    <clipPath id="terminal-1143647577-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-1">
+<clipPath id="terminal-1143647577-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-2">
+<clipPath id="terminal-1143647577-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-3">
+<clipPath id="terminal-1143647577-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-4">
+<clipPath id="terminal-1143647577-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-5">
+<clipPath id="terminal-1143647577-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-6">
+<clipPath id="terminal-1143647577-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-7">
+<clipPath id="terminal-1143647577-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-8">
+<clipPath id="terminal-1143647577-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-9">
+<clipPath id="terminal-1143647577-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-10">
+<clipPath id="terminal-1143647577-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-11">
+<clipPath id="terminal-1143647577-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-12">
+<clipPath id="terminal-1143647577-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-13">
+<clipPath id="terminal-1143647577-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-14">
+<clipPath id="terminal-1143647577-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-15">
+<clipPath id="terminal-1143647577-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-16">
+<clipPath id="terminal-1143647577-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-17">
+<clipPath id="terminal-1143647577-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-18">
+<clipPath id="terminal-1143647577-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-19">
+<clipPath id="terminal-1143647577-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-20">
+<clipPath id="terminal-1143647577-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-21">
+<clipPath id="terminal-1143647577-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-22">
+<clipPath id="terminal-1143647577-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-23">
+<clipPath id="terminal-1143647577-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-24">
+<clipPath id="terminal-1143647577-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-25">
+<clipPath id="terminal-1143647577-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-26">
+<clipPath id="terminal-1143647577-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-27">
+<clipPath id="terminal-1143647577-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-28">
+<clipPath id="terminal-1143647577-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-29">
+<clipPath id="terminal-1143647577-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-30">
+<clipPath id="terminal-1143647577-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-31">
+<clipPath id="terminal-1143647577-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-32">
+<clipPath id="terminal-1143647577-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-33">
+<clipPath id="terminal-1143647577-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-34">
+<clipPath id="terminal-1143647577-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-35">
+<clipPath id="terminal-1143647577-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-36">
+<clipPath id="terminal-1143647577-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-37">
+<clipPath id="terminal-1143647577-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-38">
+<clipPath id="terminal-1143647577-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-39">
+<clipPath id="terminal-1143647577-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-40">
+<clipPath id="terminal-1143647577-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-41">
+<clipPath id="terminal-1143647577-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-42">
+<clipPath id="terminal-1143647577-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-43">
+<clipPath id="terminal-1143647577-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-44">
+<clipPath id="terminal-1143647577-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-45">
+<clipPath id="terminal-1143647577-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-373974906-line-46">
+<clipPath id="terminal-1143647577-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1143647577-line-47">
+    <rect x="0" y="1148.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1143647577-line-48">
+    <rect x="0" y="1172.7" 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="1219.2" rx="8"/><text class="terminal-373974906-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1268" rx="8"/><text class="terminal-1143647577-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</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-373974906-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1143647577-clip-terminal)">
     
-    <g class="terminal-373974906-matrix">
-    <text class="terminal-373974906-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-373974906-line-0)">
-</text><text class="terminal-373974906-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-373974906-line-1)">Usage:&#160;</text><text class="terminal-373974906-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-373974906-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-373974906-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-373974906-line-1)">
-</text><text class="terminal-373974906-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-373974906-line-2)">
-</text><text class="terminal-373974906-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-373974906-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-373974906-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-373974906-line-3)">
-</text><text class="terminal-373974906-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-373974906-line-4)">
-</text><text class="terminal-373974906-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-373974906-line-5)">╭─</text><text class="terminal-373974906-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-373974906-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-373974906-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-373974906-l [...]
-</text><text class="terminal-373974906-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-373974906-line-6)">│</text><text class="terminal-373974906-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-373974906-line-6)">-</text><text class="terminal-373974906-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-373974906-line-6)">-type</text><text class="terminal-373974906-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-373974906-li [...]
-</text><text class="terminal-373974906-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-373974906-line-7)">│</text><text class="terminal-373974906-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-1-compatibility&#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-373974906-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-373974906-line-8)">│</text><text class="terminal-373974906-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-providers-have-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="215.2" textLength="12.2"  [...]
-</text><text class="terminal-373974906-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-373974906-line-9)">│</text><text class="terminal-373974906-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-9)">check-apache-license-rat&#160;|&#160;check-base-operator-usage&#160;|&#160;check-boring-cyborg-configuration</text><text class="terminal-373974906-r4" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#terminal-373974906-line-9)">│</text><te [...]
-</text><text class="terminal-373974906-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-373974906-line-10)">│</text><text class="terminal-373974906-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-373974906-line-10)">|&#160;check-breeze-top-dependencies-limited&#160;|&#160;check-builtin-literals&#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- [...]
-</text><text class="terminal-373974906-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-373974906-line-11)">│</text><text class="terminal-373974906-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-11)">check-changelog-has-no-duplicates&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x= [...]
-</text><text class="terminal-373974906-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-373974906-line-12)">│</text><text class="terminal-373974906-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-12)">check-docstring-param-types&#160;|&#160;check-executables-have-shebangs&#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 cl [...]
-</text><text class="terminal-373974906-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-373974906-line-13)">│</text><text class="terminal-373974906-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-13)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-37397490 [...]
-</text><text class="terminal-373974906-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-373974906-line-14)">│</text><text class="terminal-373974906-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-14)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#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-373974906-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-373974906-line-15)">│</text><text class="terminal-373974906-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-373974906-line-15)">check-integrations-are-consistent&#160;|&#160;check-merge-conflict&#160;|&#160;check-newsfragments-are-valid</text><text class="terminal-373974906-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-373974906-line-15)">│</text><text  [...]
-</text><text class="terminal-373974906-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-373974906-line-16)">│</text><text class="terminal-373974906-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-16)">|&#160;check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#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-3 [...]
-</text><text class="terminal-373974906-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-373974906-line-17)">│</text><text class="terminal-373974906-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-17)">check-persist-credentials-disabled-in-github-workflows&#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-373974906-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-373974906-line-18)">│</text><text class="terminal-373974906-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#termina [...]
-</text><text class="terminal-373974906-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-373974906-line-19)">│</text><text class="terminal-373974906-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#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 cl [...]
-</text><text class="terminal-373974906-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-373974906-line-20)">│</text><text class="terminal-373974906-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-373974906-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="508" textLen [...]
-</text><text class="terminal-373974906-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-373974906-line-21)">│</text><text class="terminal-373974906-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="532.4" textLength="12.2" clip-pat [...]
-</text><text class="terminal-373974906-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-373974906-line-22)">│</text><text class="terminal-373974906-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#160;|&#160;check-xml&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="556.8" textLength="12.2" clip-pat [...]
-</text><text class="terminal-373974906-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-373974906-line-23)">│</text><text class="terminal-373974906-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-23)">codespell&#160;|&#160;debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="581.2" textLe [...]
-</text><text class="terminal-373974906-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-373974906-line-24)">│</text><text class="terminal-373974906-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-24)">fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y [...]
-</text><text class="terminal-373974906-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-373974906-line-25)">│</text><text class="terminal-373974906-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-373974906-line-25)">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="630" textLength="12.2" clip-path="url [...]
-</text><text class="terminal-373974906-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-373974906-line-26)">│</text><text class="terminal-373974906-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-26)">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json</text><text class="terminal-373974906-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#terminal-37397490 [...]
-</text><text class="terminal-373974906-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-373974906-line-27)">│</text><text class="terminal-373974906-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-27)">|&#160;pydocstyle&#160;|&#160;python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="678.8" textLength="12.2" clip-pat [...]
-</text><text class="terminal-373974906-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-373974906-line-28)">│</text><text class="terminal-373974906-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-28)">run-shellcheck&#160;|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-cmd-output</text><text class="terminal-373974906-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-373974906-line-28) [...]
-</text><text class="terminal-373974906-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-373974906-line-29)">│</text><text class="terminal-373974906-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-29)">|&#160;update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#terminal-37397490 [...]
-</text><text class="terminal-373974906-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-373974906-line-30)">│</text><text class="terminal-373974906-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-373974906-line-30)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-373974906-line-30)">│</text>< [...]
-</text><text class="terminal-373974906-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-373974906-line-31)">│</text><text class="terminal-373974906-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-31)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#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;&#16 [...]
-</text><text class="terminal-373974906-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-373974906-line-32)">│</text><text class="terminal-373974906-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-32)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-373974 [...]
-</text><text class="terminal-373974906-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-373974906-line-33)">│</text><text class="terminal-373974906-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-33)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r [...]
-</text><text class="terminal-373974906-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-373974906-line-34)">│</text><text class="terminal-373974906-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-373974906-line-34)">-</text><text class="terminal-373974906-r5" x="36.6" y="849.6" textLength="61" clip-path="url(#terminal-373974906-line-34)">-file</text><text class="terminal-373974906-r6" x="317.2" y="849.6" textLength="24.4" clip-path="url(#terminal-373974906 [...]
-</text><text class="terminal-373974906-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-373974906-line-35)">│</text><text class="terminal-373974906-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-373974906-line-35)">-</text><text class="terminal-373974906-r5" x="36.6" y="874" textLength="48.8" clip-path="url(#terminal-373974906-line-35)">-all</text><text class="terminal-373974906-r5" x="85.4" y="874" textLength="73.2" clip-path="url(#terminal-373974906-line-35 [...]
-</text><text class="terminal-373974906-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-373974906-line-36)">│</text><text class="terminal-373974906-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-373974906-line-36)">-</text><text class="terminal-373974906-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-373974906-line-36)">-show</text><text class="terminal-373974906-r5" x="97.6" y="898.4" textLength="195.2" clip-path="url(#terminal-373974906 [...]
-</text><text class="terminal-373974906-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-373974906-line-37)">│</text><text class="terminal-373974906-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-373974906-line-37)">-</text><text class="terminal-373974906-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-373974906-line-37)">-last</text><text class="terminal-373974906-r5" x="97.6" y="922.8" textLength="85.4" clip-path="url(#terminal-373974906- [...]
-</text><text class="terminal-373974906-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-373974906-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-373974906-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-373974906-line-38)">
-</text><text class="terminal-373974906-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-373974906-line-39)">╭─</text><text class="terminal-373974906-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-373974906-line-39)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-373974906-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#terminal-37397490 [...]
-</text><text class="terminal-373974906-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-373974906-line-40)">│</text><text class="terminal-373974906-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-373974906-line-40)">-</text><text class="terminal-373974906-r5" x="36.6" y="996" textLength="85.4" clip-path="url(#terminal-373974906-line-40)">-commit</text><text class="terminal-373974906-r5" x="122" y="996" textLength="48.8" clip-path="url(#terminal-373974906-line- [...]
-</text><text class="terminal-373974906-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-373974906-line-41)">│</text><text class="terminal-373974906-r2" x="329.4" y="1020.4" textLength="183" clip-path="url(#terminal-373974906-line-41)">exclusive&#160;with&#160;</text><text class="terminal-373974906-r5" x="512.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-373974906-line-41)">-</text><text class="terminal-373974906-r5" x="524.6" y="1020.4" textLength="61" clip-path [...]
-</text><text class="terminal-373974906-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-373974906-line-42)">│</text><text class="terminal-373974906-r7" x="329.4" y="1044.8" textLength="1110.2" clip-path="url(#terminal-373974906-line-42)">(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-373974906-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-373974906-line-43)">│</text><text class="terminal-373974906-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-373974906-line-43)">-</text><text class="terminal-373974906-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-373974906-line-43)">-verbose</text><text class="terminal-373974906-r6" x="280.6" y="1069.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-373974906-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-373974906-line-44)">│</text><text class="terminal-373974906-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-373974906-line-44)">-</text><text class="terminal-373974906-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-373974906-line-44)">-dry</text><text class="terminal-373974906-r5" x="85.4" y="1093.6" textLength="48.8" clip-path="url(#terminal-37397 [...]
-</text><text class="terminal-373974906-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-373974906-line-45)">│</text><text class="terminal-373974906-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-373974906-line-45)">-</text><text class="terminal-373974906-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-373974906-line-45)">-github</text><text class="terminal-373974906-r5" x="122" y="1118" textLength="134.2" clip-path="url(#terminal-373974906- [...]
-</text><text class="terminal-373974906-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-373974906-line-46)">│</text><text class="terminal-373974906-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-373974906-line-46)">-</text><text class="terminal-373974906-r5" x="36.6" y="1142.4" textLength="61" clip-path="url(#terminal-373974906-line-46)">-help</text><text class="terminal-373974906-r6" x="280.6" y="1142.4" textLength="24.4" clip-path="url(#terminal-37397 [...]
-</text><text class="terminal-373974906-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-373974906-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-373974906-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-373974906-line-47)">
+    <g class="terminal-1143647577-matrix">
+    <text class="terminal-1143647577-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1143647577-line-0)">
+</text><text class="terminal-1143647577-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1143647577-line-1)">Usage:&#160;</text><text class="terminal-1143647577-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-1143647577-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-1143647577-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-1)">
+</text><text class="terminal-1143647577-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-2)">
+</text><text class="terminal-1143647577-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-1143647577-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-1143647577-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-3)">
+</text><text class="terminal-1143647577-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-4)">
+</text><text class="terminal-1143647577-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1143647577-line-5)">╭─</text><text class="terminal-1143647577-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1143647577-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1143647577-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-114364 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-6)">│</text><text class="terminal-1143647577-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-6)">-</text><text class="terminal-1143647577-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-1143647577-line-6)">-type</text><text class="terminal-1143647577-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-11436 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-7)">│</text><text class="terminal-1143647577-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-1143647577-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-2-compatibility&#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-1143647577-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-8)">│</text><text class="terminal-1143647577-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-1143647577-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-providers-have-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="215.2" textLength="1 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-9)">│</text><text class="terminal-1143647577-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-1143647577-line-9)">check-apache-license-rat&#160;|&#160;check-base-operator-partial-arguments&#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 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1143647577-line-10)">│</text><text class="terminal-1143647577-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-1143647577-line-10)">check-base-operator-usage&#160;|&#160;check-boring-cyborg-configuration&#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 cl [...]
+</text><text class="terminal-1143647577-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-11)">│</text><text class="terminal-1143647577-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-1143647577-line-11)">check-breeze-top-dependencies-limited&#160;|&#160;check-builtin-literals&#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 cla [...]
+</text><text class="terminal-1143647577-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-12)">│</text><text class="terminal-1143647577-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-1143647577-line-12)">check-changelog-has-no-duplicates&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577-r [...]
+</text><text class="terminal-1143647577-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-13)">│</text><text class="terminal-1143647577-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-1143647577-line-13)">check-docstring-param-types&#160;|&#160;check-example-dags-urls&#160;|&#160;check-executables-have-shebangs&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-13 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-14)">│</text><text class="terminal-1143647577-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-1143647577-line-14)">|&#160;check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="361.6" textLength="12.2" clip-path="url(#terminal-11436475 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1143647577-line-15)">│</text><text class="terminal-1143647577-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-1143647577-line-15)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#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-1143647577-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-16)">│</text><text class="terminal-1143647577-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-1143647577-line-16)">check-integrations-are-consistent&#160;|&#160;check-merge-conflict&#160;|&#160;check-newsfragments-are-valid</text><text class="terminal-1143647577-r4" x="1451.8" y="410.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-16)">│< [...]
+</text><text class="terminal-1143647577-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-17)">│</text><text class="terminal-1143647577-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-1143647577-line-17)">|&#160;check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#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="termin [...]
+</text><text class="terminal-1143647577-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-18)">│</text><text class="terminal-1143647577-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-1143647577-line-18)">check-persist-credentials-disabled-in-github-workflows&#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;&#16 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-19)">│</text><text class="terminal-1143647577-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-1143647577-line-19)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="483.6" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-1143647577-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1143647577-line-20)">│</text><text class="terminal-1143647577-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-1143647577-line-20)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#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 cl [...]
+</text><text class="terminal-1143647577-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-21)">│</text><text class="terminal-1143647577-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-1143647577-line-21)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="532 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-22)">│</text><text class="terminal-1143647577-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-1143647577-line-22)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="556.8" textLength="12.2" cli [...]
+</text><text class="terminal-1143647577-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-23)">│</text><text class="terminal-1143647577-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-1143647577-line-23)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#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-1143647 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-24)">│</text><text class="terminal-1143647577-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-1143647577-line-24)">check-system-tests-tocs&#160;|&#160;check-xml&#160;|&#160;codespell&#160;|&#160;create-missing-init-py-files-tests&#160;|&#160;&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="605.6" textLength="12.2" clip-path="url(#termina [...]
+</text><text class="terminal-1143647577-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1143647577-line-25)">│</text><text class="terminal-1143647577-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-1143647577-line-25)">debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;fix-encoding-pragma</text><text class="terminal-1143647577-r4" x="1451.8" y="630" textLength="12.2" clip-path="url(#terminal-114364757 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-26)">│</text><text class="terminal-1143647577-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-1143647577-line-26)">|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;lint-chart-schema&#160;|&#160;lint-css</text><text class="terminal-1143647577-r4" x="1451.8" y="654.4" textLength="12.2" cli [...]
+</text><text class="terminal-1143647577-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-27)">│</text><text class="terminal-1143647577-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-1143647577-line-27)">|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;lint-json-schema&#160;|&#160;lint-markdown</text><text class="terminal-1143647577-r4" x="1451.8" y="678.8" textLength="12.2" clip-path="url(#termina [...]
+</text><text class="terminal-1143647577-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-28)">│</text><text class="terminal-1143647577-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-1143647577-line-28)">|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json&#160;|&#160;pydocstyle&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="t [...]
+</text><text class="terminal-1143647577-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-29)">│</text><text class="terminal-1143647577-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-1143647577-line-29)">python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;run-shellcheck&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="727.6" textLength="12.2" clip-path="ur [...]
+</text><text class="terminal-1143647577-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1143647577-line-30)">│</text><text class="terminal-1143647577-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-1143647577-line-30)">|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-cmd-output&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="75 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-31)">│</text><text class="terminal-1143647577-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-1143647577-line-31)">update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="776.4" textLength="12.2" clip-path="url(#termina [...]
+</text><text class="terminal-1143647577-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-32)">│</text><text class="terminal-1143647577-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-1143647577-line-32)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-1143647577-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-32 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-33)">│</text><text class="terminal-1143647577-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-1143647577-line-33)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#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-1143647577-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-34)">│</text><text class="terminal-1143647577-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#terminal-1143647577-line-34)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-11 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1143647577-line-35)">│</text><text class="terminal-1143647577-r7" x="366" y="874" textLength="1073.6" clip-path="url(#terminal-1143647577-line-35)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1143647577- [...]
+</text><text class="terminal-1143647577-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-36)">│</text><text class="terminal-1143647577-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-36)">-</text><text class="terminal-1143647577-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-1143647577-line-36)">-file</text><text class="terminal-1143647577-r6" x="317.2" y="898.4" textLength="24.4" clip-path="url(#terminal-11 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-37)">│</text><text class="terminal-1143647577-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-37)">-</text><text class="terminal-1143647577-r5" x="36.6" y="922.8" textLength="48.8" clip-path="url(#terminal-1143647577-line-37)">-all</text><text class="terminal-1143647577-r5" x="85.4" y="922.8" textLength="73.2" clip-path="url(#terminal-11 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-38)">│</text><text class="terminal-1143647577-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-38)">-</text><text class="terminal-1143647577-r5" x="36.6" y="947.2" textLength="61" clip-path="url(#terminal-1143647577-line-38)">-show</text><text class="terminal-1143647577-r5" x="97.6" y="947.2" textLength="195.2" clip-path="url(#terminal-11 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-39)">│</text><text class="terminal-1143647577-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-39)">-</text><text class="terminal-1143647577-r5" x="36.6" y="971.6" textLength="61" clip-path="url(#terminal-1143647577-line-39)">-last</text><text class="terminal-1143647577-r5" x="97.6" y="971.6" textLength="85.4" clip-path="url(#terminal-114 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="996" textLength="1464" clip-path="url(#terminal-1143647577-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1143647577-r2" x="1464" y="996" textLength="12.2" clip-path="url(#terminal-1143647577-line-40)">
+</text><text class="terminal-1143647577-r4" x="0" y="1020.4" textLength="24.4" clip-path="url(#terminal-1143647577-line-41)">╭─</text><text class="terminal-1143647577-r4" x="24.4" y="1020.4" textLength="1415.2" clip-path="url(#terminal-1143647577-line-41)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1143647577-r4" x="1439.6" y="1020.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-42)">│</text><text class="terminal-1143647577-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-42)">-</text><text class="terminal-1143647577-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-1143647577-line-42)">-commit</text><text class="terminal-1143647577-r5" x="122" y="1044.8" textLength="48.8" clip-path="url(#termi [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-43)">│</text><text class="terminal-1143647577-r2" x="329.4" y="1069.2" textLength="183" clip-path="url(#terminal-1143647577-line-43)">exclusive&#160;with&#160;</text><text class="terminal-1143647577-r5" x="512.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-43)">-</text><text class="terminal-1143647577-r5" x="524.6" y="1069.2" textLength="61" cl [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-44)">│</text><text class="terminal-1143647577-r7" x="329.4" y="1093.6" textLength="1110.2" clip-path="url(#terminal-1143647577-line-44)">(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;& [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1143647577-line-45)">│</text><text class="terminal-1143647577-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1143647577-line-45)">-</text><text class="terminal-1143647577-r5" x="36.6" y="1118" textLength="97.6" clip-path="url(#terminal-1143647577-line-45)">-verbose</text><text class="terminal-1143647577-r6" x="280.6" y="1118" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-46)">│</text><text class="terminal-1143647577-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1143647577-line-46)">-</text><text class="terminal-1143647577-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-1143647577-line-46)">-dry</text><text class="terminal-1143647577-r5" x="85.4" y="1142.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-47)">│</text><text class="terminal-1143647577-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1143647577-line-47)">-</text><text class="terminal-1143647577-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-1143647577-line-47)">-github</text><text class="terminal-1143647577-r5" x="122" y="1166.8" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-48)">│</text><text class="terminal-1143647577-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1143647577-line-48)">-</text><text class="terminal-1143647577-r5" x="36.6" y="1191.2" textLength="61" clip-path="url(#terminal-1143647577-line-48)">-help</text><text class="terminal-1143647577-r6" x="280.6" y="1191.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1143647577-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-1143647577-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1143647577-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-1143647577-line-49)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py b/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
index 81b9fedf52..360672dc8f 100755
--- a/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
+++ b/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
@@ -55,7 +55,7 @@ def print_help_for_all_commands():
     env['RECORD_BREEZE_OUTPUT_FILE'] = str(BREEZE_IMAGES_DIR / "output-commands.svg")
     env['TERM'] = "xterm-256color"
     env['PYTHONPATH'] = str(BREEZE_SOURCES_DIR)
-    new_hash = check_output(
+    new_hash_dump = PREAMBLE + check_output(
         [
             sys.executable,
             str(BREEZE_SOURCES_DIR / "airflow_breeze" / "breeze.py"),
@@ -67,12 +67,17 @@ def print_help_for_all_commands():
     )
     hash_file_path = BREEZE_IMAGES_DIR / "output-commands-hash.txt"
     try:
-        old_hash = hash_file_path.read_text()[len(PREAMBLE) :]
+        old_hash_dump = hash_file_path.read_text()
     except FileNotFoundError:
-        old_hash = ""
-    if old_hash == new_hash:
-        console.print(f"[bright_blue]Skip generation of SVG images as command hash is unchanged {old_hash}")
+        old_hash_dump = ""
+    if old_hash_dump == new_hash_dump:
+        console.print("[bright_blue]Skip generation of SVG images as command hash files are unchanged:")
+        console.print(old_hash_dump, markup=False)
         return
+    else:
+        console.print("[yellow]The hash files differ")
+        console.print(new_hash_dump, markup=False)
+        console.print(old_hash_dump, markup=False)
     run([sys.executable, "-m", "pip", "install", "--upgrade", "-e", BREEZE_INSTALL_DIR])
     env = os.environ.copy()
     env['AIRFLOW_SOURCES_ROOT'] = str(AIRFLOW_SOURCES_DIR)
@@ -89,7 +94,7 @@ def print_help_for_all_commands():
         env['RECORD_BREEZE_OUTPUT_FILE'] = str(BREEZE_IMAGES_DIR / f"output-{command}.svg")
         env['TERM'] = "xterm-256color"
         check_call(["breeze", command, "--help"], env=env)
-    hash_file_path.write_text(PREAMBLE + new_hash)
+    hash_file_path.write_text(new_hash_dump)
 
 
 def verify_all_commands_described_in_docs():


[airflow] 18/39: Switch to building images in parallell (#24580)

Posted by po...@apache.org.
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 9c57cf3baf0ce623a65730e0240d0551d86034e8
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 21 17:58:54 2022 +0200

    Switch to building images in parallell (#24580)
    
    In the new Breeze, switching to using parallelism is a ... breeze.
    
    This PR adds the capability of building the images in parallel in Breeze
    locally - for breeze command, but also uses this capability to build the
    images in parallel in our CI. Our builds are always executed on
    powerful, big machines with lots of CPU and docker run in memory
    filesystem with 32GB RAM, so it should be possible to run all builds in
    parallel on a single machine rather then spin off parallel machines to
    run the builds using the matrix strategy of Github Actions.
    
    Generally speaking - this will either speed up or get 4x cost saving for
    the build steps for all the "full test needed" PRs as well as all the
    main builds.
    
    There are a number of savings and improvements we can achieve this way:
    
    1) less overhead for starting and runnning the machines
    2) seems that with the new buildkit, the parallel builds are not
       suffering from some sequential locks (as it used to be, so
       we are basically do the same job using 25% resources for building
       the images.
    3) we will stop having random "one image failed to build" cases - they
       will all either fail or succeed.
    4) Less checks in the output
    5) Production builds will additionally gain from single CI image
       pulled in order to perform the preparation of the packages
       and single package preparation step - it will save 4-5 minutes
       per image.
    
    The disadvantage is a less clear output of such parallel build where
    outputs from multiple builds will be interleaved in one CI output.
    
    (cherry picked from commit 893d935ff01212085351b7ad13b19fca1d53bb57)
---
 .github/workflows/build-images.yml                 |  42 +--
 .github/workflows/ci.yml                           |  42 +--
 dev/REFRESHING_CI_CACHE.md                         |   2 +-
 .../airflow_breeze/commands/ci_image_commands.py   |  85 +++--
 .../commands/production_image_commands.py          |  90 ++++--
 .../src/airflow_breeze/utils/common_options.py     |   6 -
 dev/refresh_images.sh                              |   4 +-
 images/breeze/output-build-image.svg               | 276 +++++++++--------
 images/breeze/output-build-prod-image.svg          | 344 +++++++++++----------
 images/breeze/output-commands-hash.txt             |   2 +-
 scripts/ci/selective_ci_checks.sh                  |   2 +
 11 files changed, 489 insertions(+), 406 deletions(-)

diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index 9970a82e6c..541c721659 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -57,6 +57,7 @@ jobs:
       pythonVersions: "${{ steps.selective-checks.python-versions }}"
       upgradeToNewerDependencies: ${{ steps.selective-checks.outputs.upgrade-to-newer-dependencies }}
       allPythonVersions: ${{ steps.selective-checks.outputs.all-python-versions }}
+      allPythonVersionsListAsString: ${{ steps.selective-checks.outputs.all-python-versions-list-as-string }}
       defaultPythonVersion: ${{ steps.selective-checks.outputs.default-python-version }}
       run-tests: ${{ steps.selective-checks.outputs.run-tests }}
       run-kubernetes-tests: ${{ steps.selective-checks.outputs.run-kubernetes-tests }}
@@ -155,19 +156,14 @@ jobs:
     permissions:
       packages: write
     timeout-minutes: 80
-    name: "Build CI image ${{matrix.python-version}}"
+    name: "Build CI images ${{ needs.build-info.outputs.allPythonVersionsListAsString }}"
     runs-on: ${{ fromJson(needs.build-info.outputs.runsOn) }}
     needs: [build-info]
-    strategy:
-      matrix:
-        python-version: ${{ fromJson(needs.build-info.outputs.allPythonVersions) }}
-      fail-fast: true
     if: |
       needs.build-info.outputs.image-build == 'true' &&
       github.event.pull_request.head.repo.full_name != 'apache/airflow'
     env:
       RUNS_ON: ${{ fromJson(needs.build-info.outputs.runsOn)[0] }}
-      PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
       BACKEND: sqlite
       outputs: ${{toJSON(needs.build-info.outputs) }}
     steps:
@@ -226,20 +222,25 @@ jobs:
       - run: ./scripts/ci/install_breeze.sh
       - name: "Free space"
         run: breeze free-space
-      - name: Build & Push CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze build-image --push-image --tag-as-latest
+      - name: >
+          Build & Push CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+        run: breeze build-image --push-image --tag-as-latest --run-in-parallel
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
       - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
         if: failure() || cancelled()
-        run: breeze build-image --push-image --empty-image
+        run: breeze build-image --push-image --empty-image --run-in-parallel
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-      - name: "Candidates for pip resolver backtrack triggers: ${{ matrix.python-version }}"
+      - name: "Candidates for pip resolver backtrack triggers"
         if: failure() || cancelled()
-        run: breeze find-newer-dependencies --max-age 1 --python "${{ matrix.python-version }}"
+        run: >
+          breeze find-newer-dependencies --max-age 1
+          --python "${{ needs.build-info.outputs.defaultPythonVersion }}"
       - name: "Fix ownership"
         run: breeze fix-ownership
         if: always()
@@ -248,19 +249,14 @@ jobs:
     permissions:
       packages: write
     timeout-minutes: 80
-    name: "Build PROD image ${{matrix.python-version}}"
+    name: "Build PROD images ${{ needs.build-info.outputs.allPythonVersionsListAsString }}"
     runs-on: ${{ fromJson(needs.build-info.outputs.runsOn) }}
     needs: [build-info, build-ci-images]
-    strategy:
-      matrix:
-        python-version: ${{ fromJson(needs.build-info.outputs.allPythonVersions) }}
-      fail-fast: true
     if: |
       needs.build-info.outputs.image-build == 'true' &&
       github.event.pull_request.head.repo.full_name != 'apache/airflow'
     env:
       RUNS_ON: ${{ fromJson(needs.build-info.outputs.runsOn)[0] }}
-      PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
       BACKEND: sqlite
     steps:
       - name: Cleanup repo
@@ -320,7 +316,7 @@ jobs:
         run: breeze free-space
       - name: >
           Pull CI image for PROD build:
-          ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.defaultPythonVersion }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
         run: breeze pull-image --tag-as-latest
         env:
           # Always use default Python version of CI image for preparing packages
@@ -338,9 +334,12 @@ jobs:
         run: breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi dev0
       - name: "Move dist packages to docker-context files"
         run: mv -v ./dist/*.whl ./docker-context-files
-      - name: Build & Push PROD image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+      - name: >
+          Build & Push PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
         run: >
           breeze build-prod-image
+          --run-in-parallel
           --tag-as-latest
           --push-image
           --install-packages-from-context
@@ -350,9 +349,10 @@ jobs:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-      - name: Push empty PROD image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+      - name: Push empty PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
         if: failure() || cancelled()
-        run: breeze build-prod-image --cleanup-context --push-image --empty-image
+        run: breeze build-prod-image --cleanup-context --push-image --empty-image --run-in-parallel
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Fix ownership"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bde6fd15e6..c0cbb9f09b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -132,6 +132,7 @@ jobs:
       upgradeToNewerDependencies: ${{ steps.selective-checks.outputs.upgrade-to-newer-dependencies }}
       pythonVersions: ${{ steps.selective-checks.outputs.python-versions }}
       pythonVersionsListAsString: ${{ steps.selective-checks.outputs.python-versions-list-as-string }}
+      allPythonVersionsListAsString: ${{ steps.selective-checks.outputs.all-python-versions-list-as-string }}
       defaultPythonVersion: ${{ steps.selective-checks.outputs.default-python-version }}
       kubernetesVersions: ${{ steps.selective-checks.outputs.kubernetes-versions }}
       kubernetesVersionsListAsString: ${{ steps.selective-checks.outputs.kubernetes-versions-list-as-string }}
@@ -285,13 +286,11 @@ jobs:
     permissions:
       packages: write
     timeout-minutes: 80
-    name: "${{needs.build-info.outputs.buildJobDescription}} CI image ${{matrix.python-version}}"
+    name: >
+      ${{needs.build-info.outputs.buildJobDescription}} CI images
+      ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
     runs-on: ${{ fromJson(needs.build-info.outputs.runsOn) }}
     needs: [build-info]
-    strategy:
-      matrix:
-        python-version: ${{ fromJson(needs.build-info.outputs.allPythonVersions) }}
-      fail-fast: true
     env:
       RUNS_ON: ${{ fromJson(needs.build-info.outputs.runsOn)[0] }}
     steps:
@@ -311,7 +310,7 @@ jobs:
         if: needs.build-info.outputs.inWorkflowBuild == 'true'
       - name: "Retrieve DEFAULTS from the _initialization.sh"
         # We cannot "source" the script here because that would be a security problem (we cannot run
-        # any code that comes from the sources coming from the PR. Therefore we extract the
+        # any code that comes from the sources coming from the PR. Therefore, we extract the
         # DEFAULT_BRANCH and DEFAULT_CONSTRAINTS_BRANCH and DEBIAN_VERSION via custom grep/awk/sed commands
         id: defaults
         run: |
@@ -331,17 +330,21 @@ jobs:
       - name: "Free space"
         run: breeze free-space
         if: needs.build-info.outputs.inWorkflowBuild == 'true'
-      - name: Build & Push CI image ${{ matrix.python-version }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        run: breeze build-image --push-image --tag-as-latest
+      - name: >
+          Build & Push CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
+        run: breeze build-image --push-image --tag-as-latest --run-in-parallel
         env:
-          PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
         if: needs.build-info.outputs.inWorkflowBuild == 'true'
-      - name: "Candidates for pip resolver backtrack triggers: ${{ matrix.python-version }}"
+      - name: "Candidates for pip resolver backtrack triggers"
         if: failure() || cancelled()
-        run: breeze find-newer-dependencies --max-age 1 --python "${{ matrix.python-version }}"
+        run: >
+          breeze find-newer-dependencies --max-age 1
+          --python "${{ needs.build-info.outputs.defaultPythonVersion }}"
       - name: "Fix ownership"
         run: breeze fix-ownership
         if: always() && needs.build-info.outputs.inWorkflowBuild == 'true'
@@ -350,17 +353,14 @@ jobs:
     permissions:
       packages: write
     timeout-minutes: 80
-    name: "${{needs.build-info.outputs.buildJobDescription}} PROD image ${{matrix.python-version}}"
+    name: >
+      ${{needs.build-info.outputs.buildJobDescription}} PROD images
+      ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
     runs-on: ${{ fromJson(needs.build-info.outputs.runsOn) }}
     needs: [build-info, build-ci-images]
-    strategy:
-      matrix:
-        python-version: ${{ fromJson(needs.build-info.outputs.allPythonVersions) }}
-      fail-fast: true
     env:
       RUNS_ON: ${{ fromJson(needs.build-info.outputs.runsOn)[0] }}
       BACKEND: sqlite
-      PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
       DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
       VERSION_SUFFIX_FOR_PYPI: "dev0"
     steps:
@@ -424,10 +424,13 @@ jobs:
       - name: "Move dist packages to docker-context files"
         run: mv -v ./dist/*.whl ./docker-context-files
         if: needs.build-info.outputs.inWorkflowBuild == 'true'
-      - name: Build & Push PROD image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+      - name: >
+          Build & Push PROD images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
         run: >
           breeze build-prod-image
           --tag-as-latest
+          --run-in-parallel
           --push-image
           --install-packages-from-context
           --disable-airflow-repo-cache
@@ -436,6 +439,7 @@ jobs:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
+          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
         if: needs.build-info.outputs.inWorkflowBuild == 'true'
       - name: "Fix ownership"
         run: breeze fix-ownership
@@ -1385,7 +1389,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           key: ${{ runner.os }}-docker-venv-${{ hashFiles('scripts/ci/images/ci_run_docker_tests.py') }}
       - name: Wait for PROD images ${{ env.PYTHON_VERSIONS }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
         # We wait for the images to be available either from "build-images.yml' run as pull_request_target
-        # or from build-prod-image above.
+        # or from build-prod-images above.
         # We are utilising single job to wait for all images because this job merely waits
         # For the images to be available and test them.
         run: breeze pull-prod-image --verify-image --wait-for-image --run-in-parallel
diff --git a/dev/REFRESHING_CI_CACHE.md b/dev/REFRESHING_CI_CACHE.md
index 85194845dc..5fd458bf34 100644
--- a/dev/REFRESHING_CI_CACHE.md
+++ b/dev/REFRESHING_CI_CACHE.md
@@ -51,7 +51,7 @@ manual refresh might be needed.
 # Manually generating constraint files
 
 ```bash
-breeze build-image --build-multiple-images --upgrade-to-newer-dependencies --answer yes
+breeze build-image --run-in-parallel --upgrade-to-newer-dependencies --answer yes
 breeze generate-constraints --airflow-constraints-mode constraints --run-in-parallel --answer yes
 breeze generate-constraints --airflow-constraints-mode constraints-source-providers --run-in-parallel --answer yes
 breeze generate-constraints --airflow-constraints-mode constraints-no-providers --run-in-parallel --answer yes
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index 9ce895578e..ce38e83724 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -37,7 +37,6 @@ from airflow_breeze.utils.common_options import (
     option_airflow_constraints_mode_ci,
     option_airflow_constraints_reference_build,
     option_answer,
-    option_build_multiple_images,
     option_debian_version,
     option_dev_apt_command,
     option_dev_apt_deps,
@@ -115,9 +114,10 @@ CI_IMAGE_TOOLS_PARAMETERS = {
             ],
         },
         {
-            "name": "Building multiple images",
+            "name": "Building images in parallel",
             "options": [
-                "--build-multiple-images",
+                "--run-in-parallel",
+                "--parallelism",
                 "--python-versions",
             ],
         },
@@ -189,13 +189,46 @@ CI_IMAGE_TOOLS_PARAMETERS = {
 }
 
 
+def start_building(ci_image_params: BuildCiParams, dry_run: bool, verbose: bool) -> bool:
+    """Starts building attempt. Returns false if we should not continue"""
+    if not ci_image_params.force_build and not ci_image_params.upgrade_to_newer_dependencies:
+        if not should_we_run_the_build(build_ci_params=ci_image_params):
+            return False
+    if ci_image_params.prepare_buildx_cache or ci_image_params.push_image:
+        login_to_github_docker_registry(image_params=ci_image_params, dry_run=dry_run, verbose=verbose)
+    return True
+
+
+def run_build_in_parallel(
+    image_params_list: List[BuildCiParams],
+    python_version_list: List[str],
+    parallelism: int,
+    dry_run: bool,
+    verbose: bool,
+) -> None:
+    get_console().print(
+        f"\n[info]Building with parallelism = {parallelism} for the images: {python_version_list}:"
+    )
+    pool = mp.Pool(parallelism)
+    results = [
+        pool.apply_async(
+            run_build_ci_image,
+            args=(verbose, dry_run, image_param, True),
+        )
+        for image_param in image_params_list
+    ]
+    check_async_run_results(results)
+    pool.close()
+
+
 @main.command(name='build-image')
 @option_github_repository
 @option_verbose
 @option_dry_run
 @option_answer
 @option_python
-@option_build_multiple_images
+@option_run_in_parallel
+@option_parallelism
 @option_python_versions
 @option_upgrade_to_newer_dependencies
 @option_platform
@@ -229,7 +262,8 @@ CI_IMAGE_TOOLS_PARAMETERS = {
 def build_image(
     verbose: bool,
     dry_run: bool,
-    build_multiple_images: bool,
+    run_in_parallel: bool,
+    parallelism: int,
     python_versions: str,
     answer: str,
     **kwargs,
@@ -237,7 +271,7 @@ def build_image(
     """Build CI image. Include building multiple images for all python versions (sequentially)."""
 
     def run_build(ci_image_params: BuildCiParams) -> None:
-        return_code, info = build_ci_image(
+        return_code, info = run_build_ci_image(
             verbose=verbose, dry_run=dry_run, ci_image_params=ci_image_params, parallel=False
         )
         if return_code != 0:
@@ -246,15 +280,27 @@ def build_image(
 
     perform_environment_checks(verbose=verbose)
     parameters_passed = filter_out_none(**kwargs)
-    if build_multiple_images:
+    parameters_passed['force_build'] = True
+    fix_group_permissions(verbose=verbose)
+    if run_in_parallel:
         python_version_list = get_python_version_list(python_versions)
+        params_list: List[BuildCiParams] = []
         for python in python_version_list:
             params = BuildCiParams(**parameters_passed)
             params.python = python
             params.answer = answer
-            run_build(ci_image_params=params)
+            params_list.append(params)
+        start_building(params_list[0], dry_run=dry_run, verbose=verbose)
+        run_build_in_parallel(
+            image_params_list=params_list,
+            python_version_list=python_version_list,
+            parallelism=parallelism,
+            dry_run=dry_run,
+            verbose=verbose,
+        )
     else:
         params = BuildCiParams(**parameters_passed)
+        start_building(params, dry_run=dry_run, verbose=verbose)
         run_build(ci_image_params=params)
 
 
@@ -436,7 +482,7 @@ def should_we_run_the_build(build_ci_params: BuildCiParams, verbose: bool) -> bo
         sys.exit(1)
 
 
-def build_ci_image(
+def run_build_ci_image(
     verbose: bool, dry_run: bool, ci_image_params: BuildCiParams, parallel: bool
 ) -> Tuple[int, str]:
     """
@@ -467,17 +513,11 @@ def build_ci_image(
             "preparing buildx cache![/]\n"
         )
         return 1, "Error: building multi-platform image without --push-image."
-    fix_group_permissions(verbose=verbose)
     if verbose or dry_run:
         get_console().print(
             f"\n[info]Building CI image of airflow from {AIRFLOW_SOURCES_ROOT} "
             f"python version: {ci_image_params.python}[/]\n"
         )
-    if not ci_image_params.force_build and not ci_image_params.upgrade_to_newer_dependencies:
-        if not should_we_run_the_build(build_ci_params=ci_image_params, verbose=verbose):
-            return 0, f"Image build: {ci_image_params.python}"
-    if ci_image_params.prepare_buildx_cache or ci_image_params.push_image:
-        login_to_github_docker_registry(image_params=ci_image_params, dry_run=dry_run, verbose=verbose)
     if ci_image_params.prepare_buildx_cache:
         build_command_result = build_cache(
             image_params=ci_image_params, dry_run=dry_run, verbose=verbose, parallel=parallel
@@ -524,19 +564,6 @@ def build_ci_image(
     return build_command_result.returncode, f"Image build: {ci_image_params.python}"
 
 
-def build_ci_image_in_parallel(
-    verbose: bool, dry_run: bool, parallelism: int, python_version_list: List[str], **kwargs
-):
-    """Run CI image builds in parallel."""
-    get_console().print(
-        f"\n[info]Running with parallelism = {parallelism} for the images: {python_version_list}:"
-    )
-    pool = mp.Pool(parallelism)
-    results = [pool.apply_async(build_ci_image, args=(verbose, dry_run, False), kwds=kwargs)]
-    check_async_run_results(results)
-    pool.close()
-
-
 def rebuild_or_pull_ci_image_if_needed(
     command_params: Union[ShellParams, BuildCiParams], dry_run: bool, verbose: bool
 ) -> None:
@@ -575,4 +602,4 @@ def rebuild_or_pull_ci_image_if_needed(
             'Forcing build.[/]'
         )
         ci_image_params.force_build = True
-    build_ci_image(verbose, dry_run=dry_run, ci_image_params=ci_image_params, parallel=False)
+    run_build_ci_image(verbose, dry_run=dry_run, ci_image_params=ci_image_params, parallel=False)
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 0b5ed2e68b..9ae3791e31 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -15,9 +15,10 @@
 # specific language governing permissions and limitations
 # under the License.
 import contextlib
+import multiprocessing as mp
 import os
 import sys
-from typing import Optional, Tuple
+from typing import List, Optional, Tuple
 
 import click
 
@@ -36,7 +37,6 @@ from airflow_breeze.utils.common_options import (
     option_airflow_constraints_mode_prod,
     option_airflow_constraints_reference_build,
     option_answer,
-    option_build_multiple_images,
     option_debian_version,
     option_dev_apt_command,
     option_dev_apt_deps,
@@ -74,6 +74,7 @@ from airflow_breeze.utils.docker_command_utils import (
     prepare_docker_build_from_input,
 )
 from airflow_breeze.utils.image import run_pull_image, run_pull_in_parallel, tag_image_as_latest
+from airflow_breeze.utils.parallel import check_async_run_results
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, DOCKER_CONTEXT_DIR
 from airflow_breeze.utils.python_versions import get_python_version_list
 from airflow_breeze.utils.registry import login_to_github_docker_registry
@@ -103,9 +104,10 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS = {
             ],
         },
         {
-            "name": "Building multiple images",
+            "name": "Building images in parallel",
             "options": [
-                "--build-multiple-images",
+                "--run-in-parallel",
+                "--parallelism",
                 "--python-versions",
             ],
         },
@@ -192,12 +194,48 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS = {
 }
 
 
+def start_building(prod_image_params: BuildProdParams, dry_run: bool, verbose: bool):
+    if prod_image_params.cleanup_context:
+        clean_docker_context_files(verbose=verbose, dry_run=dry_run)
+    check_docker_context_files(prod_image_params.install_packages_from_context)
+    if prod_image_params.prepare_buildx_cache or prod_image_params.push_image:
+        login_to_github_docker_registry(image_params=prod_image_params, dry_run=dry_run, verbose=verbose)
+
+
+def run_build_in_parallel(
+    image_params_list: List[BuildProdParams],
+    python_version_list: List[str],
+    parallelism: int,
+    dry_run: bool,
+    verbose: bool,
+) -> None:
+    get_console().print(
+        f"\n[info]Building with parallelism = {parallelism} for the images: {python_version_list}:"
+    )
+    pool = mp.Pool(parallelism)
+    results = [
+        pool.apply_async(
+            run_build_production_image,
+            args=(
+                verbose,
+                dry_run,
+                image_param,
+                True,
+            ),
+        )
+        for image_param in image_params_list
+    ]
+    check_async_run_results(results)
+    pool.close()
+
+
 @option_verbose
 @option_dry_run
 @option_answer
 @main.command(name='build-prod-image')
 @option_python
-@option_build_multiple_images
+@option_run_in_parallel
+@option_parallelism
 @option_python_versions
 @option_upgrade_to_newer_dependencies
 @option_platform
@@ -269,7 +307,8 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS = {
 def build_prod_image(
     verbose: bool,
     dry_run: bool,
-    build_multiple_images: bool,
+    run_in_parallel: bool,
+    parallelism: int,
     python_versions: str,
     answer: Optional[str],
     **kwargs,
@@ -279,8 +318,8 @@ def build_prod_image(
     """
 
     def run_build(prod_image_params: BuildProdParams) -> None:
-        return_code, info = build_production_image(
-            verbose=verbose, dry_run=dry_run, prod_image_params=prod_image_params
+        return_code, info = run_build_production_image(
+            verbose=verbose, dry_run=dry_run, prod_image_params=prod_image_params, parallel=False
         )
         if return_code != 0:
             get_console().print(f"[error]Error when building image! {info}")
@@ -288,15 +327,27 @@ def build_prod_image(
 
     perform_environment_checks(verbose=verbose)
     parameters_passed = filter_out_none(**kwargs)
-    if build_multiple_images:
+
+    fix_group_permissions(verbose=verbose)
+    if run_in_parallel:
         python_version_list = get_python_version_list(python_versions)
+        params_list: List[BuildProdParams] = []
         for python in python_version_list:
             params = BuildProdParams(**parameters_passed)
             params.python = python
             params.answer = answer
-            run_build(prod_image_params=params)
+            params_list.append(params)
+        start_building(prod_image_params=params_list[0], dry_run=dry_run, verbose=verbose)
+        run_build_in_parallel(
+            image_params_list=params_list,
+            python_version_list=python_version_list,
+            parallelism=parallelism,
+            dry_run=dry_run,
+            verbose=verbose,
+        )
     else:
         params = BuildProdParams(**parameters_passed)
+        start_building(prod_image_params=params, dry_run=dry_run, verbose=verbose)
         run_build(prod_image_params=params)
 
 
@@ -473,8 +524,8 @@ def check_docker_context_files(install_packages_from_context: bool):
             sys.exit(1)
 
 
-def build_production_image(
-    verbose: bool, dry_run: bool, prod_image_params: BuildProdParams
+def run_build_production_image(
+    verbose: bool, dry_run: bool, prod_image_params: BuildProdParams, parallel: bool
 ) -> Tuple[int, str]:
     """
     Builds PROD image:
@@ -505,21 +556,10 @@ def build_production_image(
             " or preparing buildx cache![/]\n"
         )
         return 1, "Error: building multi-platform image without --push-image."
-    fix_group_permissions(verbose=verbose)
-    if verbose or dry_run:
-        get_console().print(
-            f"\n[info]Building PROD image of airflow from {AIRFLOW_SOURCES_ROOT} "
-            f"python version: {prod_image_params.python}[/]\n"
-        )
-    if prod_image_params.cleanup_context:
-        clean_docker_context_files(verbose=verbose, dry_run=dry_run)
-    check_docker_context_files(prod_image_params.install_packages_from_context)
-    if prod_image_params.prepare_buildx_cache or prod_image_params.push_image:
-        login_to_github_docker_registry(image_params=prod_image_params, dry_run=dry_run, verbose=verbose)
     get_console().print(f"\n[info]Building PROD Image for Python {prod_image_params.python}\n")
     if prod_image_params.prepare_buildx_cache:
         build_command_result = build_cache(
-            image_params=prod_image_params, dry_run=dry_run, verbose=verbose, parallel=False
+            image_params=prod_image_params, dry_run=dry_run, verbose=verbose, parallel=parallel
         )
     else:
         if prod_image_params.empty_image:
@@ -547,7 +587,7 @@ def build_production_image(
                 cwd=AIRFLOW_SOURCES_ROOT,
                 check=False,
                 text=True,
-                enabled_output_group=True,
+                enabled_output_group=not parallel,
             )
             if build_command_result.returncode == 0:
                 if prod_image_params.tag_as_latest:
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index 0bc4d5af9f..292e74891d 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -377,12 +377,6 @@ option_parallelism = click.option(
     envvar='PARALLELISM',
     show_default=True,
 )
-option_build_multiple_images = click.option(
-    '--build-multiple-images',
-    help="Run the operation sequentially on all or selected subset of Python versions.",
-    is_flag=True,
-    envvar='BUILD_MULTIPLE_IMAGES',
-)
 argument_packages = click.argument(
     "packages",
     nargs=-1,
diff --git a/dev/refresh_images.sh b/dev/refresh_images.sh
index ed5591585a..4a11212b2c 100755
--- a/dev/refresh_images.sh
+++ b/dev/refresh_images.sh
@@ -26,7 +26,7 @@ export GITHUB_TOKEN=""
 breeze self-upgrade --force
 
 breeze build-image \
-     --build-multiple-images \
+     --run-in-parallel \
      --prepare-buildx-cache \
      --force-build \
      --platform linux/amd64,linux/arm64 \
@@ -44,7 +44,7 @@ breeze prepare-airflow-package --package-format wheel --version-suffix-for-pypi
 mv -v ./dist/*.whl ./docker-context-files
 
 breeze build-prod-image \
-     --build-multiple-images \
+     --run-in-parallel \
      --airflow-is-in-context \
      --install-packages-from-context \
      --prepare-buildx-cache \
diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg
index 81703735d0..389c973d0e 100644
--- a/images/breeze/output-build-image.svg
+++ b/images/breeze/output-build-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1514.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1562.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,281 +19,289 @@
         font-weight: 700;
     }
 
-    .terminal-1489702336-matrix {
+    .terminal-4238821259-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1489702336-title {
+    .terminal-4238821259-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1489702336-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1489702336-r2 { fill: #c5c8c6 }
-.terminal-1489702336-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1489702336-r4 { fill: #868887 }
-.terminal-1489702336-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1489702336-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1489702336-r7 { fill: #8d7b39 }
+    .terminal-4238821259-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4238821259-r2 { fill: #c5c8c6 }
+.terminal-4238821259-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4238821259-r4 { fill: #868887 }
+.terminal-4238821259-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4238821259-r6 { fill: #98a84b;font-weight: bold }
+.terminal-4238821259-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1489702336-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1463.0" />
+    <clipPath id="terminal-4238821259-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1511.8" />
     </clipPath>
-    <clipPath id="terminal-1489702336-line-0">
+    <clipPath id="terminal-4238821259-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-1">
+<clipPath id="terminal-4238821259-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-2">
+<clipPath id="terminal-4238821259-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-3">
+<clipPath id="terminal-4238821259-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-4">
+<clipPath id="terminal-4238821259-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-5">
+<clipPath id="terminal-4238821259-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-6">
+<clipPath id="terminal-4238821259-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-7">
+<clipPath id="terminal-4238821259-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-8">
+<clipPath id="terminal-4238821259-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-9">
+<clipPath id="terminal-4238821259-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-10">
+<clipPath id="terminal-4238821259-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-11">
+<clipPath id="terminal-4238821259-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-12">
+<clipPath id="terminal-4238821259-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-13">
+<clipPath id="terminal-4238821259-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-14">
+<clipPath id="terminal-4238821259-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-15">
+<clipPath id="terminal-4238821259-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-16">
+<clipPath id="terminal-4238821259-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-17">
+<clipPath id="terminal-4238821259-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-18">
+<clipPath id="terminal-4238821259-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-19">
+<clipPath id="terminal-4238821259-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-20">
+<clipPath id="terminal-4238821259-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-21">
+<clipPath id="terminal-4238821259-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-22">
+<clipPath id="terminal-4238821259-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-23">
+<clipPath id="terminal-4238821259-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-24">
+<clipPath id="terminal-4238821259-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-25">
+<clipPath id="terminal-4238821259-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-26">
+<clipPath id="terminal-4238821259-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-27">
+<clipPath id="terminal-4238821259-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-28">
+<clipPath id="terminal-4238821259-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-29">
+<clipPath id="terminal-4238821259-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-30">
+<clipPath id="terminal-4238821259-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-31">
+<clipPath id="terminal-4238821259-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-32">
+<clipPath id="terminal-4238821259-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-33">
+<clipPath id="terminal-4238821259-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-34">
+<clipPath id="terminal-4238821259-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-35">
+<clipPath id="terminal-4238821259-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-36">
+<clipPath id="terminal-4238821259-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-37">
+<clipPath id="terminal-4238821259-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-38">
+<clipPath id="terminal-4238821259-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-39">
+<clipPath id="terminal-4238821259-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-40">
+<clipPath id="terminal-4238821259-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-41">
+<clipPath id="terminal-4238821259-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-42">
+<clipPath id="terminal-4238821259-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-43">
+<clipPath id="terminal-4238821259-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-44">
+<clipPath id="terminal-4238821259-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-45">
+<clipPath id="terminal-4238821259-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-46">
+<clipPath id="terminal-4238821259-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-47">
+<clipPath id="terminal-4238821259-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-48">
+<clipPath id="terminal-4238821259-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-49">
+<clipPath id="terminal-4238821259-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-50">
+<clipPath id="terminal-4238821259-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-51">
+<clipPath id="terminal-4238821259-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-52">
+<clipPath id="terminal-4238821259-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-53">
+<clipPath id="terminal-4238821259-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-54">
+<clipPath id="terminal-4238821259-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-55">
+<clipPath id="terminal-4238821259-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-56">
+<clipPath id="terminal-4238821259-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-57">
+<clipPath id="terminal-4238821259-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1489702336-line-58">
+<clipPath id="terminal-4238821259-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-4238821259-line-59">
+    <rect x="0" y="1441.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4238821259-line-60">
+    <rect x="0" y="1465.5" 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="1512" rx="8"/><text class="terminal-1489702336-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1560.8" rx="8"/><text class="terminal-4238821259-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-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-1489702336-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4238821259-clip-terminal)">
     
-    <g class="terminal-1489702336-matrix">
-    <text class="terminal-1489702336-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1489702336-line-0)">
-</text><text class="terminal-1489702336-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-1)">Usage:&#160;</text><text class="terminal-1489702336-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-1489702336-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-1489702336-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-1)">
-</text><text class="terminal-1489702336-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-2)">
-</text><text class="terminal-1489702336-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-1489702336-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-1489702336-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-3)">
-</text><text class="terminal-1489702336-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-4)">
-</text><text class="terminal-1489702336-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1489702336-line-5)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1489702336-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-148970 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-6)">│</text><text class="terminal-1489702336-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-6)">-</text><text class="terminal-1489702336-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-6)">-python</text><text class="terminal-1489702336-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-148 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-7)">│</text><text class="terminal-1489702336-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1489702336-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-1489702336-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-8)">│</text><text class="terminal-1489702336-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1489702336-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-1489702336-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-9)">│</text><text class="terminal-1489702336-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-9)">-</text><text class="terminal-1489702336-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1489702336-line-9)">-upgrade</text><text class="terminal-1489702336-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
-</text><text class="terminal-1489702336-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1489702336-line-10)">│</text><text class="terminal-1489702336-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1489702336-line-10)">-</text><text class="terminal-1489702336-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-1489702336-line-10)">-debian</text><text class="terminal-1489702336-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-14897023 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-11)">│</text><text class="terminal-1489702336-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-11)">-</text><text class="terminal-1489702336-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1489702336-line-11)">-image</text><text class="terminal-1489702336-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1489702336-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-12)">│</text><text class="terminal-1489702336-r5" x="475.8" y="312.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-12)">-</text><text class="terminal-1489702336-r5" x="488" y="312.8" textLength="73.2" clip-path="url(#terminal-1489702336-line-12)">-mount</text><text class="terminal-1489702336-r5" x="561.2" y="312.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1489702336-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-13)">│</text><text class="terminal-1489702336-r7" x="475.8" y="337.2" textLength="963.8" clip-path="url(#terminal-1489702336-line-13)">(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;&#16 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-14)">│</text><text class="terminal-1489702336-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-14)">-</text><text class="terminal-1489702336-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-1489702336-line-14)">-tag</text><text class="terminal-1489702336-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-148 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1489702336-line-15)">│</text><text class="terminal-1489702336-r2" x="475.8" y="386" textLength="414.8" clip-path="url(#terminal-1489702336-line-15)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1489702336-r5" x="890.6" y="386" textLength="12.2" clip-path="url(#terminal-1489702336-line-15)">-</text><text class="terminal-1489702336-r5" x= [...]
-</text><text class="terminal-1489702336-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-16)">│</text><text class="terminal-1489702336-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-16)">-</text><text class="terminal-1489702336-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-16)">-docker</text><text class="terminal-1489702336-r5" x="122" y="410.4" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1489702336-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-17)">│</text><text class="terminal-1489702336-r4" x="475.8" y="434.8" textLength="549" clip-path="url(#terminal-1489702336-line-17)">[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-1489702336-r4" x="1451.8" y="43 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-18)">│</text><text class="terminal-1489702336-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-18)">-</text><text class="terminal-1489702336-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-1489702336-line-18)">-force</text><text class="terminal-1489702336-r5" x="109.8" y="459.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1489702336-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-1489702336-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-19)">
-</text><text class="terminal-1489702336-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-1489702336-line-20)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-1489702336-line-20)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-1489702336-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-21)">│</text><text class="terminal-1489702336-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-21)">-</text><text class="terminal-1489702336-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-1489702336-line-21)">-build</text><text class="terminal-1489702336-r5" x="109.8" y="532.4" textLength="195.2" clip-path="url(#termina [...]
-</text><text class="terminal-1489702336-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-22)">│</text><text class="terminal-1489702336-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-22)">-</text><text class="terminal-1489702336-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-1489702336-line-22)">-python</text><text class="terminal-1489702336-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1489702336-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-23)">│</text><text class="terminal-1489702336-r4" x="353.8" y="581.2" textLength="951.6" clip-path="url(#terminal-1489702336-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-1489702336-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-1489702336-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-24)">
-</text><text class="terminal-1489702336-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-1489702336-line-25)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-1489702336-line-25)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="630" textLength="24.4" clip-path="url [...]
-</text><text class="terminal-1489702336-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-26)">│</text><text class="terminal-1489702336-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-26)">-</text><text class="terminal-1489702336-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1489702336-line-26)">-install</text><text class="terminal-1489702336-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-1489702336-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-27)">│</text><text class="terminal-1489702336-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-27)">-</text><text class="terminal-1489702336-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-1489702336-line-27)">-airflow</text><text class="terminal-1489702336-r5" x="134.2" y="678.8" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-1489702336-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-28)">│</text><text class="terminal-1489702336-r7" x="463.6" y="703.2" textLength="866.2" clip-path="url(#terminal-1489702336-line-28)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-1489702336-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-28)">│</text><text clas [...]
-</text><text class="terminal-1489702336-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-29)">│</text><text class="terminal-1489702336-r4" x="463.6" y="727.6" textLength="866.2" clip-path="url(#terminal-1489702336-line-29)">[default:&#160;constraints-source-providers]&#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-1489702336-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1489702336-line-30)">│</text><text class="terminal-1489702336-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1489702336-line-30)">-</text><text class="terminal-1489702336-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-1489702336-line-30)">-airflow</text><text class="terminal-1489702336-r5" x="134.2" y="752" textLength="268.4" clip-path="url(#terminal-1489 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-31)">│</text><text class="terminal-1489702336-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-31)">-</text><text class="terminal-1489702336-r5" x="36.6" y="776.4" textLength="134.2" clip-path="url(#terminal-1489702336-line-31)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="776.4" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1489702336-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-32)">│</text><text class="terminal-1489702336-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-32)">-</text><text class="terminal-1489702336-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-1489702336-line-32)">-runtime</text><text class="terminal-1489702336-r5" x="134.2" y="800.8" textLength="109.8" clip-path="url(#termi [...]
-</text><text class="terminal-1489702336-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-33)">│</text><text class="terminal-1489702336-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-33)">-</text><text class="terminal-1489702336-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-1489702336-line-33)">-runtime</text><text class="terminal-1489702336-r5" x="134.2" y="825.2" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-1489702336-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-34)">│</text><text class="terminal-1489702336-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-34)">-</text><text class="terminal-1489702336-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-1489702336-line-34)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="849.6" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-1489702336-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1489702336-line-35)">│</text><text class="terminal-1489702336-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1489702336-line-35)">-</text><text class="terminal-1489702336-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-1489702336-line-35)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="874" textLength="207.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1489702336-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-36)">│</text><text class="terminal-1489702336-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-36)">-</text><text class="terminal-1489702336-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-1489702336-line-36)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="898.4" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-1489702336-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-37)">│</text><text class="terminal-1489702336-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-37)">-</text><text class="terminal-1489702336-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1489702336-line-37)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="922.8" textLength="244" clip-path="url(#ter [...]
-</text><text class="terminal-1489702336-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-38)">│</text><text class="terminal-1489702336-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-38)">-</text><text class="terminal-1489702336-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1489702336-line-38)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="947.2" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-1489702336-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-39)">│</text><text class="terminal-1489702336-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-39)">-</text><text class="terminal-1489702336-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-1489702336-line-39)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="971.6" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1489702336-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1489702336-line-40)">│</text><text class="terminal-1489702336-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1489702336-line-40)">-</text><text class="terminal-1489702336-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1489702336-line-40)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="996" textLength="195.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-41)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-41)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1020.4" textLength="48.8" clip-path="url(#terminal-1489702336-line-41)">-dev</text><text class="terminal-1489702336-r5" x="85.4" y="1020.4" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-42)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-42)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1044.8" textLength="48.8" clip-path="url(#terminal-1489702336-line-42)">-dev</text><text class="terminal-1489702336-r5" x="85.4" y="1044.8" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1069.2" textLength="1464" clip-path="url(#terminal-1489702336-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="1069.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-43)">
-</text><text class="terminal-1489702336-r4" x="0" y="1093.6" textLength="24.4" clip-path="url(#terminal-1489702336-line-44)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="1093.6" textLength="1415.2" clip-path="url(#terminal-1489702336-line-44)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="1093.6" textLeng [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1489702336-line-45)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1489702336-line-45)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-1489702336-line-45)">-github</text><text class="terminal-1489702336-r5" x="122" y="1118" textLength="73.2" clip-path="url(#terminal-1489 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-46)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-46)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-46)">-github</text><text class="terminal-1489702336-r5" x="122" y="1142.4" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-47)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-47)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1166.8" textLength="109.8" clip-path="url(#terminal-1489702336-line-47)">-platform</text><text class="terminal-1489702336-r2" x="341.6" y="1166.8" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-48)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-48)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1191.2" textLength="61" clip-path="url(#terminal-1489702336-line-48)">-push</text><text class="terminal-1489702336-r5" x="97.6" y="1191.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-49)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-49)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1215.6" textLength="73.2" clip-path="url(#terminal-1489702336-line-49)">-empty</text><text class="terminal-1489702336-r5" x="109.8" y="1215.6" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1489702336-line-50)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1489702336-line-50)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1240" textLength="97.6" clip-path="url(#terminal-1489702336-line-50)">-prepare</text><text class="terminal-1489702336-r5" x="134.2" y="1240" textLength="158.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-51)">│</text><text class="terminal-1489702336-r2" x="341.6" y="1264.4" textLength="1098" clip-path="url(#terminal-1489702336-line-51)">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-1489702336-r4" x="0" y="1288.8" textLength="1464" clip-path="url(#terminal-1489702336-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="1288.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-52)">
-</text><text class="terminal-1489702336-r4" x="0" y="1313.2" textLength="24.4" clip-path="url(#terminal-1489702336-line-53)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="1313.2" textLength="1415.2" clip-path="url(#terminal-1489702336-line-53)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="1313.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-54)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-54)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1337.6" textLength="85.4" clip-path="url(#terminal-1489702336-line-54)">-github</text><text class="terminal-1489702336-r5" x="122" y="1337.6" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1489702336-line-55)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1489702336-line-55)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-1489702336-line-55)">-verbose</text><text class="terminal-1489702336-r6" x="280.6" y="1362" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-56)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-56)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1386.4" textLength="48.8" clip-path="url(#terminal-1489702336-line-56)">-dry</text><text class="terminal-1489702336-r5" x="85.4" y="1386.4" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-57)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-57)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1410.8" textLength="85.4" clip-path="url(#terminal-1489702336-line-57)">-answer</text><text class="terminal-1489702336-r6" x="280.6" y="1410.8" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-58)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-58)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1435.2" textLength="61" clip-path="url(#terminal-1489702336-line-58)">-help</text><text class="terminal-1489702336-r6" x="280.6" y="1435.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1489702336-r4" x="0" y="1459.6" textLength="1464" clip-path="url(#terminal-1489702336-line-59)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="1459.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-59)">
+    <g class="terminal-4238821259-matrix">
+    <text class="terminal-4238821259-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4238821259-line-0)">
+</text><text class="terminal-4238821259-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-1)">Usage:&#160;</text><text class="terminal-4238821259-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-4238821259-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-4238821259-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-1)">
+</text><text class="terminal-4238821259-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-2)">
+</text><text class="terminal-4238821259-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-4238821259-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-4238821259-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-3)">
+</text><text class="terminal-4238821259-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-4)">
+</text><text class="terminal-4238821259-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4238821259-line-5)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4238821259-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-423882 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-6)">│</text><text class="terminal-4238821259-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-6)">-</text><text class="terminal-4238821259-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-6)">-python</text><text class="terminal-4238821259-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-423 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-7)">│</text><text class="terminal-4238821259-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-4238821259-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-4238821259-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-8)">│</text><text class="terminal-4238821259-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-4238821259-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-4238821259-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-9)">│</text><text class="terminal-4238821259-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-9)">-</text><text class="terminal-4238821259-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-4238821259-line-9)">-upgrade</text><text class="terminal-4238821259-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
+</text><text class="terminal-4238821259-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4238821259-line-10)">│</text><text class="terminal-4238821259-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-4238821259-line-10)">-</text><text class="terminal-4238821259-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-4238821259-line-10)">-debian</text><text class="terminal-4238821259-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-42388212 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-11)">│</text><text class="terminal-4238821259-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-11)">-</text><text class="terminal-4238821259-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-4238821259-line-11)">-image</text><text class="terminal-4238821259-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-4238821259-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-12)">│</text><text class="terminal-4238821259-r5" x="475.8" y="312.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-12)">-</text><text class="terminal-4238821259-r5" x="488" y="312.8" textLength="73.2" clip-path="url(#terminal-4238821259-line-12)">-mount</text><text class="terminal-4238821259-r5" x="561.2" y="312.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-4238821259-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-13)">│</text><text class="terminal-4238821259-r7" x="475.8" y="337.2" textLength="963.8" clip-path="url(#terminal-4238821259-line-13)">(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;&#16 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-14)">│</text><text class="terminal-4238821259-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-14)">-</text><text class="terminal-4238821259-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-4238821259-line-14)">-tag</text><text class="terminal-4238821259-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-423 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4238821259-line-15)">│</text><text class="terminal-4238821259-r2" x="475.8" y="386" textLength="414.8" clip-path="url(#terminal-4238821259-line-15)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-4238821259-r5" x="890.6" y="386" textLength="12.2" clip-path="url(#terminal-4238821259-line-15)">-</text><text class="terminal-4238821259-r5" x= [...]
+</text><text class="terminal-4238821259-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-16)">│</text><text class="terminal-4238821259-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-16)">-</text><text class="terminal-4238821259-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-16)">-docker</text><text class="terminal-4238821259-r5" x="122" y="410.4" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-4238821259-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-17)">│</text><text class="terminal-4238821259-r4" x="475.8" y="434.8" textLength="549" clip-path="url(#terminal-4238821259-line-17)">[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-4238821259-r4" x="1451.8" y="43 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-18)">│</text><text class="terminal-4238821259-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-18)">-</text><text class="terminal-4238821259-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-4238821259-line-18)">-force</text><text class="terminal-4238821259-r5" x="109.8" y="459.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-4238821259-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-4238821259-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-19)">
+</text><text class="terminal-4238821259-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-4238821259-line-20)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-4238821259-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-4238821259-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-21)">│</text><text class="terminal-4238821259-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-21)">-</text><text class="terminal-4238821259-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-4238821259-line-21)">-run</text><text class="terminal-4238821259-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-22)">│</text><text class="terminal-4238821259-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-22)">-</text><text class="terminal-4238821259-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-4238821259-line-22)">-parallelism</text><text class="terminal-4238821259-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-4238821259-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-23)">│</text><text class="terminal-4238821259-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-4238821259-line-23)">[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-4238821259-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-24)">│</text><text class="terminal-4238821259-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-24)">-</text><text class="terminal-4238821259-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-4238821259-line-24)">-python</text><text class="terminal-4238821259-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-4238821259-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-4238821259-line-25)">│</text><text class="terminal-4238821259-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-4238821259-line-25)">[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;&#1 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-4238821259-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-26)">
+</text><text class="terminal-4238821259-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-4238821259-line-27)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-4238821259-line-27)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="678.8" textLength="24.4" clip-pat [...]
+</text><text class="terminal-4238821259-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-28)">│</text><text class="terminal-4238821259-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-28)">-</text><text class="terminal-4238821259-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-4238821259-line-28)">-install</text><text class="terminal-4238821259-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-4238821259-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-29)">│</text><text class="terminal-4238821259-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-29)">-</text><text class="terminal-4238821259-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-4238821259-line-29)">-airflow</text><text class="terminal-4238821259-r5" x="134.2" y="727.6" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-4238821259-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-4238821259-line-30)">│</text><text class="terminal-4238821259-r7" x="463.6" y="752" textLength="866.2" clip-path="url(#terminal-4238821259-line-30)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-4238821259-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-4238821259-line-30)">│</text><text class="ter [...]
+</text><text class="terminal-4238821259-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-31)">│</text><text class="terminal-4238821259-r4" x="463.6" y="776.4" textLength="866.2" clip-path="url(#terminal-4238821259-line-31)">[default:&#160;constraints-source-providers]&#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-4238821259-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-32)">│</text><text class="terminal-4238821259-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-32)">-</text><text class="terminal-4238821259-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-4238821259-line-32)">-airflow</text><text class="terminal-4238821259-r5" x="134.2" y="800.8" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-4238821259-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-33)">│</text><text class="terminal-4238821259-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-33)">-</text><text class="terminal-4238821259-r5" x="36.6" y="825.2" textLength="134.2" clip-path="url(#terminal-4238821259-line-33)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="825.2" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-4238821259-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-34)">│</text><text class="terminal-4238821259-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-34)">-</text><text class="terminal-4238821259-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-4238821259-line-34)">-runtime</text><text class="terminal-4238821259-r5" x="134.2" y="849.6" textLength="109.8" clip-path="url(#termi [...]
+</text><text class="terminal-4238821259-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-4238821259-line-35)">│</text><text class="terminal-4238821259-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-4238821259-line-35)">-</text><text class="terminal-4238821259-r5" x="36.6" y="874" textLength="97.6" clip-path="url(#terminal-4238821259-line-35)">-runtime</text><text class="terminal-4238821259-r5" x="134.2" y="874" textLength="146.4" clip-path="url(#terminal-4238 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-36)">│</text><text class="terminal-4238821259-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-36)">-</text><text class="terminal-4238821259-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-4238821259-line-36)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="898.4" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-4238821259-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-37)">│</text><text class="terminal-4238821259-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-37)">-</text><text class="terminal-4238821259-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-4238821259-line-37)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="922.8" textLength="207.4" clip-path="url(#t [...]
+</text><text class="terminal-4238821259-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-38)">│</text><text class="terminal-4238821259-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-38)">-</text><text class="terminal-4238821259-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-4238821259-line-38)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="947.2" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-4238821259-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-39)">│</text><text class="terminal-4238821259-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-39)">-</text><text class="terminal-4238821259-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-4238821259-line-39)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="971.6" textLength="244" clip-path="url(#ter [...]
+</text><text class="terminal-4238821259-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-4238821259-line-40)">│</text><text class="terminal-4238821259-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-4238821259-line-40)">-</text><text class="terminal-4238821259-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-4238821259-line-40)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="996" textLength="158.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-41)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-41)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-4238821259-line-41)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="1020.4" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-42)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-42)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-4238821259-line-42)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="1044.8" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-43)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-43)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1069.2" textLength="48.8" clip-path="url(#terminal-4238821259-line-43)">-dev</text><text class="terminal-4238821259-r5" x="85.4" y="1069.2" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-44)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-44)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-4238821259-line-44)">-dev</text><text class="terminal-4238821259-r5" x="85.4" y="1093.6" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-4238821259-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-4238821259-line-45)">
+</text><text class="terminal-4238821259-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-4238821259-line-46)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-4238821259-line-46)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="1142.4" textLeng [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-47)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-47)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-4238821259-line-47)">-github</text><text class="terminal-4238821259-r5" x="122" y="1166.8" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-48)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-48)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#terminal-4238821259-line-48)">-github</text><text class="terminal-4238821259-r5" x="122" y="1191.2" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-49)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-49)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1215.6" textLength="109.8" clip-path="url(#terminal-4238821259-line-49)">-platform</text><text class="terminal-4238821259-r2" x="341.6" y="1215.6" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-4238821259-line-50)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-4238821259-line-50)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1240" textLength="61" clip-path="url(#terminal-4238821259-line-50)">-push</text><text class="terminal-4238821259-r5" x="97.6" y="1240" textLength="73.2" clip-path="url(#terminal-4238821 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-51)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-51)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1264.4" textLength="73.2" clip-path="url(#terminal-4238821259-line-51)">-empty</text><text class="terminal-4238821259-r5" x="109.8" y="1264.4" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-52)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-52)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-4238821259-line-52)">-prepare</text><text class="terminal-4238821259-r5" x="134.2" y="1288.8" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-53)">│</text><text class="terminal-4238821259-r2" x="341.6" y="1313.2" textLength="1098" clip-path="url(#terminal-4238821259-line-53)">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-4238821259-r4" x="0" y="1337.6" textLength="1464" clip-path="url(#terminal-4238821259-line-54)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="1337.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-54)">
+</text><text class="terminal-4238821259-r4" x="0" y="1362" textLength="24.4" clip-path="url(#terminal-4238821259-line-55)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="1362" textLength="1415.2" clip-path="url(#terminal-4238821259-line-55)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="1362" textLength="24.4" clip-path="url(#terminal-423882 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-56)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-56)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1386.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-56)">-github</text><text class="terminal-4238821259-r5" x="122" y="1386.4" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-57)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-57)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-4238821259-line-57)">-verbose</text><text class="terminal-4238821259-r6" x="280.6" y="1410.8" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-58)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-58)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1435.2" textLength="48.8" clip-path="url(#terminal-4238821259-line-58)">-dry</text><text class="terminal-4238821259-r5" x="85.4" y="1435.2" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-59)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-59)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1459.6" textLength="85.4" clip-path="url(#terminal-4238821259-line-59)">-answer</text><text class="terminal-4238821259-r6" x="280.6" y="1459.6" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-4238821259-line-60)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-4238821259-line-60)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1484" textLength="61" clip-path="url(#terminal-4238821259-line-60)">-help</text><text class="terminal-4238821259-r6" x="280.6" y="1484" textLength="24.4" clip-path="url(#terminal-423882 [...]
+</text><text class="terminal-4238821259-r4" x="0" y="1508.4" textLength="1464" clip-path="url(#terminal-4238821259-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="1508.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-61)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
index dcbd32a966..331cd3808b 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 1928.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1977.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,349 +19,357 @@
         font-weight: 700;
     }
 
-    .terminal-1314099363-matrix {
+    .terminal-3171273326-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1314099363-title {
+    .terminal-3171273326-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1314099363-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1314099363-r2 { fill: #c5c8c6 }
-.terminal-1314099363-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1314099363-r4 { fill: #868887 }
-.terminal-1314099363-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1314099363-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1314099363-r7 { fill: #8d7b39 }
+    .terminal-3171273326-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3171273326-r2 { fill: #c5c8c6 }
+.terminal-3171273326-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3171273326-r4 { fill: #868887 }
+.terminal-3171273326-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3171273326-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3171273326-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1314099363-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1877.8" />
+    <clipPath id="terminal-3171273326-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1926.6" />
     </clipPath>
-    <clipPath id="terminal-1314099363-line-0">
+    <clipPath id="terminal-3171273326-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-1">
+<clipPath id="terminal-3171273326-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-2">
+<clipPath id="terminal-3171273326-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-3">
+<clipPath id="terminal-3171273326-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-4">
+<clipPath id="terminal-3171273326-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-5">
+<clipPath id="terminal-3171273326-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-6">
+<clipPath id="terminal-3171273326-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-7">
+<clipPath id="terminal-3171273326-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-8">
+<clipPath id="terminal-3171273326-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-9">
+<clipPath id="terminal-3171273326-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-10">
+<clipPath id="terminal-3171273326-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-11">
+<clipPath id="terminal-3171273326-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-12">
+<clipPath id="terminal-3171273326-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-13">
+<clipPath id="terminal-3171273326-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-14">
+<clipPath id="terminal-3171273326-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-15">
+<clipPath id="terminal-3171273326-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-16">
+<clipPath id="terminal-3171273326-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-17">
+<clipPath id="terminal-3171273326-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-18">
+<clipPath id="terminal-3171273326-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-19">
+<clipPath id="terminal-3171273326-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-20">
+<clipPath id="terminal-3171273326-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-21">
+<clipPath id="terminal-3171273326-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-22">
+<clipPath id="terminal-3171273326-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-23">
+<clipPath id="terminal-3171273326-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-24">
+<clipPath id="terminal-3171273326-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-25">
+<clipPath id="terminal-3171273326-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-26">
+<clipPath id="terminal-3171273326-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-27">
+<clipPath id="terminal-3171273326-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-28">
+<clipPath id="terminal-3171273326-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-29">
+<clipPath id="terminal-3171273326-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-30">
+<clipPath id="terminal-3171273326-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-31">
+<clipPath id="terminal-3171273326-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-32">
+<clipPath id="terminal-3171273326-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-33">
+<clipPath id="terminal-3171273326-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-34">
+<clipPath id="terminal-3171273326-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-35">
+<clipPath id="terminal-3171273326-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-36">
+<clipPath id="terminal-3171273326-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-37">
+<clipPath id="terminal-3171273326-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-38">
+<clipPath id="terminal-3171273326-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-39">
+<clipPath id="terminal-3171273326-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-40">
+<clipPath id="terminal-3171273326-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-41">
+<clipPath id="terminal-3171273326-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-42">
+<clipPath id="terminal-3171273326-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-43">
+<clipPath id="terminal-3171273326-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-44">
+<clipPath id="terminal-3171273326-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-45">
+<clipPath id="terminal-3171273326-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-46">
+<clipPath id="terminal-3171273326-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-47">
+<clipPath id="terminal-3171273326-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-48">
+<clipPath id="terminal-3171273326-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-49">
+<clipPath id="terminal-3171273326-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-50">
+<clipPath id="terminal-3171273326-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-51">
+<clipPath id="terminal-3171273326-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-52">
+<clipPath id="terminal-3171273326-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-53">
+<clipPath id="terminal-3171273326-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-54">
+<clipPath id="terminal-3171273326-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-55">
+<clipPath id="terminal-3171273326-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-56">
+<clipPath id="terminal-3171273326-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-57">
+<clipPath id="terminal-3171273326-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-58">
+<clipPath id="terminal-3171273326-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-59">
+<clipPath id="terminal-3171273326-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-60">
+<clipPath id="terminal-3171273326-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-61">
+<clipPath id="terminal-3171273326-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-62">
+<clipPath id="terminal-3171273326-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-63">
+<clipPath id="terminal-3171273326-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-64">
+<clipPath id="terminal-3171273326-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-65">
+<clipPath id="terminal-3171273326-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-66">
+<clipPath id="terminal-3171273326-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-67">
+<clipPath id="terminal-3171273326-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-68">
+<clipPath id="terminal-3171273326-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-69">
+<clipPath id="terminal-3171273326-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-70">
+<clipPath id="terminal-3171273326-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-71">
+<clipPath id="terminal-3171273326-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-72">
+<clipPath id="terminal-3171273326-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-73">
+<clipPath id="terminal-3171273326-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-74">
+<clipPath id="terminal-3171273326-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1314099363-line-75">
+<clipPath id="terminal-3171273326-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-3171273326-line-76">
+    <rect x="0" y="1855.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3171273326-line-77">
+    <rect x="0" y="1880.3" 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="1926.8" rx="8"/><text class="terminal-1314099363-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="1975.6" rx="8"/><text class="terminal-3171273326-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-1314099363-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3171273326-clip-terminal)">
     
-    <g class="terminal-1314099363-matrix">
-    <text class="terminal-1314099363-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1314099363-line-0)">
-</text><text class="terminal-1314099363-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-1)">Usage:&#160;</text><text class="terminal-1314099363-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-1314099363-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-1314099363-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-1)">
-</text><text class="terminal-1314099363-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-2)">
-</text><text class="terminal-1314099363-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-1314099363-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-1314099363-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-3)">
-</text><text class="terminal-1314099363-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-4)">
-</text><text class="terminal-1314099363-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1314099363-line-5)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1314099363-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-131409 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-6)">│</text><text class="terminal-1314099363-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-6)">-</text><text class="terminal-1314099363-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-6)">-python</text><text class="terminal-1314099363-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-131 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-7)">│</text><text class="terminal-1314099363-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-8)">│</text><text class="terminal-1314099363-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-9)">│</text><text class="terminal-1314099363-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-9)">-</text><text class="terminal-1314099363-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-9)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1314099363-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1314099363-line-10)">│</text><text class="terminal-1314099363-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1314099363-line-10)">-</text><text class="terminal-1314099363-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-1314099363-line-10)">-upgrade</text><text class="terminal-1314099363-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-1314 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-11)">│</text><text class="terminal-1314099363-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-11)">-</text><text class="terminal-1314099363-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-11)">-debian</text><text class="terminal-1314099363-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-12)">│</text><text class="terminal-1314099363-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-12)">-</text><text class="terminal-1314099363-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-1314099363-line-12)">-image</text><text class="terminal-1314099363-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1314099363-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-13)">│</text><text class="terminal-1314099363-r5" x="475.8" y="337.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-13)">-</text><text class="terminal-1314099363-r5" x="488" y="337.2" textLength="73.2" clip-path="url(#terminal-1314099363-line-13)">-mount</text><text class="terminal-1314099363-r5" x="561.2" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1314099363-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-14)">│</text><text class="terminal-1314099363-r7" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-1314099363-line-14)">(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;&#16 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1314099363-line-15)">│</text><text class="terminal-1314099363-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1314099363-line-15)">-</text><text class="terminal-1314099363-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1314099363-line-15)">-tag</text><text class="terminal-1314099363-r5" x="85.4" y="386" textLength="122" clip-path="url(#terminal-1314099363- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-16)">│</text><text class="terminal-1314099363-r2" x="475.8" y="410.4" textLength="414.8" clip-path="url(#terminal-1314099363-line-16)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1314099363-r5" x="890.6" y="410.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-16)">-</text><text class="terminal-1314099363- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-17)">│</text><text class="terminal-1314099363-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-17)">-</text><text class="terminal-1314099363-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-17)">-docker</text><text class="terminal-1314099363-r5" x="122" y="434.8" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-18)">│</text><text class="terminal-1314099363-r4" x="475.8" y="459.2" textLength="549" clip-path="url(#terminal-1314099363-line-18)">[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-1314099363-r4" x="1451.8" y="45 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-1314099363-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-19)">
-</text><text class="terminal-1314099363-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-1314099363-line-20)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-1314099363-line-20)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-1314099363-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-21)">│</text><text class="terminal-1314099363-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-21)">-</text><text class="terminal-1314099363-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-1314099363-line-21)">-build</text><text class="terminal-1314099363-r5" x="109.8" y="532.4" textLength="195.2" clip-path="url(#termina [...]
-</text><text class="terminal-1314099363-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-22)">│</text><text class="terminal-1314099363-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-22)">-</text><text class="terminal-1314099363-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-22)">-python</text><text class="terminal-1314099363-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1314099363-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-23)">│</text><text class="terminal-1314099363-r4" x="353.8" y="581.2" textLength="951.6" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-1314099363-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-24)">
-</text><text class="terminal-1314099363-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-1314099363-line-25)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-1314099363-line-25)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="630" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-1314099363-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-26)">│</text><text class="terminal-1314099363-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-26)">-</text><text class="terminal-1314099363-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1314099363-line-26)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-1314099363-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-27)">│</text><text class="terminal-1314099363-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-27)">-</text><text class="terminal-1314099363-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-27)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="678.8" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1314099363-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-28)">│</text><text class="terminal-1314099363-r7" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-29)">│</text><text class="terminal-1314099363-r4" x="463.6" y="727.6" textLength="976" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1314099363-line-30)">│</text><text class="terminal-1314099363-r4" x="463.6" y="752" textLength="976" clip-path="url(#terminal-1314099363-line-30)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-1314099363-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-1314099363-line-30)">│</text><text class="terminal-1314099 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-31)">│</text><text class="terminal-1314099363-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-31)">-</text><text class="terminal-1314099363-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-1314099363-line-31)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="776.4" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-1314099363-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-32)">│</text><text class="terminal-1314099363-r7" x="463.6" y="800.8" textLength="866.2" clip-path="url(#terminal-1314099363-line-32)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-1314099363-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-32)">│</text><text clas [...]
-</text><text class="terminal-1314099363-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-33)">│</text><text class="terminal-1314099363-r4" x="463.6" y="825.2" textLength="866.2" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-34)">│</text><text class="terminal-1314099363-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-34)">-</text><text class="terminal-1314099363-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-34)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="849.6" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-1314099363-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1314099363-line-35)">│</text><text class="terminal-1314099363-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1314099363-line-35)">-</text><text class="terminal-1314099363-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-1314099363-line-35)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="874" textLength="146.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-36)">│</text><text class="terminal-1314099363-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-36)">-</text><text class="terminal-1314099363-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-1314099363-line-36)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="898.4" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-1314099363-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-37)">│</text><text class="terminal-1314099363-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-37)">-</text><text class="terminal-1314099363-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1314099363-line-37)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="922.8" textLength="207.4" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-38)">│</text><text class="terminal-1314099363-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-38)">-</text><text class="terminal-1314099363-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1314099363-line-38)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="947.2" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-39)">│</text><text class="terminal-1314099363-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-39)">-</text><text class="terminal-1314099363-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-1314099363-line-39)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="971.6" textLength="244" clip-path="url(#ter [...]
-</text><text class="terminal-1314099363-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1314099363-line-40)">│</text><text class="terminal-1314099363-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1314099363-line-40)">-</text><text class="terminal-1314099363-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1314099363-line-40)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="996" textLength="158.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-41)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-41)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-1314099363-line-41)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="1020.4" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-42)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-42)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-1314099363-line-42)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="1044.8" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-43)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-43)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-1314099363-line-43)">-runtime</text><text class="terminal-1314099363-r5" x="134.2" y="1069.2" textLength="109.8" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-44)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-44)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-44)">-runtime</text><text class="terminal-1314099363-r5" x="134.2" y="1093.6" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1314099363-line-45)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1314099363-line-45)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-1314099363-line-45)">-dev</text><text class="terminal-1314099363-r5" x="85.4" y="1118" textLength="109.8" clip-path="url(#terminal-13140 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-46)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-46)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-1314099363-line-46)">-dev</text><text class="terminal-1314099363-r5" x="85.4" y="1142.4" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-1314099363-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-47)">
-</text><text class="terminal-1314099363-r4" x="0" y="1191.2" textLength="24.4" clip-path="url(#terminal-1314099363-line-48)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="1191.2" textLength="1415.2" clip-path="url(#terminal-1314099363-line-48)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="1191.2" textLength="24.4"  [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-49)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-49)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1215.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-49)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="1215.6" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1314099363-line-50)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1314099363-line-50)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1240" textLength="97.6" clip-path="url(#terminal-1314099363-line-50)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="1240" textLength="170.8" clip-path="url(#terminal- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-51)">│</text><text class="terminal-1314099363-r2" x="536.8" y="1264.4" textLength="902.8" clip-path="url(#terminal-1314099363-line-51)">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-1314099363-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-52)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-52)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-52)">-cleanup</text><text class="terminal-1314099363-r5" x="134.2" y="1288.8" textLength="97.6" clip-path="url(#te [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-53)">│</text><text class="terminal-1314099363-r2" x="536.8" y="1313.2" textLength="170.8" clip-path="url(#terminal-1314099363-line-53)">together&#160;with&#160;</text><text class="terminal-1314099363-r5" x="707.6" y="1313.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-53)">-</text><text class="terminal-1314099363-r5" x="719.8" y="1313.2" textLength="97.6" [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-54)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-54)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-54)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1337.6" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1314099363-line-55)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1314099363-line-55)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-1314099363-line-55)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1362" textLength="317.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-56)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-56)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-1314099363-line-56)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1386.4" textLength="353.8" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-57)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-57)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-57)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1410.8" textLength="231.8" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-58)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-58)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-1314099363-line-58)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="1435.2" textLength="219.6" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-59)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-59)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1459.6" textLength="158.6" clip-path="url(#terminal-1314099363-line-59)">-installation</text><text class="terminal-1314099363-r5" x="195.2" y="1459.6" textLength="85.4" clip-path="u [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1484" textLength="1464" clip-path="url(#terminal-1314099363-line-60)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1484" textLength="12.2" clip-path="url(#terminal-1314099363-line-60)">
-</text><text class="terminal-1314099363-r4" x="0" y="1508.4" textLength="24.4" clip-path="url(#terminal-1314099363-line-61)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="1508.4" textLength="1415.2" clip-path="url(#terminal-1314099363-line-61)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="1508.4" textLeng [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-62)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-62)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1532.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-62)">-github</text><text class="terminal-1314099363-r5" x="122" y="1532.8" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-63)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-63)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1557.2" textLength="85.4" clip-path="url(#terminal-1314099363-line-63)">-github</text><text class="terminal-1314099363-r5" x="122" y="1557.2" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-64)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-64)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1581.6" textLength="109.8" clip-path="url(#terminal-1314099363-line-64)">-platform</text><text class="terminal-1314099363-r2" x="341.6" y="1581.6" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-1314099363-line-65)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-1314099363-line-65)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1606" textLength="61" clip-path="url(#terminal-1314099363-line-65)">-push</text><text class="terminal-1314099363-r5" x="97.6" y="1606" textLength="73.2" clip-path="url(#terminal-1314099 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-66)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-66)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1630.4" textLength="73.2" clip-path="url(#terminal-1314099363-line-66)">-empty</text><text class="terminal-1314099363-r5" x="109.8" y="1630.4" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-67)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-67)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1654.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-67)">-prepare</text><text class="terminal-1314099363-r5" x="134.2" y="1654.8" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-68)">│</text><text class="terminal-1314099363-r2" x="341.6" y="1679.2" textLength="1098" clip-path="url(#terminal-1314099363-line-68)">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-1314099363-r4" x="0" y="1703.6" textLength="1464" clip-path="url(#terminal-1314099363-line-69)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1703.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-69)">
-</text><text class="terminal-1314099363-r4" x="0" y="1728" textLength="24.4" clip-path="url(#terminal-1314099363-line-70)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="1728" textLength="1415.2" clip-path="url(#terminal-1314099363-line-70)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="1728" textLength="24.4" clip-path="url(#terminal-131409 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-71)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-71)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1752.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-71)">-github</text><text class="terminal-1314099363-r5" x="122" y="1752.4" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-72)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-72)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1776.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-72)">-answer</text><text class="terminal-1314099363-r6" x="280.6" y="1776.8" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-73)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-73)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1801.2" textLength="48.8" clip-path="url(#terminal-1314099363-line-73)">-dry</text><text class="terminal-1314099363-r5" x="85.4" y="1801.2" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-74)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-74)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1825.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-74)">-verbose</text><text class="terminal-1314099363-r6" x="280.6" y="1825.6" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-1314099363-line-75)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-1314099363-line-75)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1850" textLength="61" clip-path="url(#terminal-1314099363-line-75)">-help</text><text class="terminal-1314099363-r6" x="280.6" y="1850" textLength="24.4" clip-path="url(#terminal-131409 [...]
-</text><text class="terminal-1314099363-r4" x="0" y="1874.4" textLength="1464" clip-path="url(#terminal-1314099363-line-76)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1874.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-76)">
+    <g class="terminal-3171273326-matrix">
+    <text class="terminal-3171273326-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3171273326-line-0)">
+</text><text class="terminal-3171273326-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3171273326-line-1)">Usage:&#160;</text><text class="terminal-3171273326-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-3171273326-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-3171273326-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-1)">
+</text><text class="terminal-3171273326-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-2)">
+</text><text class="terminal-3171273326-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-3171273326-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-3171273326-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-3)">
+</text><text class="terminal-3171273326-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-4)">
+</text><text class="terminal-3171273326-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3171273326-line-5)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3171273326-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-317127 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-6)">│</text><text class="terminal-3171273326-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-6)">-</text><text class="terminal-3171273326-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3171273326-line-6)">-python</text><text class="terminal-3171273326-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-317 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-7)">│</text><text class="terminal-3171273326-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-3171273326-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-3171273326-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-8)">│</text><text class="terminal-3171273326-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-3171273326-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-3171273326-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-9)">│</text><text class="terminal-3171273326-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-9)">-</text><text class="terminal-3171273326-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-9)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3171273326-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3171273326-line-10)">│</text><text class="terminal-3171273326-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3171273326-line-10)">-</text><text class="terminal-3171273326-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-3171273326-line-10)">-upgrade</text><text class="terminal-3171273326-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-3171 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-11)">│</text><text class="terminal-3171273326-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-11)">-</text><text class="terminal-3171273326-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-3171273326-line-11)">-debian</text><text class="terminal-3171273326-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-12)">│</text><text class="terminal-3171273326-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-12)">-</text><text class="terminal-3171273326-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-3171273326-line-12)">-image</text><text class="terminal-3171273326-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3171273326-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-13)">│</text><text class="terminal-3171273326-r5" x="475.8" y="337.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-13)">-</text><text class="terminal-3171273326-r5" x="488" y="337.2" textLength="73.2" clip-path="url(#terminal-3171273326-line-13)">-mount</text><text class="terminal-3171273326-r5" x="561.2" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3171273326-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-14)">│</text><text class="terminal-3171273326-r7" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-3171273326-line-14)">(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;&#16 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3171273326-line-15)">│</text><text class="terminal-3171273326-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3171273326-line-15)">-</text><text class="terminal-3171273326-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-3171273326-line-15)">-tag</text><text class="terminal-3171273326-r5" x="85.4" y="386" textLength="122" clip-path="url(#terminal-3171273326- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-16)">│</text><text class="terminal-3171273326-r2" x="475.8" y="410.4" textLength="414.8" clip-path="url(#terminal-3171273326-line-16)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3171273326-r5" x="890.6" y="410.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-16)">-</text><text class="terminal-3171273326- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-17)">│</text><text class="terminal-3171273326-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-17)">-</text><text class="terminal-3171273326-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-3171273326-line-17)">-docker</text><text class="terminal-3171273326-r5" x="122" y="434.8" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-18)">│</text><text class="terminal-3171273326-r4" x="475.8" y="459.2" textLength="549" clip-path="url(#terminal-3171273326-line-18)">[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-3171273326-r4" x="1451.8" y="45 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-3171273326-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-19)">
+</text><text class="terminal-3171273326-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-3171273326-line-20)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-3171273326-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-3171273326-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-21)">│</text><text class="terminal-3171273326-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-21)">-</text><text class="terminal-3171273326-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-3171273326-line-21)">-run</text><text class="terminal-3171273326-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-22)">│</text><text class="terminal-3171273326-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-22)">-</text><text class="terminal-3171273326-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-3171273326-line-22)">-parallelism</text><text class="terminal-3171273326-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-3171273326-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-23)">│</text><text class="terminal-3171273326-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-3171273326-line-23)">[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-3171273326-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-24)">│</text><text class="terminal-3171273326-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-24)">-</text><text class="terminal-3171273326-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-3171273326-line-24)">-python</text><text class="terminal-3171273326-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3171273326-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3171273326-line-25)">│</text><text class="terminal-3171273326-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-3171273326-line-25)">[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;&#1 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-3171273326-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-26)">
+</text><text class="terminal-3171273326-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-3171273326-line-27)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-3171273326-line-27)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="678.8" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-3171273326-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-28)">│</text><text class="terminal-3171273326-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-28)">-</text><text class="terminal-3171273326-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-3171273326-line-28)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-3171273326-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-29)">│</text><text class="terminal-3171273326-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-29)">-</text><text class="terminal-3171273326-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-29)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3171273326-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3171273326-line-30)">│</text><text class="terminal-3171273326-r7" x="463.6" y="752" textLength="976" clip-path="url(#terminal-3171273326-line-30)">(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;&#16 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-31)">│</text><text class="terminal-3171273326-r4" x="463.6" y="776.4" textLength="976" clip-path="url(#terminal-3171273326-line-31)">[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-3171273326-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-32)">│</text><text class="terminal-3171273326-r4" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-3171273326-line-32)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-3171273326-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-32)">│</text><text class="terminal-3 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-33)">│</text><text class="terminal-3171273326-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-33)">-</text><text class="terminal-3171273326-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-3171273326-line-33)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="825.2" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-3171273326-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-34)">│</text><text class="terminal-3171273326-r7" x="463.6" y="849.6" textLength="866.2" clip-path="url(#terminal-3171273326-line-34)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-3171273326-r4" x="1451.8" y="849.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-34)">│</text><text clas [...]
+</text><text class="terminal-3171273326-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3171273326-line-35)">│</text><text class="terminal-3171273326-r4" x="463.6" y="874" textLength="866.2" clip-path="url(#terminal-3171273326-line-35)">[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;&#160 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-36)">│</text><text class="terminal-3171273326-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-36)">-</text><text class="terminal-3171273326-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-36)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="898.4" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-3171273326-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-37)">│</text><text class="terminal-3171273326-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-37)">-</text><text class="terminal-3171273326-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-3171273326-line-37)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="922.8" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-38)">│</text><text class="terminal-3171273326-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-38)">-</text><text class="terminal-3171273326-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-3171273326-line-38)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="947.2" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-3171273326-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-39)">│</text><text class="terminal-3171273326-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-39)">-</text><text class="terminal-3171273326-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-3171273326-line-39)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="971.6" textLength="207.4" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3171273326-line-40)">│</text><text class="terminal-3171273326-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3171273326-line-40)">-</text><text class="terminal-3171273326-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-3171273326-line-40)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="996" textLength="195.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-41)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-41)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-3171273326-line-41)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1020.4" textLength="244" clip-path="url( [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-42)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-42)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-3171273326-line-42)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1044.8" textLength="158.6" clip-path="ur [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-43)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-43)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-3171273326-line-43)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1069.2" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-44)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-44)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-3171273326-line-44)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1093.6" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3171273326-line-45)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3171273326-line-45)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1118" textLength="97.6" clip-path="url(#terminal-3171273326-line-45)">-runtime</text><text class="terminal-3171273326-r5" x="134.2" y="1118" textLength="109.8" clip-path="url(#terminal- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-46)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-46)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-46)">-runtime</text><text class="terminal-3171273326-r5" x="134.2" y="1142.4" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-47)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-47)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1166.8" textLength="48.8" clip-path="url(#terminal-3171273326-line-47)">-dev</text><text class="terminal-3171273326-r5" x="85.4" y="1166.8" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-48)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-48)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#terminal-3171273326-line-48)">-dev</text><text class="terminal-3171273326-r5" x="85.4" y="1191.2" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-3171273326-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-49)">
+</text><text class="terminal-3171273326-r4" x="0" y="1240" textLength="24.4" clip-path="url(#terminal-3171273326-line-50)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="1240" textLength="1415.2" clip-path="url(#terminal-3171273326-line-50)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="1240" textLength="24.4" clip-p [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-51)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-51)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1264.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-51)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="1264.4" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-52)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-52)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-3171273326-line-52)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="1288.8" textLength="170.8" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-53)">│</text><text class="terminal-3171273326-r2" x="536.8" y="1313.2" textLength="902.8" clip-path="url(#terminal-3171273326-line-53)">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-3171273326-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-54)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-54)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-54)">-cleanup</text><text class="terminal-3171273326-r5" x="134.2" y="1337.6" textLength="97.6" clip-path="url(#te [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-3171273326-line-55)">│</text><text class="terminal-3171273326-r2" x="536.8" y="1362" textLength="170.8" clip-path="url(#terminal-3171273326-line-55)">together&#160;with&#160;</text><text class="terminal-3171273326-r5" x="707.6" y="1362" textLength="12.2" clip-path="url(#terminal-3171273326-line-55)">-</text><text class="terminal-3171273326-r5" x="719.8" y="1362" textLength="97.6" clip-pa [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-56)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-56)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-56)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1386.4" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-57)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-57)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-3171273326-line-57)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1410.8" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-58)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-58)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-3171273326-line-58)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1435.2" textLength="353.8" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-59)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-59)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-59)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1459.6" textLength="231.8" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-3171273326-line-60)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-3171273326-line-60)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-3171273326-line-60)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="1484" textLength="219.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-61)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-61)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1508.4" textLength="158.6" clip-path="url(#terminal-3171273326-line-61)">-installation</text><text class="terminal-3171273326-r5" x="195.2" y="1508.4" textLength="85.4" clip-path="u [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1532.8" textLength="1464" clip-path="url(#terminal-3171273326-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-62)">
+</text><text class="terminal-3171273326-r4" x="0" y="1557.2" textLength="24.4" clip-path="url(#terminal-3171273326-line-63)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="1557.2" textLength="1415.2" clip-path="url(#terminal-3171273326-line-63)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="1557.2" textLeng [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-64)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-64)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1581.6" textLength="85.4" clip-path="url(#terminal-3171273326-line-64)">-github</text><text class="terminal-3171273326-r5" x="122" y="1581.6" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-3171273326-line-65)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-3171273326-line-65)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1606" textLength="85.4" clip-path="url(#terminal-3171273326-line-65)">-github</text><text class="terminal-3171273326-r5" x="122" y="1606" textLength="109.8" clip-path="url(#terminal-317 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-66)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-66)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1630.4" textLength="109.8" clip-path="url(#terminal-3171273326-line-66)">-platform</text><text class="terminal-3171273326-r2" x="341.6" y="1630.4" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-67)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-67)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1654.8" textLength="61" clip-path="url(#terminal-3171273326-line-67)">-push</text><text class="terminal-3171273326-r5" x="97.6" y="1654.8" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-68)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-68)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1679.2" textLength="73.2" clip-path="url(#terminal-3171273326-line-68)">-empty</text><text class="terminal-3171273326-r5" x="109.8" y="1679.2" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-69)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-69)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1703.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-69)">-prepare</text><text class="terminal-3171273326-r5" x="134.2" y="1703.6" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-3171273326-line-70)">│</text><text class="terminal-3171273326-r2" x="341.6" y="1728" textLength="1098" clip-path="url(#terminal-3171273326-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-3171273326-r4" x="0" y="1752.4" textLength="1464" clip-path="url(#terminal-3171273326-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1752.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-71)">
+</text><text class="terminal-3171273326-r4" x="0" y="1776.8" textLength="24.4" clip-path="url(#terminal-3171273326-line-72)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="1776.8" textLength="1415.2" clip-path="url(#terminal-3171273326-line-72)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="1776.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-73)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-73)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1801.2" textLength="85.4" clip-path="url(#terminal-3171273326-line-73)">-github</text><text class="terminal-3171273326-r5" x="122" y="1801.2" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-74)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-74)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1825.6" textLength="85.4" clip-path="url(#terminal-3171273326-line-74)">-answer</text><text class="terminal-3171273326-r6" x="280.6" y="1825.6" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-3171273326-line-75)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-3171273326-line-75)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1850" textLength="48.8" clip-path="url(#terminal-3171273326-line-75)">-dry</text><text class="terminal-3171273326-r5" x="85.4" y="1850" textLength="48.8" clip-path="url(#terminal-317127 [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-76)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-76)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1874.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-76)">-verbose</text><text class="terminal-3171273326-r6" x="280.6" y="1874.4" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-77)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-77)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1898.8" textLength="61" clip-path="url(#terminal-3171273326-line-77)">-help</text><text class="terminal-3171273326-r6" x="280.6" y="1898.8" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3171273326-r4" x="0" y="1923.2" textLength="1464" clip-path="url(#terminal-3171273326-line-78)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1923.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-78)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index d27f8a1a7e..0ea56c33a7 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,4 +2,4 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-09687e7e07a9c1d62fa6c34201532113
+9139ef44b7f1ba24ddee50b71d3867c2
diff --git a/scripts/ci/selective_ci_checks.sh b/scripts/ci/selective_ci_checks.sh
index c9f215c53c..26fbf13f66 100755
--- a/scripts/ci/selective_ci_checks.sh
+++ b/scripts/ci/selective_ci_checks.sh
@@ -55,6 +55,7 @@ function output_all_basic_variables() {
             "$(initialization::parameters_to_json "${CURRENT_PYTHON_MAJOR_MINOR_VERSIONS[@]}")"
         initialization::ga_output all-python-versions \
             "$(initialization::parameters_to_json "${ALL_PYTHON_MAJOR_MINOR_VERSIONS[@]}")"
+        initialization::ga_output all-python-versions-list-as-string "${ALL_PYTHON_MAJOR_MINOR_VERSIONS[*]}"
         initialization::ga_output python-versions-list-as-string "${CURRENT_PYTHON_MAJOR_MINOR_VERSIONS[*]}"
         initialization::ga_output kubernetes-versions-list-as-string "${CURRENT_KUBERNETES_VERSIONS[*]}"
     else
@@ -64,6 +65,7 @@ function output_all_basic_variables() {
         # all-python-versions are used in BuildImage Workflow
         initialization::ga_output all-python-versions \
             "$(initialization::parameters_to_json "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}")"
+        initialization::ga_output all-python-versions-list-as-string "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}"
         initialization::ga_output python-versions-list-as-string "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}"
         initialization::ga_output kubernetes-versions-list-as-string "${DEFAULT_KUBERNETES_VERSION}"
     fi


[airflow] 12/39: First attempt to have CI-controlled process of releasing PROD image (#24433)

Posted by po...@apache.org.
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 6a05f043004482a7928712e2b4d6ef360a950018
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Wed Jun 15 11:42:41 2022 +0200

    First attempt to have CI-controlled process of releasing PROD image (#24433)
    
    (cherry picked from commit b79790d8e5de18782a3179a8a55457eafa529a88)
---
 .github/workflows/release_dockerhub_image.yml      | 125 +++++++++++++++++++++
 dev/MANUALLY_BUILDING_IMAGES.md                    |  96 ++++++++++++++++
 dev/README_RELEASE_AIRFLOW.md                      | 109 ++++--------------
 .../commands/release_management_commands.py        |   7 +-
 dev/images/release_prod_image.png                  | Bin 0 -> 112569 bytes
 5 files changed, 245 insertions(+), 92 deletions(-)

diff --git a/.github/workflows/release_dockerhub_image.yml b/.github/workflows/release_dockerhub_image.yml
new file mode 100644
index 0000000000..bd9fdaec1e
--- /dev/null
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -0,0 +1,125 @@
+# 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.
+#
+---
+name: "Release PROD image"
+on:  # yamllint disable-line rule:truthy
+  workflow_dispatch:
+    inputs:
+      airflowVersion:
+        description: 'Airflow version'
+        required: true
+      skipLatest:
+        description: 'Skip Latest: Set to true if not latest.'
+        default: ''
+        required: false
+jobs:
+  build-info:
+    timeout-minutes: 10
+    name: "Build Info"
+    runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
+    outputs:
+      pythonVersions: ${{ steps.selective-checks.outputs.python-versions }}
+      allPythonVersions: ${{ steps.selective-checks.outputs.all-python-versions }}
+      defaultPythonVersion: ${{ steps.selective-checks.outputs.default-python-version }}
+      skipLatest: ${{ github.event.inputs.skipLatest == '' && ' ' || '--skip-latest' }}
+      limitPlatform: ${{ github.repository == 'apache/airflow' && ' ' || '--limit-platform linux/amd64' }}
+    env:
+      GITHUB_CONTEXT: ${{ toJson(github) }}
+    steps:
+      - name: Cleanup repo
+        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
+      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+        uses: actions/checkout@v2
+        with:
+          persist-credentials: false
+          submodules: recursive
+      - name: Selective checks
+        id: selective-checks
+        run: ./scripts/ci/selective_ci_checks.sh
+  release-images:
+    timeout-minutes: 120
+    name: "Release images"
+    runs-on: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
+    needs: [build-info]
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: ${{ fromJson(needs.build-info.outputs.pythonVersions) }}
+    env:
+      RUNS_ON: ${{ github.repository == 'apache/airflow' && 'self-hosted' || 'ubuntu-20.04' }}
+    if: contains(fromJSON('[
+      "ashb",
+      "ephraimbuddy",
+      "jedcunningham",
+      "kaxil",
+      "potiuk",
+      ]'), github.event.sender.login)
+    steps:
+      - name: Cleanup repo
+        run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm -rf /workspace/*"
+      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
+        uses: actions/checkout@v2
+        with:
+          persist-credentials: false
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ needs.build-info.outputs.defaultPythonVersion }}
+          cache: 'pip'
+          cache-dependency-path: ./dev/breeze/setup*
+      - run: ./scripts/ci/install_breeze.sh
+      - name: "Free space"
+        run: breeze free-space
+      - name: Build CI image for PROD build ${{ needs.build-info.outputs.defaultPythonVersion }}
+        run: breeze build-image
+        env:
+          PYTHON_MAJOR_MINOR_VERSION: ${{ needs.build-info.outputs.defaultPythonVersion }}
+      - name: "Cleanup dist and context file"
+        run: rm -fv ./dist/* ./docker-context-files/*
+      - name: "Start ARM instance"
+        run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
+        if: github.repository == 'apache/airflow'
+      - name: "Login to docker"
+        run: >
+          echo ${{ secrets.DOCKERHUB_TOKEN }} |
+          docker login --password-stdin --username ${{ secrets.DOCKERHUB_USER }}
+      - name: "Release regular images"
+        run: >
+          breeze release-prod-images
+          --dockerhub-repo ${{ github.repository }}
+          --airflow-version  ${{ github.event.inputs.airflowVersion }}
+          ${{ needs.build-info.outputs.skipLatest }}
+          ${{ needs.build-info.outputs.limitPlatform }}
+          --limit-python ${{ matrix.python-version }}
+      - name: "Release slim images"
+        run: >
+          breeze release-prod-images
+          --dockerhub-repo ${{ github.repository }}
+          --airflow-version  ${{ github.event.inputs.airflowVersion }}
+          ${{ needs.build-info.outputs.skipLatest }}
+          ${{ needs.build-info.outputs.limitPlatform }}
+          --limit-python ${{ matrix.python-version }} --slim-images
+      - name: "Docker logout"
+        run: docker logout
+        if: always()
+      - name: "Stop ARM instance"
+        run: ./scripts/ci/images/ci_stop_arm_instance.sh
+        if: always() && github.repository == 'apache/airflow'
+      - name: "Fix ownership"
+        run: breeze fix-ownership
+        if: always()
diff --git a/dev/MANUALLY_BUILDING_IMAGES.md b/dev/MANUALLY_BUILDING_IMAGES.md
new file mode 100644
index 0000000000..99cf589d69
--- /dev/null
+++ b/dev/MANUALLY_BUILDING_IMAGES.md
@@ -0,0 +1,96 @@
+<!--
+ 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.
+ -->
+
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*
+
+- [Building docker images](#building-docker-images)
+- [Setting environment with emulation](#setting-environment-with-emulation)
+- [Setting up cache refreshing with hardware ARM/AMD support](#setting-up-cache-refreshing-with-hardware-armamd-support)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+## Building docker images
+
+In order to build images on local hardware, you need to have the buildx plugin installed to run the build.
+Also, you need to have regctl installed from https://github.com/regclient/regclient in order to tag
+the multi-platform images in DockerHub. The script to build images will refuse to work if
+you do not have those two installed.
+
+You also need to have the right permissions to push the images, so you should run
+`docker login` before and authenticate with your DockerHub token.
+
+## Setting environment with emulation
+
+According to the [official installation instructions](https://docs.docker.com/buildx/working-with-buildx/#build-multi-platform-images)
+this can be achieved via:
+
+```shell
+docker run --privileged --rm tonistiigi/binfmt --install all
+```
+
+More information can be found [here](https://docs.docker.com/engine/reference/commandline/buildx_create/).
+
+However, emulation is very slow - more than 10x slower than hardware-backed builds.
+
+## Setting up cache refreshing with hardware ARM/AMD support
+
+If you plan to build a number of images, it's probably better to set up a hardware remote builder
+for your ARM or AMD builds (depending which platform you build images on - the "other" platform should be
+remote).
+
+This can be achieved by settings build as described in
+[this blog post](https://www.docker.com/blog/speed-up-building-with-docker-buildx-and-graviton2-ec2/) and
+adding it to docker buildx `airflow_cache` builder.
+
+This usually can be done with those two commands:
+
+```bash
+docker buildx create --name airflow_cache   # your local builder
+docker buildx create --name airflow_cache --append HOST:PORT  # your remote builder
+```
+
+One of the ways to have HOST:PORT is to login to the remote machine via SSH and forward the port to
+the docker engine running on the remote machine.
+
+When everything is fine you should see both local and remote builder configured and reporting status:
+
+```bash
+docker buildx ls
+
+  airflow_cache          docker-container
+       airflow_cache0    unix:///var/run/docker.sock
+       airflow_cache1    tcp://127.0.0.1:2375
+```
+
+Preparing regular images:
+
+```shell script
+breeze release-prod-images --airflow-version "${VERSION}"
+```
+
+Preparing slim images:
+
+```shell script
+breeze release-prod-images --airflow-version "${VERSION}" --slim-images
+```
+
+This will wipe Breeze cache and docker-context-files in order to make sure the build is "clean". It
+also performs image verification after pushing the images.
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index 6dce6e487c..3d242ff9d4 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -28,9 +28,6 @@
   - [[\Optional\] Prepare new release branches and cache](#%5Coptional%5C-prepare-new-release-branches-and-cache)
   - [Prepare PyPI convenience "snapshot" packages](#prepare-pypi-convenience-snapshot-packages)
   - [Prepare production Docker Image](#prepare-production-docker-image)
-  - [Prerequisites](#prerequisites)
-  - [Setting environment with emulation](#setting-environment-with-emulation)
-  - [Setting up cache refreshing with hardware ARM/AMD support](#setting-up-cache-refreshing-with-hardware-armamd-support)
   - [Prepare issue for testing status of rc](#prepare-issue-for-testing-status-of-rc)
   - [Prepare Vote email on the Apache Airflow release candidate](#prepare-vote-email-on-the-apache-airflow-release-candidate)
 - [Verify the release candidate by PMCs](#verify-the-release-candidate-by-pmcs)
@@ -493,76 +490,23 @@ is not supposed to be used by and advertised to the end-users who do not read th
 
 Production Docker images should be manually prepared and pushed by the release manager or another committer
 who has access to Airflow's DockerHub. Note that we started releasing a multi-platform build, so you need
-to have an environment prepared to build multi-platform images. You can achieve it with either emulation
-(very slow) or if you have two types of hardware (AMD64 and ARM64) you can configure Hardware builders.
+to have an environment prepared to build multi-platform images. You can achieve it with:
 
-## Prerequisites
+* GitHub Actions Manual Job (easiest)
+* Emulation (very slow)
+* Hardware builders if you have both AMD64 and ARM64 hardware locally
 
-You need to have buildx plugin installed to run the build. Also, you need to have regctl
-installed from https://github.com/regclient/regclient in order to tag the multi-platform images in
-DockerHub. The script to build images will refuse to work if you do not have those two installed.
+Building the image is triggered by running the `Release PROD image` workflow via
+[GitHub Actions](https://github.com/apache/airflow/actions).
 
-You also need to have the right permissions to push the images, so you should run
-`docker login` before and authenticate with your DockerHub token.
+When you trigger it you need to pass:
 
-## Setting environment with emulation
+* Airflow Version
+* Optional "true" in skip latest field if you do not want to retag the latest image
 
-According to the [official installation instructions](https://docs.docker.com/buildx/working-with-buildx/#build-multi-platform-images)
-this can be achieved via:
-
-```shell
-docker run --privileged --rm tonistiigi/binfmt --install all
-```
-
-More information can be found [here](https://docs.docker.com/engine/reference/commandline/buildx_create/)
-
-However, emulation is very slow - more than 10x slower than hardware-backed builds.
-
-## Setting up cache refreshing with hardware ARM/AMD support
-
-If you plan to build  a number of images, probably better solution is to set up a hardware remote builder
-for your ARM or AMD builds (depending which platform you build images on - the "other" platform should be
-remote.
-
-This  can be achieved by settings build as described in
-[this guideline](https://www.docker.com/blog/speed-up-building-with-docker-buildx-and-graviton2-ec2/) and
-adding it to docker buildx `airflow_cache` builder.
-
-This usually can be done with those two commands:
-
-```bash
-docker buildx create --name airflow_cache   # your local builder
-docker buildx create --name airflow_cache --append HOST:PORT  # your remote builder
-```
-
-One of the ways to have HOST:PORT is to login to the remote machine via SSH and forward the port to
-the docker engine running on the remote machine.
-
-When everything is fine you should see both local and remote builder configured and reporting status:
-
-```bash
-docker buildx ls
-
-  airflow_cache          docker-container
-       airflow_cache0    unix:///var/run/docker.sock
-       airflow_cache1    tcp://127.0.0.1:2375
-```
-
-Preparing regular images:
-
-```shell script
-breeze release-prod-images --airflow-version "${VERSION}"
-```
-
-Preparing slim images:
-
-```shell script
-breeze release-prod-images --airflow-version "${VERSION}" --slim-images
-```
-
-This will wipe Breeze cache and docker-context-files in order to make sure the build is "clean". It
-also performs image verification after pushing the images.
+![Release prod image](images/release_prod_image.png)
 
+The manual building is described in [MANUALLY_BUILDING_IMAGES.md](MANUALLY_BUILDING_IMAGES.md).
 
 ## Prepare issue for testing status of rc
 
@@ -1013,33 +957,22 @@ At this point we release an official package:
 
 ## Manually prepare production Docker Image
 
-Note that this scripts prepares multi-platform image, so you need to fulfill prerequisites as
-described above in the preparation of RC images.
+Building the image is triggered by running the `Release PROD image` workflow via
+[GitHub Actions](https://github.com/apache/airflow/actions).
+
+When you trigger it you need to pass:
+
+* Airflow Version
+* Optional "true" in skip latest field if you do not want to retag the latest image
+
+![Release prod image](images/release_prod_image.png)
 
 Note that by default the `latest` images tagged are aliased to the just released image which is the usual
 way we release. For example when you are releasing 2.3.N image and 2.3 is our latest branch the new image is
 marked as "latest".
 
 In case we are releasing (which almost never happens so far) a critical bugfix release in one of
-the older branches, you should add the `--skip-latest` flag.
-
-Preparing regular images:
-
-```shell script
-breeze release-prod-images --airflow-version "${VERSION}"
-```
-
-Preparing slim images:
-
-```shell script
-breeze release-prod-images --airflow-version "${VERSION}" --slim-images
-```
-
-Preparing a release that is not in the latest branch:
-
-```shell script
-breeze release-prod-images --airflow-version "${VERSION}" --slim-images --skip-latest
-```
+the older branches, you should set the "skip" field to true.
 
 
 ## Publish documentation
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index ce80e6a193..839b966fae 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -650,12 +650,11 @@ def release_prod_images(
         ["docker", 'buildx', 'inspect', 'airflow_cache'], check=False, dry_run=dry_run, verbose=verbose
     )
     if result_inspect_builder.returncode != 0:
-        get_console().print("[error]Regctl must be installed and on PATH to release the images[/]")
+        get_console().print("[error]Airflow Cache builder must be configured to release the images[/]")
         get_console().print()
         get_console().print(
-            "See https://github.com/apache/airflow/blob/main/dev/README_RELEASE_AIRFLOW.md"
-            "#setting-up-cache-refreshing-with-hardware-armamd-support for "
-            "instructions on setting it up."
+            "See https://github.com/apache/airflow/blob/main/dev/MANUALLY_BUILDING_IMAGES.md"
+            " for instructions on setting it up."
         )
         sys.exit(1)
     result_regctl = run_command(["regctl", 'version'], check=False, dry_run=dry_run, verbose=verbose)
diff --git a/dev/images/release_prod_image.png b/dev/images/release_prod_image.png
new file mode 100644
index 0000000000..78f941a43b
Binary files /dev/null and b/dev/images/release_prod_image.png differ


[airflow] 21/39: Fix errors revealed on autoupgrade of breeze (#24612)

Posted by po...@apache.org.
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 5c7b7993b8338b465e658adc18651675134d52e7
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Thu Jun 23 02:37:40 2022 +0200

    Fix errors revealed on autoupgrade of breeze (#24612)
    
    Recent changes to Breeze cause it to fail in certain situations,
    especially at self-upgrade (which was generated by today's
    upgrade with rich-click).
    
    There were two problems:
    
    * docker volume inspect missed 'volume' and it caused sometimes
      failures in CI
    
    * inputimeout dependency was missing after recent update to
      pre-commit venvs
    
    (cherry picked from commit 0905e386f17e34d96f6ee575404c62b13242c75d)
---
 .pre-commit-config.yaml                           | 16 ++++++++--------
 dev/breeze/src/airflow_breeze/utils/path_utils.py |  4 +++-
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index af0c2b0e1c..d91d2bf332 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -778,7 +778,7 @@ repos:
         entry: ./scripts/ci/pre_commit/pre_commit_mypy.py
         files: ^dev/.*\.py$
         require_serial: true
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: run-mypy
         name: Run mypy for core
         language: python
@@ -786,14 +786,14 @@ repos:
         files: \.py$
         exclude: ^provider_packages|^docs|^airflow/_vendor/|^airflow/providers|^airflow/migrations|^dev
         require_serial: true
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: run-mypy
         name: Run mypy for providers
         language: python
         entry: ./scripts/ci/pre_commit/pre_commit_mypy.py --namespace-packages
         files: ^airflow/providers/.*\.py$
         require_serial: true
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: run-mypy
         name: Run mypy for /docs/ folder
         language: python
@@ -801,7 +801,7 @@ repos:
         files: ^docs/.*\.py$
         exclude: ^docs/rtd-deprecation
         require_serial: true
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: run-flake8
         name: Run flake8
         language: python
@@ -809,7 +809,7 @@ repos:
         files: \.py$
         pass_filenames: true
         exclude: ^airflow/_vendor/
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: lint-javascript
         name: ESLint against airflow/ui
         language: python
@@ -817,7 +817,7 @@ repos:
         files: ^airflow/ui/
         entry: ./scripts/ci/pre_commit/pre_commit_ui_lint.py
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: lint-javascript
         name: ESLint against current UI JavaScript files
         language: python
@@ -825,12 +825,12 @@ repos:
         files: ^airflow/www/static/js/
         entry: ./scripts/ci/pre_commit/pre_commit_www_lint.py
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
       - id: update-migration-references
         name: Update migration ref doc
         language: python
         entry: ./scripts/ci/pre_commit/pre_commit_migration_reference.py
         pass_filenames: false
         files: ^airflow/migrations/versions/.*\.py$|^docs/apache-airflow/migrations-ref\.rst$
-        additional_dependencies: ['rich>=12.4.4']
+        additional_dependencies: ['rich>=12.4.4', 'inputimeout']
         ## ONLY ADD PRE-COMMITS HERE THAT REQUIRE CI IMAGE
diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index e4e79d5520..c7ee6d9802 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -253,7 +253,9 @@ BREEZE_SOURCES_ROOT = AIRFLOW_SOURCES_ROOT / "dev" / "breeze"
 def create_volume_if_missing(volume_name: str):
     from airflow_breeze.utils.run_utils import run_command
 
-    res_inspect = run_command(cmd=["docker", "inspect", volume_name], stdout=subprocess.DEVNULL, check=False)
+    res_inspect = run_command(
+        cmd=["docker", "volume", "inspect", volume_name], stdout=subprocess.DEVNULL, check=False
+    )
     if res_inspect.returncode != 0:
         run_command(cmd=["docker", "volume", "create", volume_name], check=True)
 


[airflow] 07/39: Fix choosing backend versions in breeze's command line (#24228)

Posted by po...@apache.org.
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 d7989b60f622775fc1695e6be6ba1e0849d9581d
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 7 08:48:23 2022 +0200

    Fix choosing backend versions in breeze's command line (#24228)
    
    Choosing version of backend were broken when command line switches
    were used. The _VERSION variables were "hard-coded" to defaults
    rather than taken from command line. This is a remnant of initial
    implementation and converting the parameters to "cacheable" ones.
    
    While looking at the versions we also found that PARAM_NAME_FLAG
    is not used any more so we took the opportunity to remove it.
    
    (cherry picked from commit 4482eaefb02535317bc0d2378eba6bfcef3c45ff)
---
 dev/breeze/src/airflow_breeze/global_constants.py         | 15 ---------------
 .../src/airflow_breeze/utils/docker_command_utils.py      |  9 +++------
 2 files changed, 3 insertions(+), 21 deletions(-)

diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 4ed4c298ba..327740f7bf 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -102,18 +102,6 @@ PARAM_NAME_DESCRIPTION = {
     "MSSQL_VERSION": "MSSql version",
 }
 
-PARAM_NAME_FLAG = {
-    "BACKEND": "--backend",
-    "MYSQL_VERSION": "--mysql-version",
-    "KUBERNETES_MODE": "--kubernetes-mode",
-    "KUBERNETES_VERSION": "--kubernetes-version",
-    "KIND_VERSION": "--kind-version",
-    "HELM_VERSION": "--helm-version",
-    "EXECUTOR": "--executor",
-    "POSTGRES_VERSION": "--postgres-version",
-    "MSSQL_VERSION": "--mssql-version",
-}
-
 EXCLUDE_DOCS_PACKAGE_FOLDER = [
     'exts',
     'integration-logos',
@@ -158,9 +146,6 @@ CURRENT_PYTHON_MAJOR_MINOR_VERSIONS = ['3.7', '3.8', '3.9', '3.10']
 CURRENT_POSTGRES_VERSIONS = ['10', '11', '12', '13', '14']
 CURRENT_MYSQL_VERSIONS = ['5.7', '8']
 CURRENT_MSSQL_VERSIONS = ['2017-latest', '2019-latest']
-POSTGRES_VERSION = CURRENT_POSTGRES_VERSIONS[0]
-MYSQL_VERSION = CURRENT_MYSQL_VERSIONS[0]
-MSSQL_VERSION = CURRENT_MSSQL_VERSIONS[0]
 DB_RESET = False
 START_AIRFLOW = "false"
 LOAD_EXAMPLES = False
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 1f30642edd..fb38cefaba 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -45,11 +45,8 @@ from airflow_breeze.global_constants import (
     MOUNT_ALL,
     MOUNT_SELECTED,
     MSSQL_HOST_PORT,
-    MSSQL_VERSION,
     MYSQL_HOST_PORT,
-    MYSQL_VERSION,
     POSTGRES_HOST_PORT,
-    POSTGRES_VERSION,
     REDIS_HOST_PORT,
     SSH_PORT,
     WEBSERVER_HOST_PORT,
@@ -565,9 +562,12 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
     "ISSUE_ID": "issue_id",
     "LOAD_EXAMPLES": "load_example_dags",
     "LOAD_DEFAULT_CONNECTIONS": "load_default_connections",
+    "MYSQL_VERSION": "mysql_version",
+    "MSSQL_VERSION": "mssql_version",
     "NUM_RUNS": "num_runs",
     "PACKAGE_FORMAT": "package_format",
     "PYTHON_MAJOR_MINOR_VERSION": "python",
+    "POSTGRES_VERSION": "postgres_version",
     "SQLITE_URL": "sqlite_url",
     "START_AIRFLOW": "start_airflow",
     "SKIP_ENVIRONMENT_INITIALIZATION": "skip_environment_initialization",
@@ -579,11 +579,8 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
 DOCKER_VARIABLE_CONSTANTS = {
     "FLOWER_HOST_PORT": FLOWER_HOST_PORT,
     "MSSQL_HOST_PORT": MSSQL_HOST_PORT,
-    "MSSQL_VERSION": MSSQL_VERSION,
     "MYSQL_HOST_PORT": MYSQL_HOST_PORT,
-    "MYSQL_VERSION": MYSQL_VERSION,
     "POSTGRES_HOST_PORT": POSTGRES_HOST_PORT,
-    "POSTGRES_VERSION": POSTGRES_VERSION,
     "REDIS_HOST_PORT": REDIS_HOST_PORT,
     "SSH_PORT": SSH_PORT,
     "WEBSERVER_HOST_PORT": WEBSERVER_HOST_PORT,


[airflow] 15/39: Move LOAD_DEFAULT_CONNECTIONS env var to database config section in CI (#24536)

Posted by po...@apache.org.
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 e4c41ade22dac0c87e97e58801c1708efa8078a1
Author: Josh Fell <48...@users.noreply.github.com>
AuthorDate: Sat Jun 18 15:34:24 2022 -0400

    Move LOAD_DEFAULT_CONNECTIONS env var to database config section in CI (#24536)
    
    (cherry picked from commit fe105f8887d516c4dc6ecff55dded2215280716c)
---
 Dockerfile.ci                             | 2 +-
 scripts/docker/entrypoint_ci.sh           | 2 +-
 scripts/in_container/airflow_ci.cfg       | 4 +++-
 scripts/in_container/check_environment.sh | 2 +-
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/Dockerfile.ci b/Dockerfile.ci
index 41aaf579ec..537f84a71f 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -803,7 +803,7 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
     cd "${AIRFLOW_SOURCES}"
 
     if [[ ${START_AIRFLOW:="false"} == "true" || ${START_AIRFLOW} == "True" ]]; then
-        export AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=${LOAD_DEFAULT_CONNECTIONS}
+        export AIRFLOW__DATABASE__LOAD_DEFAULT_CONNECTIONS=${LOAD_DEFAULT_CONNECTIONS}
         export AIRFLOW__CORE__LOAD_EXAMPLES=${LOAD_EXAMPLES}
         # shellcheck source=scripts/in_container/bin/run_tmux
         exec run_tmux
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index 0aa7e5ddc6..f5198a556c 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -211,7 +211,7 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
     cd "${AIRFLOW_SOURCES}"
 
     if [[ ${START_AIRFLOW:="false"} == "true" || ${START_AIRFLOW} == "True" ]]; then
-        export AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=${LOAD_DEFAULT_CONNECTIONS}
+        export AIRFLOW__DATABASE__LOAD_DEFAULT_CONNECTIONS=${LOAD_DEFAULT_CONNECTIONS}
         export AIRFLOW__CORE__LOAD_EXAMPLES=${LOAD_EXAMPLES}
         # shellcheck source=scripts/in_container/bin/run_tmux
         exec run_tmux
diff --git a/scripts/in_container/airflow_ci.cfg b/scripts/in_container/airflow_ci.cfg
index 60b6066144..57863bd9c6 100644
--- a/scripts/in_container/airflow_ci.cfg
+++ b/scripts/in_container/airflow_ci.cfg
@@ -23,12 +23,14 @@ sql_alchemy_conn = # overridden by the startup scripts
 #sql_engine_collation_for_ids = overridden by the startup scripts
 unit_test_mode = True
 load_examples = True
-load_default_connections = True
 donot_pickle = False
 dags_are_paused_at_creation = False
 default_impersonation =
 fernet_key = af7CN0q6ag5U3g08IsPsw3K45U7Xa0axgVFhoh-3zB8=
 
+[database]
+load_default_connections = True
+
 [hive]
 default_hive_mapred_queue = airflow
 
diff --git a/scripts/in_container/check_environment.sh b/scripts/in_container/check_environment.sh
index 2ed2a42610..3d9247e095 100755
--- a/scripts/in_container/check_environment.sh
+++ b/scripts/in_container/check_environment.sh
@@ -129,7 +129,7 @@ function startairflow_if_requested() {
         echo
         echo "Starting Airflow"
         echo
-        export AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=${LOAD_DEFAULT_CONNECTIONS}
+        export AIRFLOW__DATABASE__LOAD_DEFAULT_CONNECTIONS=${LOAD_DEFAULT_CONNECTIONS}
         export AIRFLOW__CORE__LOAD_EXAMPLES=${LOAD_EXAMPLES}
 
         . "$( dirname "${BASH_SOURCE[0]}" )/configure_environment.sh"


[airflow] 37/39: Fix unnecessary check for ARM images (#24718)

Posted by po...@apache.org.
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 44994a79b7cd65fceadeffe58691bab09d57b37d
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 28 23:22:23 2022 +0200

    Fix unnecessary check for ARM images (#24718)
    
    The ARM image build introduced in #24664 had problem with build
    image that was additionally checking for arm images which were
    moved out to a spearate step
    
    (cherry picked from commit 5321577aeef49a33d10efa42222df5524cc45c26)
---
 .github/workflows/build-images.yml | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index 39c758a23d..e6bb57c40d 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -228,32 +228,18 @@ jobs:
           Build & Push AMD64 CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
         run: breeze build-image --push-image --tag-as-latest --run-in-parallel
-        if: matrix.platform == 'linux/amd64'
-        env:
-          UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
-          DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
-          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-          PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
-      - name: "Start ARM instance"
-        run: ./scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
-        if: matrix.platform == 'linux/arm64'
-      - name: >
-          Build ARM CI images ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-          ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
-        run: breeze build-image --run-in-parallel
-        if: matrix.platform == 'linux/arm64'
         env:
           UPGRADE_TO_NEWER_DEPENDENCIES: ${{ needs.build-info.outputs.upgradeToNewerDependencies }}
           DOCKER_CACHE: ${{ needs.build-info.outputs.cacheDirective }}
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
           PYTHON_VERSIONS: ${{ needs.build-info.outputs.allPythonVersionsListAsString }}
       - name: Push empty CI image ${{ env.PYTHON_MAJOR_MINOR_VERSION }}:${{ env.IMAGE_TAG_FOR_THE_BUILD }}
-        if: (failure() || cancelled()) && matrix.platform == 'linux/amd64'
+        if: failure() || cancelled()
         run: breeze build-image --push-image --empty-image --run-in-parallel
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Candidates for pip resolver backtrack triggers"
-        if: (failure() || cancelled()) && matrix.platform == 'linux/amd64'
+        if: failure() || cancelled()
         run: >
           breeze find-newer-dependencies --max-age 1
           --python "${{ needs.build-info.outputs.defaultPythonVersion }}"


[airflow] 28/39: Switch to new selective-checks in label-when-reviewed workflow (#24651)

Posted by po...@apache.org.
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 4fbea89f0da02fabccc9eb7b6d74bc50f0be7929
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 25 11:20:48 2022 +0200

    Switch to new selective-checks in label-when-reviewed workflow (#24651)
    
    When #24610 was implemented I missed the label-when-reviewed workflow
    
    (cherry picked from commit 2703874eb27c85c781f8c20c8a62b3a4e8d8583b)
---
 .../workflows/label_when_reviewed_workflow_run.yml | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/.github/workflows/label_when_reviewed_workflow_run.yml b/.github/workflows/label_when_reviewed_workflow_run.yml
index 9b11d71ad2..e818e8411a 100644
--- a/.github/workflows/label_when_reviewed_workflow_run.yml
+++ b/.github/workflows/label_when_reviewed_workflow_run.yml
@@ -83,20 +83,20 @@ jobs:
         with:
           persist-credentials: false
           submodules: recursive
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          # We do not have output from selective checks yet, so we need to hardcode python
+          python-version: 3.7
+          cache: 'pip'
+          cache-dependency-path: ./dev/breeze/setup*
+      - run: ./scripts/ci/install_breeze.sh
       - name: Selective checks
         id: selective-checks
         env:
-          EVENT_NAME: ${{ steps.source-run-info.outputs.sourceEvent }}
-          TARGET_COMMIT_SHA: ${{ steps.source-run-info.outputs.targetCommitSha }}
-          PR_LABELS: ${{ steps.source-run-info.outputs.pullRequestLabels }}
-        run: |
-          if [[ ${EVENT_NAME} == "pull_request_review" ]]; then
-            # Run selective checks
-            ./scripts/ci/selective_ci_checks.sh "${TARGET_COMMIT_SHA}"
-          else
-            # Run all checks
-            ./scripts/ci/selective_ci_checks.sh
-          fi
+          PR_LABELS: "${{ steps.source-run-info.outputs.pullRequestLabels }}"
+          COMMIT_REF: "${{ steps.source-run-info.outputs.targetCommitSha }}"
+        run: breeze selective-check --github-event-name "${{ steps.source-run-info.outputs.targetCommitSha }}"
       - name: "Label when approved by committers for PRs that require full tests"
         uses: ./.github/actions/label-when-approved-action
         id: label-full-test-prs-when-approved-by-commiters


[airflow] 30/39: Remove misleading message from CI (#24650)

Posted by po...@apache.org.
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 fbca47eba4c0a37a7bb669fc609124eabb3252cf
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 25 11:27:21 2022 +0200

    Remove misleading message from CI (#24650)
    
    The CI jobs do not usually have mypy_cache volume created and
    almost all jobs print misleading "mypy_cache_volume" error at
    the beginning.
    
    This is a noise - we are not interested in this stderr printed
    message - we are only interested in returncode from checking
    if it exists.
    
    (cherry picked from commit ac104025f45b54efff26407e460a5e4279c6495b)
---
 dev/breeze/src/airflow_breeze/utils/path_utils.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index c7ee6d9802..413401c0e8 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -254,10 +254,18 @@ def create_volume_if_missing(volume_name: str):
     from airflow_breeze.utils.run_utils import run_command
 
     res_inspect = run_command(
-        cmd=["docker", "volume", "inspect", volume_name], stdout=subprocess.DEVNULL, check=False
+        cmd=["docker", "volume", "inspect", volume_name],
+        stdout=subprocess.DEVNULL,
+        stderr=subprocess.DEVNULL,
+        check=False,
     )
     if res_inspect.returncode != 0:
-        run_command(cmd=["docker", "volume", "create", volume_name], check=True)
+        run_command(
+            cmd=["docker", "volume", "create", volume_name],
+            stdout=subprocess.DEVNULL,
+            stderr=subprocess.DEVNULL,
+            check=True,
+        )
 
 
 def create_static_check_volumes():


[airflow] 14/39: Restore capability of reproducing CI failures using new Breeze (#24402)

Posted by po...@apache.org.
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 799074d7f9c67dfc61b2db3872c56c77a8705b85
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Fri Jun 17 22:08:10 2022 +0200

    Restore capability of reproducing CI failures using new Breeze (#24402)
    
    The old breeze-legacy used to have a possibility of very easy
    reproduction of CI failures by executing the right breeze command
    that contained the commit hash of the PR being tested. This has
    been broken for some time after we migrated to the new breeze,
    but finally it was the time when it was needed again.
    
    This PR brings back the capability by:
    
    * addding --image-tag parameters for tests, shell and start-airflow
      commands
    * if --image-tag is specified, then rather than building the
      image, it is pulled using the specified hash
    * if --image-tag is specified, the local sources are not mounted
      to breeze when started, but the sources already embedded in the
      image are used ("skipped" set for --mount-sources).
    * new "removed" command value is added to --mount-sources, it
      causes breeze command to remove the sources from the image (it
      is used when installing airflow during the tests for specified
      version (it's automatically used when --use-airflow-version
      is used).
    
    (cherry picked from commit 7dc794a985c5e19126068ee1a83d09a21e894a3e)
---
 .github/workflows/ci.yml                           |   5 +
 CI.rst                                             |   9 +-
 IMAGES.rst                                         |   5 +-
 breeze-complete                                    |   3 -
 breeze-legacy                                      |  24 --
 .../airflow_breeze/commands/ci_image_commands.py   |  30 +-
 .../airflow_breeze/commands/developer_commands.py  |  16 +-
 .../commands/release_management_commands.py        |  14 +-
 .../airflow_breeze/commands/testing_commands.py    |  22 +-
 dev/breeze/src/airflow_breeze/global_constants.py  |   5 +-
 .../src/airflow_breeze/params/shell_params.py      |  27 +-
 .../src/airflow_breeze/utils/common_options.py     |  13 +-
 .../airflow_breeze/utils/docker_command_utils.py   |   3 +-
 dev/breeze/src/airflow_breeze/utils/image.py       |   4 +-
 dev/breeze/tests/test_commands.py                  |  12 +-
 images/breeze/output-build-image.svg               | 268 +++++++--------
 images/breeze/output-build-prod-image.svg          | 336 ++++++++++---------
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output-commands.svg                  | 368 +++++++++++----------
 images/breeze/output-docker-compose-tests.svg      | 104 +++---
 images/breeze/output-generate-constraints.svg      | 152 +++++----
 images/breeze/output-pull-image.svg                | 148 +++++----
 images/breeze/output-pull-prod-image.svg           | 148 +++++----
 images/breeze/output-shell.svg                     | 224 +++++++------
 images/breeze/output-start-airflow.svg             | 232 +++++++------
 images/breeze/output-tests.svg                     | 164 +++++----
 images/breeze/output-verify-image.svg              | 104 +++---
 images/breeze/output-verify-prod-image.svg         | 104 +++---
 images/breeze/output-verify-provider-packages.svg  | 132 ++++----
 .../ci_run_single_airflow_test_in_docker.sh        |   6 +-
 30 files changed, 1424 insertions(+), 1260 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 32283ed26d..bde6fd15e6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -923,6 +923,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/testing/ci_run_airflow_testing.sh
         env:
           PR_LABELS: "${{ needs.build-info.outputs.pullRequestLabels }}"
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Upload airflow logs"
         uses: actions/upload-artifact@v2
         if: failure()
@@ -996,6 +997,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/testing/ci_run_airflow_testing.sh
         env:
           PR_LABELS: "${{ needs.build-info.outputs.pullRequestLabels }}"
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Upload airflow logs"
         uses: actions/upload-artifact@v2
         if: failure()
@@ -1068,6 +1070,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/testing/ci_run_airflow_testing.sh
         env:
           PR_LABELS: "${{ needs.build-info.outputs.pullRequestLabels }}"
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Upload airflow logs"
         uses: actions/upload-artifact@v2
         if: failure()
@@ -1138,6 +1141,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/testing/ci_run_airflow_testing.sh
         env:
           PR_LABELS: "${{ needs.build-info.outputs.pullRequestLabels }}"
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Upload airflow logs"
         uses: actions/upload-artifact@v2
         if: failure()
@@ -1206,6 +1210,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         run: ./scripts/ci/testing/ci_run_airflow_testing.sh
         env:
           PR_LABELS: "${{ needs.build-info.outputs.pullRequestLabels }}"
+          IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Upload airflow logs"
         uses: actions/upload-artifact@v2
         if: failure()
diff --git a/CI.rst b/CI.rst
index f24639271e..7798b077ac 100644
--- a/CI.rst
+++ b/CI.rst
@@ -96,7 +96,7 @@ You can read more about Breeze in `BREEZE.rst <BREEZE.rst>`_ but in essence it i
 you to re-create CI environment in your local development instance and interact with it. In its basic
 form, when you do development you can run all the same tests that will be run in CI - but locally,
 before you submit them as PR. Another use case where Breeze is useful is when tests fail on CI. You can
-take the full ``COMMIT_SHA`` of the failed build pass it as ``--github-image-id`` parameter of Breeze and it will
+take the full ``COMMIT_SHA`` of the failed build pass it as ``--image-tag`` parameter of Breeze and it will
 download the very same version of image that was used in CI and run it locally. This way, you can very
 easily reproduce any failed test that happens in CI - even if you do not check out the sources
 connected with the run.
@@ -275,7 +275,7 @@ You can use those variables when you try to reproduce the build locally.
 |                                         |             |              |            | should set it to false, especially              |
 |                                         |             |              |            | in case our local sources are not the           |
 |                                         |             |              |            | ones we intend to use (for example              |
-|                                         |             |              |            | when ``--github-image-id`` is used              |
+|                                         |             |              |            | when ``--image-tag`` is used              |
 |                                         |             |              |            | in Breeze.                                      |
 |                                         |             |              |            |                                                 |
 |                                         |             |              |            | In CI jobs it is set to true                    |
@@ -668,12 +668,11 @@ For example knowing that the CI job was for commit ``cd27124534b46c9688a1d89e75f
 
 But you usually need to pass more variables and complex setup if you want to connect to a database or
 enable some integrations. Therefore it is easiest to use `Breeze <BREEZE.rst>`_ for that. For example if
-you need to reproduce a MySQL environment with kerberos integration enabled for commit
-cd27124534b46c9688a1d89e75fcd137ab5137e3, in python 3.8 environment you can run:
+you need to reproduce a MySQL environment in python 3.8 environment you can run:
 
 .. code-block:: bash
 
-  ./breeze-legacy --github-image-id cd27124534b46c9688a1d89e75fcd137ab5137e3 --python 3.8
+  breeze --image-tag cd27124534b46c9688a1d89e75fcd137ab5137e3 --python 3.8 --backend mysql
 
 You will be dropped into a shell with the exact version that was used during the CI run and you will
 be able to run pytest tests manually, easily reproducing the environment that was used in CI. Note that in
diff --git a/IMAGES.rst b/IMAGES.rst
index 58ef0cca54..634c4ac8a0 100644
--- a/IMAGES.rst
+++ b/IMAGES.rst
@@ -281,7 +281,7 @@ to refresh them.
 
 Every developer can also pull and run images being result of a specific CI run in GitHub Actions.
 This is a powerful tool that allows to reproduce CI failures locally, enter the images and fix them much
-faster. It is enough to pass ``--github-image-id`` and the registry and Breeze will download and execute
+faster. It is enough to pass ``--image-tag`` and the registry and Breeze will download and execute
 commands using the same image that was used during the CI tests.
 
 For example this command will run the same Python 3.8 image as was used in build identified with
@@ -289,8 +289,7 @@ For example this command will run the same Python 3.8 image as was used in build
 
 .. code-block:: bash
 
-  ./breeze-legacy --github-image-id 9a621eaa394c0a0a336f8e1b31b35eff4e4ee86e \
-    --python 3.8 --integration rabbitmq
+  breeze --image-tag 9a621eaa394c0a0a336f8e1b31b35eff4e4ee86e --python 3.8 --integration rabbitmq
 
 You can see more details and examples in `Breeze <BREEZE.rst>`_
 
diff --git a/breeze-complete b/breeze-complete
index 389d18f64d..2fd1a9d1a8 100644
--- a/breeze-complete
+++ b/breeze-complete
@@ -173,9 +173,6 @@ function breeze_complete::get_known_values_breeze() {
     -g | --github-repository)
         _breeze_known_values="${_breeze_default_github_repository}"
         ;;
-    -s | --github-image-id)
-        _breeze_known_values="${_breeze_default_github_image_id}"
-        ;;
     kind-cluster)
         _breeze_known_values="${_breeze_allowed_kind_operations}"
         ;;
diff --git a/breeze-legacy b/breeze-legacy
index d18d3c25e1..0bb257494c 100755
--- a/breeze-legacy
+++ b/breeze-legacy
@@ -970,21 +970,6 @@ function breeze::parse_arguments() {
             export GITHUB_REPOSITORY="${2}"
             shift 2
             ;;
-        -s | --github-image-id)
-            echo
-            echo "GitHub image id: ${2}"
-            echo
-            echo "Force pulling the image, using GitHub registry and skip mounting local sources."
-            echo "This is in order to get the exact same version as used in CI environment for SHA!."
-            echo "You can specify --skip-mounting-local-sources to not mount local sources to get exact. "
-            echo "behaviour as in the CI environment."
-            echo
-            export GITHUB_REGISTRY_PULL_IMAGE_TAG="${2}"
-            export CHECK_IMAGE_FOR_REBUILD="false"
-            export SKIP_BUILDING_PROD_IMAGE="true"
-            export SKIP_CHECK_REMOTE_IMAGE="true"
-            shift 2
-            ;;
         --init-script)
             export INIT_SCRIPT_FILE="${2}"
             echo "The initialization file is in ${INIT_SCRIPT_FILE}"
@@ -1370,15 +1355,6 @@ ${CMDNAME} shell [FLAGS] [-- <EXTRA_ARGS>]
       '${CMDNAME} shell -- -c \"ls -la\"'
       '${CMDNAME} -- -c \"ls -la\"'
 
-      For GitHub repository, the --github-repository flag can be used to specify the repository
-      to pull and push images. You can also use --github-image-id <COMMIT_SHA> in case
-      you want to pull the image with specific COMMIT_SHA tag.
-
-      '${CMDNAME} shell \\
-            --github-image-id 9a621eaa394c0a0a336f8e1b31b35eff4e4ee86e' - pull/use image with SHA
-      '${CMDNAME} \\
-            --github-image-id 9a621eaa394c0a0a336f8e1b31b35eff4e4ee86e' - pull/use image with SHA
-
 "
     readonly DETAILED_USAGE_SHELL
     export DETAILED_USAGE_EXEC="
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index 889a9d7bef..374dac76cf 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -319,7 +319,6 @@ def pull_image(
             verbose=verbose,
             wait_for_image=wait_for_image,
             tag_as_latest=tag_as_latest,
-            poll_time=10.0,
         )
         if return_code != 0:
             get_console().print(f"[error]There was an error when pulling CI image: {info}[/]")
@@ -530,26 +529,41 @@ def build_ci_image_in_parallel(
     pool.close()
 
 
-def rebuild_ci_image_if_needed(
-    build_params: Union[ShellParams, BuildCiParams], dry_run: bool, verbose: bool
+def rebuild_or_pull_ci_image_if_needed(
+    command_params: Union[ShellParams, BuildCiParams], dry_run: bool, verbose: bool
 ) -> None:
     """
     Rebuilds CI image if needed and user confirms it.
 
-    :param build_params: parameters of the shell
+    :param command_params: parameters of the command to execute
     :param dry_run: whether it's a dry_run
     :param verbose: should we print verbose messages
     """
     build_ci_image_check_cache = Path(
-        BUILD_CACHE_DIR, build_params.airflow_branch, f".built_{build_params.python}"
+        BUILD_CACHE_DIR, command_params.airflow_branch, f".built_{command_params.python}"
     )
-    ci_image_params = BuildCiParams(python=build_params.python, upgrade_to_newer_dependencies=False)
+    ci_image_params = BuildCiParams(
+        python=command_params.python, upgrade_to_newer_dependencies=False, image_tag=command_params.image_tag
+    )
+    if command_params.image_tag is not None:
+        return_code, message = run_pull_image(
+            image_params=ci_image_params,
+            dry_run=dry_run,
+            verbose=verbose,
+            parallel=False,
+            wait_for_image=True,
+            tag_as_latest=False,
+        )
+        if return_code != 0:
+            get_console().print(f"[error]Pulling image with {command_params.image_tag} failed! {message}[/]")
+            sys.exit(return_code)
+        return
     if build_ci_image_check_cache.exists():
         if verbose:
-            get_console().print(f'[info]{build_params.image_type} image already built locally.[/]')
+            get_console().print(f'[info]{command_params.image_type} image already built locally.[/]')
     else:
         get_console().print(
-            f'[warning]{build_params.image_type} image was never built locally or deleted. '
+            f'[warning]{command_params.image_type} image was never built locally or deleted. '
             'Forcing build.[/]'
         )
         ci_image_params.force_build = True
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index a8ad686c70..bc324bf7e3 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -21,7 +21,7 @@ from typing import Iterable, Optional, Tuple
 
 import rich_click as click
 
-from airflow_breeze.commands.ci_image_commands import rebuild_ci_image_if_needed
+from airflow_breeze.commands.ci_image_commands import rebuild_or_pull_ci_image_if_needed
 from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import (
     DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
@@ -45,6 +45,7 @@ from airflow_breeze.utils.common_options import (
     option_force_build,
     option_forward_credentials,
     option_github_repository,
+    option_image_tag,
     option_installation_package_format,
     option_integration,
     option_load_default_connection,
@@ -113,6 +114,7 @@ DEVELOPER_PARAMETERS = {
                 "--force-build",
                 "--mount-sources",
                 "--debian-version",
+                "--image-tag",
             ],
         },
     ],
@@ -141,6 +143,7 @@ DEVELOPER_PARAMETERS = {
                 "--force-build",
                 "--mount-sources",
                 "--debian-version",
+                "--image-tag",
             ],
         },
     ],
@@ -170,6 +173,7 @@ DEVELOPER_PARAMETERS = {
                 "--package-format",
                 "--force-build",
                 "--mount-sources",
+                "--image-tag",
             ],
         },
     ],
@@ -238,6 +242,7 @@ DEVELOPER_PARAMETERS = {
 @option_mount_sources
 @option_integration
 @option_db_reset
+@option_image_tag
 @option_answer
 @click.argument('extra-args', nargs=-1, type=click.UNPROCESSED)
 def shell(
@@ -261,6 +266,7 @@ def shell(
     force_build: bool,
     db_reset: bool,
     answer: Optional[str],
+    image_tag: Optional[str],
     extra_args: Tuple,
 ):
     """Enter breeze.py environment. this is the default command use when no other is selected."""
@@ -289,6 +295,7 @@ def shell(
         extra_args=extra_args,
         answer=answer,
         debian_version=debian_version,
+        image_tag=image_tag,
     )
 
 
@@ -312,6 +319,7 @@ def shell(
 @option_installation_package_format
 @option_mount_sources
 @option_integration
+@option_image_tag
 @option_db_reset
 @option_answer
 @click.argument('extra-args', nargs=-1, type=click.UNPROCESSED)
@@ -335,6 +343,7 @@ def start_airflow(
     use_packages_from_dist: bool,
     package_format: str,
     force_build: bool,
+    image_tag: Optional[str],
     db_reset: bool,
     answer: Optional[str],
     extra_args: Tuple,
@@ -362,6 +371,7 @@ def start_airflow(
         force_build=force_build,
         db_reset=db_reset,
         start_airflow=True,
+        image_tag=image_tag,
         extra_args=extra_args,
         answer=answer,
     )
@@ -398,7 +408,7 @@ def build_docs(
     """Build documentation in the container."""
     perform_environment_checks(verbose=verbose)
     params = BuildCiParams(github_repository=github_repository, python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION)
-    rebuild_ci_image_if_needed(build_params=params, dry_run=dry_run, verbose=verbose)
+    rebuild_or_pull_ci_image_if_needed(command_params=params, dry_run=dry_run, verbose=verbose)
     ci_image_name = params.airflow_image_name
     doc_builder = DocBuildParams(
         package_filter=package_filter,
@@ -581,7 +591,7 @@ def enter_shell(**kwargs) -> RunCommandResult:
         get_console().print(CHEATSHEET, style=CHEATSHEET_STYLE)
     enter_shell_params = ShellParams(**filter_out_none(**kwargs))
     enter_shell_params.include_mypy_volume = True
-    rebuild_ci_image_if_needed(build_params=enter_shell_params, dry_run=dry_run, verbose=verbose)
+    rebuild_or_pull_ci_image_if_needed(command_params=enter_shell_params, dry_run=dry_run, verbose=verbose)
     return run_shell(verbose, dry_run, enter_shell_params)
 
 
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 839b966fae..a5333a08ab 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -24,7 +24,7 @@ from typing import IO, Dict, List, Optional, Tuple
 
 import click
 
-from airflow_breeze.commands.ci_image_commands import rebuild_ci_image_if_needed
+from airflow_breeze.commands.ci_image_commands import rebuild_or_pull_ci_image_if_needed
 from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import (
     ALLOWED_PLATFORMS,
@@ -260,7 +260,7 @@ def prepare_airflow_packages(
         install_providers_from_sources=False,
         mount_sources=MOUNT_ALL,
     )
-    rebuild_ci_image_if_needed(build_params=shell_params, dry_run=dry_run, verbose=verbose)
+    rebuild_or_pull_ci_image_if_needed(command_params=shell_params, dry_run=dry_run, verbose=verbose)
     result_command = run_with_debug(
         params=shell_params,
         command=["/opt/airflow/scripts/in_container/run_prepare_airflow_packages.sh"],
@@ -299,7 +299,7 @@ def prepare_provider_documentation(
         answer=answer,
         skip_environment_initialization=True,
     )
-    rebuild_ci_image_if_needed(build_params=shell_params, dry_run=dry_run, verbose=verbose)
+    rebuild_or_pull_ci_image_if_needed(command_params=shell_params, dry_run=dry_run, verbose=verbose)
     cmd_to_run = ["/opt/airflow/scripts/in_container/run_prepare_provider_documentation.sh", *packages]
     result_command = run_with_debug(
         params=shell_params,
@@ -351,7 +351,7 @@ def prepare_provider_packages(
         skip_environment_initialization=True,
         version_suffix_for_pypi=version_suffix_for_pypi,
     )
-    rebuild_ci_image_if_needed(build_params=shell_params, dry_run=dry_run, verbose=verbose)
+    rebuild_or_pull_ci_image_if_needed(command_params=shell_params, dry_run=dry_run, verbose=verbose)
     cmd_to_run = ["/opt/airflow/scripts/in_container/run_prepare_provider_packages.sh", *packages_list]
     result_command = run_with_debug(
         params=shell_params,
@@ -540,7 +540,7 @@ def verify_provider_packages(
         use_packages_from_dist=use_packages_from_dist,
         package_format=package_format,
     )
-    rebuild_ci_image_if_needed(build_params=shell_params, dry_run=dry_run, verbose=verbose)
+    rebuild_or_pull_ci_image_if_needed(command_params=shell_params, dry_run=dry_run, verbose=verbose)
     cmd_to_run = [
         "-c",
         "python /opt/airflow/scripts/in_container/verify_providers.py",
@@ -621,8 +621,8 @@ def release_prod_images(
     dry_run: bool,
 ):
     perform_environment_checks(verbose=verbose)
-    rebuild_ci_image_if_needed(
-        build_params=ShellParams(verbose=verbose, python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION),
+    rebuild_or_pull_ci_image_if_needed(
+        command_params=ShellParams(verbose=verbose, python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION),
         dry_run=dry_run,
         verbose=verbose,
     )
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index ebe4701b73..3946acd2ab 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -23,7 +23,7 @@ import sys
 import tempfile
 from threading import Event, Thread
 from time import sleep
-from typing import Dict, List, Tuple
+from typing import Dict, List, Optional, Tuple
 
 import click
 
@@ -40,6 +40,7 @@ from airflow_breeze.utils.common_options import (
     option_image_name,
     option_image_tag,
     option_integration,
+    option_mount_sources,
     option_mssql_version,
     option_mysql_version,
     option_postgres_version,
@@ -77,7 +78,6 @@ TESTING_PARAMETERS = {
             "options": [
                 "--integration",
                 "--test-type",
-                "--limit-progress-output",
                 "--db-reset",
                 "--backend",
                 "--python",
@@ -85,7 +85,15 @@ TESTING_PARAMETERS = {
                 "--mysql-version",
                 "--mssql-version",
             ],
-        }
+        },
+        {
+            "name": "Advanced flag for tests command",
+            "options": [
+                "--limit-progress-output",
+                "--image-tag",
+                "--mount-sources",
+            ],
+        },
     ],
 }
 
@@ -235,7 +243,8 @@ def run_with_progress(
     help="Limit progress to percentage only and just show the summary when tests complete.",
     is_flag=True,
 )
-@click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
+@option_image_tag
+@option_mount_sources
 @click.option(
     "--test-type",
     help="Type of test to run.",
@@ -243,6 +252,7 @@ def run_with_progress(
     type=BetterChoice(ALLOWED_TEST_TYPES),
 )
 @option_db_reset
+@click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
 def tests(
     dry_run: bool,
     verbose: bool,
@@ -256,6 +266,8 @@ def tests(
     extra_pytest_args: Tuple,
     test_type: str,
     db_reset: bool,
+    image_tag: Optional[str],
+    mount_sources: str,
 ):
     os.environ["RUN_TESTS"] = "true"
     if test_type:
@@ -274,6 +286,8 @@ def tests(
         postgres_version=postgres_version,
         mysql_version=mysql_version,
         mssql_version=mssql_version,
+        image_tag=image_tag,
+        mount_sources=mount_sources,
     )
     env_variables = get_env_variables_for_docker_commands(exec_shell_params)
     perform_environment_checks(verbose=verbose)
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 327740f7bf..0b8b220987 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -60,9 +60,10 @@ ALLOWED_CONSTRAINTS_MODES_PROD = ['constraints', 'constraints-no-providers', 'co
 
 MOUNT_SELECTED = "selected"
 MOUNT_ALL = "all"
-MOUNT_NONE = "none"
+MOUNT_SKIP = "skip"
+MOUNT_REMOVE = "remove"
 
-ALLOWED_MOUNT_OPTIONS = [MOUNT_SELECTED, MOUNT_ALL, MOUNT_NONE]
+ALLOWED_MOUNT_OPTIONS = [MOUNT_SELECTED, MOUNT_ALL, MOUNT_SKIP, MOUNT_REMOVE]
 ALLOWED_POSTGRES_VERSIONS = ['10', '11', '12', '13', '14']
 ALLOWED_MYSQL_VERSIONS = ['5.7', '8']
 ALLOWED_MSSQL_VERSIONS = ['2017-latest', '2019-latest']
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py b/dev/breeze/src/airflow_breeze/params/shell_params.py
index 4ba4022651..bb4ad3393e 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -32,8 +32,9 @@ from airflow_breeze.global_constants import (
     ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
     AVAILABLE_INTEGRATIONS,
     MOUNT_ALL,
-    MOUNT_NONE,
+    MOUNT_REMOVE,
     MOUNT_SELECTED,
+    MOUNT_SKIP,
     get_airflow_version,
 )
 from airflow_breeze.utils.console import get_console
@@ -64,7 +65,7 @@ class ShellParams:
     github_actions: str = os.environ.get('GITHUB_ACTIONS', "false")
     github_repository: str = "apache/airflow"
     github_token: str = os.environ.get('GITHUB_TOKEN', "")
-    image_tag: str = "latest"
+    image_tag: Optional[str] = None
     include_mypy_volume: bool = False
     install_airflow_version: str = ""
     install_providers_from_sources: bool = True
@@ -206,11 +207,23 @@ class ShellParams:
                 )
         compose_ci_file.extend([main_ci_docker_compose_file, *backend_files, files_docker_compose_file])
 
+        if self.image_tag is not None and self.image_tag != "latest":
+            get_console().print(
+                f"[warning]Running tagged image tag = {self.image_tag}. "
+                f"Forcing mounted sources to be 'skip'[/]"
+            )
+            self.mount_sources = MOUNT_SKIP
+        if self.use_airflow_version is not None:
+            get_console().print(
+                "[info]Forcing --mount-sources to `remove` since we are not installing airflow "
+                f"from sources but from {self.use_airflow_version}[/]"
+            )
+            self.mount_sources = MOUNT_REMOVE
         if self.mount_sources == MOUNT_SELECTED:
             compose_ci_file.extend([local_docker_compose_file])
         elif self.mount_sources == MOUNT_ALL:
             compose_ci_file.extend([local_all_sources_docker_compose_file])
-        else:  # none
+        elif self.mount_sources == MOUNT_REMOVE:
             compose_ci_file.extend([remove_sources_docker_compose_file])
         if self.forward_credentials:
             compose_ci_file.append(forward_credentials_docker_compose_file)
@@ -233,11 +246,3 @@ class ShellParams:
         if len(self.extra_args) > 0:
             cmd = str(self.extra_args[0])
         return cmd
-
-    def __post_init__(self):
-        if self.use_airflow_version is not None:
-            get_console().print(
-                "[info]Forcing --mount-sources to `none` since we are not installing airflow "
-                f"from sources but from {self.use_airflow_version}[/]"
-            )
-            self.mount_sources = MOUNT_NONE
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index deca1b4882..628bb81979 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -133,7 +133,7 @@ option_use_airflow_version = click.option(
     '--use-airflow-version',
     help="Use (reinstall at entry) Airflow version from PyPI. It can also be `none`, `wheel`, or `sdist`"
     " if Airflow should be removed, installed from wheel packages or sdist packages available in dist "
-    "folder respectively. Implies --mount-sources `none`.",
+    "folder respectively. Implies --mount-sources `remove`.",
     type=UseAirflowVersionType(ALLOWED_USE_AIRFLOW_VERSIONS),
     envvar='USE_AIRFLOW_VERSION',
 )
@@ -149,7 +149,7 @@ option_mount_sources = click.option(
     type=BetterChoice(ALLOWED_MOUNT_OPTIONS),
     default=ALLOWED_MOUNT_OPTIONS[0],
     show_default=True,
-    help="Choose scope of local sources should be mounted (default = selected).",
+    help="Choose scope of local sources that should be mounted, skipped, or removed (default = selected).",
 )
 option_force_build = click.option(
     '--force-build', help="Force image build no matter if it is determined as needed.", is_flag=True
@@ -186,16 +186,11 @@ option_github_username = click.option(
     help='The user name used to authenticate to GitHub.',
     envvar='GITHUB_USERNAME',
 )
-option_github_image_id = click.option(
-    '-s',
-    '--github-image-id',
-    help='Commit SHA of the image. \
-    Breeze can automatically pull the commit SHA id specified Default: latest',
-)
 option_image_tag = click.option(
     '-t',
     '--image-tag',
-    help='Tag added to the default naming conventions of Airflow CI/PROD images.',
+    help='Tag of the image which is used to pull or run the image (implies --mount-sources=skip'
+    ' when using to run shell or tests) ',
     envvar='IMAGE_TAG',
 )
 option_image_name = click.option(
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index fb38cefaba..96b83b5ed7 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -43,6 +43,7 @@ from airflow_breeze.global_constants import (
     MIN_DOCKER_COMPOSE_VERSION,
     MIN_DOCKER_VERSION,
     MOUNT_ALL,
+    MOUNT_REMOVE,
     MOUNT_SELECTED,
     MSSQL_HOST_PORT,
     MYSQL_HOST_PORT,
@@ -112,7 +113,7 @@ def get_extra_docker_flags(mount_sources: str) -> List[str]:
         extra_docker_flags.extend(
             ['--mount', "type=volume,src=mypy-cache-volume,dst=/opt/airflow/.mypy_cache"]
         )
-    else:  # none
+    elif mount_sources == MOUNT_REMOVE:
         extra_docker_flags.extend(
             ["--mount", f"type=bind,src={AIRFLOW_SOURCES_ROOT / 'empty'},dst=/opt/airflow/airflow"]
         )
diff --git a/dev/breeze/src/airflow_breeze/utils/image.py b/dev/breeze/src/airflow_breeze/utils/image.py
index 8cd516bb47..36c40cf05a 100644
--- a/dev/breeze/src/airflow_breeze/utils/image.py
+++ b/dev/breeze/src/airflow_breeze/utils/image.py
@@ -88,7 +88,7 @@ def run_pull_image(
     verbose: bool,
     wait_for_image: bool,
     tag_as_latest: bool,
-    poll_time: float,
+    poll_time: float = 10.0,
     parallel: bool = False,
 ) -> Tuple[int, str]:
     """
@@ -98,7 +98,7 @@ def run_pull_image(
     :param verbose: whether it's verbose
     :param wait_for_image: whether we should wait for the image to be available
     :param tag_as_latest: tag the image as latest
-    :param poll_time: what's the polling time between checks if images are there
+    :param poll_time: what's the polling time between checks if images are there (default 10 s)
     :param parallel: whether the pull is run as part of parallel execution
     :return: Tuple of return code and description of the image pulled
     """
diff --git a/dev/breeze/tests/test_commands.py b/dev/breeze/tests/test_commands.py
index 8866d75af0..3d375e8613 100644
--- a/dev/breeze/tests/test_commands.py
+++ b/dev/breeze/tests/test_commands.py
@@ -14,7 +14,7 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-from airflow_breeze.global_constants import MOUNT_ALL, MOUNT_NONE, MOUNT_SELECTED
+from airflow_breeze.global_constants import MOUNT_ALL, MOUNT_REMOVE, MOUNT_SELECTED, MOUNT_SKIP
 from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
 from airflow_breeze.utils.visuals import ASCIIART
 
@@ -35,7 +35,13 @@ def test_get_extra_docker_flags_selected():
     assert len(flags) > 40
 
 
-def test_get_extra_docker_flags_none():
-    flags = get_extra_docker_flags(MOUNT_NONE)
+def test_get_extra_docker_flags_remove():
+    flags = get_extra_docker_flags(MOUNT_REMOVE)
     assert "empty" in "".join(flags)
     assert len(flags) < 10
+
+
+def test_get_extra_docker_flags_skip():
+    flags = get_extra_docker_flags(MOUNT_SKIP)
+    assert "empty" not in "".join(flags)
+    assert len(flags) < 10
diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg
index 34c28afd8b..81703735d0 100644
--- a/images/breeze/output-build-image.svg
+++ b/images/breeze/output-build-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1465.1999999999998" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1514.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,273 +19,281 @@
         font-weight: 700;
     }
 
-    .terminal-1635638368-matrix {
+    .terminal-1489702336-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1635638368-title {
+    .terminal-1489702336-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1635638368-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1635638368-r2 { fill: #c5c8c6 }
-.terminal-1635638368-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1635638368-r4 { fill: #868887 }
-.terminal-1635638368-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1635638368-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1635638368-r7 { fill: #8d7b39 }
+    .terminal-1489702336-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1489702336-r2 { fill: #c5c8c6 }
+.terminal-1489702336-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1489702336-r4 { fill: #868887 }
+.terminal-1489702336-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1489702336-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1489702336-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1635638368-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1414.1999999999998" />
+    <clipPath id="terminal-1489702336-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1463.0" />
     </clipPath>
-    <clipPath id="terminal-1635638368-line-0">
+    <clipPath id="terminal-1489702336-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-1">
+<clipPath id="terminal-1489702336-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-2">
+<clipPath id="terminal-1489702336-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-3">
+<clipPath id="terminal-1489702336-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-4">
+<clipPath id="terminal-1489702336-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-5">
+<clipPath id="terminal-1489702336-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-6">
+<clipPath id="terminal-1489702336-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-7">
+<clipPath id="terminal-1489702336-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-8">
+<clipPath id="terminal-1489702336-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-9">
+<clipPath id="terminal-1489702336-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-10">
+<clipPath id="terminal-1489702336-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-11">
+<clipPath id="terminal-1489702336-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-12">
+<clipPath id="terminal-1489702336-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-13">
+<clipPath id="terminal-1489702336-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-14">
+<clipPath id="terminal-1489702336-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-15">
+<clipPath id="terminal-1489702336-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-16">
+<clipPath id="terminal-1489702336-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-17">
+<clipPath id="terminal-1489702336-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-18">
+<clipPath id="terminal-1489702336-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-19">
+<clipPath id="terminal-1489702336-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-20">
+<clipPath id="terminal-1489702336-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-21">
+<clipPath id="terminal-1489702336-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-22">
+<clipPath id="terminal-1489702336-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-23">
+<clipPath id="terminal-1489702336-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-24">
+<clipPath id="terminal-1489702336-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-25">
+<clipPath id="terminal-1489702336-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-26">
+<clipPath id="terminal-1489702336-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-27">
+<clipPath id="terminal-1489702336-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-28">
+<clipPath id="terminal-1489702336-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-29">
+<clipPath id="terminal-1489702336-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-30">
+<clipPath id="terminal-1489702336-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-31">
+<clipPath id="terminal-1489702336-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-32">
+<clipPath id="terminal-1489702336-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-33">
+<clipPath id="terminal-1489702336-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-34">
+<clipPath id="terminal-1489702336-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-35">
+<clipPath id="terminal-1489702336-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-36">
+<clipPath id="terminal-1489702336-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-37">
+<clipPath id="terminal-1489702336-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-38">
+<clipPath id="terminal-1489702336-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-39">
+<clipPath id="terminal-1489702336-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-40">
+<clipPath id="terminal-1489702336-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-41">
+<clipPath id="terminal-1489702336-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-42">
+<clipPath id="terminal-1489702336-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-43">
+<clipPath id="terminal-1489702336-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-44">
+<clipPath id="terminal-1489702336-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-45">
+<clipPath id="terminal-1489702336-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-46">
+<clipPath id="terminal-1489702336-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-47">
+<clipPath id="terminal-1489702336-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-48">
+<clipPath id="terminal-1489702336-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-49">
+<clipPath id="terminal-1489702336-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-50">
+<clipPath id="terminal-1489702336-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-51">
+<clipPath id="terminal-1489702336-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-52">
+<clipPath id="terminal-1489702336-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-53">
+<clipPath id="terminal-1489702336-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-54">
+<clipPath id="terminal-1489702336-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-55">
+<clipPath id="terminal-1489702336-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1635638368-line-56">
+<clipPath id="terminal-1489702336-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1489702336-line-57">
+    <rect x="0" y="1392.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1489702336-line-58">
+    <rect x="0" y="1416.7" 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="1463.2" rx="8"/><text class="terminal-1635638368-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1512" rx="8"/><text class="terminal-1489702336-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-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-1635638368-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1489702336-clip-terminal)">
     
-    <g class="terminal-1635638368-matrix">
-    <text class="terminal-1635638368-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1635638368-line-0)">
-</text><text class="terminal-1635638368-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1635638368-line-1)">Usage:&#160;</text><text class="terminal-1635638368-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-1635638368-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-1635638368-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-1)">
-</text><text class="terminal-1635638368-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-2)">
-</text><text class="terminal-1635638368-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-1635638368-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-1635638368-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-3)">
-</text><text class="terminal-1635638368-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-4)">
-</text><text class="terminal-1635638368-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1635638368-line-5)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1635638368-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-163563 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-6)">│</text><text class="terminal-1635638368-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-6)">-</text><text class="terminal-1635638368-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1635638368-line-6)">-python</text><text class="terminal-1635638368-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-163 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-7)">│</text><text class="terminal-1635638368-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1635638368-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-1635638368-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-8)">│</text><text class="terminal-1635638368-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1635638368-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-1635638368-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-9)">│</text><text class="terminal-1635638368-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-9)">-</text><text class="terminal-1635638368-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1635638368-line-9)">-upgrade</text><text class="terminal-1635638368-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
-</text><text class="terminal-1635638368-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1635638368-line-10)">│</text><text class="terminal-1635638368-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1635638368-line-10)">-</text><text class="terminal-1635638368-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-1635638368-line-10)">-debian</text><text class="terminal-1635638368-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-16356383 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-11)">│</text><text class="terminal-1635638368-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-11)">-</text><text class="terminal-1635638368-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1635638368-line-11)">-image</text><text class="terminal-1635638368-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-1635638368-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-12)">│</text><text class="terminal-1635638368-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-12)">-</text><text class="terminal-1635638368-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-1635638368-line-12)">-tag</text><text class="terminal-1635638368-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-163 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-13)">│</text><text class="terminal-1635638368-r2" x="475.8" y="337.2" textLength="414.8" clip-path="url(#terminal-1635638368-line-13)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1635638368-r5" x="890.6" y="337.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-13)">-</text><text class="terminal-1635638368- [...]
-</text><text class="terminal-1635638368-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-14)">│</text><text class="terminal-1635638368-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-14)">-</text><text class="terminal-1635638368-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-1635638368-line-14)">-docker</text><text class="terminal-1635638368-r5" x="122" y="361.6" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-1635638368-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1635638368-line-15)">│</text><text class="terminal-1635638368-r4" x="475.8" y="386" textLength="549" clip-path="url(#terminal-1635638368-line-15)">[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-1635638368-r4" x="1451.8" y="386" t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-16)">│</text><text class="terminal-1635638368-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-16)">-</text><text class="terminal-1635638368-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-1635638368-line-16)">-force</text><text class="terminal-1635638368-r5" x="109.8" y="410.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1635638368-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1635638368-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-17)">
-</text><text class="terminal-1635638368-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-1635638368-line-18)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-1635638368-line-18)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1635638368-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-19)">│</text><text class="terminal-1635638368-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-19)">-</text><text class="terminal-1635638368-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1635638368-line-19)">-build</text><text class="terminal-1635638368-r5" x="109.8" y="483.6" textLength="195.2" clip-path="url(#termina [...]
-</text><text class="terminal-1635638368-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1635638368-line-20)">│</text><text class="terminal-1635638368-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-1635638368-line-20)">-</text><text class="terminal-1635638368-r5" x="36.6" y="508" textLength="85.4" clip-path="url(#terminal-1635638368-line-20)">-python</text><text class="terminal-1635638368-r5" x="122" y="508" textLength="109.8" clip-path="url(#terminal-1635638 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-21)">│</text><text class="terminal-1635638368-r4" x="353.8" y="532.4" textLength="951.6" clip-path="url(#terminal-1635638368-line-21)">[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-1635638368-r4" x="0" y="556.8" textLength="1464" clip-path="url(#terminal-1635638368-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-22)">
-</text><text class="terminal-1635638368-r4" x="0" y="581.2" textLength="24.4" clip-path="url(#terminal-1635638368-line-23)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="581.2" textLength="1415.2" clip-path="url(#terminal-1635638368-line-23)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="581.2" textLength="24.4" clip-pat [...]
-</text><text class="terminal-1635638368-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-24)">│</text><text class="terminal-1635638368-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-24)">-</text><text class="terminal-1635638368-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-1635638368-line-24)">-install</text><text class="terminal-1635638368-r5" x="134.2" y="605.6" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-1635638368-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1635638368-line-25)">│</text><text class="terminal-1635638368-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1635638368-line-25)">-</text><text class="terminal-1635638368-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-1635638368-line-25)">-airflow</text><text class="terminal-1635638368-r5" x="134.2" y="630" textLength="207.4" clip-path="url(#terminal-1635 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-26)">│</text><text class="terminal-1635638368-r7" x="463.6" y="654.4" textLength="866.2" clip-path="url(#terminal-1635638368-line-26)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-1635638368-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-26)">│</text><text clas [...]
-</text><text class="terminal-1635638368-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-27)">│</text><text class="terminal-1635638368-r4" x="463.6" y="678.8" textLength="866.2" clip-path="url(#terminal-1635638368-line-27)">[default:&#160;constraints-source-providers]&#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-1635638368-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-28)">│</text><text class="terminal-1635638368-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-28)">-</text><text class="terminal-1635638368-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-1635638368-line-28)">-airflow</text><text class="terminal-1635638368-r5" x="134.2" y="703.2" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-1635638368-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-29)">│</text><text class="terminal-1635638368-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-29)">-</text><text class="terminal-1635638368-r5" x="36.6" y="727.6" textLength="134.2" clip-path="url(#terminal-1635638368-line-29)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="727.6" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1635638368-line-30)">│</text><text class="terminal-1635638368-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1635638368-line-30)">-</text><text class="terminal-1635638368-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-1635638368-line-30)">-runtime</text><text class="terminal-1635638368-r5" x="134.2" y="752" textLength="109.8" clip-path="url(#terminal-1635 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-31)">│</text><text class="terminal-1635638368-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-31)">-</text><text class="terminal-1635638368-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-1635638368-line-31)">-runtime</text><text class="terminal-1635638368-r5" x="134.2" y="776.4" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-1635638368-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-32)">│</text><text class="terminal-1635638368-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-32)">-</text><text class="terminal-1635638368-r5" x="36.6" y="800.8" textLength="134.2" clip-path="url(#terminal-1635638368-line-32)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="800.8" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-1635638368-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-33)">│</text><text class="terminal-1635638368-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-33)">-</text><text class="terminal-1635638368-r5" x="36.6" y="825.2" textLength="134.2" clip-path="url(#terminal-1635638368-line-33)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="825.2" textLength="207.4" clip-path="url(#t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-34)">│</text><text class="terminal-1635638368-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-34)">-</text><text class="terminal-1635638368-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-1635638368-line-34)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="849.6" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1635638368-line-35)">│</text><text class="terminal-1635638368-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1635638368-line-35)">-</text><text class="terminal-1635638368-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-1635638368-line-35)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="874" textLength="244" clip-path="url(#terminal-16 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-36)">│</text><text class="terminal-1635638368-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-36)">-</text><text class="terminal-1635638368-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-1635638368-line-36)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="898.4" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-37)">│</text><text class="terminal-1635638368-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-37)">-</text><text class="terminal-1635638368-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1635638368-line-37)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="922.8" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-38)">│</text><text class="terminal-1635638368-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-38)">-</text><text class="terminal-1635638368-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1635638368-line-38)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="947.2" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-39)">│</text><text class="terminal-1635638368-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-39)">-</text><text class="terminal-1635638368-r5" x="36.6" y="971.6" textLength="48.8" clip-path="url(#terminal-1635638368-line-39)">-dev</text><text class="terminal-1635638368-r5" x="85.4" y="971.6" textLength="109.8" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1635638368-line-40)">│</text><text class="terminal-1635638368-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1635638368-line-40)">-</text><text class="terminal-1635638368-r5" x="36.6" y="996" textLength="48.8" clip-path="url(#terminal-1635638368-line-40)">-dev</text><text class="terminal-1635638368-r5" x="85.4" y="996" textLength="146.4" clip-path="url(#terminal-163563836 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1020.4" textLength="1464" clip-path="url(#terminal-1635638368-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="1020.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-41)">
-</text><text class="terminal-1635638368-r4" x="0" y="1044.8" textLength="24.4" clip-path="url(#terminal-1635638368-line-42)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="1044.8" textLength="1415.2" clip-path="url(#terminal-1635638368-line-42)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="1044.8" textLeng [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-43)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-43)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1069.2" textLength="85.4" clip-path="url(#terminal-1635638368-line-43)">-github</text><text class="terminal-1635638368-r5" x="122" y="1069.2" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-44)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-44)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1093.6" textLength="85.4" clip-path="url(#terminal-1635638368-line-44)">-github</text><text class="terminal-1635638368-r5" x="122" y="1093.6" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1635638368-line-45)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1635638368-line-45)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1118" textLength="109.8" clip-path="url(#terminal-1635638368-line-45)">-platform</text><text class="terminal-1635638368-r2" x="341.6" y="1118" textLength="329.4" clip-path="url(#termina [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-46)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-46)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1142.4" textLength="61" clip-path="url(#terminal-1635638368-line-46)">-push</text><text class="terminal-1635638368-r5" x="97.6" y="1142.4" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-47)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-47)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1166.8" textLength="73.2" clip-path="url(#terminal-1635638368-line-47)">-empty</text><text class="terminal-1635638368-r5" x="109.8" y="1166.8" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-48)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-48)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-1635638368-line-48)">-prepare</text><text class="terminal-1635638368-r5" x="134.2" y="1191.2" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-49)">│</text><text class="terminal-1635638368-r2" x="341.6" y="1215.6" textLength="1098" clip-path="url(#terminal-1635638368-line-49)">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-1635638368-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-1635638368-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-1635638368-line-50)">
-</text><text class="terminal-1635638368-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-1635638368-line-51)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-1635638368-line-51)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="1264.4" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-52)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-52)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1288.8" textLength="85.4" clip-path="url(#terminal-1635638368-line-52)">-github</text><text class="terminal-1635638368-r5" x="122" y="1288.8" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-53)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-53)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-1635638368-line-53)">-verbose</text><text class="terminal-1635638368-r6" x="280.6" y="1313.2" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-54)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-54)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1337.6" textLength="48.8" clip-path="url(#terminal-1635638368-line-54)">-dry</text><text class="terminal-1635638368-r5" x="85.4" y="1337.6" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1635638368-line-55)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1635638368-line-55)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1362" textLength="85.4" clip-path="url(#terminal-1635638368-line-55)">-answer</text><text class="terminal-1635638368-r6" x="280.6" y="1362" textLength="24.4" clip-path="url(#terminal-16 [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-56)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-56)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1386.4" textLength="61" clip-path="url(#terminal-1635638368-line-56)">-help</text><text class="terminal-1635638368-r6" x="280.6" y="1386.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1635638368-r4" x="0" y="1410.8" textLength="1464" clip-path="url(#terminal-1635638368-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="1410.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-57)">
+    <g class="terminal-1489702336-matrix">
+    <text class="terminal-1489702336-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1489702336-line-0)">
+</text><text class="terminal-1489702336-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-1)">Usage:&#160;</text><text class="terminal-1489702336-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-1489702336-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-1489702336-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-1)">
+</text><text class="terminal-1489702336-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-2)">
+</text><text class="terminal-1489702336-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-1489702336-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-1489702336-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-3)">
+</text><text class="terminal-1489702336-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-4)">
+</text><text class="terminal-1489702336-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1489702336-line-5)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1489702336-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-148970 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-6)">│</text><text class="terminal-1489702336-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-6)">-</text><text class="terminal-1489702336-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-6)">-python</text><text class="terminal-1489702336-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-148 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-7)">│</text><text class="terminal-1489702336-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1489702336-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-1489702336-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-8)">│</text><text class="terminal-1489702336-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1489702336-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-1489702336-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-9)">│</text><text class="terminal-1489702336-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-9)">-</text><text class="terminal-1489702336-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1489702336-line-9)">-upgrade</text><text class="terminal-1489702336-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
+</text><text class="terminal-1489702336-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1489702336-line-10)">│</text><text class="terminal-1489702336-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1489702336-line-10)">-</text><text class="terminal-1489702336-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-1489702336-line-10)">-debian</text><text class="terminal-1489702336-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-14897023 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-11)">│</text><text class="terminal-1489702336-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-11)">-</text><text class="terminal-1489702336-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1489702336-line-11)">-image</text><text class="terminal-1489702336-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1489702336-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-12)">│</text><text class="terminal-1489702336-r5" x="475.8" y="312.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-12)">-</text><text class="terminal-1489702336-r5" x="488" y="312.8" textLength="73.2" clip-path="url(#terminal-1489702336-line-12)">-mount</text><text class="terminal-1489702336-r5" x="561.2" y="312.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1489702336-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-13)">│</text><text class="terminal-1489702336-r7" x="475.8" y="337.2" textLength="963.8" clip-path="url(#terminal-1489702336-line-13)">(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;&#16 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-14)">│</text><text class="terminal-1489702336-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-14)">-</text><text class="terminal-1489702336-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-1489702336-line-14)">-tag</text><text class="terminal-1489702336-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-148 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1489702336-line-15)">│</text><text class="terminal-1489702336-r2" x="475.8" y="386" textLength="414.8" clip-path="url(#terminal-1489702336-line-15)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1489702336-r5" x="890.6" y="386" textLength="12.2" clip-path="url(#terminal-1489702336-line-15)">-</text><text class="terminal-1489702336-r5" x= [...]
+</text><text class="terminal-1489702336-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-16)">│</text><text class="terminal-1489702336-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-16)">-</text><text class="terminal-1489702336-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-16)">-docker</text><text class="terminal-1489702336-r5" x="122" y="410.4" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1489702336-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-17)">│</text><text class="terminal-1489702336-r4" x="475.8" y="434.8" textLength="549" clip-path="url(#terminal-1489702336-line-17)">[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-1489702336-r4" x="1451.8" y="43 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-18)">│</text><text class="terminal-1489702336-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-18)">-</text><text class="terminal-1489702336-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-1489702336-line-18)">-force</text><text class="terminal-1489702336-r5" x="109.8" y="459.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1489702336-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-1489702336-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-19)">
+</text><text class="terminal-1489702336-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-1489702336-line-20)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-1489702336-line-20)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-1489702336-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-21)">│</text><text class="terminal-1489702336-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-21)">-</text><text class="terminal-1489702336-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-1489702336-line-21)">-build</text><text class="terminal-1489702336-r5" x="109.8" y="532.4" textLength="195.2" clip-path="url(#termina [...]
+</text><text class="terminal-1489702336-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-22)">│</text><text class="terminal-1489702336-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-22)">-</text><text class="terminal-1489702336-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-1489702336-line-22)">-python</text><text class="terminal-1489702336-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1489702336-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-23)">│</text><text class="terminal-1489702336-r4" x="353.8" y="581.2" textLength="951.6" clip-path="url(#terminal-1489702336-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-1489702336-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-1489702336-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-24)">
+</text><text class="terminal-1489702336-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-1489702336-line-25)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-1489702336-line-25)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="630" textLength="24.4" clip-path="url [...]
+</text><text class="terminal-1489702336-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-26)">│</text><text class="terminal-1489702336-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-26)">-</text><text class="terminal-1489702336-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1489702336-line-26)">-install</text><text class="terminal-1489702336-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-1489702336-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-27)">│</text><text class="terminal-1489702336-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-27)">-</text><text class="terminal-1489702336-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-1489702336-line-27)">-airflow</text><text class="terminal-1489702336-r5" x="134.2" y="678.8" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-1489702336-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-28)">│</text><text class="terminal-1489702336-r7" x="463.6" y="703.2" textLength="866.2" clip-path="url(#terminal-1489702336-line-28)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-1489702336-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-28)">│</text><text clas [...]
+</text><text class="terminal-1489702336-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-29)">│</text><text class="terminal-1489702336-r4" x="463.6" y="727.6" textLength="866.2" clip-path="url(#terminal-1489702336-line-29)">[default:&#160;constraints-source-providers]&#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-1489702336-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1489702336-line-30)">│</text><text class="terminal-1489702336-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1489702336-line-30)">-</text><text class="terminal-1489702336-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-1489702336-line-30)">-airflow</text><text class="terminal-1489702336-r5" x="134.2" y="752" textLength="268.4" clip-path="url(#terminal-1489 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-31)">│</text><text class="terminal-1489702336-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-31)">-</text><text class="terminal-1489702336-r5" x="36.6" y="776.4" textLength="134.2" clip-path="url(#terminal-1489702336-line-31)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="776.4" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-1489702336-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-32)">│</text><text class="terminal-1489702336-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-32)">-</text><text class="terminal-1489702336-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-1489702336-line-32)">-runtime</text><text class="terminal-1489702336-r5" x="134.2" y="800.8" textLength="109.8" clip-path="url(#termi [...]
+</text><text class="terminal-1489702336-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-33)">│</text><text class="terminal-1489702336-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-33)">-</text><text class="terminal-1489702336-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-1489702336-line-33)">-runtime</text><text class="terminal-1489702336-r5" x="134.2" y="825.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-1489702336-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-34)">│</text><text class="terminal-1489702336-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-34)">-</text><text class="terminal-1489702336-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-1489702336-line-34)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="849.6" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-1489702336-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1489702336-line-35)">│</text><text class="terminal-1489702336-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1489702336-line-35)">-</text><text class="terminal-1489702336-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-1489702336-line-35)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="874" textLength="207.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1489702336-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-36)">│</text><text class="terminal-1489702336-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-36)">-</text><text class="terminal-1489702336-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-1489702336-line-36)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="898.4" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-1489702336-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-37)">│</text><text class="terminal-1489702336-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-37)">-</text><text class="terminal-1489702336-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1489702336-line-37)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="922.8" textLength="244" clip-path="url(#ter [...]
+</text><text class="terminal-1489702336-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-38)">│</text><text class="terminal-1489702336-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-38)">-</text><text class="terminal-1489702336-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1489702336-line-38)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="947.2" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-1489702336-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-39)">│</text><text class="terminal-1489702336-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-39)">-</text><text class="terminal-1489702336-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-1489702336-line-39)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="971.6" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-1489702336-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1489702336-line-40)">│</text><text class="terminal-1489702336-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1489702336-line-40)">-</text><text class="terminal-1489702336-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1489702336-line-40)">-additional</text><text class="terminal-1489702336-r5" x="170.8" y="996" textLength="195.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-41)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-41)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1020.4" textLength="48.8" clip-path="url(#terminal-1489702336-line-41)">-dev</text><text class="terminal-1489702336-r5" x="85.4" y="1020.4" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-42)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-42)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1044.8" textLength="48.8" clip-path="url(#terminal-1489702336-line-42)">-dev</text><text class="terminal-1489702336-r5" x="85.4" y="1044.8" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1069.2" textLength="1464" clip-path="url(#terminal-1489702336-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="1069.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-43)">
+</text><text class="terminal-1489702336-r4" x="0" y="1093.6" textLength="24.4" clip-path="url(#terminal-1489702336-line-44)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="1093.6" textLength="1415.2" clip-path="url(#terminal-1489702336-line-44)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="1093.6" textLeng [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1489702336-line-45)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1489702336-line-45)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-1489702336-line-45)">-github</text><text class="terminal-1489702336-r5" x="122" y="1118" textLength="73.2" clip-path="url(#terminal-1489 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-46)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-46)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-1489702336-line-46)">-github</text><text class="terminal-1489702336-r5" x="122" y="1142.4" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-47)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-47)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1166.8" textLength="109.8" clip-path="url(#terminal-1489702336-line-47)">-platform</text><text class="terminal-1489702336-r2" x="341.6" y="1166.8" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-48)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-48)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1191.2" textLength="61" clip-path="url(#terminal-1489702336-line-48)">-push</text><text class="terminal-1489702336-r5" x="97.6" y="1191.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-49)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-49)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1215.6" textLength="73.2" clip-path="url(#terminal-1489702336-line-49)">-empty</text><text class="terminal-1489702336-r5" x="109.8" y="1215.6" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1489702336-line-50)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1489702336-line-50)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1240" textLength="97.6" clip-path="url(#terminal-1489702336-line-50)">-prepare</text><text class="terminal-1489702336-r5" x="134.2" y="1240" textLength="158.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-51)">│</text><text class="terminal-1489702336-r2" x="341.6" y="1264.4" textLength="1098" clip-path="url(#terminal-1489702336-line-51)">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-1489702336-r4" x="0" y="1288.8" textLength="1464" clip-path="url(#terminal-1489702336-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="1288.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-52)">
+</text><text class="terminal-1489702336-r4" x="0" y="1313.2" textLength="24.4" clip-path="url(#terminal-1489702336-line-53)">╭─</text><text class="terminal-1489702336-r4" x="24.4" y="1313.2" textLength="1415.2" clip-path="url(#terminal-1489702336-line-53)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1489702336-r4" x="1439.6" y="1313.2" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-54)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-54)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1337.6" textLength="85.4" clip-path="url(#terminal-1489702336-line-54)">-github</text><text class="terminal-1489702336-r5" x="122" y="1337.6" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1489702336-line-55)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1489702336-line-55)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-1489702336-line-55)">-verbose</text><text class="terminal-1489702336-r6" x="280.6" y="1362" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-56)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-1489702336-line-56)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1386.4" textLength="48.8" clip-path="url(#terminal-1489702336-line-56)">-dry</text><text class="terminal-1489702336-r5" x="85.4" y="1386.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-57)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1489702336-line-57)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1410.8" textLength="85.4" clip-path="url(#terminal-1489702336-line-57)">-answer</text><text class="terminal-1489702336-r6" x="280.6" y="1410.8" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-58)">│</text><text class="terminal-1489702336-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-1489702336-line-58)">-</text><text class="terminal-1489702336-r5" x="36.6" y="1435.2" textLength="61" clip-path="url(#terminal-1489702336-line-58)">-help</text><text class="terminal-1489702336-r6" x="280.6" y="1435.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1489702336-r4" x="0" y="1459.6" textLength="1464" clip-path="url(#terminal-1489702336-line-59)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1489702336-r2" x="1464" y="1459.6" textLength="12.2" clip-path="url(#terminal-1489702336-line-59)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
index 494e77574c..dcbd32a966 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 1880.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1928.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,341 +19,349 @@
         font-weight: 700;
     }
 
-    .terminal-3136577362-matrix {
+    .terminal-1314099363-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3136577362-title {
+    .terminal-1314099363-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3136577362-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3136577362-r2 { fill: #c5c8c6 }
-.terminal-3136577362-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3136577362-r4 { fill: #868887 }
-.terminal-3136577362-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3136577362-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3136577362-r7 { fill: #8d7b39 }
+    .terminal-1314099363-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1314099363-r2 { fill: #c5c8c6 }
+.terminal-1314099363-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1314099363-r4 { fill: #868887 }
+.terminal-1314099363-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1314099363-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1314099363-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-3136577362-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1829.0" />
+    <clipPath id="terminal-1314099363-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1877.8" />
     </clipPath>
-    <clipPath id="terminal-3136577362-line-0">
+    <clipPath id="terminal-1314099363-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-1">
+<clipPath id="terminal-1314099363-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-2">
+<clipPath id="terminal-1314099363-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-3">
+<clipPath id="terminal-1314099363-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-4">
+<clipPath id="terminal-1314099363-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-5">
+<clipPath id="terminal-1314099363-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-6">
+<clipPath id="terminal-1314099363-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-7">
+<clipPath id="terminal-1314099363-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-8">
+<clipPath id="terminal-1314099363-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-9">
+<clipPath id="terminal-1314099363-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-10">
+<clipPath id="terminal-1314099363-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-11">
+<clipPath id="terminal-1314099363-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-12">
+<clipPath id="terminal-1314099363-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-13">
+<clipPath id="terminal-1314099363-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-14">
+<clipPath id="terminal-1314099363-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-15">
+<clipPath id="terminal-1314099363-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-16">
+<clipPath id="terminal-1314099363-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-17">
+<clipPath id="terminal-1314099363-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-18">
+<clipPath id="terminal-1314099363-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-19">
+<clipPath id="terminal-1314099363-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-20">
+<clipPath id="terminal-1314099363-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-21">
+<clipPath id="terminal-1314099363-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-22">
+<clipPath id="terminal-1314099363-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-23">
+<clipPath id="terminal-1314099363-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-24">
+<clipPath id="terminal-1314099363-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-25">
+<clipPath id="terminal-1314099363-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-26">
+<clipPath id="terminal-1314099363-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-27">
+<clipPath id="terminal-1314099363-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-28">
+<clipPath id="terminal-1314099363-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-29">
+<clipPath id="terminal-1314099363-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-30">
+<clipPath id="terminal-1314099363-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-31">
+<clipPath id="terminal-1314099363-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-32">
+<clipPath id="terminal-1314099363-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-33">
+<clipPath id="terminal-1314099363-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-34">
+<clipPath id="terminal-1314099363-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-35">
+<clipPath id="terminal-1314099363-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-36">
+<clipPath id="terminal-1314099363-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-37">
+<clipPath id="terminal-1314099363-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-38">
+<clipPath id="terminal-1314099363-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-39">
+<clipPath id="terminal-1314099363-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-40">
+<clipPath id="terminal-1314099363-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-41">
+<clipPath id="terminal-1314099363-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-42">
+<clipPath id="terminal-1314099363-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-43">
+<clipPath id="terminal-1314099363-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-44">
+<clipPath id="terminal-1314099363-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-45">
+<clipPath id="terminal-1314099363-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-46">
+<clipPath id="terminal-1314099363-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-47">
+<clipPath id="terminal-1314099363-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-48">
+<clipPath id="terminal-1314099363-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-49">
+<clipPath id="terminal-1314099363-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-50">
+<clipPath id="terminal-1314099363-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-51">
+<clipPath id="terminal-1314099363-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-52">
+<clipPath id="terminal-1314099363-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-53">
+<clipPath id="terminal-1314099363-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-54">
+<clipPath id="terminal-1314099363-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-55">
+<clipPath id="terminal-1314099363-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-56">
+<clipPath id="terminal-1314099363-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-57">
+<clipPath id="terminal-1314099363-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-58">
+<clipPath id="terminal-1314099363-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-59">
+<clipPath id="terminal-1314099363-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-60">
+<clipPath id="terminal-1314099363-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-61">
+<clipPath id="terminal-1314099363-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-62">
+<clipPath id="terminal-1314099363-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-63">
+<clipPath id="terminal-1314099363-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-64">
+<clipPath id="terminal-1314099363-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-65">
+<clipPath id="terminal-1314099363-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-66">
+<clipPath id="terminal-1314099363-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-67">
+<clipPath id="terminal-1314099363-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-68">
+<clipPath id="terminal-1314099363-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-69">
+<clipPath id="terminal-1314099363-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-70">
+<clipPath id="terminal-1314099363-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-71">
+<clipPath id="terminal-1314099363-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-72">
+<clipPath id="terminal-1314099363-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3136577362-line-73">
+<clipPath id="terminal-1314099363-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1314099363-line-74">
+    <rect x="0" y="1807.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1314099363-line-75">
+    <rect x="0" y="1831.5" 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="1878" rx="8"/><text class="terminal-3136577362-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="1926.8" rx="8"/><text class="terminal-1314099363-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-3136577362-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1314099363-clip-terminal)">
     
-    <g class="terminal-3136577362-matrix">
-    <text class="terminal-3136577362-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3136577362-line-0)">
-</text><text class="terminal-3136577362-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-1)">Usage:&#160;</text><text class="terminal-3136577362-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-3136577362-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-3136577362-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-1)">
-</text><text class="terminal-3136577362-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-2)">
-</text><text class="terminal-3136577362-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-3136577362-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-3136577362-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-3)">
-</text><text class="terminal-3136577362-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-4)">
-</text><text class="terminal-3136577362-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3136577362-line-5)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3136577362-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-313657 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-6)">│</text><text class="terminal-3136577362-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-6)">-</text><text class="terminal-3136577362-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-6)">-python</text><text class="terminal-3136577362-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-313 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-7)">│</text><text class="terminal-3136577362-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-3136577362-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-3136577362-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-8)">│</text><text class="terminal-3136577362-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-3136577362-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-3136577362-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-9)">│</text><text class="terminal-3136577362-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-9)">-</text><text class="terminal-3136577362-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-9)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3136577362-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3136577362-line-10)">│</text><text class="terminal-3136577362-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3136577362-line-10)">-</text><text class="terminal-3136577362-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-3136577362-line-10)">-upgrade</text><text class="terminal-3136577362-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-3136 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-11)">│</text><text class="terminal-3136577362-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-11)">-</text><text class="terminal-3136577362-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-11)">-debian</text><text class="terminal-3136577362-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-3136577362-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-12)">│</text><text class="terminal-3136577362-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-12)">-</text><text class="terminal-3136577362-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-3136577362-line-12)">-image</text><text class="terminal-3136577362-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3136577362-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-13)">│</text><text class="terminal-3136577362-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-13)">-</text><text class="terminal-3136577362-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-3136577362-line-13)">-tag</text><text class="terminal-3136577362-r5" x="85.4" y="337.2" textLength="122" clip-path="url(#terminal-313 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-14)">│</text><text class="terminal-3136577362-r2" x="475.8" y="361.6" textLength="414.8" clip-path="url(#terminal-3136577362-line-14)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3136577362-r5" x="890.6" y="361.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-14)">-</text><text class="terminal-3136577362- [...]
-</text><text class="terminal-3136577362-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3136577362-line-15)">│</text><text class="terminal-3136577362-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3136577362-line-15)">-</text><text class="terminal-3136577362-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-3136577362-line-15)">-docker</text><text class="terminal-3136577362-r5" x="122" y="386" textLength="73.2" clip-path="url(#terminal-31365773 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-16)">│</text><text class="terminal-3136577362-r4" x="475.8" y="410.4" textLength="549" clip-path="url(#terminal-3136577362-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-3136577362-r4" x="1451.8" y="41 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3136577362-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-17)">
-</text><text class="terminal-3136577362-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-3136577362-line-18)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-3136577362-line-18)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-3136577362-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-19)">│</text><text class="terminal-3136577362-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-19)">-</text><text class="terminal-3136577362-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-3136577362-line-19)">-build</text><text class="terminal-3136577362-r5" x="109.8" y="483.6" textLength="195.2" clip-path="url(#termina [...]
-</text><text class="terminal-3136577362-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3136577362-line-20)">│</text><text class="terminal-3136577362-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3136577362-line-20)">-</text><text class="terminal-3136577362-r5" x="36.6" y="508" textLength="85.4" clip-path="url(#terminal-3136577362-line-20)">-python</text><text class="terminal-3136577362-r5" x="122" y="508" textLength="109.8" clip-path="url(#terminal-3136577 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-21)">│</text><text class="terminal-3136577362-r4" x="353.8" y="532.4" textLength="951.6" clip-path="url(#terminal-3136577362-line-21)">[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-3136577362-r4" x="0" y="556.8" textLength="1464" clip-path="url(#terminal-3136577362-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-22)">
-</text><text class="terminal-3136577362-r4" x="0" y="581.2" textLength="24.4" clip-path="url(#terminal-3136577362-line-23)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="581.2" textLength="1415.2" clip-path="url(#terminal-3136577362-line-23)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="581.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-3136577362-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-24)">│</text><text class="terminal-3136577362-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-24)">-</text><text class="terminal-3136577362-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-24)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="605.6" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-3136577362-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3136577362-line-25)">│</text><text class="terminal-3136577362-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3136577362-line-25)">-</text><text class="terminal-3136577362-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-3136577362-line-25)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="630" textLength="85.4" clip-path="url(#terminal-31365 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-26)">│</text><text class="terminal-3136577362-r7" x="463.6" y="654.4" textLength="976" clip-path="url(#terminal-3136577362-line-26)">(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-3136577362-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-27)">│</text><text class="terminal-3136577362-r4" x="463.6" y="678.8" textLength="976" clip-path="url(#terminal-3136577362-line-27)">[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-3136577362-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-28)">│</text><text class="terminal-3136577362-r4" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-3136577362-line-28)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-3136577362-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-28)">│</text><text class="terminal-3 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-29)">│</text><text class="terminal-3136577362-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-29)">-</text><text class="terminal-3136577362-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-29)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="727.6" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-3136577362-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3136577362-line-30)">│</text><text class="terminal-3136577362-r7" x="463.6" y="752" textLength="866.2" clip-path="url(#terminal-3136577362-line-30)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-3136577362-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-3136577362-line-30)">│</text><text class="ter [...]
-</text><text class="terminal-3136577362-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-31)">│</text><text class="terminal-3136577362-r4" x="463.6" y="776.4" textLength="866.2" clip-path="url(#terminal-3136577362-line-31)">[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-3136577362-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-32)">│</text><text class="terminal-3136577362-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-32)">-</text><text class="terminal-3136577362-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-32)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="800.8" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-3136577362-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-33)">│</text><text class="terminal-3136577362-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-33)">-</text><text class="terminal-3136577362-r5" x="36.6" y="825.2" textLength="134.2" clip-path="url(#terminal-3136577362-line-33)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="825.2" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-34)">│</text><text class="terminal-3136577362-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-34)">-</text><text class="terminal-3136577362-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-3136577362-line-34)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="849.6" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-3136577362-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3136577362-line-35)">│</text><text class="terminal-3136577362-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-3136577362-line-35)">-</text><text class="terminal-3136577362-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-3136577362-line-35)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="874" textLength="207.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3136577362-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-36)">│</text><text class="terminal-3136577362-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-36)">-</text><text class="terminal-3136577362-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-3136577362-line-36)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="898.4" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-37)">│</text><text class="terminal-3136577362-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-37)">-</text><text class="terminal-3136577362-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-3136577362-line-37)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="922.8" textLength="244" clip-path="url(#ter [...]
-</text><text class="terminal-3136577362-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-38)">│</text><text class="terminal-3136577362-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-38)">-</text><text class="terminal-3136577362-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-3136577362-line-38)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="947.2" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-39)">│</text><text class="terminal-3136577362-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-39)">-</text><text class="terminal-3136577362-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-3136577362-line-39)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="971.6" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3136577362-line-40)">│</text><text class="terminal-3136577362-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3136577362-line-40)">-</text><text class="terminal-3136577362-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-3136577362-line-40)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="996" textLength="195.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-41)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-41)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1020.4" textLength="97.6" clip-path="url(#terminal-3136577362-line-41)">-runtime</text><text class="terminal-3136577362-r5" x="134.2" y="1020.4" textLength="109.8" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-42)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-42)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-42)">-runtime</text><text class="terminal-3136577362-r5" x="134.2" y="1044.8" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-43)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-43)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1069.2" textLength="48.8" clip-path="url(#terminal-3136577362-line-43)">-dev</text><text class="terminal-3136577362-r5" x="85.4" y="1069.2" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-44)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-44)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-3136577362-line-44)">-dev</text><text class="terminal-3136577362-r5" x="85.4" y="1093.6" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-3136577362-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-3136577362-line-45)">
-</text><text class="terminal-3136577362-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-3136577362-line-46)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-3136577362-line-46)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="1142.4" textLength="24.4"  [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-47)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-47)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-47)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="1166.8" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-48)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-48)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-3136577362-line-48)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="1191.2" textLength="170.8" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-49)">│</text><text class="terminal-3136577362-r2" x="536.8" y="1215.6" textLength="902.8" clip-path="url(#terminal-3136577362-line-49)">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-3136577362-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-3136577362-line-50)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-3136577362-line-50)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1240" textLength="97.6" clip-path="url(#terminal-3136577362-line-50)">-cleanup</text><text class="terminal-3136577362-r5" x="134.2" y="1240" textLength="97.6" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-51)">│</text><text class="terminal-3136577362-r2" x="536.8" y="1264.4" textLength="170.8" clip-path="url(#terminal-3136577362-line-51)">together&#160;with&#160;</text><text class="terminal-3136577362-r5" x="707.6" y="1264.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-51)">-</text><text class="terminal-3136577362-r5" x="719.8" y="1264.4" textLength="97.6" [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-52)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-52)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-52)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1288.8" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-53)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-53)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-3136577362-line-53)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1313.2" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-54)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-54)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-54)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1337.6" textLength="353.8" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-3136577362-line-55)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-3136577362-line-55)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-3136577362-line-55)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1362" textLength="231.8" clip-path="url(#terminal- [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-56)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-56)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-3136577362-line-56)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="1386.4" textLength="219.6" clip-path="url(#t [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-57)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-57)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1410.8" textLength="158.6" clip-path="url(#terminal-3136577362-line-57)">-installation</text><text class="terminal-3136577362-r5" x="195.2" y="1410.8" textLength="85.4" clip-path="u [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1435.2" textLength="1464" clip-path="url(#terminal-3136577362-line-58)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1435.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-58)">
-</text><text class="terminal-3136577362-r4" x="0" y="1459.6" textLength="24.4" clip-path="url(#terminal-3136577362-line-59)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="1459.6" textLength="1415.2" clip-path="url(#terminal-3136577362-line-59)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="1459.6" textLeng [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-3136577362-line-60)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-3136577362-line-60)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1484" textLength="85.4" clip-path="url(#terminal-3136577362-line-60)">-github</text><text class="terminal-3136577362-r5" x="122" y="1484" textLength="73.2" clip-path="url(#terminal-3136 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-61)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-61)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1508.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-61)">-github</text><text class="terminal-3136577362-r5" x="122" y="1508.4" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-62)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-62)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1532.8" textLength="109.8" clip-path="url(#terminal-3136577362-line-62)">-platform</text><text class="terminal-3136577362-r2" x="341.6" y="1532.8" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-63)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-63)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1557.2" textLength="61" clip-path="url(#terminal-3136577362-line-63)">-push</text><text class="terminal-3136577362-r5" x="97.6" y="1557.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-64)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-64)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1581.6" textLength="73.2" clip-path="url(#terminal-3136577362-line-64)">-empty</text><text class="terminal-3136577362-r5" x="109.8" y="1581.6" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-3136577362-line-65)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-3136577362-line-65)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1606" textLength="97.6" clip-path="url(#terminal-3136577362-line-65)">-prepare</text><text class="terminal-3136577362-r5" x="134.2" y="1606" textLength="158.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-66)">│</text><text class="terminal-3136577362-r2" x="341.6" y="1630.4" textLength="1098" clip-path="url(#terminal-3136577362-line-66)">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-3136577362-r4" x="0" y="1654.8" textLength="1464" clip-path="url(#terminal-3136577362-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1654.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-67)">
-</text><text class="terminal-3136577362-r4" x="0" y="1679.2" textLength="24.4" clip-path="url(#terminal-3136577362-line-68)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="1679.2" textLength="1415.2" clip-path="url(#terminal-3136577362-line-68)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="1679.2" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-69)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-69)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1703.6" textLength="85.4" clip-path="url(#terminal-3136577362-line-69)">-github</text><text class="terminal-3136577362-r5" x="122" y="1703.6" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-3136577362-line-70)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1728" textLength="12.2" clip-path="url(#terminal-3136577362-line-70)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1728" textLength="85.4" clip-path="url(#terminal-3136577362-line-70)">-answer</text><text class="terminal-3136577362-r6" x="280.6" y="1728" textLength="24.4" clip-path="url(#terminal-31 [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-71)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-71)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1752.4" textLength="48.8" clip-path="url(#terminal-3136577362-line-71)">-dry</text><text class="terminal-3136577362-r5" x="85.4" y="1752.4" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-72)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-72)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1776.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-72)">-verbose</text><text class="terminal-3136577362-r6" x="280.6" y="1776.8" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-73)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-73)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1801.2" textLength="61" clip-path="url(#terminal-3136577362-line-73)">-help</text><text class="terminal-3136577362-r6" x="280.6" y="1801.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3136577362-r4" x="0" y="1825.6" textLength="1464" clip-path="url(#terminal-3136577362-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1825.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-74)">
+    <g class="terminal-1314099363-matrix">
+    <text class="terminal-1314099363-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1314099363-line-0)">
+</text><text class="terminal-1314099363-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-1)">Usage:&#160;</text><text class="terminal-1314099363-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-1314099363-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-1314099363-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-1)">
+</text><text class="terminal-1314099363-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-2)">
+</text><text class="terminal-1314099363-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-1314099363-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-1314099363-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-3)">
+</text><text class="terminal-1314099363-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-4)">
+</text><text class="terminal-1314099363-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1314099363-line-5)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1314099363-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-131409 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-6)">│</text><text class="terminal-1314099363-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-6)">-</text><text class="terminal-1314099363-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-6)">-python</text><text class="terminal-1314099363-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-131 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-7)">│</text><text class="terminal-1314099363-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-8)">│</text><text class="terminal-1314099363-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-9)">│</text><text class="terminal-1314099363-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-9)">-</text><text class="terminal-1314099363-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-9)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1314099363-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1314099363-line-10)">│</text><text class="terminal-1314099363-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1314099363-line-10)">-</text><text class="terminal-1314099363-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-1314099363-line-10)">-upgrade</text><text class="terminal-1314099363-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-1314 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-11)">│</text><text class="terminal-1314099363-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-11)">-</text><text class="terminal-1314099363-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-11)">-debian</text><text class="terminal-1314099363-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-12)">│</text><text class="terminal-1314099363-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-12)">-</text><text class="terminal-1314099363-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-1314099363-line-12)">-image</text><text class="terminal-1314099363-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1314099363-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-13)">│</text><text class="terminal-1314099363-r5" x="475.8" y="337.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-13)">-</text><text class="terminal-1314099363-r5" x="488" y="337.2" textLength="73.2" clip-path="url(#terminal-1314099363-line-13)">-mount</text><text class="terminal-1314099363-r5" x="561.2" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1314099363-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-14)">│</text><text class="terminal-1314099363-r7" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-1314099363-line-14)">(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;&#16 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1314099363-line-15)">│</text><text class="terminal-1314099363-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1314099363-line-15)">-</text><text class="terminal-1314099363-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1314099363-line-15)">-tag</text><text class="terminal-1314099363-r5" x="85.4" y="386" textLength="122" clip-path="url(#terminal-1314099363- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-16)">│</text><text class="terminal-1314099363-r2" x="475.8" y="410.4" textLength="414.8" clip-path="url(#terminal-1314099363-line-16)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1314099363-r5" x="890.6" y="410.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-16)">-</text><text class="terminal-1314099363- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-17)">│</text><text class="terminal-1314099363-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-17)">-</text><text class="terminal-1314099363-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-17)">-docker</text><text class="terminal-1314099363-r5" x="122" y="434.8" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-18)">│</text><text class="terminal-1314099363-r4" x="475.8" y="459.2" textLength="549" clip-path="url(#terminal-1314099363-line-18)">[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-1314099363-r4" x="1451.8" y="45 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-1314099363-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-19)">
+</text><text class="terminal-1314099363-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-1314099363-line-20)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-1314099363-line-20)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-1314099363-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-21)">│</text><text class="terminal-1314099363-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-21)">-</text><text class="terminal-1314099363-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-1314099363-line-21)">-build</text><text class="terminal-1314099363-r5" x="109.8" y="532.4" textLength="195.2" clip-path="url(#termina [...]
+</text><text class="terminal-1314099363-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-22)">│</text><text class="terminal-1314099363-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-22)">-</text><text class="terminal-1314099363-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-22)">-python</text><text class="terminal-1314099363-r5" x="122" y="556.8" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1314099363-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-23)">│</text><text class="terminal-1314099363-r4" x="353.8" y="581.2" textLength="951.6" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="605.6" textLength="1464" clip-path="url(#terminal-1314099363-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="605.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-24)">
+</text><text class="terminal-1314099363-r4" x="0" y="630" textLength="24.4" clip-path="url(#terminal-1314099363-line-25)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="630" textLength="1415.2" clip-path="url(#terminal-1314099363-line-25)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="630" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-1314099363-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-26)">│</text><text class="terminal-1314099363-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-26)">-</text><text class="terminal-1314099363-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1314099363-line-26)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="654.4" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-1314099363-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-27)">│</text><text class="terminal-1314099363-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-27)">-</text><text class="terminal-1314099363-r5" x="36.6" y="678.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-27)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="678.8" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1314099363-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-28)">│</text><text class="terminal-1314099363-r7" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-29)">│</text><text class="terminal-1314099363-r4" x="463.6" y="727.6" textLength="976" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1314099363-line-30)">│</text><text class="terminal-1314099363-r4" x="463.6" y="752" textLength="976" clip-path="url(#terminal-1314099363-line-30)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-1314099363-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-1314099363-line-30)">│</text><text class="terminal-1314099 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-31)">│</text><text class="terminal-1314099363-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-31)">-</text><text class="terminal-1314099363-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-1314099363-line-31)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="776.4" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-1314099363-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-32)">│</text><text class="terminal-1314099363-r7" x="463.6" y="800.8" textLength="866.2" clip-path="url(#terminal-1314099363-line-32)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-1314099363-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-32)">│</text><text clas [...]
+</text><text class="terminal-1314099363-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-33)">│</text><text class="terminal-1314099363-r4" x="463.6" y="825.2" textLength="866.2" clip-path="url(#terminal-1314099363-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-1314099363-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-34)">│</text><text class="terminal-1314099363-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-34)">-</text><text class="terminal-1314099363-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-34)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="849.6" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-1314099363-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1314099363-line-35)">│</text><text class="terminal-1314099363-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1314099363-line-35)">-</text><text class="terminal-1314099363-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-1314099363-line-35)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="874" textLength="146.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-36)">│</text><text class="terminal-1314099363-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-36)">-</text><text class="terminal-1314099363-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-1314099363-line-36)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="898.4" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-1314099363-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-37)">│</text><text class="terminal-1314099363-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-37)">-</text><text class="terminal-1314099363-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1314099363-line-37)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="922.8" textLength="207.4" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-38)">│</text><text class="terminal-1314099363-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-38)">-</text><text class="terminal-1314099363-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1314099363-line-38)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="947.2" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-39)">│</text><text class="terminal-1314099363-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-39)">-</text><text class="terminal-1314099363-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-1314099363-line-39)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="971.6" textLength="244" clip-path="url(#ter [...]
+</text><text class="terminal-1314099363-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1314099363-line-40)">│</text><text class="terminal-1314099363-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1314099363-line-40)">-</text><text class="terminal-1314099363-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1314099363-line-40)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="996" textLength="158.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-41)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-41)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-1314099363-line-41)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="1020.4" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-42)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-42)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-1314099363-line-42)">-additional</text><text class="terminal-1314099363-r5" x="170.8" y="1044.8" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-43)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-43)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-1314099363-line-43)">-runtime</text><text class="terminal-1314099363-r5" x="134.2" y="1069.2" textLength="109.8" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-44)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-44)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-44)">-runtime</text><text class="terminal-1314099363-r5" x="134.2" y="1093.6" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1314099363-line-45)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1314099363-line-45)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-1314099363-line-45)">-dev</text><text class="terminal-1314099363-r5" x="85.4" y="1118" textLength="109.8" clip-path="url(#terminal-13140 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-46)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-46)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-1314099363-line-46)">-dev</text><text class="terminal-1314099363-r5" x="85.4" y="1142.4" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-1314099363-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-47)">
+</text><text class="terminal-1314099363-r4" x="0" y="1191.2" textLength="24.4" clip-path="url(#terminal-1314099363-line-48)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="1191.2" textLength="1415.2" clip-path="url(#terminal-1314099363-line-48)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="1191.2" textLength="24.4"  [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-49)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-49)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1215.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-49)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="1215.6" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1314099363-line-50)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1314099363-line-50)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1240" textLength="97.6" clip-path="url(#terminal-1314099363-line-50)">-airflow</text><text class="terminal-1314099363-r5" x="134.2" y="1240" textLength="170.8" clip-path="url(#terminal- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-51)">│</text><text class="terminal-1314099363-r2" x="536.8" y="1264.4" textLength="902.8" clip-path="url(#terminal-1314099363-line-51)">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-1314099363-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-52)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-52)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-52)">-cleanup</text><text class="terminal-1314099363-r5" x="134.2" y="1288.8" textLength="97.6" clip-path="url(#te [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-53)">│</text><text class="terminal-1314099363-r2" x="536.8" y="1313.2" textLength="170.8" clip-path="url(#terminal-1314099363-line-53)">together&#160;with&#160;</text><text class="terminal-1314099363-r5" x="707.6" y="1313.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-53)">-</text><text class="terminal-1314099363-r5" x="719.8" y="1313.2" textLength="97.6" [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-54)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-54)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-54)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1337.6" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1314099363-line-55)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1314099363-line-55)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-1314099363-line-55)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1362" textLength="317.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-56)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-56)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-1314099363-line-56)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1386.4" textLength="353.8" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-57)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-57)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-57)">-disable</text><text class="terminal-1314099363-r5" x="134.2" y="1410.8" textLength="231.8" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-58)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-58)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-1314099363-line-58)">-install</text><text class="terminal-1314099363-r5" x="134.2" y="1435.2" textLength="219.6" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-59)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-59)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1459.6" textLength="158.6" clip-path="url(#terminal-1314099363-line-59)">-installation</text><text class="terminal-1314099363-r5" x="195.2" y="1459.6" textLength="85.4" clip-path="u [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1484" textLength="1464" clip-path="url(#terminal-1314099363-line-60)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1484" textLength="12.2" clip-path="url(#terminal-1314099363-line-60)">
+</text><text class="terminal-1314099363-r4" x="0" y="1508.4" textLength="24.4" clip-path="url(#terminal-1314099363-line-61)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="1508.4" textLength="1415.2" clip-path="url(#terminal-1314099363-line-61)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="1508.4" textLeng [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-62)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-62)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1532.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-62)">-github</text><text class="terminal-1314099363-r5" x="122" y="1532.8" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-63)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-63)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1557.2" textLength="85.4" clip-path="url(#terminal-1314099363-line-63)">-github</text><text class="terminal-1314099363-r5" x="122" y="1557.2" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-64)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-64)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1581.6" textLength="109.8" clip-path="url(#terminal-1314099363-line-64)">-platform</text><text class="terminal-1314099363-r2" x="341.6" y="1581.6" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-1314099363-line-65)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-1314099363-line-65)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1606" textLength="61" clip-path="url(#terminal-1314099363-line-65)">-push</text><text class="terminal-1314099363-r5" x="97.6" y="1606" textLength="73.2" clip-path="url(#terminal-1314099 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-66)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-66)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1630.4" textLength="73.2" clip-path="url(#terminal-1314099363-line-66)">-empty</text><text class="terminal-1314099363-r5" x="109.8" y="1630.4" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-67)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-67)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1654.8" textLength="97.6" clip-path="url(#terminal-1314099363-line-67)">-prepare</text><text class="terminal-1314099363-r5" x="134.2" y="1654.8" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-68)">│</text><text class="terminal-1314099363-r2" x="341.6" y="1679.2" textLength="1098" clip-path="url(#terminal-1314099363-line-68)">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-1314099363-r4" x="0" y="1703.6" textLength="1464" clip-path="url(#terminal-1314099363-line-69)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1703.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-69)">
+</text><text class="terminal-1314099363-r4" x="0" y="1728" textLength="24.4" clip-path="url(#terminal-1314099363-line-70)">╭─</text><text class="terminal-1314099363-r4" x="24.4" y="1728" textLength="1415.2" clip-path="url(#terminal-1314099363-line-70)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1314099363-r4" x="1439.6" y="1728" textLength="24.4" clip-path="url(#terminal-131409 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-71)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-71)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1752.4" textLength="85.4" clip-path="url(#terminal-1314099363-line-71)">-github</text><text class="terminal-1314099363-r5" x="122" y="1752.4" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-72)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#terminal-1314099363-line-72)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1776.8" textLength="85.4" clip-path="url(#terminal-1314099363-line-72)">-answer</text><text class="terminal-1314099363-r6" x="280.6" y="1776.8" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-73)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-1314099363-line-73)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1801.2" textLength="48.8" clip-path="url(#terminal-1314099363-line-73)">-dry</text><text class="terminal-1314099363-r5" x="85.4" y="1801.2" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-74)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-1314099363-line-74)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1825.6" textLength="97.6" clip-path="url(#terminal-1314099363-line-74)">-verbose</text><text class="terminal-1314099363-r6" x="280.6" y="1825.6" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-1314099363-line-75)">│</text><text class="terminal-1314099363-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-1314099363-line-75)">-</text><text class="terminal-1314099363-r5" x="36.6" y="1850" textLength="61" clip-path="url(#terminal-1314099363-line-75)">-help</text><text class="terminal-1314099363-r6" x="280.6" y="1850" textLength="24.4" clip-path="url(#terminal-131409 [...]
+</text><text class="terminal-1314099363-r4" x="0" y="1874.4" textLength="1464" clip-path="url(#terminal-1314099363-line-76)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1314099363-r2" x="1464" y="1874.4" textLength="12.2" clip-path="url(#terminal-1314099363-line-76)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index aedf286361..dacbf6c6e2 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1 @@
-4715fa0a006457cc3f4f6447e3fecc95
+bdc63bfd5f0967029b8b32a8068303cf
diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg
index a592f4642e..e9dd89b22e 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2099.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2124.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,377 +19,381 @@
         font-weight: 700;
     }
 
-    .terminal-2950431877-matrix {
+    .terminal-1207574554-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2950431877-title {
+    .terminal-1207574554-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2950431877-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2950431877-r2 { fill: #c5c8c6 }
-.terminal-2950431877-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2950431877-r4 { fill: #868887 }
-.terminal-2950431877-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2950431877-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2950431877-r7 { fill: #8d7b39 }
+    .terminal-1207574554-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1207574554-r2 { fill: #c5c8c6 }
+.terminal-1207574554-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1207574554-r4 { fill: #868887 }
+.terminal-1207574554-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1207574554-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1207574554-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2950431877-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2048.6" />
+    <clipPath id="terminal-1207574554-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="2073.0" />
     </clipPath>
-    <clipPath id="terminal-2950431877-line-0">
+    <clipPath id="terminal-1207574554-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-1">
+<clipPath id="terminal-1207574554-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-2">
+<clipPath id="terminal-1207574554-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-3">
+<clipPath id="terminal-1207574554-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-4">
+<clipPath id="terminal-1207574554-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-5">
+<clipPath id="terminal-1207574554-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-6">
+<clipPath id="terminal-1207574554-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-7">
+<clipPath id="terminal-1207574554-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-8">
+<clipPath id="terminal-1207574554-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-9">
+<clipPath id="terminal-1207574554-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-10">
+<clipPath id="terminal-1207574554-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-11">
+<clipPath id="terminal-1207574554-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-12">
+<clipPath id="terminal-1207574554-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-13">
+<clipPath id="terminal-1207574554-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-14">
+<clipPath id="terminal-1207574554-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-15">
+<clipPath id="terminal-1207574554-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-16">
+<clipPath id="terminal-1207574554-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-17">
+<clipPath id="terminal-1207574554-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-18">
+<clipPath id="terminal-1207574554-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-19">
+<clipPath id="terminal-1207574554-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-20">
+<clipPath id="terminal-1207574554-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-21">
+<clipPath id="terminal-1207574554-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-22">
+<clipPath id="terminal-1207574554-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-23">
+<clipPath id="terminal-1207574554-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-24">
+<clipPath id="terminal-1207574554-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-25">
+<clipPath id="terminal-1207574554-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-26">
+<clipPath id="terminal-1207574554-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-27">
+<clipPath id="terminal-1207574554-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-28">
+<clipPath id="terminal-1207574554-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-29">
+<clipPath id="terminal-1207574554-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-30">
+<clipPath id="terminal-1207574554-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-31">
+<clipPath id="terminal-1207574554-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-32">
+<clipPath id="terminal-1207574554-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-33">
+<clipPath id="terminal-1207574554-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-34">
+<clipPath id="terminal-1207574554-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-35">
+<clipPath id="terminal-1207574554-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-36">
+<clipPath id="terminal-1207574554-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-37">
+<clipPath id="terminal-1207574554-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-38">
+<clipPath id="terminal-1207574554-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-39">
+<clipPath id="terminal-1207574554-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-40">
+<clipPath id="terminal-1207574554-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-41">
+<clipPath id="terminal-1207574554-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-42">
+<clipPath id="terminal-1207574554-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-43">
+<clipPath id="terminal-1207574554-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-44">
+<clipPath id="terminal-1207574554-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-45">
+<clipPath id="terminal-1207574554-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-46">
+<clipPath id="terminal-1207574554-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-47">
+<clipPath id="terminal-1207574554-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-48">
+<clipPath id="terminal-1207574554-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-49">
+<clipPath id="terminal-1207574554-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-50">
+<clipPath id="terminal-1207574554-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-51">
+<clipPath id="terminal-1207574554-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-52">
+<clipPath id="terminal-1207574554-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-53">
+<clipPath id="terminal-1207574554-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-54">
+<clipPath id="terminal-1207574554-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-55">
+<clipPath id="terminal-1207574554-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-56">
+<clipPath id="terminal-1207574554-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-57">
+<clipPath id="terminal-1207574554-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-58">
+<clipPath id="terminal-1207574554-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-59">
+<clipPath id="terminal-1207574554-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-60">
+<clipPath id="terminal-1207574554-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-61">
+<clipPath id="terminal-1207574554-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-62">
+<clipPath id="terminal-1207574554-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-63">
+<clipPath id="terminal-1207574554-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-64">
+<clipPath id="terminal-1207574554-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-65">
+<clipPath id="terminal-1207574554-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-66">
+<clipPath id="terminal-1207574554-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-67">
+<clipPath id="terminal-1207574554-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-68">
+<clipPath id="terminal-1207574554-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-69">
+<clipPath id="terminal-1207574554-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-70">
+<clipPath id="terminal-1207574554-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-71">
+<clipPath id="terminal-1207574554-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-72">
+<clipPath id="terminal-1207574554-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-73">
+<clipPath id="terminal-1207574554-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-74">
+<clipPath id="terminal-1207574554-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-75">
+<clipPath id="terminal-1207574554-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-76">
+<clipPath id="terminal-1207574554-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-77">
+<clipPath id="terminal-1207574554-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-78">
+<clipPath id="terminal-1207574554-line-78">
     <rect x="0" y="1904.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-79">
+<clipPath id="terminal-1207574554-line-79">
     <rect x="0" y="1929.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-80">
+<clipPath id="terminal-1207574554-line-80">
     <rect x="0" y="1953.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-81">
+<clipPath id="terminal-1207574554-line-81">
     <rect x="0" y="1977.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2950431877-line-82">
+<clipPath id="terminal-1207574554-line-82">
     <rect x="0" y="2002.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1207574554-line-83">
+    <rect x="0" y="2026.7" 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="2097.6" rx="8"/><text class="terminal-2950431877-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2122" rx="8"/><text class="terminal-1207574554-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</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-2950431877-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1207574554-clip-terminal)">
     
-    <g class="terminal-2950431877-matrix">
-    <text class="terminal-2950431877-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2950431877-line-0)">
-</text><text class="terminal-2950431877-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2950431877-line-1)">Usage:&#160;</text><text class="terminal-2950431877-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-2950431877-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-2950431877-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-1)">
-</text><text class="terminal-2950431877-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-2)">
-</text><text class="terminal-2950431877-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-2950431877-line-3)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-2950431877-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
-</text><text class="terminal-2950431877-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-4)">│</text><text class="terminal-2950431877-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-4)">-</text><text class="terminal-2950431877-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-2950431877-line-4)">-python</text><text class="terminal-2950431877-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-295 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-2950431877-line-5)">│</text><text class="terminal-2950431877-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-2950431877-line-5)">[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;&#160 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-6)">│</text><text class="terminal-2950431877-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-6)">-</text><text class="terminal-2950431877-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2950431877-line-6)">-backend</text><text class="terminal-2950431877-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-29 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-7)">│</text><text class="terminal-2950431877-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-7)">-</text><text class="terminal-2950431877-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-2950431877-line-7)">-postgres</text><text class="terminal-2950431877-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
-</text><text class="terminal-2950431877-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-8)">│</text><text class="terminal-2950431877-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-8)">-</text><text class="terminal-2950431877-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-2950431877-line-8)">-mysql</text><text class="terminal-2950431877-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-29 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-9)">│</text><text class="terminal-2950431877-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-9)">-</text><text class="terminal-2950431877-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2950431877-line-9)">-mssql</text><text class="terminal-2950431877-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-29 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2950431877-line-10)">│</text><text class="terminal-2950431877-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2950431877-line-10)">-</text><text class="terminal-2950431877-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-2950431877-line-10)">-integration</text><text class="terminal-2950431877-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
-</text><text class="terminal-2950431877-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-11)">│</text><text class="terminal-2950431877-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-2950431877-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2950431877-r4" x="1 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-12)">│</text><text class="terminal-2950431877-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-2950431877-line-12)">all)&#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-2950431877-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-13)">│</text><text class="terminal-2950431877-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-13)">-</text><text class="terminal-2950431877-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-2950431877-line-13)">-forward</text><text class="terminal-2950431877-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-2950431877-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-14)">│</text><text class="terminal-2950431877-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-14)">-</text><text class="terminal-2950431877-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-2950431877-line-14)">-db</text><text class="terminal-2950431877-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-295 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-2950431877-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2950431877-line-15)">
-</text><text class="terminal-2950431877-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-2950431877-line-16)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-2950431877-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="410.4" textLength="24.4 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-17)">│</text><text class="terminal-2950431877-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-17)">-</text><text class="terminal-2950431877-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-2950431877-line-17)">-use</text><text class="terminal-2950431877-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-18)">│</text><text class="terminal-2950431877-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-2950431877-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-2950431877-r4" x="1451.8" y="459.2" textLength= [...]
-</text><text class="terminal-2950431877-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-19)">│</text><text class="terminal-2950431877-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-2950431877-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2950431877-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-19)">-</text><text class="terminal-29504 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2950431877-line-20)">│</text><text class="terminal-2950431877-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-2950431877-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2950431877-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-21)">│</text><text class="terminal-2950431877-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-21)">-</text><text class="terminal-2950431877-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-2950431877-line-21)">-airflow</text><text class="terminal-2950431877-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2950431877-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-22)">│</text><text class="terminal-2950431877-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-22)">-</text><text class="terminal-2950431877-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-2950431877-line-22)">-use</text><text class="terminal-2950431877-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-23)">│</text><text class="terminal-2950431877-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-2950431877-line-23)">entering&#160;breeze.&#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-2950431877-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-24)">│</text><text class="terminal-2950431877-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-24)">-</text><text class="terminal-2950431877-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-2950431877-line-24)">-package</text><text class="terminal-2950431877-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2950431877-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2950431877-line-25)">│</text><text class="terminal-2950431877-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2950431877-line-25)">-</text><text class="terminal-2950431877-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-2950431877-line-25)">-force</text><text class="terminal-2950431877-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-2950431 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-26)">│</text><text class="terminal-2950431877-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-26)">-</text><text class="terminal-2950431877-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-2950431877-line-26)">-mount</text><text class="terminal-2950431877-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2950431877-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-27)">│</text><text class="terminal-2950431877-r7" x="366" y="678.8" textLength="841.8" clip-path="url(#terminal-2950431877-line-27)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-2950431877-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-28)">│</text><text class="terminal-2950431877-r4" x="366" y="703.2" textLength="841.8" clip-path="url(#terminal-2950431877-line-28)">[default:&#160;selected]&#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-2950431877-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-29)">│</text><text class="terminal-2950431877-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-29)">-</text><text class="terminal-2950431877-r5" x="36.6" y="727.6" textLength="85.4" clip-path="url(#terminal-2950431877-line-29)">-debian</text><text class="terminal-2950431877-r5" x="122" y="727.6" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-2950431877-r4" x="0" y="752" textLength="1464" clip-path="url(#terminal-2950431877-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="752" textLength="12.2" clip-path="url(#terminal-2950431877-line-30)">
-</text><text class="terminal-2950431877-r4" x="0" y="776.4" textLength="24.4" clip-path="url(#terminal-2950431877-line-31)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="776.4" textLength="1415.2" clip-path="url(#terminal-2950431877-line-31)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="776.4" textLength="24.4" clip-path="url(#terminal-295 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-32)">│</text><text class="terminal-2950431877-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-32)">-</text><text class="terminal-2950431877-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-2950431877-line-32)">-verbose</text><text class="terminal-2950431877-r6" x="280.6" y="800.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-2950431877-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-33)">│</text><text class="terminal-2950431877-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-33)">-</text><text class="terminal-2950431877-r5" x="36.6" y="825.2" textLength="48.8" clip-path="url(#terminal-2950431877-line-33)">-dry</text><text class="terminal-2950431877-r5" x="85.4" y="825.2" textLength="48.8" clip-path="url(#terminal-29 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-34)">│</text><text class="terminal-2950431877-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-34)">-</text><text class="terminal-2950431877-r5" x="36.6" y="849.6" textLength="85.4" clip-path="url(#terminal-2950431877-line-34)">-github</text><text class="terminal-2950431877-r5" x="122" y="849.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2950431877-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2950431877-line-35)">│</text><text class="terminal-2950431877-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2950431877-line-35)">-</text><text class="terminal-2950431877-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-2950431877-line-35)">-answer</text><text class="terminal-2950431877-r6" x="280.6" y="874" textLength="24.4" clip-path="url(#terminal-295043 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-36)">│</text><text class="terminal-2950431877-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-36)">-</text><text class="terminal-2950431877-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-2950431877-line-36)">-help</text><text class="terminal-2950431877-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#terminal-29 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-2950431877-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-37)">
-</text><text class="terminal-2950431877-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-2950431877-line-38)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-2950431877-line-38)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2950431877-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-39)">│</text><text class="terminal-2950431877-r5" x="24.4" y="971.6" textLength="183" clip-path="url(#terminal-2950431877-line-39)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="971.6" textLength="1207.8" clip-path="url(#terminal-2950431877-line-39)">Enter&#160;breeze.py&#160;environment.&#160;th [...]
-</text><text class="terminal-2950431877-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2950431877-line-40)">│</text><text class="terminal-2950431877-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-2950431877-line-40)">start-airflow&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-2950431877-line-40)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;compon [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-41)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-2950431877-line-41)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-2950431877-line-41)">Joins&#160;the&#160;interactive&#160;s [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-42)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-2950431877-line-42)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-2950431877-line-42)">Stop&#160;running&#160;breeze&#160;env [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-43)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-2950431877-line-43)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-2950431877-line-43)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-44)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-2950431877-line-44)">static-checks&#160;&#160;</text><text class="terminal-2950431877-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-2950431877-line-44)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-2950431877-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-2950431877-line-45)">
-</text><text class="terminal-2950431877-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-2950431877-line-46)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-2950431877-line-46)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1142.4" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-47)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1166.8" textLength="256.2" clip-path="url(#terminal-2950431877-line-47)">docker-compose-tests&#160;</text><text class="terminal-2950431877-r2" x="305" y="1166.8" textLength="1134.6" clip-path="url(#terminal-2950431877-line-47)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-48)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-2950431877-line-48)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-2950431877-line-48)">Run&#16 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-2950431877-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-49)">
-</text><text class="terminal-2950431877-r4" x="0" y="1240" textLength="24.4" clip-path="url(#terminal-2950431877-line-50)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1240" textLength="1415.2" clip-path="url(#terminal-2950431877-line-50)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1240" textLength="24.4" clip-path="url(#t [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-51)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1264.4" textLength="305" clip-path="url(#terminal-2950431877-line-51)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1264.4" textLength="1085.8" clip-path="url(#terminal-2950431877-lin [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-52)">│</text><text class="terminal-2950431877-r2" x="353.8" y="1288.8" textLength="1085.8" clip-path="url(#terminal-2950431877-line-52)">images.&#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-2950431877-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-53)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1313.2" textLength="305" clip-path="url(#terminal-2950431877-line-53)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-2950431877-line-53)">Self&#160;upgrade& [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-54)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1337.6" textLength="305" clip-path="url(#terminal-2950431877-line-54)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-2950431877-line-54)">Enables&#160;autocompletion&#160;of&#160;breeze& [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-2950431877-line-55)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-2950431877-line-55)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-2950431877-line [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-56)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-2950431877-line-56)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-2950431877-line-56)">Check&#160;if&#160;available [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-57)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-2950431877-line-57)">free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-2950431877-line-57)">Free&#16 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-58)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-2950431877-line-58)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-2950431877-line-58)">Fix&#160;ownership&#160 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-59)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1459.6" textLength="305" clip-path="url(#terminal-2950431877-line-59)">regenerate-command-images</text><text class="terminal-2950431877-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-2950431877-line-59)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-2950431877-line-60)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1484" textLength="305" clip-path="url(#terminal-2950431877-line-60)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-2950431877-line-60)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-61)">│</text><text class="terminal-2950431877-r2" x="353.8" y="1508.4" textLength="1085.8" clip-path="url(#terminal-2950431877-line-61)">images&#160;should&#160;be&#160;regenerated).&#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;&#16 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-62)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1532.8" textLength="305" clip-path="url(#terminal-2950431877-line-62)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="353.8" y="1532.8" textLength="1085.8" clip-path="url(#terminal-2950431877-lin [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1557.2" textLength="1464" clip-path="url(#terminal-2950431877-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1557.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-63)">
-</text><text class="terminal-2950431877-r4" x="0" y="1581.6" textLength="24.4" clip-path="url(#terminal-2950431877-line-64)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1581.6" textLength="1415.2" clip-path="url(#terminal-2950431877-line-64)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1581.6" textLength="24.4" clip-path="url( [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-2950431877-line-65)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-2950431877-line-65)">build-image&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-2950431877-line-65)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;f [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-66)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1630.4" textLength="170.8" clip-path="url(#terminal-2950431877-line-66)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="219.6" y="1630.4" textLength="1220" clip-path="url(#terminal-2950431877-line-66)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160; [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-67)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1654.8" textLength="170.8" clip-path="url(#terminal-2950431877-line-67)">verify-image&#160;&#160;</text><text class="terminal-2950431877-r2" x="219.6" y="1654.8" textLength="1220" clip-path="url(#terminal-2950431877-line-67)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1679.2" textLength="1464" clip-path="url(#terminal-2950431877-line-68)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1679.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-68)">
-</text><text class="terminal-2950431877-r4" x="0" y="1703.6" textLength="24.4" clip-path="url(#terminal-2950431877-line-69)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1703.6" textLength="1415.2" clip-path="url(#terminal-2950431877-line-69)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1703.6" textLength="24.4" clip-path="url( [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-2950431877-line-70)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1728" textLength="207.4" clip-path="url(#terminal-2950431877-line-70)">build-prod-image&#160;</text><text class="terminal-2950431877-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-2950431877-line-70)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#16 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-71)">│</text><text class="terminal-2950431877-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-2950431877-line-71)">sequentially.&#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-2950431877-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-72)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1776.8" textLength="207.4" clip-path="url(#terminal-2950431877-line-72)">pull-prod-image&#160;&#160;</text><text class="terminal-2950431877-r2" x="256.2" y="1776.8" textLength="1183.4" clip-path="url(#terminal-2950431877-line-72)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#1 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-73)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1801.2" textLength="207.4" clip-path="url(#terminal-2950431877-line-73)">verify-prod-image</text><text class="terminal-2950431877-r2" x="256.2" y="1801.2" textLength="1183.4" clip-path="url(#terminal-2950431877-line-73)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1825.6" textLength="1464" clip-path="url(#terminal-2950431877-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="1825.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-74)">
-</text><text class="terminal-2950431877-r4" x="0" y="1850" textLength="24.4" clip-path="url(#terminal-2950431877-line-75)">╭─</text><text class="terminal-2950431877-r4" x="24.4" y="1850" textLength="1415.2" clip-path="url(#terminal-2950431877-line-75)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2950431877-r4" x="1439.6" y="1850" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-76)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1874.4" textLength="402.6" clip-path="url(#terminal-2950431877-line-76)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1874.4" textLength="988.2" clip-path="url(#terminal-2950431877-line-76)">Verifies&#160;if&#160;all&#16 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-77)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1898.8" textLength="402.6" clip-path="url(#terminal-2950431877-line-77)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1898.8" textLength="988.2" clip-path="url(#terminal-2950431877-line-77)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&# [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-78)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1923.2" textLength="402.6" clip-path="url(#terminal-2950431877-line-78)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1923.2" textLength="988.2" clip-path="url(#terminal-2950431877-line-78)">Prepare&#160;sdist/whl&#160;packag [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-2950431877-line-79)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1947.6" textLength="402.6" clip-path="url(#terminal-2950431877-line-79)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1947.6" textLength="988.2" clip-path="url(#terminal-2950431877-line-79)">Prepare&#160;sdist/whl&# [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-2950431877-line-80)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1972" textLength="402.6" clip-path="url(#terminal-2950431877-line-80)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1972" textLength="988.2" clip-path="url(#terminal-2950431877-line-80)">Release&#1 [...]
-</text><text class="terminal-2950431877-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-2950431877-line-81)">│</text><text class="terminal-2950431877-r5" x="24.4" y="1996.4" textLength="402.6" clip-path="url(#terminal-2950431877-line-81)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="1996.4" textLength="988.2" clip-path="url(#terminal-2950431877-line-81)">Generates [...]
-</text><text class="terminal-2950431877-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-2950431877-line-82)">│</text><text class="terminal-2950431877-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-2950431877-line-82)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2950431877-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-2950431877-line-82)">Finds&#160;which&#160;de [...]
-</text><text class="terminal-2950431877-r4" x="0" y="2045.2" textLength="1464" clip-path="url(#terminal-2950431877-line-83)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2950431877-r2" x="1464" y="2045.2" textLength="12.2" clip-path="url(#terminal-2950431877-line-83)">
+    <g class="terminal-1207574554-matrix">
+    <text class="terminal-1207574554-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1207574554-line-0)">
+</text><text class="terminal-1207574554-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1207574554-line-1)">Usage:&#160;</text><text class="terminal-1207574554-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-1207574554-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-1207574554-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-1)">
+</text><text class="terminal-1207574554-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-2)">
+</text><text class="terminal-1207574554-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-1207574554-line-3)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-1207574554-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
+</text><text class="terminal-1207574554-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-4)">│</text><text class="terminal-1207574554-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-4)">-</text><text class="terminal-1207574554-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-1207574554-line-4)">-python</text><text class="terminal-1207574554-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-120 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-1207574554-line-5)">│</text><text class="terminal-1207574554-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-1207574554-line-5)">[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;&#160 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-6)">│</text><text class="terminal-1207574554-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-6)">-</text><text class="terminal-1207574554-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-1207574554-line-6)">-backend</text><text class="terminal-1207574554-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-7)">│</text><text class="terminal-1207574554-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-7)">-</text><text class="terminal-1207574554-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-1207574554-line-7)">-postgres</text><text class="terminal-1207574554-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-1207574554-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-8)">│</text><text class="terminal-1207574554-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-8)">-</text><text class="terminal-1207574554-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-1207574554-line-8)">-mysql</text><text class="terminal-1207574554-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-9)">│</text><text class="terminal-1207574554-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-9)">-</text><text class="terminal-1207574554-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-1207574554-line-9)">-mssql</text><text class="terminal-1207574554-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1207574554-line-10)">│</text><text class="terminal-1207574554-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1207574554-line-10)">-</text><text class="terminal-1207574554-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-1207574554-line-10)">-integration</text><text class="terminal-1207574554-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
+</text><text class="terminal-1207574554-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-11)">│</text><text class="terminal-1207574554-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-1207574554-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-1207574554-r4" x="1 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-12)">│</text><text class="terminal-1207574554-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-1207574554-line-12)">all)&#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-1207574554-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-13)">│</text><text class="terminal-1207574554-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-13)">-</text><text class="terminal-1207574554-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-1207574554-line-13)">-forward</text><text class="terminal-1207574554-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-1207574554-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-14)">│</text><text class="terminal-1207574554-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-14)">-</text><text class="terminal-1207574554-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-1207574554-line-14)">-db</text><text class="terminal-1207574554-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-120 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-1207574554-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-1207574554-line-15)">
+</text><text class="terminal-1207574554-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-1207574554-line-16)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-1207574554-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="410.4" textLength="24.4 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-17)">│</text><text class="terminal-1207574554-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-17)">-</text><text class="terminal-1207574554-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-1207574554-line-17)">-use</text><text class="terminal-1207574554-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-18)">│</text><text class="terminal-1207574554-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-1207574554-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-1207574554-r4" x="1451.8" y="459.2" textLength= [...]
+</text><text class="terminal-1207574554-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-19)">│</text><text class="terminal-1207574554-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-1207574554-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1207574554-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-19)">-</text><text class="terminal-12075 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1207574554-line-20)">│</text><text class="terminal-1207574554-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-1207574554-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1207574554-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-21)">│</text><text class="terminal-1207574554-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-21)">-</text><text class="terminal-1207574554-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-1207574554-line-21)">-airflow</text><text class="terminal-1207574554-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1207574554-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-22)">│</text><text class="terminal-1207574554-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-22)">-</text><text class="terminal-1207574554-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-1207574554-line-22)">-use</text><text class="terminal-1207574554-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-23)">│</text><text class="terminal-1207574554-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-1207574554-line-23)">entering&#160;breeze.&#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-1207574554-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-24)">│</text><text class="terminal-1207574554-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-24)">-</text><text class="terminal-1207574554-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-1207574554-line-24)">-package</text><text class="terminal-1207574554-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1207574554-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1207574554-line-25)">│</text><text class="terminal-1207574554-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1207574554-line-25)">-</text><text class="terminal-1207574554-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-1207574554-line-25)">-force</text><text class="terminal-1207574554-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-1207574 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-26)">│</text><text class="terminal-1207574554-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-26)">-</text><text class="terminal-1207574554-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-1207574554-line-26)">-mount</text><text class="terminal-1207574554-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1207574554-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-27)">│</text><text class="terminal-1207574554-r2" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-1207574554-line-27)">selected).&#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-1207574554-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-28)">│</text><text class="terminal-1207574554-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-1207574554-line-28)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-1207574554-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-29)">│</text><text class="terminal-1207574554-r4" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-1207574554-line-29)">[default:&#160;selected]&#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-1207574554-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1207574554-line-30)">│</text><text class="terminal-1207574554-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1207574554-line-30)">-</text><text class="terminal-1207574554-r5" x="36.6" y="752" textLength="85.4" clip-path="url(#terminal-1207574554-line-30)">-debian</text><text class="terminal-1207574554-r5" x="122" y="752" textLength="97.6" clip-path="url(#terminal-12075745 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="776.4" textLength="1464" clip-path="url(#terminal-1207574554-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-31)">
+</text><text class="terminal-1207574554-r4" x="0" y="800.8" textLength="24.4" clip-path="url(#terminal-1207574554-line-32)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="800.8" textLength="1415.2" clip-path="url(#terminal-1207574554-line-32)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="800.8" textLength="24.4" clip-path="url(#terminal-120 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-33)">│</text><text class="terminal-1207574554-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-33)">-</text><text class="terminal-1207574554-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-1207574554-line-33)">-verbose</text><text class="terminal-1207574554-r6" x="280.6" y="825.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1207574554-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-34)">│</text><text class="terminal-1207574554-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-34)">-</text><text class="terminal-1207574554-r5" x="36.6" y="849.6" textLength="48.8" clip-path="url(#terminal-1207574554-line-34)">-dry</text><text class="terminal-1207574554-r5" x="85.4" y="849.6" textLength="48.8" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1207574554-line-35)">│</text><text class="terminal-1207574554-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1207574554-line-35)">-</text><text class="terminal-1207574554-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-1207574554-line-35)">-github</text><text class="terminal-1207574554-r5" x="122" y="874" textLength="134.2" clip-path="url(#terminal-1207574 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-36)">│</text><text class="terminal-1207574554-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-36)">-</text><text class="terminal-1207574554-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-1207574554-line-36)">-answer</text><text class="terminal-1207574554-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1207574554-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-37)">│</text><text class="terminal-1207574554-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-37)">-</text><text class="terminal-1207574554-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-1207574554-line-37)">-help</text><text class="terminal-1207574554-r6" x="280.6" y="922.8" textLength="24.4" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-1207574554-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-38)">
+</text><text class="terminal-1207574554-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-1207574554-line-39)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-1207574554-line-39)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1207574554-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1207574554-line-40)">│</text><text class="terminal-1207574554-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-1207574554-line-40)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-1207574554-line-40)">Enter&#160;breeze.py&#160;environment.&#160;this&#16 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-41)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-1207574554-line-41)">start-airflow&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-1207574554-line-41)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#1 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-42)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-1207574554-line-42)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-1207574554-line-42)">Joins&#160;the&#160;interactive&#160;s [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-43)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-1207574554-line-43)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-1207574554-line-43)">Stop&#160;running&#160;breeze&#160;env [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-44)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-1207574554-line-44)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-1207574554-line-44)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1207574554-line-45)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1118" textLength="183" clip-path="url(#terminal-1207574554-line-45)">static-checks&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1118" textLength="1207.8" clip-path="url(#terminal-1207574554-line-45)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-1207574554-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-46)">
+</text><text class="terminal-1207574554-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-1207574554-line-47)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-1207574554-line-47)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1166.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-48)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-1207574554-line-48)">docker-compose-tests&#160;</text><text class="terminal-1207574554-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-1207574554-line-48)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-49)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1215.6" textLength="256.2" clip-path="url(#terminal-1207574554-line-49)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="305" y="1215.6" textLength="1134.6" clip-path="url(#terminal-1207574554-line-49)">Run&#16 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-1207574554-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-1207574554-line-50)">
+</text><text class="terminal-1207574554-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-1207574554-line-51)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-1207574554-line-51)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1264.4" textLength="24.4" clip-path=" [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-52)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1288.8" textLength="305" clip-path="url(#terminal-1207574554-line-52)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1288.8" textLength="1085.8" clip-path="url(#terminal-1207574554-lin [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-53)">│</text><text class="terminal-1207574554-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-1207574554-line-53)">images.&#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-1207574554-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-54)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1337.6" textLength="305" clip-path="url(#terminal-1207574554-line-54)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-1207574554-line-54)">Self&#160;upgrade& [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1207574554-line-55)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-1207574554-line-55)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-1207574554-line-55)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;c [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-56)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-1207574554-line-56)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-120757455 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-57)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-1207574554-line-57)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-1207574554-line-57)">Check&#160;if&#160;available [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-58)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-1207574554-line-58)">free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-1207574554-line-58)">Free&#16 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-59)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1459.6" textLength="305" clip-path="url(#terminal-1207574554-line-59)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-1207574554-line-59)">Fix&#160;ownership&#160 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1207574554-line-60)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1484" textLength="305" clip-path="url(#terminal-1207574554-line-60)">regenerate-command-images</text><text class="terminal-1207574554-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-1207574554-line-60)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-61)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1508.4" textLength="305" clip-path="url(#terminal-1207574554-line-61)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1508.4" textLength="1085.8" clip-path="url(#terminal-1207574554-line-61)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;co [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-62)">│</text><text class="terminal-1207574554-r2" x="353.8" y="1532.8" textLength="1085.8" clip-path="url(#terminal-1207574554-line-62)">images&#160;should&#160;be&#160;regenerated).&#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;&#16 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-63)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1557.2" textLength="305" clip-path="url(#terminal-1207574554-line-63)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1557.2" textLength="1085.8" clip-path="url(#terminal-1207574554-lin [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1581.6" textLength="1464" clip-path="url(#terminal-1207574554-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1581.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-64)">
+</text><text class="terminal-1207574554-r4" x="0" y="1606" textLength="24.4" clip-path="url(#terminal-1207574554-line-65)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1606" textLength="1415.2" clip-path="url(#terminal-1207574554-line-65)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1606" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-66)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1630.4" textLength="170.8" clip-path="url(#terminal-1207574554-line-66)">build-image&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="219.6" y="1630.4" textLength="1220" clip-path="url(#terminal-1207574554-line-66)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images& [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-67)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1654.8" textLength="170.8" clip-path="url(#terminal-1207574554-line-67)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="219.6" y="1654.8" textLength="1220" clip-path="url(#terminal-1207574554-line-67)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160; [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-68)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1679.2" textLength="170.8" clip-path="url(#terminal-1207574554-line-68)">verify-image&#160;&#160;</text><text class="terminal-1207574554-r2" x="219.6" y="1679.2" textLength="1220" clip-path="url(#terminal-1207574554-line-68)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1703.6" textLength="1464" clip-path="url(#terminal-1207574554-line-69)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1703.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-69)">
+</text><text class="terminal-1207574554-r4" x="0" y="1728" textLength="24.4" clip-path="url(#terminal-1207574554-line-70)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1728" textLength="1415.2" clip-path="url(#terminal-1207574554-line-70)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1728" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-71)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-1207574554-line-71)">build-prod-image&#160;</text><text class="terminal-1207574554-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-1207574554-line-71)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;imag [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-72)">│</text><text class="terminal-1207574554-r2" x="256.2" y="1776.8" textLength="1183.4" clip-path="url(#terminal-1207574554-line-72)">sequentially.&#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-1207574554-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-73)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1801.2" textLength="207.4" clip-path="url(#terminal-1207574554-line-73)">pull-prod-image&#160;&#160;</text><text class="terminal-1207574554-r2" x="256.2" y="1801.2" textLength="1183.4" clip-path="url(#terminal-1207574554-line-73)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#1 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-74)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1825.6" textLength="207.4" clip-path="url(#terminal-1207574554-line-74)">verify-prod-image</text><text class="terminal-1207574554-r2" x="256.2" y="1825.6" textLength="1183.4" clip-path="url(#terminal-1207574554-line-74)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1850" textLength="1464" clip-path="url(#terminal-1207574554-line-75)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1850" textLength="12.2" clip-path="url(#terminal-1207574554-line-75)">
+</text><text class="terminal-1207574554-r4" x="0" y="1874.4" textLength="24.4" clip-path="url(#terminal-1207574554-line-76)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1874.4" textLength="1415.2" clip-path="url(#terminal-1207574554-line-76)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1874.4" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-77)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1898.8" textLength="402.6" clip-path="url(#terminal-1207574554-line-77)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1898.8" textLength="988.2" clip-path="url(#terminal-1207574554-line-77)">Verifies&#160;if&#160;all&#16 [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-78)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1923.2" textLength="402.6" clip-path="url(#terminal-1207574554-line-78)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1923.2" textLength="988.2" clip-path="url(#terminal-1207574554-line-78)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&# [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-79)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1947.6" textLength="402.6" clip-path="url(#terminal-1207574554-line-79)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1947.6" textLength="988.2" clip-path="url(#terminal-1207574554-line-79)">Prepare&#160;sdist/whl&#160;packag [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-1207574554-line-80)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1972" textLength="402.6" clip-path="url(#terminal-1207574554-line-80)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1972" textLength="988.2" clip-path="url(#terminal-1207574554-line-80)">Prepare&#160;sdist/whl&#160;pa [...]
+</text><text class="terminal-1207574554-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-81)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1996.4" textLength="402.6" clip-path="url(#terminal-1207574554-line-81)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1996.4" textLength="988.2" clip-path="url(#terminal-1207574554-line-81)">Rele [...]
+</text><text class="terminal-1207574554-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-82)">│</text><text class="terminal-1207574554-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-1207574554-line-82)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-1207574554-line-82)">Generates [...]
+</text><text class="terminal-1207574554-r4" x="0" y="2045.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-83)">│</text><text class="terminal-1207574554-r5" x="24.4" y="2045.2" textLength="402.6" clip-path="url(#terminal-1207574554-line-83)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="2045.2" textLength="988.2" clip-path="url(#terminal-1207574554-line-83)">Finds&#160;which&#160;de [...]
+</text><text class="terminal-1207574554-r4" x="0" y="2069.6" textLength="1464" clip-path="url(#terminal-1207574554-line-84)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="2069.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-84)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-docker-compose-tests.svg b/images/breeze/output-docker-compose-tests.svg
index 75f5c1a31b..c652741d47 100644
--- a/images/breeze/output-docker-compose-tests.svg
+++ b/images/breeze/output-docker-compose-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,109 +19,117 @@
         font-weight: 700;
     }
 
-    .terminal-1448538552-matrix {
+    .terminal-68428568-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1448538552-title {
+    .terminal-68428568-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1448538552-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1448538552-r2 { fill: #c5c8c6 }
-.terminal-1448538552-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1448538552-r4 { fill: #868887 }
-.terminal-1448538552-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1448538552-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1448538552-r7 { fill: #8d7b39 }
+    .terminal-68428568-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-68428568-r2 { fill: #c5c8c6 }
+.terminal-68428568-r3 { fill: #d0b344;font-weight: bold }
+.terminal-68428568-r4 { fill: #868887 }
+.terminal-68428568-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-68428568-r6 { fill: #98a84b;font-weight: bold }
+.terminal-68428568-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1448538552-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+    <clipPath id="terminal-68428568-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
     </clipPath>
-    <clipPath id="terminal-1448538552-line-0">
+    <clipPath id="terminal-68428568-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-1">
+<clipPath id="terminal-68428568-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-2">
+<clipPath id="terminal-68428568-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-3">
+<clipPath id="terminal-68428568-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-4">
+<clipPath id="terminal-68428568-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-5">
+<clipPath id="terminal-68428568-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-6">
+<clipPath id="terminal-68428568-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-7">
+<clipPath id="terminal-68428568-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-8">
+<clipPath id="terminal-68428568-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-9">
+<clipPath id="terminal-68428568-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-10">
+<clipPath id="terminal-68428568-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-11">
+<clipPath id="terminal-68428568-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-12">
+<clipPath id="terminal-68428568-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-13">
+<clipPath id="terminal-68428568-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-14">
+<clipPath id="terminal-68428568-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1448538552-line-15">
+<clipPath id="terminal-68428568-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-68428568-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-68428568-line-17">
+    <rect x="0" y="416.3" 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="462.8" rx="8"/><text class="terminal-1448538552-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="terminal-68428568-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</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-1448538552-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-68428568-clip-terminal)">
     
-    <g class="terminal-1448538552-matrix">
-    <text class="terminal-1448538552-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1448538552-line-0)">
-</text><text class="terminal-1448538552-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1448538552-line-1)">Usage:&#160;</text><text class="terminal-1448538552-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-1448538552-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1448538552-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-1)">
-</text><text class="terminal-1448538552-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-2)">
-</text><text class="terminal-1448538552-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-1448538552-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-1448538552-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-3)">
-</text><text class="terminal-1448538552-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-4)">
-</text><text class="terminal-1448538552-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1448538552-line-5)">╭─</text><text class="terminal-1448538552-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1448538552-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1448538552-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-6)">│</text><text class="terminal-1448538552-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-6)">-</text><text class="terminal-1448538552-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-1448538552-line-6)">-image</text><text class="terminal-1448538552-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-1448 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-7)">│</text><text class="terminal-1448538552-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-7)">-</text><text class="terminal-1448538552-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-1448538552-line-7)">-image</text><text class="terminal-1448538552-r5" x="109.8" y="190.8" textLength="48.8" clip-path="url(#terminal-14 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-8)">│</text><text class="terminal-1448538552-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-8)">-</text><text class="terminal-1448538552-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-1448538552-line-8)">-python</text><text class="terminal-1448538552-r6" x="195.2" y="215.2" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-9)">│</text><text class="terminal-1448538552-r4" x="244" y="239.6" textLength="732" clip-path="url(#terminal-1448538552-line-9)">[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;&#1 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-1448538552-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1448538552-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-1448538552-line-10)">
-</text><text class="terminal-1448538552-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-1448538552-line-11)">╭─</text><text class="terminal-1448538552-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-1448538552-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1448538552-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-144 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-12)">│</text><text class="terminal-1448538552-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-12)">-</text><text class="terminal-1448538552-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-1448538552-line-12)">-verbose</text><text class="terminal-1448538552-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1448538552-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-13)">│</text><text class="terminal-1448538552-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-13)">-</text><text class="terminal-1448538552-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-1448538552-line-13)">-dry</text><text class="terminal-1448538552-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-14 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-14)">│</text><text class="terminal-1448538552-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-14)">-</text><text class="terminal-1448538552-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-1448538552-line-14)">-github</text><text class="terminal-1448538552-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1448538552-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1448538552-line-15)">│</text><text class="terminal-1448538552-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1448538552-line-15)">-</text><text class="terminal-1448538552-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-1448538552-line-15)">-help</text><text class="terminal-1448538552-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-1448538552 [...]
-</text><text class="terminal-1448538552-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-1448538552-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1448538552-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-16)">
+    <g class="terminal-68428568-matrix">
+    <text class="terminal-68428568-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-68428568-line-0)">
+</text><text class="terminal-68428568-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-68428568-line-1)">Usage:&#160;</text><text class="terminal-68428568-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-68428568-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-68428568-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-68428568-line-1)">
+</text><text class="terminal-68428568-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-68428568-line-2)">
+</text><text class="terminal-68428568-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-68428568-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-68428568-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-68428568-line-3)">
+</text><text class="terminal-68428568-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-68428568-line-4)">
+</text><text class="terminal-68428568-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-68428568-line-5)">╭─</text><text class="terminal-68428568-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-68428568-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-68428568-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-68428568-li [...]
+</text><text class="terminal-68428568-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-68428568-line-6)">│</text><text class="terminal-68428568-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-68428568-line-6)">-</text><text class="terminal-68428568-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-68428568-line-6)">-image</text><text class="terminal-68428568-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-68428568-line-6)"> [...]
+</text><text class="terminal-68428568-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-68428568-line-7)">│</text><text class="terminal-68428568-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-68428568-line-7)">-</text><text class="terminal-68428568-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-68428568-line-7)">-image</text><text class="terminal-68428568-r5" x="109.8" y="190.8" textLength="48.8" clip-path="url(#terminal-68428568-line-7) [...]
+</text><text class="terminal-68428568-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-68428568-line-8)">│</text><text class="terminal-68428568-r2" x="244" y="215.2" textLength="1195.6" clip-path="url(#terminal-68428568-line-8)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-68428568-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-68428568-line-9)">│</text><text class="terminal-68428568-r7" x="244" y="239.6" textLength="1195.6" clip-path="url(#terminal-68428568-line-9)">(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;&#160;&#1 [...]
+</text><text class="terminal-68428568-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-68428568-line-10)">│</text><text class="terminal-68428568-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-68428568-line-10)">-</text><text class="terminal-68428568-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-68428568-line-10)">-python</text><text class="terminal-68428568-r6" x="195.2" y="264" textLength="24.4" clip-path="url(#terminal-68428568-line-10)">- [...]
+</text><text class="terminal-68428568-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-68428568-line-11)">│</text><text class="terminal-68428568-r4" x="244" y="288.4" textLength="732" clip-path="url(#terminal-68428568-line-11)">[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;&#160;&#1 [...]
+</text><text class="terminal-68428568-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-68428568-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-68428568-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-68428568-line-12)">
+</text><text class="terminal-68428568-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-68428568-line-13)">╭─</text><text class="terminal-68428568-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-68428568-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-68428568-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-68428568-line [...]
+</text><text class="terminal-68428568-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-68428568-line-14)">│</text><text class="terminal-68428568-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-68428568-line-14)">-</text><text class="terminal-68428568-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-68428568-line-14)">-verbose</text><text class="terminal-68428568-r6" x="280.6" y="361.6" textLength="24.4" clip-path="url(#terminal-68428568-li [...]
+</text><text class="terminal-68428568-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-68428568-line-15)">│</text><text class="terminal-68428568-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-68428568-line-15)">-</text><text class="terminal-68428568-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-68428568-line-15)">-dry</text><text class="terminal-68428568-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-68428568-line-15)">-run< [...]
+</text><text class="terminal-68428568-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-68428568-line-16)">│</text><text class="terminal-68428568-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-68428568-line-16)">-</text><text class="terminal-68428568-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-68428568-line-16)">-github</text><text class="terminal-68428568-r5" x="122" y="410.4" textLength="134.2" clip-path="url(#terminal-68428568-line [...]
+</text><text class="terminal-68428568-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-68428568-line-17)">│</text><text class="terminal-68428568-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-68428568-line-17)">-</text><text class="terminal-68428568-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-68428568-line-17)">-help</text><text class="terminal-68428568-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-68428568-line-17 [...]
+</text><text class="terminal-68428568-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-68428568-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-68428568-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-68428568-line-18)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-generate-constraints.svg b/images/breeze/output-generate-constraints.svg
index ca04956607..e0b54f182e 100644
--- a/images/breeze/output-generate-constraints.svg
+++ b/images/breeze/output-generate-constraints.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 757.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 806.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,157 +19,165 @@
         font-weight: 700;
     }
 
-    .terminal-2130901997-matrix {
+    .terminal-2861575501-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2130901997-title {
+    .terminal-2861575501-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2130901997-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2130901997-r2 { fill: #c5c8c6 }
-.terminal-2130901997-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2130901997-r4 { fill: #868887 }
-.terminal-2130901997-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2130901997-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2130901997-r7 { fill: #8d7b39 }
+    .terminal-2861575501-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2861575501-r2 { fill: #c5c8c6 }
+.terminal-2861575501-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2861575501-r4 { fill: #868887 }
+.terminal-2861575501-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2861575501-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2861575501-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2130901997-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="706.5999999999999" />
+    <clipPath id="terminal-2861575501-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="755.4" />
     </clipPath>
-    <clipPath id="terminal-2130901997-line-0">
+    <clipPath id="terminal-2861575501-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-1">
+<clipPath id="terminal-2861575501-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-2">
+<clipPath id="terminal-2861575501-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-3">
+<clipPath id="terminal-2861575501-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-4">
+<clipPath id="terminal-2861575501-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-5">
+<clipPath id="terminal-2861575501-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-6">
+<clipPath id="terminal-2861575501-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-7">
+<clipPath id="terminal-2861575501-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-8">
+<clipPath id="terminal-2861575501-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-9">
+<clipPath id="terminal-2861575501-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-10">
+<clipPath id="terminal-2861575501-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-11">
+<clipPath id="terminal-2861575501-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-12">
+<clipPath id="terminal-2861575501-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-13">
+<clipPath id="terminal-2861575501-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-14">
+<clipPath id="terminal-2861575501-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-15">
+<clipPath id="terminal-2861575501-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-16">
+<clipPath id="terminal-2861575501-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-17">
+<clipPath id="terminal-2861575501-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-18">
+<clipPath id="terminal-2861575501-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-19">
+<clipPath id="terminal-2861575501-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-20">
+<clipPath id="terminal-2861575501-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-21">
+<clipPath id="terminal-2861575501-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-22">
+<clipPath id="terminal-2861575501-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-23">
+<clipPath id="terminal-2861575501-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-24">
+<clipPath id="terminal-2861575501-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-25">
+<clipPath id="terminal-2861575501-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-26">
+<clipPath id="terminal-2861575501-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2130901997-line-27">
+<clipPath id="terminal-2861575501-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2861575501-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2861575501-line-29">
+    <rect x="0" y="709.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="755.6" rx="8"/><text class="terminal-2130901997-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;generate-constraints</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="804.4" rx="8"/><text class="terminal-2861575501-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;generate-constraints</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-2130901997-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2861575501-clip-terminal)">
     
-    <g class="terminal-2130901997-matrix">
-    <text class="terminal-2130901997-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2130901997-line-0)">
-</text><text class="terminal-2130901997-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2130901997-line-1)">Usage:&#160;</text><text class="terminal-2130901997-r1" x="97.6" y="44.4" textLength="451.4" clip-path="url(#terminal-2130901997-line-1)">breeze&#160;generate-constraints&#160;[OPTIONS]</text><text class="terminal-2130901997-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-1)">
-</text><text class="terminal-2130901997-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-2)">
-</text><text class="terminal-2130901997-r2" x="12.2" y="93.2" textLength="927.2" clip-path="url(#terminal-2130901997-line-3)">Generates&#160;pinned&#160;constraint&#160;files&#160;with&#160;all&#160;extras&#160;from&#160;setup.py&#160;in&#160;parallel.</text><text class="terminal-2130901997-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-3)">
-</text><text class="terminal-2130901997-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-4)">
-</text><text class="terminal-2130901997-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2130901997-line-5)">╭─</text><text class="terminal-2130901997-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2130901997-line-5)">&#160;Generate&#160;constraints&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2130901997-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-6)">│</text><text class="terminal-2130901997-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-6)">-</text><text class="terminal-2130901997-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2130901997-line-6)">-image</text><text class="terminal-2130901997-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-21 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-7)">│</text><text class="terminal-2130901997-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-7)">-</text><text class="terminal-2130901997-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-2130901997-line-7)">-python</text><text class="terminal-2130901997-r6" x="366" y="190.8" textLength="24.4" clip-path="url(#terminal-213 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-8)">│</text><text class="terminal-2130901997-r7" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-2130901997-line-8)">(&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-2130901997-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-9)">│</text><text class="terminal-2130901997-r4" x="414.8" y="239.6" textLength="732" clip-path="url(#terminal-2130901997-line-9)">[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-2130901997-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2130901997-line-10)">│</text><text class="terminal-2130901997-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2130901997-line-10)">-</text><text class="terminal-2130901997-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-2130901997-line-10)">-airflow</text><text class="terminal-2130901997-r5" x="134.2" y="264" textLength="207.4" clip-path="url(#terminal-2130 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-11)">│</text><text class="terminal-2130901997-r7" x="414.8" y="288.4" textLength="866.2" clip-path="url(#terminal-2130901997-line-11)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-2130901997-r4" x="1451.8" y="288.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-11)">│</text><text clas [...]
-</text><text class="terminal-2130901997-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-12)">│</text><text class="terminal-2130901997-r4" x="414.8" y="312.8" textLength="866.2" clip-path="url(#terminal-2130901997-line-12)">[default:&#160;constraints-source-providers]&#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-2130901997-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-13)">│</text><text class="terminal-2130901997-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-13)">-</text><text class="terminal-2130901997-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-2130901997-line-13)">-debug</text><text class="terminal-2130901997-r2" x="414.8" y="337.2" textLength="878.4" clip-path="url(#termina [...]
-</text><text class="terminal-2130901997-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-2130901997-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2130901997-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-14)">
-</text><text class="terminal-2130901997-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-2130901997-line-15)">╭─</text><text class="terminal-2130901997-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-2130901997-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2130901997-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-2130 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-16)">│</text><text class="terminal-2130901997-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-16)">-</text><text class="terminal-2130901997-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-2130901997-line-16)">-run</text><text class="terminal-2130901997-r5" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-17)">│</text><text class="terminal-2130901997-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-17)">-</text><text class="terminal-2130901997-r5" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-2130901997-line-17)">-parallelism</text><text class="terminal-2130901997-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-2130901997-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-18)">│</text><text class="terminal-2130901997-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-2130901997-line-18)">[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-2130901997-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-19)">│</text><text class="terminal-2130901997-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-19)">-</text><text class="terminal-2130901997-r5" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-2130901997-line-19)">-python</text><text class="terminal-2130901997-r5" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2130901997-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2130901997-line-20)">│</text><text class="terminal-2130901997-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-2130901997-line-20)">[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;&#1 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-2130901997-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2130901997-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-21)">
-</text><text class="terminal-2130901997-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-2130901997-line-22)">╭─</text><text class="terminal-2130901997-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-2130901997-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2130901997-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-213 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-23)">│</text><text class="terminal-2130901997-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-23)">-</text><text class="terminal-2130901997-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-2130901997-line-23)">-verbose</text><text class="terminal-2130901997-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-2130901997-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-24)">│</text><text class="terminal-2130901997-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-24)">-</text><text class="terminal-2130901997-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-2130901997-line-24)">-dry</text><text class="terminal-2130901997-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-21 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2130901997-line-25)">│</text><text class="terminal-2130901997-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2130901997-line-25)">-</text><text class="terminal-2130901997-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-2130901997-line-25)">-github</text><text class="terminal-2130901997-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-2130901 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-26)">│</text><text class="terminal-2130901997-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-26)">-</text><text class="terminal-2130901997-r5" x="36.6" y="654.4" textLength="85.4" clip-path="url(#terminal-2130901997-line-26)">-answer</text><text class="terminal-2130901997-r6" x="280.6" y="654.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2130901997-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-27)">│</text><text class="terminal-2130901997-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-27)">-</text><text class="terminal-2130901997-r5" x="36.6" y="678.8" textLength="61" clip-path="url(#terminal-2130901997-line-27)">-help</text><text class="terminal-2130901997-r6" x="280.6" y="678.8" textLength="24.4" clip-path="url(#terminal-21 [...]
-</text><text class="terminal-2130901997-r4" x="0" y="703.2" textLength="1464" clip-path="url(#terminal-2130901997-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2130901997-r2" x="1464" y="703.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-28)">
+    <g class="terminal-2861575501-matrix">
+    <text class="terminal-2861575501-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2861575501-line-0)">
+</text><text class="terminal-2861575501-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2861575501-line-1)">Usage:&#160;</text><text class="terminal-2861575501-r1" x="97.6" y="44.4" textLength="451.4" clip-path="url(#terminal-2861575501-line-1)">breeze&#160;generate-constraints&#160;[OPTIONS]</text><text class="terminal-2861575501-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-1)">
+</text><text class="terminal-2861575501-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-2)">
+</text><text class="terminal-2861575501-r2" x="12.2" y="93.2" textLength="927.2" clip-path="url(#terminal-2861575501-line-3)">Generates&#160;pinned&#160;constraint&#160;files&#160;with&#160;all&#160;extras&#160;from&#160;setup.py&#160;in&#160;parallel.</text><text class="terminal-2861575501-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-3)">
+</text><text class="terminal-2861575501-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-4)">
+</text><text class="terminal-2861575501-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2861575501-line-5)">╭─</text><text class="terminal-2861575501-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2861575501-line-5)">&#160;Generate&#160;constraints&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2861575501-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-6)">│</text><text class="terminal-2861575501-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-6)">-</text><text class="terminal-2861575501-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2861575501-line-6)">-image</text><text class="terminal-2861575501-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-28 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-7)">│</text><text class="terminal-2861575501-r5" x="414.8" y="190.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-7)">-</text><text class="terminal-2861575501-r5" x="427" y="190.8" textLength="73.2" clip-path="url(#terminal-2861575501-line-7)">-mount</text><text class="terminal-2861575501-r5" x="500.2" y="190.8" textLength="97.6" clip-path="url(#terminal-28 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-8)">│</text><text class="terminal-2861575501-r7" x="414.8" y="215.2" textLength="1024.8" clip-path="url(#terminal-2861575501-line-8)">(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-2861575501-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-9)">│</text><text class="terminal-2861575501-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-9)">-</text><text class="terminal-2861575501-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-2861575501-line-9)">-python</text><text class="terminal-2861575501-r6" x="366" y="239.6" textLength="24.4" clip-path="url(#terminal-286 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2861575501-line-10)">│</text><text class="terminal-2861575501-r7" x="414.8" y="264" textLength="732" clip-path="url(#terminal-2861575501-line-10)">(&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-2861575501-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-11)">│</text><text class="terminal-2861575501-r4" x="414.8" y="288.4" textLength="732" clip-path="url(#terminal-2861575501-line-11)">[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-2861575501-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-12)">│</text><text class="terminal-2861575501-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-12)">-</text><text class="terminal-2861575501-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-2861575501-line-12)">-airflow</text><text class="terminal-2861575501-r5" x="134.2" y="312.8" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-2861575501-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-13)">│</text><text class="terminal-2861575501-r7" x="414.8" y="337.2" textLength="866.2" clip-path="url(#terminal-2861575501-line-13)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-2861575501-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-13)">│</text><text clas [...]
+</text><text class="terminal-2861575501-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-14)">│</text><text class="terminal-2861575501-r4" x="414.8" y="361.6" textLength="866.2" clip-path="url(#terminal-2861575501-line-14)">[default:&#160;constraints-source-providers]&#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-2861575501-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2861575501-line-15)">│</text><text class="terminal-2861575501-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2861575501-line-15)">-</text><text class="terminal-2861575501-r5" x="36.6" y="386" textLength="73.2" clip-path="url(#terminal-2861575501-line-15)">-debug</text><text class="terminal-2861575501-r2" x="414.8" y="386" textLength="878.4" clip-path="url(#terminal-286157 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2861575501-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2861575501-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-16)">
+</text><text class="terminal-2861575501-r4" x="0" y="434.8" textLength="24.4" clip-path="url(#terminal-2861575501-line-17)">╭─</text><text class="terminal-2861575501-r4" x="24.4" y="434.8" textLength="1415.2" clip-path="url(#terminal-2861575501-line-17)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2861575501-r4" x="1439.6" y="434.8" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2861575501-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-18)">│</text><text class="terminal-2861575501-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-18)">-</text><text class="terminal-2861575501-r5" x="36.6" y="459.2" textLength="48.8" clip-path="url(#terminal-2861575501-line-18)">-run</text><text class="terminal-2861575501-r5" x="85.4" y="459.2" textLength="146.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-19)">│</text><text class="terminal-2861575501-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-19)">-</text><text class="terminal-2861575501-r5" x="36.6" y="483.6" textLength="146.4" clip-path="url(#terminal-2861575501-line-19)">-parallelism</text><text class="terminal-2861575501-r2" x="280.6" y="483.6" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-2861575501-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2861575501-line-20)">│</text><text class="terminal-2861575501-r4" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2861575501-line-20)">[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;&#1 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-21)">│</text><text class="terminal-2861575501-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-21)">-</text><text class="terminal-2861575501-r5" x="36.6" y="532.4" textLength="85.4" clip-path="url(#terminal-2861575501-line-21)">-python</text><text class="terminal-2861575501-r5" x="122" y="532.4" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2861575501-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-22)">│</text><text class="terminal-2861575501-r4" x="280.6" y="556.8" textLength="951.6" clip-path="url(#terminal-2861575501-line-22)">[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-2861575501-r4" x="0" y="581.2" textLength="1464" clip-path="url(#terminal-2861575501-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2861575501-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-23)">
+</text><text class="terminal-2861575501-r4" x="0" y="605.6" textLength="24.4" clip-path="url(#terminal-2861575501-line-24)">╭─</text><text class="terminal-2861575501-r4" x="24.4" y="605.6" textLength="1415.2" clip-path="url(#terminal-2861575501-line-24)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2861575501-r4" x="1439.6" y="605.6" textLength="24.4" clip-path="url(#terminal-286 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2861575501-line-25)">│</text><text class="terminal-2861575501-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2861575501-line-25)">-</text><text class="terminal-2861575501-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-2861575501-line-25)">-verbose</text><text class="terminal-2861575501-r6" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-28615 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-26)">│</text><text class="terminal-2861575501-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2861575501-line-26)">-</text><text class="terminal-2861575501-r5" x="36.6" y="654.4" textLength="48.8" clip-path="url(#terminal-2861575501-line-26)">-dry</text><text class="terminal-2861575501-r5" x="85.4" y="654.4" textLength="48.8" clip-path="url(#terminal-28 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-27)">│</text><text class="terminal-2861575501-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2861575501-line-27)">-</text><text class="terminal-2861575501-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-2861575501-line-27)">-github</text><text class="terminal-2861575501-r5" x="122" y="678.8" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2861575501-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-28)">│</text><text class="terminal-2861575501-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2861575501-line-28)">-</text><text class="terminal-2861575501-r5" x="36.6" y="703.2" textLength="85.4" clip-path="url(#terminal-2861575501-line-28)">-answer</text><text class="terminal-2861575501-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2861575501-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-29)">│</text><text class="terminal-2861575501-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2861575501-line-29)">-</text><text class="terminal-2861575501-r5" x="36.6" y="727.6" textLength="61" clip-path="url(#terminal-2861575501-line-29)">-help</text><text class="terminal-2861575501-r6" x="280.6" y="727.6" textLength="24.4" clip-path="url(#terminal-28 [...]
+</text><text class="terminal-2861575501-r4" x="0" y="752" textLength="1464" clip-path="url(#terminal-2861575501-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2861575501-r2" x="1464" y="752" textLength="12.2" clip-path="url(#terminal-2861575501-line-30)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-pull-image.svg b/images/breeze/output-pull-image.svg
index e1cce7beeb..edb77e062e 100644
--- a/images/breeze/output-pull-image.svg
+++ b/images/breeze/output-pull-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 782.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,153 +19,161 @@
         font-weight: 700;
     }
 
-    .terminal-3638880050-matrix {
+    .terminal-2760841362-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3638880050-title {
+    .terminal-2760841362-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3638880050-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3638880050-r2 { fill: #c5c8c6 }
-.terminal-3638880050-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3638880050-r4 { fill: #868887 }
-.terminal-3638880050-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3638880050-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3638880050-r7 { fill: #8d7b39 }
+    .terminal-2760841362-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2760841362-r2 { fill: #c5c8c6 }
+.terminal-2760841362-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2760841362-r4 { fill: #868887 }
+.terminal-2760841362-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2760841362-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2760841362-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-3638880050-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
+    <clipPath id="terminal-2760841362-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="731.0" />
     </clipPath>
-    <clipPath id="terminal-3638880050-line-0">
+    <clipPath id="terminal-2760841362-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-1">
+<clipPath id="terminal-2760841362-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-2">
+<clipPath id="terminal-2760841362-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-3">
+<clipPath id="terminal-2760841362-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-4">
+<clipPath id="terminal-2760841362-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-5">
+<clipPath id="terminal-2760841362-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-6">
+<clipPath id="terminal-2760841362-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-7">
+<clipPath id="terminal-2760841362-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-8">
+<clipPath id="terminal-2760841362-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-9">
+<clipPath id="terminal-2760841362-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-10">
+<clipPath id="terminal-2760841362-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-11">
+<clipPath id="terminal-2760841362-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-12">
+<clipPath id="terminal-2760841362-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-13">
+<clipPath id="terminal-2760841362-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-14">
+<clipPath id="terminal-2760841362-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-15">
+<clipPath id="terminal-2760841362-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-16">
+<clipPath id="terminal-2760841362-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-17">
+<clipPath id="terminal-2760841362-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-18">
+<clipPath id="terminal-2760841362-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-19">
+<clipPath id="terminal-2760841362-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-20">
+<clipPath id="terminal-2760841362-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-21">
+<clipPath id="terminal-2760841362-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-22">
+<clipPath id="terminal-2760841362-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-23">
+<clipPath id="terminal-2760841362-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-24">
+<clipPath id="terminal-2760841362-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-25">
+<clipPath id="terminal-2760841362-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3638880050-line-26">
+<clipPath id="terminal-2760841362-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2760841362-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2760841362-line-28">
+    <rect x="0" y="684.7" 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="731.2" rx="8"/><text class="terminal-3638880050-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="780" rx="8"/><text class="terminal-2760841362-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-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-3638880050-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2760841362-clip-terminal)">
     
-    <g class="terminal-3638880050-matrix">
-    <text class="terminal-3638880050-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3638880050-line-0)">
-</text><text class="terminal-3638880050-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3638880050-line-1)">Usage:&#160;</text><text class="terminal-3638880050-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-3638880050-line-1)">breeze&#160;pull-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3638880050-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-1)">
-</text><text class="terminal-3638880050-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-2)">
-</text><text class="terminal-3638880050-r2" x="12.2" y="93.2" textLength="1024.8" clip-path="url(#terminal-3638880050-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-3638880050-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-3)">
-</text><text class="terminal-3638880050-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-4)">
-</text><text class="terminal-3638880050-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3638880050-line-5)">╭─</text><text class="terminal-3638880050-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3638880050-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3638880050-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-6)">│</text><text class="terminal-3638880050-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-6)">-</text><text class="terminal-3638880050-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-3638880050-line-6)">-image</text><text class="terminal-3638880050-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-36 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-7)">│</text><text class="terminal-3638880050-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-7)">-</text><text class="terminal-3638880050-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-3638880050-line-7)">-python</text><text class="terminal-3638880050-r6" x="244" y="190.8" textLength="24.4" clip-path="url(#terminal-363 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-8)">│</text><text class="terminal-3638880050-r4" x="292.8" y="215.2" textLength="732" clip-path="url(#terminal-3638880050-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-3638880050-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-9)">│</text><text class="terminal-3638880050-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-9)">-</text><text class="terminal-3638880050-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-3638880050-line-9)">-github</text><text class="terminal-3638880050-r5" x="122" y="239.6" textLength="73.2" clip-path="url(#terminal-363 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3638880050-line-10)">│</text><text class="terminal-3638880050-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3638880050-line-10)">-</text><text class="terminal-3638880050-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-3638880050-line-10)">-verify</text><text class="terminal-3638880050-r5" x="122" y="264" textLength="73.2" clip-path="url(#terminal-36388800 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-11)">│</text><text class="terminal-3638880050-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-11)">-</text><text class="terminal-3638880050-r5" x="36.6" y="288.4" textLength="61" clip-path="url(#terminal-3638880050-line-11)">-wait</text><text class="terminal-3638880050-r5" x="97.6" y="288.4" textLength="122" clip-path="url(#terminal-3638 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-12)">│</text><text class="terminal-3638880050-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-12)">-</text><text class="terminal-3638880050-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-3638880050-line-12)">-tag</text><text class="terminal-3638880050-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-363 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-13)">│</text><text class="terminal-3638880050-r2" x="292.8" y="337.2" textLength="231.8" clip-path="url(#terminal-3638880050-line-13)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3638880050-r5" x="524.6" y="337.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-13)">-</text><text class="terminal-3638880050-r5" x="536.8" y="337.2" textLe [...]
-</text><text class="terminal-3638880050-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-3638880050-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3638880050-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-14)">
-</text><text class="terminal-3638880050-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-3638880050-line-15)">╭─</text><text class="terminal-3638880050-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-3638880050-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3638880050-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-3638 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-16)">│</text><text class="terminal-3638880050-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-16)">-</text><text class="terminal-3638880050-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-3638880050-line-16)">-run</text><text class="terminal-3638880050-r5" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-17)">│</text><text class="terminal-3638880050-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-17)">-</text><text class="terminal-3638880050-r5" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-3638880050-line-17)">-parallelism</text><text class="terminal-3638880050-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-3638880050-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-18)">│</text><text class="terminal-3638880050-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-3638880050-line-18)">[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-3638880050-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-19)">│</text><text class="terminal-3638880050-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-19)">-</text><text class="terminal-3638880050-r5" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-3638880050-line-19)">-python</text><text class="terminal-3638880050-r5" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3638880050-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3638880050-line-20)">│</text><text class="terminal-3638880050-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-3638880050-line-20)">[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;&#1 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-3638880050-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3638880050-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-21)">
-</text><text class="terminal-3638880050-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-3638880050-line-22)">╭─</text><text class="terminal-3638880050-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-3638880050-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3638880050-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-363 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-23)">│</text><text class="terminal-3638880050-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-23)">-</text><text class="terminal-3638880050-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-3638880050-line-23)">-verbose</text><text class="terminal-3638880050-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-3638880050-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-24)">│</text><text class="terminal-3638880050-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-24)">-</text><text class="terminal-3638880050-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-3638880050-line-24)">-dry</text><text class="terminal-3638880050-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-36 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3638880050-line-25)">│</text><text class="terminal-3638880050-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3638880050-line-25)">-</text><text class="terminal-3638880050-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-3638880050-line-25)">-github</text><text class="terminal-3638880050-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-3638880 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-26)">│</text><text class="terminal-3638880050-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-26)">-</text><text class="terminal-3638880050-r5" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-3638880050-line-26)">-help</text><text class="terminal-3638880050-r6" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-36 [...]
-</text><text class="terminal-3638880050-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-3638880050-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3638880050-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-27)">
+    <g class="terminal-2760841362-matrix">
+    <text class="terminal-2760841362-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2760841362-line-0)">
+</text><text class="terminal-2760841362-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2760841362-line-1)">Usage:&#160;</text><text class="terminal-2760841362-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-2760841362-line-1)">breeze&#160;pull-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2760841362-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-1)">
+</text><text class="terminal-2760841362-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-2)">
+</text><text class="terminal-2760841362-r2" x="12.2" y="93.2" textLength="1024.8" clip-path="url(#terminal-2760841362-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-2760841362-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-3)">
+</text><text class="terminal-2760841362-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-4)">
+</text><text class="terminal-2760841362-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2760841362-line-5)">╭─</text><text class="terminal-2760841362-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2760841362-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2760841362-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-6)">│</text><text class="terminal-2760841362-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-6)">-</text><text class="terminal-2760841362-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2760841362-line-6)">-image</text><text class="terminal-2760841362-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-27 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-7)">│</text><text class="terminal-2760841362-r2" x="292.8" y="190.8" textLength="1146.8" clip-path="url(#terminal-2760841362-line-7)">using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2760841362-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-8)">│</text><text class="terminal-2760841362-r7" x="292.8" y="215.2" textLength="1146.8" clip-path="url(#terminal-2760841362-line-8)">(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-2760841362-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-9)">│</text><text class="terminal-2760841362-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-9)">-</text><text class="terminal-2760841362-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-2760841362-line-9)">-python</text><text class="terminal-2760841362-r6" x="244" y="239.6" textLength="24.4" clip-path="url(#terminal-276 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2760841362-line-10)">│</text><text class="terminal-2760841362-r4" x="292.8" y="264" textLength="732" clip-path="url(#terminal-2760841362-line-10)">[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;&#1 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-11)">│</text><text class="terminal-2760841362-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-11)">-</text><text class="terminal-2760841362-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-2760841362-line-11)">-github</text><text class="terminal-2760841362-r5" x="122" y="288.4" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-2760841362-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-12)">│</text><text class="terminal-2760841362-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-12)">-</text><text class="terminal-2760841362-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-2760841362-line-12)">-verify</text><text class="terminal-2760841362-r5" x="122" y="312.8" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-2760841362-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-13)">│</text><text class="terminal-2760841362-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-13)">-</text><text class="terminal-2760841362-r5" x="36.6" y="337.2" textLength="61" clip-path="url(#terminal-2760841362-line-13)">-wait</text><text class="terminal-2760841362-r5" x="97.6" y="337.2" textLength="122" clip-path="url(#terminal-2760 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-14)">│</text><text class="terminal-2760841362-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-14)">-</text><text class="terminal-2760841362-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-2760841362-line-14)">-tag</text><text class="terminal-2760841362-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-276 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2760841362-line-15)">│</text><text class="terminal-2760841362-r2" x="292.8" y="386" textLength="231.8" clip-path="url(#terminal-2760841362-line-15)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-2760841362-r5" x="524.6" y="386" textLength="12.2" clip-path="url(#terminal-2760841362-line-15)">-</text><text class="terminal-2760841362-r5" x="536.8" y="386" textLength="73 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2760841362-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2760841362-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-16)">
+</text><text class="terminal-2760841362-r4" x="0" y="434.8" textLength="24.4" clip-path="url(#terminal-2760841362-line-17)">╭─</text><text class="terminal-2760841362-r4" x="24.4" y="434.8" textLength="1415.2" clip-path="url(#terminal-2760841362-line-17)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2760841362-r4" x="1439.6" y="434.8" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2760841362-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-18)">│</text><text class="terminal-2760841362-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-18)">-</text><text class="terminal-2760841362-r5" x="36.6" y="459.2" textLength="48.8" clip-path="url(#terminal-2760841362-line-18)">-run</text><text class="terminal-2760841362-r5" x="85.4" y="459.2" textLength="146.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-19)">│</text><text class="terminal-2760841362-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-19)">-</text><text class="terminal-2760841362-r5" x="36.6" y="483.6" textLength="146.4" clip-path="url(#terminal-2760841362-line-19)">-parallelism</text><text class="terminal-2760841362-r2" x="280.6" y="483.6" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-2760841362-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2760841362-line-20)">│</text><text class="terminal-2760841362-r4" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2760841362-line-20)">[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;&#1 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-21)">│</text><text class="terminal-2760841362-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-21)">-</text><text class="terminal-2760841362-r5" x="36.6" y="532.4" textLength="85.4" clip-path="url(#terminal-2760841362-line-21)">-python</text><text class="terminal-2760841362-r5" x="122" y="532.4" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2760841362-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-22)">│</text><text class="terminal-2760841362-r4" x="280.6" y="556.8" textLength="951.6" clip-path="url(#terminal-2760841362-line-22)">[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-2760841362-r4" x="0" y="581.2" textLength="1464" clip-path="url(#terminal-2760841362-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2760841362-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-23)">
+</text><text class="terminal-2760841362-r4" x="0" y="605.6" textLength="24.4" clip-path="url(#terminal-2760841362-line-24)">╭─</text><text class="terminal-2760841362-r4" x="24.4" y="605.6" textLength="1415.2" clip-path="url(#terminal-2760841362-line-24)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2760841362-r4" x="1439.6" y="605.6" textLength="24.4" clip-path="url(#terminal-276 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2760841362-line-25)">│</text><text class="terminal-2760841362-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2760841362-line-25)">-</text><text class="terminal-2760841362-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-2760841362-line-25)">-verbose</text><text class="terminal-2760841362-r6" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-27608 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-26)">│</text><text class="terminal-2760841362-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2760841362-line-26)">-</text><text class="terminal-2760841362-r5" x="36.6" y="654.4" textLength="48.8" clip-path="url(#terminal-2760841362-line-26)">-dry</text><text class="terminal-2760841362-r5" x="85.4" y="654.4" textLength="48.8" clip-path="url(#terminal-27 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-27)">│</text><text class="terminal-2760841362-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2760841362-line-27)">-</text><text class="terminal-2760841362-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-2760841362-line-27)">-github</text><text class="terminal-2760841362-r5" x="122" y="678.8" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2760841362-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-28)">│</text><text class="terminal-2760841362-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2760841362-line-28)">-</text><text class="terminal-2760841362-r5" x="36.6" y="703.2" textLength="61" clip-path="url(#terminal-2760841362-line-28)">-help</text><text class="terminal-2760841362-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#terminal-27 [...]
+</text><text class="terminal-2760841362-r4" x="0" y="727.6" textLength="1464" clip-path="url(#terminal-2760841362-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2760841362-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#terminal-2760841362-line-29)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-pull-prod-image.svg b/images/breeze/output-pull-prod-image.svg
index d6ee293d03..e714d08acd 100644
--- a/images/breeze/output-pull-prod-image.svg
+++ b/images/breeze/output-pull-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 782.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,153 +19,161 @@
         font-weight: 700;
     }
 
-    .terminal-46787825-matrix {
+    .terminal-2333548113-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-46787825-title {
+    .terminal-2333548113-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-46787825-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-46787825-r2 { fill: #c5c8c6 }
-.terminal-46787825-r3 { fill: #d0b344;font-weight: bold }
-.terminal-46787825-r4 { fill: #868887 }
-.terminal-46787825-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-46787825-r6 { fill: #98a84b;font-weight: bold }
-.terminal-46787825-r7 { fill: #8d7b39 }
+    .terminal-2333548113-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2333548113-r2 { fill: #c5c8c6 }
+.terminal-2333548113-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2333548113-r4 { fill: #868887 }
+.terminal-2333548113-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2333548113-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2333548113-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-46787825-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
+    <clipPath id="terminal-2333548113-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="731.0" />
     </clipPath>
-    <clipPath id="terminal-46787825-line-0">
+    <clipPath id="terminal-2333548113-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-1">
+<clipPath id="terminal-2333548113-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-2">
+<clipPath id="terminal-2333548113-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-3">
+<clipPath id="terminal-2333548113-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-4">
+<clipPath id="terminal-2333548113-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-5">
+<clipPath id="terminal-2333548113-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-6">
+<clipPath id="terminal-2333548113-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-7">
+<clipPath id="terminal-2333548113-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-8">
+<clipPath id="terminal-2333548113-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-9">
+<clipPath id="terminal-2333548113-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-10">
+<clipPath id="terminal-2333548113-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-11">
+<clipPath id="terminal-2333548113-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-12">
+<clipPath id="terminal-2333548113-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-13">
+<clipPath id="terminal-2333548113-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-14">
+<clipPath id="terminal-2333548113-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-15">
+<clipPath id="terminal-2333548113-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-16">
+<clipPath id="terminal-2333548113-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-17">
+<clipPath id="terminal-2333548113-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-18">
+<clipPath id="terminal-2333548113-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-19">
+<clipPath id="terminal-2333548113-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-20">
+<clipPath id="terminal-2333548113-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-21">
+<clipPath id="terminal-2333548113-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-22">
+<clipPath id="terminal-2333548113-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-23">
+<clipPath id="terminal-2333548113-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-24">
+<clipPath id="terminal-2333548113-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-25">
+<clipPath id="terminal-2333548113-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-46787825-line-26">
+<clipPath id="terminal-2333548113-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2333548113-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2333548113-line-28">
+    <rect x="0" y="684.7" 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="731.2" rx="8"/><text class="terminal-46787825-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-prod-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="780" rx="8"/><text class="terminal-2333548113-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-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-46787825-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2333548113-clip-terminal)">
     
-    <g class="terminal-46787825-matrix">
-    <text class="terminal-46787825-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-46787825-line-0)">
-</text><text class="terminal-46787825-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-46787825-line-1)">Usage:&#160;</text><text class="terminal-46787825-r1" x="97.6" y="44.4" textLength="671" clip-path="url(#terminal-46787825-line-1)">breeze&#160;pull-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-46787825-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-46787825-line-1)">
-</text><text class="terminal-46787825-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-46787825-line-2)">
-</text><text class="terminal-46787825-r2" x="12.2" y="93.2" textLength="1122.4" clip-path="url(#terminal-46787825-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-46787825-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-46787825-line-3)">
-</text><text class="terminal-46787825-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-46787825-line-4)">
-</text><text class="terminal-46787825-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-46787825-line-5)">╭─</text><text class="terminal-46787825-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-46787825-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-46787825-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-46787825-li [...]
-</text><text class="terminal-46787825-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-46787825-line-6)">│</text><text class="terminal-46787825-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-46787825-line-6)">-</text><text class="terminal-46787825-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-46787825-line-6)">-image</text><text class="terminal-46787825-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-46787825-line-6) [...]
-</text><text class="terminal-46787825-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-46787825-line-7)">│</text><text class="terminal-46787825-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-46787825-line-7)">-</text><text class="terminal-46787825-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-46787825-line-7)">-python</text><text class="terminal-46787825-r6" x="244" y="190.8" textLength="24.4" clip-path="url(#terminal-46787825-line-7)" [...]
-</text><text class="terminal-46787825-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-46787825-line-8)">│</text><text class="terminal-46787825-r4" x="292.8" y="215.2" textLength="732" clip-path="url(#terminal-46787825-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;&#160;&#1 [...]
-</text><text class="terminal-46787825-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-46787825-line-9)">│</text><text class="terminal-46787825-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-46787825-line-9)">-</text><text class="terminal-46787825-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-46787825-line-9)">-github</text><text class="terminal-46787825-r5" x="122" y="239.6" textLength="73.2" clip-path="url(#terminal-46787825-line-9)" [...]
-</text><text class="terminal-46787825-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-46787825-line-10)">│</text><text class="terminal-46787825-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-46787825-line-10)">-</text><text class="terminal-46787825-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-46787825-line-10)">-verify</text><text class="terminal-46787825-r5" x="122" y="264" textLength="73.2" clip-path="url(#terminal-46787825-line-10)">-im [...]
-</text><text class="terminal-46787825-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-46787825-line-11)">│</text><text class="terminal-46787825-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-46787825-line-11)">-</text><text class="terminal-46787825-r5" x="36.6" y="288.4" textLength="61" clip-path="url(#terminal-46787825-line-11)">-wait</text><text class="terminal-46787825-r5" x="97.6" y="288.4" textLength="122" clip-path="url(#terminal-46787825-line-11)" [...]
-</text><text class="terminal-46787825-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-46787825-line-12)">│</text><text class="terminal-46787825-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-46787825-line-12)">-</text><text class="terminal-46787825-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-46787825-line-12)">-tag</text><text class="terminal-46787825-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-46787825-line-12) [...]
-</text><text class="terminal-46787825-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-46787825-line-13)">│</text><text class="terminal-46787825-r2" x="292.8" y="337.2" textLength="231.8" clip-path="url(#terminal-46787825-line-13)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-46787825-r5" x="524.6" y="337.2" textLength="12.2" clip-path="url(#terminal-46787825-line-13)">-</text><text class="terminal-46787825-r5" x="536.8" y="337.2" textLength="73.2" cl [...]
-</text><text class="terminal-46787825-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-46787825-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-46787825-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-46787825-line-14)">
-</text><text class="terminal-46787825-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-46787825-line-15)">╭─</text><text class="terminal-46787825-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-46787825-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-46787825-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-46787825-line- [...]
-</text><text class="terminal-46787825-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-46787825-line-16)">│</text><text class="terminal-46787825-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-46787825-line-16)">-</text><text class="terminal-46787825-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-46787825-line-16)">-run</text><text class="terminal-46787825-r5" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-46787825-line-1 [...]
-</text><text class="terminal-46787825-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-46787825-line-17)">│</text><text class="terminal-46787825-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-46787825-line-17)">-</text><text class="terminal-46787825-r5" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-46787825-line-17)">-parallelism</text><text class="terminal-46787825-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#terminal-4678782 [...]
-</text><text class="terminal-46787825-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-46787825-line-18)">│</text><text class="terminal-46787825-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-46787825-line-18)">[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;&#160;& [...]
-</text><text class="terminal-46787825-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-46787825-line-19)">│</text><text class="terminal-46787825-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-46787825-line-19)">-</text><text class="terminal-46787825-r5" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-46787825-line-19)">-python</text><text class="terminal-46787825-r5" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal-46787825-line [...]
-</text><text class="terminal-46787825-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-46787825-line-20)">│</text><text class="terminal-46787825-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-46787825-line-20)">[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;&#160;&#160 [...]
-</text><text class="terminal-46787825-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-46787825-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-46787825-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-46787825-line-21)">
-</text><text class="terminal-46787825-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-46787825-line-22)">╭─</text><text class="terminal-46787825-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-46787825-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-46787825-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-46787825-line [...]
-</text><text class="terminal-46787825-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-46787825-line-23)">│</text><text class="terminal-46787825-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-46787825-line-23)">-</text><text class="terminal-46787825-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-46787825-line-23)">-verbose</text><text class="terminal-46787825-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#terminal-46787825-li [...]
-</text><text class="terminal-46787825-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-46787825-line-24)">│</text><text class="terminal-46787825-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-46787825-line-24)">-</text><text class="terminal-46787825-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-46787825-line-24)">-dry</text><text class="terminal-46787825-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-46787825-line-24 [...]
-</text><text class="terminal-46787825-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-46787825-line-25)">│</text><text class="terminal-46787825-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-46787825-line-25)">-</text><text class="terminal-46787825-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-46787825-line-25)">-github</text><text class="terminal-46787825-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-46787825-line-25)">-r [...]
-</text><text class="terminal-46787825-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-46787825-line-26)">│</text><text class="terminal-46787825-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-46787825-line-26)">-</text><text class="terminal-46787825-r5" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-46787825-line-26)">-help</text><text class="terminal-46787825-r6" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-46787825-line-26 [...]
-</text><text class="terminal-46787825-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-46787825-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-46787825-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-46787825-line-27)">
+    <g class="terminal-2333548113-matrix">
+    <text class="terminal-2333548113-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2333548113-line-0)">
+</text><text class="terminal-2333548113-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2333548113-line-1)">Usage:&#160;</text><text class="terminal-2333548113-r1" x="97.6" y="44.4" textLength="671" clip-path="url(#terminal-2333548113-line-1)">breeze&#160;pull-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2333548113-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-1)">
+</text><text class="terminal-2333548113-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-2)">
+</text><text class="terminal-2333548113-r2" x="12.2" y="93.2" textLength="1122.4" clip-path="url(#terminal-2333548113-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-2333548113-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-3)">
+</text><text class="terminal-2333548113-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-4)">
+</text><text class="terminal-2333548113-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2333548113-line-5)">╭─</text><text class="terminal-2333548113-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2333548113-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2333548113-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-6)">│</text><text class="terminal-2333548113-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-6)">-</text><text class="terminal-2333548113-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2333548113-line-6)">-image</text><text class="terminal-2333548113-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-7)">│</text><text class="terminal-2333548113-r2" x="292.8" y="190.8" textLength="1146.8" clip-path="url(#terminal-2333548113-line-7)">using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2333548113-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-8)">│</text><text class="terminal-2333548113-r7" x="292.8" y="215.2" textLength="1146.8" clip-path="url(#terminal-2333548113-line-8)">(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-2333548113-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-9)">│</text><text class="terminal-2333548113-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-9)">-</text><text class="terminal-2333548113-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-2333548113-line-9)">-python</text><text class="terminal-2333548113-r6" x="244" y="239.6" textLength="24.4" clip-path="url(#terminal-233 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2333548113-line-10)">│</text><text class="terminal-2333548113-r4" x="292.8" y="264" textLength="732" clip-path="url(#terminal-2333548113-line-10)">[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;&#1 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-11)">│</text><text class="terminal-2333548113-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-11)">-</text><text class="terminal-2333548113-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-2333548113-line-11)">-github</text><text class="terminal-2333548113-r5" x="122" y="288.4" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-2333548113-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-12)">│</text><text class="terminal-2333548113-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-12)">-</text><text class="terminal-2333548113-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-2333548113-line-12)">-verify</text><text class="terminal-2333548113-r5" x="122" y="312.8" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-2333548113-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-13)">│</text><text class="terminal-2333548113-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-13)">-</text><text class="terminal-2333548113-r5" x="36.6" y="337.2" textLength="61" clip-path="url(#terminal-2333548113-line-13)">-wait</text><text class="terminal-2333548113-r5" x="97.6" y="337.2" textLength="122" clip-path="url(#terminal-2333 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-14)">│</text><text class="terminal-2333548113-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-14)">-</text><text class="terminal-2333548113-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-2333548113-line-14)">-tag</text><text class="terminal-2333548113-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-233 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2333548113-line-15)">│</text><text class="terminal-2333548113-r2" x="292.8" y="386" textLength="231.8" clip-path="url(#terminal-2333548113-line-15)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-2333548113-r5" x="524.6" y="386" textLength="12.2" clip-path="url(#terminal-2333548113-line-15)">-</text><text class="terminal-2333548113-r5" x="536.8" y="386" textLength="73 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2333548113-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2333548113-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-16)">
+</text><text class="terminal-2333548113-r4" x="0" y="434.8" textLength="24.4" clip-path="url(#terminal-2333548113-line-17)">╭─</text><text class="terminal-2333548113-r4" x="24.4" y="434.8" textLength="1415.2" clip-path="url(#terminal-2333548113-line-17)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2333548113-r4" x="1439.6" y="434.8" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2333548113-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-18)">│</text><text class="terminal-2333548113-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-18)">-</text><text class="terminal-2333548113-r5" x="36.6" y="459.2" textLength="48.8" clip-path="url(#terminal-2333548113-line-18)">-run</text><text class="terminal-2333548113-r5" x="85.4" y="459.2" textLength="146.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-19)">│</text><text class="terminal-2333548113-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-19)">-</text><text class="terminal-2333548113-r5" x="36.6" y="483.6" textLength="146.4" clip-path="url(#terminal-2333548113-line-19)">-parallelism</text><text class="terminal-2333548113-r2" x="280.6" y="483.6" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-2333548113-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2333548113-line-20)">│</text><text class="terminal-2333548113-r4" x="280.6" y="508" textLength="915" clip-path="url(#terminal-2333548113-line-20)">[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;&#1 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-21)">│</text><text class="terminal-2333548113-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-21)">-</text><text class="terminal-2333548113-r5" x="36.6" y="532.4" textLength="85.4" clip-path="url(#terminal-2333548113-line-21)">-python</text><text class="terminal-2333548113-r5" x="122" y="532.4" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2333548113-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-22)">│</text><text class="terminal-2333548113-r4" x="280.6" y="556.8" textLength="951.6" clip-path="url(#terminal-2333548113-line-22)">[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-2333548113-r4" x="0" y="581.2" textLength="1464" clip-path="url(#terminal-2333548113-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2333548113-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-23)">
+</text><text class="terminal-2333548113-r4" x="0" y="605.6" textLength="24.4" clip-path="url(#terminal-2333548113-line-24)">╭─</text><text class="terminal-2333548113-r4" x="24.4" y="605.6" textLength="1415.2" clip-path="url(#terminal-2333548113-line-24)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2333548113-r4" x="1439.6" y="605.6" textLength="24.4" clip-path="url(#terminal-233 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2333548113-line-25)">│</text><text class="terminal-2333548113-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2333548113-line-25)">-</text><text class="terminal-2333548113-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-2333548113-line-25)">-verbose</text><text class="terminal-2333548113-r6" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-23335 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-26)">│</text><text class="terminal-2333548113-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2333548113-line-26)">-</text><text class="terminal-2333548113-r5" x="36.6" y="654.4" textLength="48.8" clip-path="url(#terminal-2333548113-line-26)">-dry</text><text class="terminal-2333548113-r5" x="85.4" y="654.4" textLength="48.8" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-27)">│</text><text class="terminal-2333548113-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2333548113-line-27)">-</text><text class="terminal-2333548113-r5" x="36.6" y="678.8" textLength="85.4" clip-path="url(#terminal-2333548113-line-27)">-github</text><text class="terminal-2333548113-r5" x="122" y="678.8" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2333548113-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-28)">│</text><text class="terminal-2333548113-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2333548113-line-28)">-</text><text class="terminal-2333548113-r5" x="36.6" y="703.2" textLength="61" clip-path="url(#terminal-2333548113-line-28)">-help</text><text class="terminal-2333548113-r6" x="280.6" y="703.2" textLength="24.4" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2333548113-r4" x="0" y="727.6" textLength="1464" clip-path="url(#terminal-2333548113-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2333548113-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#terminal-2333548113-line-29)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-shell.svg b/images/breeze/output-shell.svg
index f279eab2d7..2c29bda22a 100644
--- a/images/breeze/output-shell.svg
+++ b/images/breeze/output-shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1123.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1245.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,217 +19,237 @@
         font-weight: 700;
     }
 
-    .terminal-2317354236-matrix {
+    .terminal-1533840119-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2317354236-title {
+    .terminal-1533840119-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2317354236-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2317354236-r2 { fill: #c5c8c6 }
-.terminal-2317354236-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2317354236-r4 { fill: #868887 }
-.terminal-2317354236-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2317354236-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2317354236-r7 { fill: #8d7b39 }
+    .terminal-1533840119-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1533840119-r2 { fill: #c5c8c6 }
+.terminal-1533840119-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1533840119-r4 { fill: #868887 }
+.terminal-1533840119-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1533840119-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1533840119-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2317354236-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1072.6" />
+    <clipPath id="terminal-1533840119-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1194.6" />
     </clipPath>
-    <clipPath id="terminal-2317354236-line-0">
+    <clipPath id="terminal-1533840119-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-1">
+<clipPath id="terminal-1533840119-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-2">
+<clipPath id="terminal-1533840119-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-3">
+<clipPath id="terminal-1533840119-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-4">
+<clipPath id="terminal-1533840119-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-5">
+<clipPath id="terminal-1533840119-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-6">
+<clipPath id="terminal-1533840119-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-7">
+<clipPath id="terminal-1533840119-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-8">
+<clipPath id="terminal-1533840119-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-9">
+<clipPath id="terminal-1533840119-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-10">
+<clipPath id="terminal-1533840119-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-11">
+<clipPath id="terminal-1533840119-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-12">
+<clipPath id="terminal-1533840119-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-13">
+<clipPath id="terminal-1533840119-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-14">
+<clipPath id="terminal-1533840119-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-15">
+<clipPath id="terminal-1533840119-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-16">
+<clipPath id="terminal-1533840119-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-17">
+<clipPath id="terminal-1533840119-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-18">
+<clipPath id="terminal-1533840119-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-19">
+<clipPath id="terminal-1533840119-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-20">
+<clipPath id="terminal-1533840119-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-21">
+<clipPath id="terminal-1533840119-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-22">
+<clipPath id="terminal-1533840119-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-23">
+<clipPath id="terminal-1533840119-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-24">
+<clipPath id="terminal-1533840119-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-25">
+<clipPath id="terminal-1533840119-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-26">
+<clipPath id="terminal-1533840119-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-27">
+<clipPath id="terminal-1533840119-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-28">
+<clipPath id="terminal-1533840119-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-29">
+<clipPath id="terminal-1533840119-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-30">
+<clipPath id="terminal-1533840119-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-31">
+<clipPath id="terminal-1533840119-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-32">
+<clipPath id="terminal-1533840119-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-33">
+<clipPath id="terminal-1533840119-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-34">
+<clipPath id="terminal-1533840119-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-35">
+<clipPath id="terminal-1533840119-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-36">
+<clipPath id="terminal-1533840119-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-37">
+<clipPath id="terminal-1533840119-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-38">
+<clipPath id="terminal-1533840119-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-39">
+<clipPath id="terminal-1533840119-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-40">
+<clipPath id="terminal-1533840119-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-41">
+<clipPath id="terminal-1533840119-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2317354236-line-42">
+<clipPath id="terminal-1533840119-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1533840119-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1533840119-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1533840119-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1533840119-line-46">
+    <rect x="0" y="1123.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1533840119-line-47">
+    <rect x="0" y="1148.3" 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="1121.6" rx="8"/><text class="terminal-2317354236-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1243.6" rx="8"/><text class="terminal-1533840119-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</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-2317354236-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1533840119-clip-terminal)">
     
-    <g class="terminal-2317354236-matrix">
-    <text class="terminal-2317354236-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2317354236-line-0)">
-</text><text class="terminal-2317354236-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-1)">Usage:&#160;</text><text class="terminal-2317354236-r1" x="97.6" y="44.4" textLength="463.6" clip-path="url(#terminal-2317354236-line-1)">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-2317354236-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-1)">
-</text><text class="terminal-2317354236-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-2)">
-</text><text class="terminal-2317354236-r2" x="12.2" y="93.2" textLength="1061.4" clip-path="url(#terminal-2317354236-line-3)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="terminal-2317354236-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-3)">
-</text><text class="terminal-2317354236-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-4)">
-</text><text class="terminal-2317354236-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2317354236-line-5)">╭─</text><text class="terminal-2317354236-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2317354236-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2317354236-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-231735 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-6)">│</text><text class="terminal-2317354236-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-6)">-</text><text class="terminal-2317354236-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-6)">-python</text><text class="terminal-2317354236-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-231 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-7)">│</text><text class="terminal-2317354236-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-2317354236-line-7)">[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-2317354236-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-8)">│</text><text class="terminal-2317354236-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-8)">-</text><text class="terminal-2317354236-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-2317354236-line-8)">-backend</text><text class="terminal-2317354236-r6" x="305" y="215.2" textLength="24.4" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-9)">│</text><text class="terminal-2317354236-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-9)">-</text><text class="terminal-2317354236-r5" x="36.6" y="239.6" textLength="109.8" clip-path="url(#terminal-2317354236-line-9)">-postgres</text><text class="terminal-2317354236-r5" x="146.4" y="239.6" textLength="97.6" clip-path="url(#termina [...]
-</text><text class="terminal-2317354236-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2317354236-line-10)">│</text><text class="terminal-2317354236-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2317354236-line-10)">-</text><text class="terminal-2317354236-r5" x="36.6" y="264" textLength="73.2" clip-path="url(#terminal-2317354236-line-10)">-mysql</text><text class="terminal-2317354236-r5" x="109.8" y="264" textLength="97.6" clip-path="url(#terminal-2317354 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-11)">│</text><text class="terminal-2317354236-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-11)">-</text><text class="terminal-2317354236-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-2317354236-line-11)">-mssql</text><text class="terminal-2317354236-r5" x="109.8" y="288.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2317354236-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-12)">│</text><text class="terminal-2317354236-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-12)">-</text><text class="terminal-2317354236-r5" x="36.6" y="312.8" textLength="146.4" clip-path="url(#terminal-2317354236-line-12)">-integration</text><text class="terminal-2317354236-r2" x="353.8" y="312.8" textLength="1085.8" clip-path="url( [...]
-</text><text class="terminal-2317354236-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-13)">│</text><text class="terminal-2317354236-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#terminal-2317354236-line-13)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2317354236-r4" x="1 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-14)">│</text><text class="terminal-2317354236-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#terminal-2317354236-line-14)">all)&#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-2317354236-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2317354236-line-15)">│</text><text class="terminal-2317354236-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2317354236-line-15)">-</text><text class="terminal-2317354236-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-2317354236-line-15)">-forward</text><text class="terminal-2317354236-r5" x="134.2" y="386" textLength="146.4" clip-path="url(#terminal-2317 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-16)">│</text><text class="terminal-2317354236-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-16)">-</text><text class="terminal-2317354236-r5" x="36.6" y="410.4" textLength="36.6" clip-path="url(#terminal-2317354236-line-16)">-db</text><text class="terminal-2317354236-r5" x="73.2" y="410.4" textLength="73.2" clip-path="url(#terminal-231 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-2317354236-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2317354236-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-17)">
-</text><text class="terminal-2317354236-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-2317354236-line-18)">╭─</text><text class="terminal-2317354236-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-2317354236-line-18)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2317354236-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-2317354236-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-19)">│</text><text class="terminal-2317354236-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-19)">-</text><text class="terminal-2317354236-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-2317354236-line-19)">-use</text><text class="terminal-2317354236-r5" x="85.4" y="483.6" textLength="195.2" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2317354236-line-20)">│</text><text class="terminal-2317354236-r2" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-2317354236-line-20)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-2317354236-r4" x="1451.8" y="508" textLength="12.2" [...]
-</text><text class="terminal-2317354236-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-21)">│</text><text class="terminal-2317354236-r2" x="366" y="532.4" textLength="573.4" clip-path="url(#terminal-2317354236-line-21)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2317354236-r5" x="939.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-21)">-</text><text class="terminal-23173 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-22)">│</text><text class="terminal-2317354236-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-2317354236-line-22)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2317354236-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-23)">│</text><text class="terminal-2317354236-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-23)">-</text><text class="terminal-2317354236-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-2317354236-line-23)">-airflow</text><text class="terminal-2317354236-r5" x="134.2" y="581.2" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2317354236-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-24)">│</text><text class="terminal-2317354236-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-24)">-</text><text class="terminal-2317354236-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-2317354236-line-24)">-use</text><text class="terminal-2317354236-r5" x="85.4" y="605.6" textLength="231.8" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2317354236-line-25)">│</text><text class="terminal-2317354236-r2" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-2317354236-line-25)">entering&#160;breeze.&#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-2317354236-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-26)">│</text><text class="terminal-2317354236-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-26)">-</text><text class="terminal-2317354236-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2317354236-line-26)">-package</text><text class="terminal-2317354236-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-2317354236-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-27)">│</text><text class="terminal-2317354236-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-27)">-</text><text class="terminal-2317354236-r5" x="36.6" y="678.8" textLength="73.2" clip-path="url(#terminal-2317354236-line-27)">-force</text><text class="terminal-2317354236-r5" x="109.8" y="678.8" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2317354236-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-28)">│</text><text class="terminal-2317354236-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-28)">-</text><text class="terminal-2317354236-r5" x="36.6" y="703.2" textLength="73.2" clip-path="url(#terminal-2317354236-line-28)">-mount</text><text class="terminal-2317354236-r5" x="109.8" y="703.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2317354236-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-29)">│</text><text class="terminal-2317354236-r7" x="366" y="727.6" textLength="841.8" clip-path="url(#terminal-2317354236-line-29)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-2317354236-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2317354236-line-30)">│</text><text class="terminal-2317354236-r4" x="366" y="752" textLength="841.8" clip-path="url(#terminal-2317354236-line-30)">[default:&#160;selected]&#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;&#16 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-31)">│</text><text class="terminal-2317354236-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-31)">-</text><text class="terminal-2317354236-r5" x="36.6" y="776.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-31)">-debian</text><text class="terminal-2317354236-r5" x="122" y="776.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-2317354236-r4" x="0" y="800.8" textLength="1464" clip-path="url(#terminal-2317354236-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2317354236-r2" x="1464" y="800.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-32)">
-</text><text class="terminal-2317354236-r4" x="0" y="825.2" textLength="24.4" clip-path="url(#terminal-2317354236-line-33)">╭─</text><text class="terminal-2317354236-r4" x="24.4" y="825.2" textLength="1415.2" clip-path="url(#terminal-2317354236-line-33)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2317354236-r4" x="1439.6" y="825.2" textLength="24.4" clip-path="url(#terminal-231 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-34)">│</text><text class="terminal-2317354236-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-34)">-</text><text class="terminal-2317354236-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-2317354236-line-34)">-verbose</text><text class="terminal-2317354236-r6" x="427" y="849.6" textLength="24.4" clip-path="url(#terminal [...]
-</text><text class="terminal-2317354236-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2317354236-line-35)">│</text><text class="terminal-2317354236-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2317354236-line-35)">-</text><text class="terminal-2317354236-r5" x="36.6" y="874" textLength="48.8" clip-path="url(#terminal-2317354236-line-35)">-dry</text><text class="terminal-2317354236-r5" x="85.4" y="874" textLength="48.8" clip-path="url(#terminal-2317354236 [...]
-</text><text class="terminal-2317354236-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-36)">│</text><text class="terminal-2317354236-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-36)">-</text><text class="terminal-2317354236-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-36)">-github</text><text class="terminal-2317354236-r5" x="122" y="898.4" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2317354236-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-37)">│</text><text class="terminal-2317354236-r4" x="475.8" y="922.8" textLength="585.6" clip-path="url(#terminal-2317354236-line-37)">[default:&#160;apache/airflow]&#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-2317354236-r4" x="1451.8" y="922.8" textL [...]
-</text><text class="terminal-2317354236-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-38)">│</text><text class="terminal-2317354236-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-38)">-</text><text class="terminal-2317354236-r5" x="36.6" y="947.2" textLength="97.6" clip-path="url(#terminal-2317354236-line-38)">-airflow</text><text class="terminal-2317354236-r5" x="134.2" y="947.2" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-2317354236-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-39)">│</text><text class="terminal-2317354236-r2" x="475.8" y="971.6" textLength="963.8" clip-path="url(#terminal-2317354236-line-39)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-2317354236-r4" x="1451.8" y="971.6" textLength="12.2" clip-path=" [...]
-</text><text class="terminal-2317354236-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2317354236-line-40)">│</text><text class="terminal-2317354236-r7" x="475.8" y="996" textLength="963.8" clip-path="url(#terminal-2317354236-line-40)">(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-2317354236-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-41)">│</text><text class="terminal-2317354236-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-41)">-</text><text class="terminal-2317354236-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-41)">-answer</text><text class="terminal-2317354236-r6" x="427" y="1020.4" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-2317354236-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-42)">│</text><text class="terminal-2317354236-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-42)">-</text><text class="terminal-2317354236-r5" x="36.6" y="1044.8" textLength="61" clip-path="url(#terminal-2317354236-line-42)">-help</text><text class="terminal-2317354236-r6" x="427" y="1044.8" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-2317354236-r4" x="0" y="1069.2" textLength="1464" clip-path="url(#terminal-2317354236-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2317354236-r2" x="1464" y="1069.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-43)">
+    <g class="terminal-1533840119-matrix">
+    <text class="terminal-1533840119-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1533840119-line-0)">
+</text><text class="terminal-1533840119-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-1)">Usage:&#160;</text><text class="terminal-1533840119-r1" x="97.6" y="44.4" textLength="463.6" clip-path="url(#terminal-1533840119-line-1)">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-1533840119-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-1)">
+</text><text class="terminal-1533840119-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-2)">
+</text><text class="terminal-1533840119-r2" x="12.2" y="93.2" textLength="1061.4" clip-path="url(#terminal-1533840119-line-3)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="terminal-1533840119-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-3)">
+</text><text class="terminal-1533840119-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-4)">
+</text><text class="terminal-1533840119-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1533840119-line-5)">╭─</text><text class="terminal-1533840119-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1533840119-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1533840119-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-153384 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-6)">│</text><text class="terminal-1533840119-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-6)">-</text><text class="terminal-1533840119-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-6)">-python</text><text class="terminal-1533840119-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-153 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-7)">│</text><text class="terminal-1533840119-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-1533840119-line-7)">[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-1533840119-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-8)">│</text><text class="terminal-1533840119-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-8)">-</text><text class="terminal-1533840119-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-1533840119-line-8)">-backend</text><text class="terminal-1533840119-r6" x="305" y="215.2" textLength="24.4" clip-path="url(#terminal-15 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-9)">│</text><text class="terminal-1533840119-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-9)">-</text><text class="terminal-1533840119-r5" x="36.6" y="239.6" textLength="109.8" clip-path="url(#terminal-1533840119-line-9)">-postgres</text><text class="terminal-1533840119-r5" x="146.4" y="239.6" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-1533840119-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1533840119-line-10)">│</text><text class="terminal-1533840119-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1533840119-line-10)">-</text><text class="terminal-1533840119-r5" x="36.6" y="264" textLength="73.2" clip-path="url(#terminal-1533840119-line-10)">-mysql</text><text class="terminal-1533840119-r5" x="109.8" y="264" textLength="97.6" clip-path="url(#terminal-1533840 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-11)">│</text><text class="terminal-1533840119-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-11)">-</text><text class="terminal-1533840119-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1533840119-line-11)">-mssql</text><text class="terminal-1533840119-r5" x="109.8" y="288.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1533840119-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-12)">│</text><text class="terminal-1533840119-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-12)">-</text><text class="terminal-1533840119-r5" x="36.6" y="312.8" textLength="146.4" clip-path="url(#terminal-1533840119-line-12)">-integration</text><text class="terminal-1533840119-r2" x="353.8" y="312.8" textLength="1085.8" clip-path="url( [...]
+</text><text class="terminal-1533840119-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-13)">│</text><text class="terminal-1533840119-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#terminal-1533840119-line-13)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-1533840119-r4" x="1 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-14)">│</text><text class="terminal-1533840119-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#terminal-1533840119-line-14)">all)&#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-1533840119-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1533840119-line-15)">│</text><text class="terminal-1533840119-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1533840119-line-15)">-</text><text class="terminal-1533840119-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-1533840119-line-15)">-forward</text><text class="terminal-1533840119-r5" x="134.2" y="386" textLength="146.4" clip-path="url(#terminal-1533 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-16)">│</text><text class="terminal-1533840119-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-16)">-</text><text class="terminal-1533840119-r5" x="36.6" y="410.4" textLength="36.6" clip-path="url(#terminal-1533840119-line-16)">-db</text><text class="terminal-1533840119-r5" x="73.2" y="410.4" textLength="73.2" clip-path="url(#terminal-153 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1533840119-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1533840119-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-17)">
+</text><text class="terminal-1533840119-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-1533840119-line-18)">╭─</text><text class="terminal-1533840119-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-1533840119-line-18)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1533840119-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-1533840119-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-19)">│</text><text class="terminal-1533840119-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-19)">-</text><text class="terminal-1533840119-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-1533840119-line-19)">-use</text><text class="terminal-1533840119-r5" x="85.4" y="483.6" textLength="195.2" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1533840119-line-20)">│</text><text class="terminal-1533840119-r2" x="390.4" y="508" textLength="1049.2" clip-path="url(#terminal-1533840119-line-20)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-1533840119-r4" x="1451.8" y="508" textLength="12.2" clip-path [...]
+</text><text class="terminal-1533840119-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-21)">│</text><text class="terminal-1533840119-r2" x="390.4" y="532.4" textLength="573.4" clip-path="url(#terminal-1533840119-line-21)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1533840119-r5" x="963.8" y="532.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-21)">-</text><text class="terminal-153 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-22)">│</text><text class="terminal-1533840119-r7" x="390.4" y="556.8" textLength="1049.2" clip-path="url(#terminal-1533840119-line-22)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1533840119-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-23)">│</text><text class="terminal-1533840119-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-23)">-</text><text class="terminal-1533840119-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-1533840119-line-23)">-airflow</text><text class="terminal-1533840119-r5" x="134.2" y="581.2" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1533840119-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-24)">│</text><text class="terminal-1533840119-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-24)">-</text><text class="terminal-1533840119-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-1533840119-line-24)">-use</text><text class="terminal-1533840119-r5" x="85.4" y="605.6" textLength="231.8" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1533840119-line-25)">│</text><text class="terminal-1533840119-r2" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-1533840119-line-25)">entering&#160;breeze.&#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;&#16 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-26)">│</text><text class="terminal-1533840119-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-26)">-</text><text class="terminal-1533840119-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-1533840119-line-26)">-package</text><text class="terminal-1533840119-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1533840119-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-27)">│</text><text class="terminal-1533840119-r4" x="390.4" y="678.8" textLength="658.8" clip-path="url(#terminal-1533840119-line-27)">[default:&#160;wheel]&#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-1533840119-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-28)">│</text><text class="terminal-1533840119-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-28)">-</text><text class="terminal-1533840119-r5" x="36.6" y="703.2" textLength="73.2" clip-path="url(#terminal-1533840119-line-28)">-force</text><text class="terminal-1533840119-r5" x="109.8" y="703.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1533840119-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-29)">│</text><text class="terminal-1533840119-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-29)">-</text><text class="terminal-1533840119-r5" x="36.6" y="727.6" textLength="73.2" clip-path="url(#terminal-1533840119-line-29)">-mount</text><text class="terminal-1533840119-r5" x="109.8" y="727.6" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1533840119-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1533840119-line-30)">│</text><text class="terminal-1533840119-r2" x="390.4" y="752" textLength="1049.2" clip-path="url(#terminal-1533840119-line-30)">selected).&#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-1533840119-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-31)">│</text><text class="terminal-1533840119-r7" x="390.4" y="776.4" textLength="1049.2" clip-path="url(#terminal-1533840119-line-31)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-1533840119-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-32)">│</text><text class="terminal-1533840119-r4" x="390.4" y="800.8" textLength="1049.2" clip-path="url(#terminal-1533840119-line-32)">[default:&#160;selected]&#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-1533840119-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-33)">│</text><text class="terminal-1533840119-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-33)">-</text><text class="terminal-1533840119-r5" x="36.6" y="825.2" textLength="85.4" clip-path="url(#terminal-1533840119-line-33)">-debian</text><text class="terminal-1533840119-r5" x="122" y="825.2" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-1533840119-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-34)">│</text><text class="terminal-1533840119-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-34)">-</text><text class="terminal-1533840119-r5" x="36.6" y="849.6" textLength="73.2" clip-path="url(#terminal-1533840119-line-34)">-image</text><text class="terminal-1533840119-r5" x="109.8" y="849.6" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1533840119-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1533840119-line-35)">│</text><text class="terminal-1533840119-r2" x="390.4" y="874" textLength="1049.2" clip-path="url(#terminal-1533840119-line-35)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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;&#16 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-36)">│</text><text class="terminal-1533840119-r7" x="390.4" y="898.4" textLength="1049.2" clip-path="url(#terminal-1533840119-line-36)">(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;&#1 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-1533840119-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1533840119-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-37)">
+</text><text class="terminal-1533840119-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-1533840119-line-38)">╭─</text><text class="terminal-1533840119-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-1533840119-line-38)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1533840119-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#terminal-153 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-39)">│</text><text class="terminal-1533840119-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-39)">-</text><text class="terminal-1533840119-r5" x="36.6" y="971.6" textLength="97.6" clip-path="url(#terminal-1533840119-line-39)">-verbose</text><text class="terminal-1533840119-r6" x="427" y="971.6" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-1533840119-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1533840119-line-40)">│</text><text class="terminal-1533840119-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1533840119-line-40)">-</text><text class="terminal-1533840119-r5" x="36.6" y="996" textLength="48.8" clip-path="url(#terminal-1533840119-line-40)">-dry</text><text class="terminal-1533840119-r5" x="85.4" y="996" textLength="48.8" clip-path="url(#terminal-1533840119 [...]
+</text><text class="terminal-1533840119-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-41)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-41)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-41)">-github</text><text class="terminal-1533840119-r5" x="122" y="1020.4" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1533840119-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-42)">│</text><text class="terminal-1533840119-r4" x="475.8" y="1044.8" textLength="585.6" clip-path="url(#terminal-1533840119-line-42)">[default:&#160;apache/airflow]&#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-1533840119-r4" x="1451.8" y="1044.8" te [...]
+</text><text class="terminal-1533840119-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-43)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-43)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-1533840119-line-43)">-airflow</text><text class="terminal-1533840119-r5" x="134.2" y="1069.2" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-1533840119-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1533840119-line-44)">│</text><text class="terminal-1533840119-r2" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#terminal-1533840119-line-44)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-1533840119-r4" x="1451.8" y="1093.6" textLength="12.2" clip-pat [...]
+</text><text class="terminal-1533840119-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1533840119-line-45)">│</text><text class="terminal-1533840119-r7" x="475.8" y="1118" textLength="963.8" clip-path="url(#terminal-1533840119-line-45)">(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-1533840119-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-46)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1533840119-line-46)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-1533840119-line-46)">-answer</text><text class="terminal-1533840119-r6" x="427" y="1142.4" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-1533840119-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-47)">│</text><text class="terminal-1533840119-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1533840119-line-47)">-</text><text class="terminal-1533840119-r5" x="36.6" y="1166.8" textLength="61" clip-path="url(#terminal-1533840119-line-47)">-help</text><text class="terminal-1533840119-r6" x="427" y="1166.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1533840119-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-1533840119-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1533840119-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-1533840119-line-48)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-start-airflow.svg b/images/breeze/output-start-airflow.svg
index 159eec8cb2..3e21e1f5e9 100644
--- a/images/breeze/output-start-airflow.svg
+++ b/images/breeze/output-start-airflow.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1172.3999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1294.3999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,225 +19,245 @@
         font-weight: 700;
     }
 
-    .terminal-231556883-matrix {
+    .terminal-2392640782-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-231556883-title {
+    .terminal-2392640782-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-231556883-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-231556883-r2 { fill: #c5c8c6 }
-.terminal-231556883-r3 { fill: #d0b344;font-weight: bold }
-.terminal-231556883-r4 { fill: #868887 }
-.terminal-231556883-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-231556883-r6 { fill: #98a84b;font-weight: bold }
-.terminal-231556883-r7 { fill: #8d7b39 }
+    .terminal-2392640782-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2392640782-r2 { fill: #c5c8c6 }
+.terminal-2392640782-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2392640782-r4 { fill: #868887 }
+.terminal-2392640782-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2392640782-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2392640782-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-231556883-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1121.3999999999999" />
+    <clipPath id="terminal-2392640782-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1243.3999999999999" />
     </clipPath>
-    <clipPath id="terminal-231556883-line-0">
+    <clipPath id="terminal-2392640782-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-1">
+<clipPath id="terminal-2392640782-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-2">
+<clipPath id="terminal-2392640782-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-3">
+<clipPath id="terminal-2392640782-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-4">
+<clipPath id="terminal-2392640782-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-5">
+<clipPath id="terminal-2392640782-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-6">
+<clipPath id="terminal-2392640782-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-7">
+<clipPath id="terminal-2392640782-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-8">
+<clipPath id="terminal-2392640782-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-9">
+<clipPath id="terminal-2392640782-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-10">
+<clipPath id="terminal-2392640782-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-11">
+<clipPath id="terminal-2392640782-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-12">
+<clipPath id="terminal-2392640782-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-13">
+<clipPath id="terminal-2392640782-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-14">
+<clipPath id="terminal-2392640782-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-15">
+<clipPath id="terminal-2392640782-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-16">
+<clipPath id="terminal-2392640782-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-17">
+<clipPath id="terminal-2392640782-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-18">
+<clipPath id="terminal-2392640782-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-19">
+<clipPath id="terminal-2392640782-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-20">
+<clipPath id="terminal-2392640782-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-21">
+<clipPath id="terminal-2392640782-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-22">
+<clipPath id="terminal-2392640782-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-23">
+<clipPath id="terminal-2392640782-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-24">
+<clipPath id="terminal-2392640782-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-25">
+<clipPath id="terminal-2392640782-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-26">
+<clipPath id="terminal-2392640782-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-27">
+<clipPath id="terminal-2392640782-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-28">
+<clipPath id="terminal-2392640782-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-29">
+<clipPath id="terminal-2392640782-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-30">
+<clipPath id="terminal-2392640782-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-31">
+<clipPath id="terminal-2392640782-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-32">
+<clipPath id="terminal-2392640782-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-33">
+<clipPath id="terminal-2392640782-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-34">
+<clipPath id="terminal-2392640782-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-35">
+<clipPath id="terminal-2392640782-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-36">
+<clipPath id="terminal-2392640782-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-37">
+<clipPath id="terminal-2392640782-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-38">
+<clipPath id="terminal-2392640782-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-39">
+<clipPath id="terminal-2392640782-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-40">
+<clipPath id="terminal-2392640782-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-41">
+<clipPath id="terminal-2392640782-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-42">
+<clipPath id="terminal-2392640782-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-43">
+<clipPath id="terminal-2392640782-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-231556883-line-44">
+<clipPath id="terminal-2392640782-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-2392640782-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2392640782-line-46">
+    <rect x="0" y="1123.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2392640782-line-47">
+    <rect x="0" y="1148.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2392640782-line-48">
+    <rect x="0" y="1172.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2392640782-line-49">
+    <rect x="0" y="1197.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="1170.4" rx="8"/><text class="terminal-231556883-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1292.4" rx="8"/><text class="terminal-2392640782-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</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-231556883-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2392640782-clip-terminal)">
     
-    <g class="terminal-231556883-matrix">
-    <text class="terminal-231556883-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-231556883-line-0)">
-</text><text class="terminal-231556883-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-231556883-line-1)">Usage:&#160;</text><text class="terminal-231556883-r1" x="97.6" y="44.4" textLength="561.2" clip-path="url(#terminal-231556883-line-1)">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-231556883-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-231556883-line-1)">
-</text><text class="terminal-231556883-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-231556883-line-2)">
-</text><text class="terminal-231556883-r2" x="12.2" y="93.2" textLength="1000.4" clip-path="url(#terminal-231556883-line-3)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.</text><text class="terminal-231556883-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-231556883-line-3)">
-</text><text class="terminal-231556883-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-231556883-line-4)">
-</text><text class="terminal-231556883-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-231556883-line-5)">╭─</text><text class="terminal-231556883-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-231556883-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-231556883-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-231556883-l [...]
-</text><text class="terminal-231556883-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-231556883-line-6)">│</text><text class="terminal-231556883-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-231556883-line-6)">-</text><text class="terminal-231556883-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-231556883-line-6)">-python</text><text class="terminal-231556883-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#terminal-231556883- [...]
-</text><text class="terminal-231556883-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-231556883-line-7)">│</text><text class="terminal-231556883-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#terminal-231556883-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;&#16 [...]
-</text><text class="terminal-231556883-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-231556883-line-8)">│</text><text class="terminal-231556883-r4" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-231556883-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;&#160 [...]
-</text><text class="terminal-231556883-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-231556883-line-9)">│</text><text class="terminal-231556883-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-231556883-line-9)">-</text><text class="terminal-231556883-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-231556883-line-9)">-load</text><text class="terminal-231556883-r5" x="97.6" y="239.6" textLength="158.6" clip-path="url(#terminal-231556883-li [...]
-</text><text class="terminal-231556883-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-231556883-line-10)">│</text><text class="terminal-231556883-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-231556883-line-10)">-</text><text class="terminal-231556883-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-231556883-line-10)">-load</text><text class="terminal-231556883-r5" x="97.6" y="264" textLength="244" clip-path="url(#terminal-231556883-line-10)" [...]
-</text><text class="terminal-231556883-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-231556883-line-11)">│</text><text class="terminal-231556883-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-231556883-line-11)">-</text><text class="terminal-231556883-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-231556883-line-11)">-backend</text><text class="terminal-231556883-r6" x="366" y="288.4" textLength="24.4" clip-path="url(#terminal-231556 [...]
-</text><text class="terminal-231556883-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-231556883-line-12)">│</text><text class="terminal-231556883-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-231556883-line-12)">-</text><text class="terminal-231556883-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-231556883-line-12)">-postgres</text><text class="terminal-231556883-r5" x="146.4" y="312.8" textLength="97.6" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-231556883-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-231556883-line-13)">│</text><text class="terminal-231556883-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-231556883-line-13)">-</text><text class="terminal-231556883-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-231556883-line-13)">-mysql</text><text class="terminal-231556883-r5" x="109.8" y="337.2" textLength="97.6" clip-path="url(#terminal-231556 [...]
-</text><text class="terminal-231556883-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-231556883-line-14)">│</text><text class="terminal-231556883-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-231556883-line-14)">-</text><text class="terminal-231556883-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-231556883-line-14)">-mssql</text><text class="terminal-231556883-r5" x="109.8" y="361.6" textLength="97.6" clip-path="url(#terminal-231556 [...]
-</text><text class="terminal-231556883-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-231556883-line-15)">│</text><text class="terminal-231556883-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-231556883-line-15)">-</text><text class="terminal-231556883-r5" x="36.6" y="386" textLength="146.4" clip-path="url(#terminal-231556883-line-15)">-integration</text><text class="terminal-231556883-r2" x="414.8" y="386" textLength="1024.8" clip-path="url(#terminal-23155 [...]
-</text><text class="terminal-231556883-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-231556883-line-16)">│</text><text class="terminal-231556883-r7" x="414.8" y="410.4" textLength="1024.8" clip-path="url(#terminal-231556883-line-16)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino</text><text class="terminal-231556883-r4" x="1451.8" y="410.4" textLength="1 [...]
-</text><text class="terminal-231556883-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-231556883-line-17)">│</text><text class="terminal-231556883-r7" x="414.8" y="434.8" textLength="1024.8" clip-path="url(#terminal-231556883-line-17)">|&#160;all)&#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-231556883-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-231556883-line-18)">│</text><text class="terminal-231556883-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-231556883-line-18)">-</text><text class="terminal-231556883-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-231556883-line-18)">-forward</text><text class="terminal-231556883-r5" x="134.2" y="459.2" textLength="146.4" clip-path="url(#terminal-231 [...]
-</text><text class="terminal-231556883-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-231556883-line-19)">│</text><text class="terminal-231556883-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-231556883-line-19)">-</text><text class="terminal-231556883-r5" x="36.6" y="483.6" textLength="36.6" clip-path="url(#terminal-231556883-line-19)">-db</text><text class="terminal-231556883-r5" x="73.2" y="483.6" textLength="73.2" clip-path="url(#terminal-231556883- [...]
-</text><text class="terminal-231556883-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-231556883-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-231556883-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-231556883-line-20)">
-</text><text class="terminal-231556883-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-231556883-line-21)">╭─</text><text class="terminal-231556883-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-231556883-line-21)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-231556883-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-231556883-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-231556883-line-22)">│</text><text class="terminal-231556883-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-231556883-line-22)">-</text><text class="terminal-231556883-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-231556883-line-22)">-use</text><text class="terminal-231556883-r5" x="85.4" y="556.8" textLength="195.2" clip-path="url(#terminal-23155688 [...]
-</text><text class="terminal-231556883-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-231556883-line-23)">│</text><text class="terminal-231556883-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-231556883-line-23)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-231556883-r4" x="1451.8" y="581.2" textLength="12.2 [...]
-</text><text class="terminal-231556883-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-231556883-line-24)">│</text><text class="terminal-231556883-r2" x="366" y="605.6" textLength="573.4" clip-path="url(#terminal-231556883-line-24)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-231556883-r5" x="939.4" y="605.6" textLength="12.2" clip-path="url(#terminal-231556883-line-24)">-</text><text class="terminal-231556883-r [...]
-</text><text class="terminal-231556883-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-231556883-line-25)">│</text><text class="terminal-231556883-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-231556883-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-231556883-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-231556883-line-26)">│</text><text class="terminal-231556883-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-231556883-line-26)">-</text><text class="terminal-231556883-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-231556883-line-26)">-airflow</text><text class="terminal-231556883-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#terminal-2315 [...]
-</text><text class="terminal-231556883-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-231556883-line-27)">│</text><text class="terminal-231556883-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-231556883-line-27)">-</text><text class="terminal-231556883-r5" x="36.6" y="678.8" textLength="48.8" clip-path="url(#terminal-231556883-line-27)">-use</text><text class="terminal-231556883-r5" x="85.4" y="678.8" textLength="231.8" clip-path="url(#terminal-23155688 [...]
-</text><text class="terminal-231556883-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-231556883-line-28)">│</text><text class="terminal-231556883-r2" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-231556883-line-28)">entering&#160;breeze.&#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-231556883-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-231556883-line-29)">│</text><text class="terminal-231556883-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-231556883-line-29)">-</text><text class="terminal-231556883-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-231556883-line-29)">-package</text><text class="terminal-231556883-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#terminal-2315 [...]
-</text><text class="terminal-231556883-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-231556883-line-30)">│</text><text class="terminal-231556883-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-231556883-line-30)">-</text><text class="terminal-231556883-r5" x="36.6" y="752" textLength="73.2" clip-path="url(#terminal-231556883-line-30)">-force</text><text class="terminal-231556883-r5" x="109.8" y="752" textLength="73.2" clip-path="url(#terminal-231556883-line [...]
-</text><text class="terminal-231556883-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-231556883-line-31)">│</text><text class="terminal-231556883-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-231556883-line-31)">-</text><text class="terminal-231556883-r5" x="36.6" y="776.4" textLength="73.2" clip-path="url(#terminal-231556883-line-31)">-mount</text><text class="terminal-231556883-r5" x="109.8" y="776.4" textLength="97.6" clip-path="url(#terminal-231556 [...]
-</text><text class="terminal-231556883-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-231556883-line-32)">│</text><text class="terminal-231556883-r7" x="366" y="800.8" textLength="841.8" clip-path="url(#terminal-231556883-line-32)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-231556883-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-231556883-line-33)">│</text><text class="terminal-231556883-r4" x="366" y="825.2" textLength="841.8" clip-path="url(#terminal-231556883-line-33)">[default:&#160;selected]&#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;&#16 [...]
-</text><text class="terminal-231556883-r4" x="0" y="849.6" textLength="1464" clip-path="url(#terminal-231556883-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-231556883-r2" x="1464" y="849.6" textLength="12.2" clip-path="url(#terminal-231556883-line-34)">
-</text><text class="terminal-231556883-r4" x="0" y="874" textLength="24.4" clip-path="url(#terminal-231556883-line-35)">╭─</text><text class="terminal-231556883-r4" x="24.4" y="874" textLength="1415.2" clip-path="url(#terminal-231556883-line-35)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-231556883-r4" x="1439.6" y="874" textLength="24.4" clip-path="url(#terminal-231556883-line [...]
-</text><text class="terminal-231556883-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-231556883-line-36)">│</text><text class="terminal-231556883-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-231556883-line-36)">-</text><text class="terminal-231556883-r5" x="36.6" y="898.4" textLength="48.8" clip-path="url(#terminal-231556883-line-36)">-dry</text><text class="terminal-231556883-r5" x="85.4" y="898.4" textLength="48.8" clip-path="url(#terminal-231556883 [...]
-</text><text class="terminal-231556883-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-231556883-line-37)">│</text><text class="terminal-231556883-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-231556883-line-37)">-</text><text class="terminal-231556883-r5" x="36.6" y="922.8" textLength="85.4" clip-path="url(#terminal-231556883-line-37)">-github</text><text class="terminal-231556883-r5" x="122" y="922.8" textLength="134.2" clip-path="url(#terminal-231556 [...]
-</text><text class="terminal-231556883-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-231556883-line-38)">│</text><text class="terminal-231556883-r4" x="475.8" y="947.2" textLength="585.6" clip-path="url(#terminal-231556883-line-38)">[default:&#160;apache/airflow]&#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-231556883-r4" x="1451.8" y="947.2" textLength [...]
-</text><text class="terminal-231556883-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-231556883-line-39)">│</text><text class="terminal-231556883-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-231556883-line-39)">-</text><text class="terminal-231556883-r5" x="36.6" y="971.6" textLength="97.6" clip-path="url(#terminal-231556883-line-39)">-airflow</text><text class="terminal-231556883-r5" x="134.2" y="971.6" textLength="268.4" clip-path="url(#terminal-231 [...]
-</text><text class="terminal-231556883-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-231556883-line-40)">│</text><text class="terminal-231556883-r2" x="475.8" y="996" textLength="963.8" clip-path="url(#terminal-231556883-line-40)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-231556883-r4" x="1451.8" y="996" textLength="12.2" clip-path="url(#termin [...]
-</text><text class="terminal-231556883-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-231556883-line-41)">│</text><text class="terminal-231556883-r7" x="475.8" y="1020.4" textLength="963.8" clip-path="url(#terminal-231556883-line-41)">(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-231556883-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-231556883-line-42)">│</text><text class="terminal-231556883-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-231556883-line-42)">-</text><text class="terminal-231556883-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-231556883-line-42)">-answer</text><text class="terminal-231556883-r6" x="427" y="1044.8" textLength="24.4" clip-path="url(#terminal-231 [...]
-</text><text class="terminal-231556883-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-231556883-line-43)">│</text><text class="terminal-231556883-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-231556883-line-43)">-</text><text class="terminal-231556883-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-231556883-line-43)">-verbose</text><text class="terminal-231556883-r6" x="427" y="1069.2" textLength="24.4" clip-path="url(#terminal-23 [...]
-</text><text class="terminal-231556883-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-231556883-line-44)">│</text><text class="terminal-231556883-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-231556883-line-44)">-</text><text class="terminal-231556883-r5" x="36.6" y="1093.6" textLength="61" clip-path="url(#terminal-231556883-line-44)">-help</text><text class="terminal-231556883-r6" x="427" y="1093.6" textLength="24.4" clip-path="url(#terminal-2315568 [...]
-</text><text class="terminal-231556883-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-231556883-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-231556883-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-231556883-line-45)">
+    <g class="terminal-2392640782-matrix">
+    <text class="terminal-2392640782-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2392640782-line-0)">
+</text><text class="terminal-2392640782-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2392640782-line-1)">Usage:&#160;</text><text class="terminal-2392640782-r1" x="97.6" y="44.4" textLength="561.2" clip-path="url(#terminal-2392640782-line-1)">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-2392640782-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-1)">
+</text><text class="terminal-2392640782-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-2)">
+</text><text class="terminal-2392640782-r2" x="12.2" y="93.2" textLength="1000.4" clip-path="url(#terminal-2392640782-line-3)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.</text><text class="terminal-2392640782-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-3)">
+</text><text class="terminal-2392640782-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-4)">
+</text><text class="terminal-2392640782-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2392640782-line-5)">╭─</text><text class="terminal-2392640782-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2392640782-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2392640782-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-239264 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-6)">│</text><text class="terminal-2392640782-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-6)">-</text><text class="terminal-2392640782-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2392640782-line-6)">-python</text><text class="terminal-2392640782-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#terminal-239 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-7)">│</text><text class="terminal-2392640782-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#terminal-2392640782-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-2392640782-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-8)">│</text><text class="terminal-2392640782-r4" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-2392640782-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-2392640782-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-9)">│</text><text class="terminal-2392640782-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-9)">-</text><text class="terminal-2392640782-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-2392640782-line-9)">-load</text><text class="terminal-2392640782-r5" x="97.6" y="239.6" textLength="158.6" clip-path="url(#terminal-23926 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2392640782-line-10)">│</text><text class="terminal-2392640782-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2392640782-line-10)">-</text><text class="terminal-2392640782-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-2392640782-line-10)">-load</text><text class="terminal-2392640782-r5" x="97.6" y="264" textLength="244" clip-path="url(#terminal-2392640782-l [...]
+</text><text class="terminal-2392640782-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-11)">│</text><text class="terminal-2392640782-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-11)">-</text><text class="terminal-2392640782-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-2392640782-line-11)">-backend</text><text class="terminal-2392640782-r6" x="366" y="288.4" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-2392640782-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-12)">│</text><text class="terminal-2392640782-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-12)">-</text><text class="terminal-2392640782-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-2392640782-line-12)">-postgres</text><text class="terminal-2392640782-r5" x="146.4" y="312.8" textLength="97.6" clip-path="url(#term [...]
+</text><text class="terminal-2392640782-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-13)">│</text><text class="terminal-2392640782-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-13)">-</text><text class="terminal-2392640782-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-2392640782-line-13)">-mysql</text><text class="terminal-2392640782-r5" x="109.8" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2392640782-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-14)">│</text><text class="terminal-2392640782-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-14)">-</text><text class="terminal-2392640782-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-2392640782-line-14)">-mssql</text><text class="terminal-2392640782-r5" x="109.8" y="361.6" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2392640782-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2392640782-line-15)">│</text><text class="terminal-2392640782-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2392640782-line-15)">-</text><text class="terminal-2392640782-r5" x="36.6" y="386" textLength="146.4" clip-path="url(#terminal-2392640782-line-15)">-integration</text><text class="terminal-2392640782-r2" x="414.8" y="386" textLength="1024.8" clip-path="url(#termina [...]
+</text><text class="terminal-2392640782-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-16)">│</text><text class="terminal-2392640782-r7" x="414.8" y="410.4" textLength="1024.8" clip-path="url(#terminal-2392640782-line-16)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino</text><text class="terminal-2392640782-r4" x="1451.8" y="410.4" textLeng [...]
+</text><text class="terminal-2392640782-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-17)">│</text><text class="terminal-2392640782-r7" x="414.8" y="434.8" textLength="1024.8" clip-path="url(#terminal-2392640782-line-17)">|&#160;all)&#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;&#16 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-18)">│</text><text class="terminal-2392640782-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-18)">-</text><text class="terminal-2392640782-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-2392640782-line-18)">-forward</text><text class="terminal-2392640782-r5" x="134.2" y="459.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-2392640782-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-19)">│</text><text class="terminal-2392640782-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-19)">-</text><text class="terminal-2392640782-r5" x="36.6" y="483.6" textLength="36.6" clip-path="url(#terminal-2392640782-line-19)">-db</text><text class="terminal-2392640782-r5" x="73.2" y="483.6" textLength="73.2" clip-path="url(#terminal-239 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-2392640782-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2392640782-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-2392640782-line-20)">
+</text><text class="terminal-2392640782-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-2392640782-line-21)">╭─</text><text class="terminal-2392640782-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-2392640782-line-21)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2392640782-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-2392640782-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-22)">│</text><text class="terminal-2392640782-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-22)">-</text><text class="terminal-2392640782-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-2392640782-line-22)">-use</text><text class="terminal-2392640782-r5" x="85.4" y="556.8" textLength="195.2" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-23)">│</text><text class="terminal-2392640782-r2" x="390.4" y="581.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-23)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;</text><text class="terminal-2392640782-r4" x="1451.8" y="581.2" textLength="12.2" cli [...]
+</text><text class="terminal-2392640782-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-24)">│</text><text class="terminal-2392640782-r2" x="390.4" y="605.6" textLength="573.4" clip-path="url(#terminal-2392640782-line-24)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2392640782-r5" x="963.8" y="605.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-24)">-</text><text class="terminal-239 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2392640782-line-25)">│</text><text class="terminal-2392640782-r7" x="390.4" y="630" textLength="1049.2" clip-path="url(#terminal-2392640782-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2392640782-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-26)">│</text><text class="terminal-2392640782-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-26)">-</text><text class="terminal-2392640782-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2392640782-line-26)">-airflow</text><text class="terminal-2392640782-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2392640782-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-27)">│</text><text class="terminal-2392640782-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-27)">-</text><text class="terminal-2392640782-r5" x="36.6" y="678.8" textLength="48.8" clip-path="url(#terminal-2392640782-line-27)">-use</text><text class="terminal-2392640782-r5" x="85.4" y="678.8" textLength="231.8" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-28)">│</text><text class="terminal-2392640782-r2" x="390.4" y="703.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-28)">entering&#160;breeze.&#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-2392640782-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-29)">│</text><text class="terminal-2392640782-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-29)">-</text><text class="terminal-2392640782-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-2392640782-line-29)">-package</text><text class="terminal-2392640782-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2392640782-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2392640782-line-30)">│</text><text class="terminal-2392640782-r4" x="390.4" y="752" textLength="658.8" clip-path="url(#terminal-2392640782-line-30)">[default:&#160;wheel]&#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-2392640782-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-31)">│</text><text class="terminal-2392640782-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-31)">-</text><text class="terminal-2392640782-r5" x="36.6" y="776.4" textLength="73.2" clip-path="url(#terminal-2392640782-line-31)">-force</text><text class="terminal-2392640782-r5" x="109.8" y="776.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2392640782-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-32)">│</text><text class="terminal-2392640782-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-32)">-</text><text class="terminal-2392640782-r5" x="36.6" y="800.8" textLength="73.2" clip-path="url(#terminal-2392640782-line-32)">-mount</text><text class="terminal-2392640782-r5" x="109.8" y="800.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2392640782-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-33)">│</text><text class="terminal-2392640782-r2" x="390.4" y="825.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-33)">selected).&#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-2392640782-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-34)">│</text><text class="terminal-2392640782-r7" x="390.4" y="849.6" textLength="1049.2" clip-path="url(#terminal-2392640782-line-34)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-2392640782-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2392640782-line-35)">│</text><text class="terminal-2392640782-r4" x="390.4" y="874" textLength="1049.2" clip-path="url(#terminal-2392640782-line-35)">[default:&#160;selected]&#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-2392640782-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-36)">│</text><text class="terminal-2392640782-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-36)">-</text><text class="terminal-2392640782-r5" x="36.6" y="898.4" textLength="73.2" clip-path="url(#terminal-2392640782-line-36)">-image</text><text class="terminal-2392640782-r5" x="109.8" y="898.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2392640782-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-37)">│</text><text class="terminal-2392640782-r2" x="390.4" y="922.8" textLength="1049.2" clip-path="url(#terminal-2392640782-line-37)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2392640782-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-38)">│</text><text class="terminal-2392640782-r7" x="390.4" y="947.2" textLength="1049.2" clip-path="url(#terminal-2392640782-line-38)">(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;&#1 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="971.6" textLength="1464" clip-path="url(#terminal-2392640782-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2392640782-r2" x="1464" y="971.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-39)">
+</text><text class="terminal-2392640782-r4" x="0" y="996" textLength="24.4" clip-path="url(#terminal-2392640782-line-40)">╭─</text><text class="terminal-2392640782-r4" x="24.4" y="996" textLength="1415.2" clip-path="url(#terminal-2392640782-line-40)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2392640782-r4" x="1439.6" y="996" textLength="24.4" clip-path="url(#terminal-239264078 [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-41)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-41)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1020.4" textLength="48.8" clip-path="url(#terminal-2392640782-line-41)">-dry</text><text class="terminal-2392640782-r5" x="85.4" y="1020.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-42)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-42)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-2392640782-line-42)">-github</text><text class="terminal-2392640782-r5" x="122" y="1044.8" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-43)">│</text><text class="terminal-2392640782-r4" x="475.8" y="1069.2" textLength="585.6" clip-path="url(#terminal-2392640782-line-43)">[default:&#160;apache/airflow]&#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-2392640782-r4" x="1451.8" y="1069.2" te [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-44)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-44)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#terminal-2392640782-line-44)">-airflow</text><text class="terminal-2392640782-r5" x="134.2" y="1093.6" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2392640782-line-45)">│</text><text class="terminal-2392640782-r2" x="475.8" y="1118" textLength="963.8" clip-path="url(#terminal-2392640782-line-45)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-2392640782-r4" x="1451.8" y="1118" textLength="12.2" clip-path="url [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-2392640782-line-46)">│</text><text class="terminal-2392640782-r7" x="475.8" y="1142.4" textLength="963.8" clip-path="url(#terminal-2392640782-line-46)">(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;&# [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-47)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-2392640782-line-47)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-2392640782-line-47)">-answer</text><text class="terminal-2392640782-r6" x="427" y="1166.8" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-48)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-2392640782-line-48)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-2392640782-line-48)">-verbose</text><text class="terminal-2392640782-r6" x="427" y="1191.2" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-49)">│</text><text class="terminal-2392640782-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-2392640782-line-49)">-</text><text class="terminal-2392640782-r5" x="36.6" y="1215.6" textLength="61" clip-path="url(#terminal-2392640782-line-49)">-help</text><text class="terminal-2392640782-r6" x="427" y="1215.6" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2392640782-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-2392640782-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2392640782-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-2392640782-line-50)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-tests.svg b/images/breeze/output-tests.svg
index 914f2c4587..1d819816f2 100644
--- a/images/breeze/output-tests.svg
+++ b/images/breeze/output-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 684.4" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 879.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,145 +19,177 @@
         font-weight: 700;
     }
 
-    .terminal-1343491645-matrix {
+    .terminal-3301140235-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1343491645-title {
+    .terminal-3301140235-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1343491645-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1343491645-r2 { fill: #c5c8c6 }
-.terminal-1343491645-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1343491645-r4 { fill: #868887 }
-.terminal-1343491645-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1343491645-r6 { fill: #8d7b39 }
-.terminal-1343491645-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-3301140235-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3301140235-r2 { fill: #c5c8c6 }
+.terminal-3301140235-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3301140235-r4 { fill: #868887 }
+.terminal-3301140235-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3301140235-r6 { fill: #8d7b39 }
+.terminal-3301140235-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-1343491645-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="633.4" />
+    <clipPath id="terminal-3301140235-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="828.5999999999999" />
     </clipPath>
-    <clipPath id="terminal-1343491645-line-0">
+    <clipPath id="terminal-3301140235-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-1">
+<clipPath id="terminal-3301140235-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-2">
+<clipPath id="terminal-3301140235-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-3">
+<clipPath id="terminal-3301140235-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-4">
+<clipPath id="terminal-3301140235-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-5">
+<clipPath id="terminal-3301140235-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-6">
+<clipPath id="terminal-3301140235-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-7">
+<clipPath id="terminal-3301140235-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-8">
+<clipPath id="terminal-3301140235-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-9">
+<clipPath id="terminal-3301140235-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-10">
+<clipPath id="terminal-3301140235-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-11">
+<clipPath id="terminal-3301140235-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-12">
+<clipPath id="terminal-3301140235-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-13">
+<clipPath id="terminal-3301140235-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-14">
+<clipPath id="terminal-3301140235-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-15">
+<clipPath id="terminal-3301140235-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-16">
+<clipPath id="terminal-3301140235-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-17">
+<clipPath id="terminal-3301140235-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-18">
+<clipPath id="terminal-3301140235-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-19">
+<clipPath id="terminal-3301140235-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-20">
+<clipPath id="terminal-3301140235-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-21">
+<clipPath id="terminal-3301140235-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-22">
+<clipPath id="terminal-3301140235-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-23">
+<clipPath id="terminal-3301140235-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1343491645-line-24">
+<clipPath id="terminal-3301140235-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-3301140235-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3301140235-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3301140235-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3301140235-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3301140235-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3301140235-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3301140235-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3301140235-line-32">
+    <rect x="0" y="782.3" 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="682.4" rx="8"/><text class="terminal-1343491645-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="877.6" rx="8"/><text class="terminal-3301140235-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</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-1343491645-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3301140235-clip-terminal)">
     
-    <g class="terminal-1343491645-matrix">
-    <text class="terminal-1343491645-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1343491645-line-0)">
-</text><text class="terminal-1343491645-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1343491645-line-1)">Usage:&#160;</text><text class="terminal-1343491645-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-1343491645-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1343491645-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-1)">
-</text><text class="terminal-1343491645-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-2)">
-</text><text class="terminal-1343491645-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-1343491645-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-1343491645-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-3)">
-</text><text class="terminal-1343491645-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-4)">
-</text><text class="terminal-1343491645-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1343491645-line-5)">╭─</text><text class="terminal-1343491645-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1343491645-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1343491645-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
-</text><text class="terminal-1343491645-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-6)">│</text><text class="terminal-1343491645-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-6)">-</text><text class="terminal-1343491645-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-1343491645-line-6)">-integration</text><text class="terminal-1343491645-r2" x="378.2" y="166.4" textLength="1061.4" clip-path="url(#te [...]
-</text><text class="terminal-1343491645-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-7)">│</text><text class="terminal-1343491645-r6" x="378.2" y="190.8" textLength="1061.4" clip-path="url(#terminal-1343491645-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;</text><text class="terminal-1343491645-r4" x="1451.8" y="190. [...]
-</text><text class="terminal-1343491645-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-8)">│</text><text class="terminal-1343491645-r6" x="378.2" y="215.2" textLength="1061.4" clip-path="url(#terminal-1343491645-line-8)">all)&#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-1343491645-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-9)">│</text><text class="terminal-1343491645-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-9)">-</text><text class="terminal-1343491645-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-1343491645-line-9)">-test</text><text class="terminal-1343491645-r5" x="97.6" y="239.6" textLength="61" clip-path="url(#terminal-13434916 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1343491645-line-10)">│</text><text class="terminal-1343491645-r6" x="378.2" y="264" textLength="1061.4" clip-path="url(#terminal-1343491645-line-10)">(All&#160;|&#160;Always&#160;|&#160;Core&#160;|&#160;Providers&#160;|&#160;API&#160;|&#160;CLI&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;WWW&#160;|&#160;Postgres&#160;|&#160;&#160;</text><text class="terminal-1343491645-r4" x="14 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-11)">│</text><text class="terminal-1343491645-r6" x="378.2" y="288.4" textLength="1061.4" clip-path="url(#terminal-1343491645-line-11)">MySQL&#160;|&#160;Helm&#160;|&#160;Quarantined)&#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;&#16 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-12)">│</text><text class="terminal-1343491645-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-12)">-</text><text class="terminal-1343491645-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-1343491645-line-12)">-limit</text><text class="terminal-1343491645-r5" x="109.8" y="312.8" textLength="195.2" clip-path="url(#termina [...]
-</text><text class="terminal-1343491645-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-13)">│</text><text class="terminal-1343491645-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-13)">-</text><text class="terminal-1343491645-r5" x="36.6" y="337.2" textLength="36.6" clip-path="url(#terminal-1343491645-line-13)">-db</text><text class="terminal-1343491645-r5" x="73.2" y="337.2" textLength="73.2" clip-path="url(#terminal-134 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-14)">│</text><text class="terminal-1343491645-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-14)">-</text><text class="terminal-1343491645-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1343491645-line-14)">-backend</text><text class="terminal-1343491645-r7" x="329.4" y="361.6" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1343491645-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1343491645-line-15)">│</text><text class="terminal-1343491645-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1343491645-line-15)">-</text><text class="terminal-1343491645-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-1343491645-line-15)">-python</text><text class="terminal-1343491645-r7" x="329.4" y="386" textLength="24.4" clip-path="url(#terminal-134349 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-16)">│</text><text class="terminal-1343491645-r4" x="378.2" y="410.4" textLength="732" clip-path="url(#terminal-1343491645-line-16)">[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-1343491645-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-17)">│</text><text class="terminal-1343491645-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-17)">-</text><text class="terminal-1343491645-r5" x="36.6" y="434.8" textLength="109.8" clip-path="url(#terminal-1343491645-line-17)">-postgres</text><text class="terminal-1343491645-r5" x="146.4" y="434.8" textLength="97.6" clip-path="url(#term [...]
-</text><text class="terminal-1343491645-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-18)">│</text><text class="terminal-1343491645-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-18)">-</text><text class="terminal-1343491645-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-1343491645-line-18)">-mysql</text><text class="terminal-1343491645-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1343491645-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-19)">│</text><text class="terminal-1343491645-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-19)">-</text><text class="terminal-1343491645-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1343491645-line-19)">-mssql</text><text class="terminal-1343491645-r5" x="109.8" y="483.6" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1343491645-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1343491645-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1343491645-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1343491645-line-20)">
-</text><text class="terminal-1343491645-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-1343491645-line-21)">╭─</text><text class="terminal-1343491645-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-1343491645-line-21)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1343491645-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#terminal-134 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-22)">│</text><text class="terminal-1343491645-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-22)">-</text><text class="terminal-1343491645-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-1343491645-line-22)">-dry</text><text class="terminal-1343491645-r5" x="85.4" y="556.8" textLength="48.8" clip-path="url(#terminal-13 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-23)">│</text><text class="terminal-1343491645-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-23)">-</text><text class="terminal-1343491645-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-1343491645-line-23)">-verbose</text><text class="terminal-1343491645-r7" x="158.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1343491645-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-24)">│</text><text class="terminal-1343491645-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-24)">-</text><text class="terminal-1343491645-r5" x="36.6" y="605.6" textLength="61" clip-path="url(#terminal-1343491645-line-24)">-help</text><text class="terminal-1343491645-r7" x="158.6" y="605.6" textLength="24.4" clip-path="url(#terminal-13 [...]
-</text><text class="terminal-1343491645-r4" x="0" y="630" textLength="1464" clip-path="url(#terminal-1343491645-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1343491645-r2" x="1464" y="630" textLength="12.2" clip-path="url(#terminal-1343491645-line-25)">
+    <g class="terminal-3301140235-matrix">
+    <text class="terminal-3301140235-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3301140235-line-0)">
+</text><text class="terminal-3301140235-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3301140235-line-1)">Usage:&#160;</text><text class="terminal-3301140235-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-3301140235-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3301140235-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-1)">
+</text><text class="terminal-3301140235-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-2)">
+</text><text class="terminal-3301140235-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-3301140235-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-3301140235-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-3)">
+</text><text class="terminal-3301140235-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-4)">
+</text><text class="terminal-3301140235-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3301140235-line-5)">╭─</text><text class="terminal-3301140235-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3301140235-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3301140235-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-3301140235-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-6)">│</text><text class="terminal-3301140235-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-6)">-</text><text class="terminal-3301140235-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-3301140235-line-6)">-integration</text><text class="terminal-3301140235-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
+</text><text class="terminal-3301140235-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-7)">│</text><text class="terminal-3301140235-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-3301140235-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-3301140235-r4" x="1451.8" y=" [...]
+</text><text class="terminal-3301140235-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-8)">│</text><text class="terminal-3301140235-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-8)">-</text><text class="terminal-3301140235-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-3301140235-line-8)">-test</text><text class="terminal-3301140235-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-33011402 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-9)">│</text><text class="terminal-3301140235-r6" x="317.2" y="239.6" textLength="1122.4" clip-path="url(#terminal-3301140235-line-9)">(All&#160;|&#160;Always&#160;|&#160;Core&#160;|&#160;Providers&#160;|&#160;API&#160;|&#160;CLI&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;WWW&#160;|&#160;Postgres&#160;|&#160;MySQL&#160;</text><text class="terminal-3301140235-r4 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3301140235-line-10)">│</text><text class="terminal-3301140235-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-3301140235-line-10)">|&#160;Helm&#160;|&#160;Quarantined)&#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-3301140235-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-11)">│</text><text class="terminal-3301140235-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-11)">-</text><text class="terminal-3301140235-r5" x="36.6" y="288.4" textLength="36.6" clip-path="url(#terminal-3301140235-line-11)">-db</text><text class="terminal-3301140235-r5" x="73.2" y="288.4" textLength="73.2" clip-path="url(#terminal-330 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-12)">│</text><text class="terminal-3301140235-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-12)">-</text><text class="terminal-3301140235-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-3301140235-line-12)">-backend</text><text class="terminal-3301140235-r7" x="268.4" y="312.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3301140235-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-13)">│</text><text class="terminal-3301140235-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-13)">-</text><text class="terminal-3301140235-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-3301140235-line-13)">-python</text><text class="terminal-3301140235-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3301140235-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-14)">│</text><text class="terminal-3301140235-r4" x="317.2" y="361.6" textLength="732" clip-path="url(#terminal-3301140235-line-14)">[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-3301140235-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3301140235-line-15)">│</text><text class="terminal-3301140235-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3301140235-line-15)">-</text><text class="terminal-3301140235-r5" x="36.6" y="386" textLength="109.8" clip-path="url(#terminal-3301140235-line-15)">-postgres</text><text class="terminal-3301140235-r5" x="146.4" y="386" textLength="97.6" clip-path="url(#terminal-330 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-16)">│</text><text class="terminal-3301140235-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-16)">-</text><text class="terminal-3301140235-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-3301140235-line-16)">-mysql</text><text class="terminal-3301140235-r5" x="109.8" y="410.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3301140235-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-17)">│</text><text class="terminal-3301140235-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-17)">-</text><text class="terminal-3301140235-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-3301140235-line-17)">-mssql</text><text class="terminal-3301140235-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3301140235-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-3301140235-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3301140235-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-18)">
+</text><text class="terminal-3301140235-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-3301140235-line-19)">╭─</text><text class="terminal-3301140235-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-3301140235-line-19)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3301140235-r4" x="1439.6" y="483.6" textLength="24.4" clip-pat [...]
+</text><text class="terminal-3301140235-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3301140235-line-20)">│</text><text class="terminal-3301140235-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3301140235-line-20)">-</text><text class="terminal-3301140235-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-3301140235-line-20)">-limit</text><text class="terminal-3301140235-r5" x="109.8" y="508" textLength="195.2" clip-path="url(#terminal-330114 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-21)">│</text><text class="terminal-3301140235-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-21)">-</text><text class="terminal-3301140235-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-3301140235-line-21)">-image</text><text class="terminal-3301140235-r5" x="109.8" y="532.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3301140235-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-22)">│</text><text class="terminal-3301140235-r2" x="378.2" y="556.8" textLength="1061.4" clip-path="url(#terminal-3301140235-line-22)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-3301140235-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-23)">│</text><text class="terminal-3301140235-r6" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#terminal-3301140235-line-23)">(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;&#1 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-24)">│</text><text class="terminal-3301140235-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-24)">-</text><text class="terminal-3301140235-r5" x="36.6" y="605.6" textLength="73.2" clip-path="url(#terminal-3301140235-line-24)">-mount</text><text class="terminal-3301140235-r5" x="109.8" y="605.6" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-3301140235-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3301140235-line-25)">│</text><text class="terminal-3301140235-r2" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-3301140235-line-25)">selected).&#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-3301140235-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-26)">│</text><text class="terminal-3301140235-r6" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-3301140235-line-26)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-3301140235-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-27)">│</text><text class="terminal-3301140235-r4" x="378.2" y="678.8" textLength="1061.4" clip-path="url(#terminal-3301140235-line-27)">[default:&#160;selected]&#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-3301140235-r4" x="0" y="703.2" textLength="1464" clip-path="url(#terminal-3301140235-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3301140235-r2" x="1464" y="703.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-28)">
+</text><text class="terminal-3301140235-r4" x="0" y="727.6" textLength="24.4" clip-path="url(#terminal-3301140235-line-29)">╭─</text><text class="terminal-3301140235-r4" x="24.4" y="727.6" textLength="1415.2" clip-path="url(#terminal-3301140235-line-29)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3301140235-r4" x="1439.6" y="727.6" textLength="24.4" clip-path="url(#terminal-330 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3301140235-line-30)">│</text><text class="terminal-3301140235-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-3301140235-line-30)">-</text><text class="terminal-3301140235-r5" x="36.6" y="752" textLength="48.8" clip-path="url(#terminal-3301140235-line-30)">-dry</text><text class="terminal-3301140235-r5" x="85.4" y="752" textLength="48.8" clip-path="url(#terminal-3301140235 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-31)">│</text><text class="terminal-3301140235-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-31)">-</text><text class="terminal-3301140235-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-3301140235-line-31)">-verbose</text><text class="terminal-3301140235-r7" x="158.6" y="776.4" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3301140235-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-32)">│</text><text class="terminal-3301140235-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-32)">-</text><text class="terminal-3301140235-r5" x="36.6" y="800.8" textLength="61" clip-path="url(#terminal-3301140235-line-32)">-help</text><text class="terminal-3301140235-r7" x="158.6" y="800.8" textLength="24.4" clip-path="url(#terminal-33 [...]
+</text><text class="terminal-3301140235-r4" x="0" y="825.2" textLength="1464" clip-path="url(#terminal-3301140235-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3301140235-r2" x="1464" y="825.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-33)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-verify-image.svg b/images/breeze/output-verify-image.svg
index b79efb93f2..9c6d1a641f 100644
--- a/images/breeze/output-verify-image.svg
+++ b/images/breeze/output-verify-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,109 +19,117 @@
         font-weight: 700;
     }
 
-    .terminal-4166710372-matrix {
+    .terminal-4078052804-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-4166710372-title {
+    .terminal-4078052804-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-4166710372-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4166710372-r2 { fill: #c5c8c6 }
-.terminal-4166710372-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4166710372-r4 { fill: #868887 }
-.terminal-4166710372-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4166710372-r6 { fill: #98a84b;font-weight: bold }
-.terminal-4166710372-r7 { fill: #8d7b39 }
+    .terminal-4078052804-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4078052804-r2 { fill: #c5c8c6 }
+.terminal-4078052804-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4078052804-r4 { fill: #868887 }
+.terminal-4078052804-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4078052804-r6 { fill: #98a84b;font-weight: bold }
+.terminal-4078052804-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-4166710372-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+    <clipPath id="terminal-4078052804-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
     </clipPath>
-    <clipPath id="terminal-4166710372-line-0">
+    <clipPath id="terminal-4078052804-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-1">
+<clipPath id="terminal-4078052804-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-2">
+<clipPath id="terminal-4078052804-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-3">
+<clipPath id="terminal-4078052804-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-4">
+<clipPath id="terminal-4078052804-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-5">
+<clipPath id="terminal-4078052804-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-6">
+<clipPath id="terminal-4078052804-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-7">
+<clipPath id="terminal-4078052804-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-8">
+<clipPath id="terminal-4078052804-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-9">
+<clipPath id="terminal-4078052804-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-10">
+<clipPath id="terminal-4078052804-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-11">
+<clipPath id="terminal-4078052804-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-12">
+<clipPath id="terminal-4078052804-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-13">
+<clipPath id="terminal-4078052804-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-14">
+<clipPath id="terminal-4078052804-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4166710372-line-15">
+<clipPath id="terminal-4078052804-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-4078052804-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4078052804-line-17">
+    <rect x="0" y="416.3" 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="462.8" rx="8"/><text class="terminal-4166710372-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="terminal-4078052804-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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-4166710372-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4078052804-clip-terminal)">
     
-    <g class="terminal-4166710372-matrix">
-    <text class="terminal-4166710372-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4166710372-line-0)">
-</text><text class="terminal-4166710372-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4166710372-line-1)">Usage:&#160;</text><text class="terminal-4166710372-r1" x="97.6" y="44.4" textLength="634.4" clip-path="url(#terminal-4166710372-line-1)">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4166710372-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-1)">
-</text><text class="terminal-4166710372-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-2)">
-</text><text class="terminal-4166710372-r2" x="12.2" y="93.2" textLength="195.2" clip-path="url(#terminal-4166710372-line-3)">Verify&#160;CI&#160;image.</text><text class="terminal-4166710372-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-3)">
-</text><text class="terminal-4166710372-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-4)">
-</text><text class="terminal-4166710372-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4166710372-line-5)">╭─</text><text class="terminal-4166710372-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4166710372-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4166710372-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-6)">│</text><text class="terminal-4166710372-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-6)">-</text><text class="terminal-4166710372-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-4166710372-line-6)">-image</text><text class="terminal-4166710372-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-4166 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-7)">│</text><text class="terminal-4166710372-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-7)">-</text><text class="terminal-4166710372-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-4166710372-line-7)">-python</text><text class="terminal-4166710372-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-8)">│</text><text class="terminal-4166710372-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-4166710372-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;&#1 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-9)">│</text><text class="terminal-4166710372-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-9)">-</text><text class="terminal-4166710372-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-4166710372-line-9)">-image</text><text class="terminal-4166710372-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-41 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-4166710372-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4166710372-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-4166710372-line-10)">
-</text><text class="terminal-4166710372-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-4166710372-line-11)">╭─</text><text class="terminal-4166710372-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-4166710372-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4166710372-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-416 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-12)">│</text><text class="terminal-4166710372-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-12)">-</text><text class="terminal-4166710372-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-4166710372-line-12)">-verbose</text><text class="terminal-4166710372-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-4166710372-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-13)">│</text><text class="terminal-4166710372-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-13)">-</text><text class="terminal-4166710372-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-4166710372-line-13)">-dry</text><text class="terminal-4166710372-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-41 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-14)">│</text><text class="terminal-4166710372-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-14)">-</text><text class="terminal-4166710372-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-4166710372-line-14)">-github</text><text class="terminal-4166710372-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-4166710372-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4166710372-line-15)">│</text><text class="terminal-4166710372-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4166710372-line-15)">-</text><text class="terminal-4166710372-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-4166710372-line-15)">-help</text><text class="terminal-4166710372-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-4166710372 [...]
-</text><text class="terminal-4166710372-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-4166710372-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4166710372-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-16)">
+    <g class="terminal-4078052804-matrix">
+    <text class="terminal-4078052804-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4078052804-line-0)">
+</text><text class="terminal-4078052804-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4078052804-line-1)">Usage:&#160;</text><text class="terminal-4078052804-r1" x="97.6" y="44.4" textLength="634.4" clip-path="url(#terminal-4078052804-line-1)">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4078052804-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-1)">
+</text><text class="terminal-4078052804-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-2)">
+</text><text class="terminal-4078052804-r2" x="12.2" y="93.2" textLength="195.2" clip-path="url(#terminal-4078052804-line-3)">Verify&#160;CI&#160;image.</text><text class="terminal-4078052804-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4078052804-line-3)">
+</text><text class="terminal-4078052804-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-4)">
+</text><text class="terminal-4078052804-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4078052804-line-5)">╭─</text><text class="terminal-4078052804-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4078052804-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4078052804-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-6)">│</text><text class="terminal-4078052804-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-6)">-</text><text class="terminal-4078052804-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-4078052804-line-6)">-image</text><text class="terminal-4078052804-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-4078 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-7)">│</text><text class="terminal-4078052804-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-7)">-</text><text class="terminal-4078052804-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-4078052804-line-7)">-python</text><text class="terminal-4078052804-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4078052804-line-8)">│</text><text class="terminal-4078052804-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-4078052804-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;&#1 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-9)">│</text><text class="terminal-4078052804-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-9)">-</text><text class="terminal-4078052804-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-4078052804-line-9)">-image</text><text class="terminal-4078052804-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-40 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4078052804-line-10)">│</text><text class="terminal-4078052804-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-4078052804-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-4078052804-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-11)">│</text><text class="terminal-4078052804-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-4078052804-line-11)">(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-4078052804-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-4078052804-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4078052804-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-12)">
+</text><text class="terminal-4078052804-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-4078052804-line-13)">╭─</text><text class="terminal-4078052804-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-4078052804-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4078052804-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-407 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-14)">│</text><text class="terminal-4078052804-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4078052804-line-14)">-</text><text class="terminal-4078052804-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-4078052804-line-14)">-verbose</text><text class="terminal-4078052804-r6" x="280.6" y="361.6" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-4078052804-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4078052804-line-15)">│</text><text class="terminal-4078052804-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4078052804-line-15)">-</text><text class="terminal-4078052804-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-4078052804-line-15)">-dry</text><text class="terminal-4078052804-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-4078052804 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-16)">│</text><text class="terminal-4078052804-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-4078052804-line-16)">-</text><text class="terminal-4078052804-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-4078052804-line-16)">-github</text><text class="terminal-4078052804-r5" x="122" y="410.4" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-4078052804-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-17)">│</text><text class="terminal-4078052804-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-4078052804-line-17)">-</text><text class="terminal-4078052804-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-4078052804-line-17)">-help</text><text class="terminal-4078052804-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-40 [...]
+</text><text class="terminal-4078052804-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-4078052804-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4078052804-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-4078052804-line-18)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-verify-prod-image.svg b/images/breeze/output-verify-prod-image.svg
index 4bc7a36527..48b61a3082 100644
--- a/images/breeze/output-verify-prod-image.svg
+++ b/images/breeze/output-verify-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,109 +19,117 @@
         font-weight: 700;
     }
 
-    .terminal-2512124451-matrix {
+    .terminal-1294281603-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2512124451-title {
+    .terminal-1294281603-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2512124451-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2512124451-r2 { fill: #c5c8c6 }
-.terminal-2512124451-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2512124451-r4 { fill: #868887 }
-.terminal-2512124451-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2512124451-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2512124451-r7 { fill: #8d7b39 }
+    .terminal-1294281603-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1294281603-r2 { fill: #c5c8c6 }
+.terminal-1294281603-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1294281603-r4 { fill: #868887 }
+.terminal-1294281603-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1294281603-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1294281603-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-2512124451-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+    <clipPath id="terminal-1294281603-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
     </clipPath>
-    <clipPath id="terminal-2512124451-line-0">
+    <clipPath id="terminal-1294281603-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-1">
+<clipPath id="terminal-1294281603-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-2">
+<clipPath id="terminal-1294281603-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-3">
+<clipPath id="terminal-1294281603-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-4">
+<clipPath id="terminal-1294281603-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-5">
+<clipPath id="terminal-1294281603-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-6">
+<clipPath id="terminal-1294281603-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-7">
+<clipPath id="terminal-1294281603-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-8">
+<clipPath id="terminal-1294281603-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-9">
+<clipPath id="terminal-1294281603-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-10">
+<clipPath id="terminal-1294281603-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-11">
+<clipPath id="terminal-1294281603-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-12">
+<clipPath id="terminal-1294281603-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-13">
+<clipPath id="terminal-1294281603-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-14">
+<clipPath id="terminal-1294281603-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2512124451-line-15">
+<clipPath id="terminal-1294281603-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1294281603-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1294281603-line-17">
+    <rect x="0" y="416.3" 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="462.8" rx="8"/><text class="terminal-2512124451-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-prod-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="511.6" rx="8"/><text class="terminal-1294281603-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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-2512124451-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1294281603-clip-terminal)">
     
-    <g class="terminal-2512124451-matrix">
-    <text class="terminal-2512124451-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2512124451-line-0)">
-</text><text class="terminal-2512124451-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2512124451-line-1)">Usage:&#160;</text><text class="terminal-2512124451-r1" x="97.6" y="44.4" textLength="695.4" clip-path="url(#terminal-2512124451-line-1)">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2512124451-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-1)">
-</text><text class="terminal-2512124451-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-2)">
-</text><text class="terminal-2512124451-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#terminal-2512124451-line-3)">Verify&#160;Production&#160;image.</text><text class="terminal-2512124451-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-3)">
-</text><text class="terminal-2512124451-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-4)">
-</text><text class="terminal-2512124451-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2512124451-line-5)">╭─</text><text class="terminal-2512124451-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2512124451-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2512124451-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-6)">│</text><text class="terminal-2512124451-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-6)">-</text><text class="terminal-2512124451-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2512124451-line-6)">-image</text><text class="terminal-2512124451-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-2512 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-7)">│</text><text class="terminal-2512124451-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-7)">-</text><text class="terminal-2512124451-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-2512124451-line-7)">-python</text><text class="terminal-2512124451-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-2 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-8)">│</text><text class="terminal-2512124451-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-2512124451-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;&#1 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-9)">│</text><text class="terminal-2512124451-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-9)">-</text><text class="terminal-2512124451-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2512124451-line-9)">-image</text><text class="terminal-2512124451-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-25 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-2512124451-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2512124451-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-2512124451-line-10)">
-</text><text class="terminal-2512124451-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-2512124451-line-11)">╭─</text><text class="terminal-2512124451-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-2512124451-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2512124451-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-251 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-12)">│</text><text class="terminal-2512124451-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-12)">-</text><text class="terminal-2512124451-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-2512124451-line-12)">-verbose</text><text class="terminal-2512124451-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-2512124451-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-13)">│</text><text class="terminal-2512124451-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-13)">-</text><text class="terminal-2512124451-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-2512124451-line-13)">-dry</text><text class="terminal-2512124451-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-25 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-14)">│</text><text class="terminal-2512124451-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-14)">-</text><text class="terminal-2512124451-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-2512124451-line-14)">-github</text><text class="terminal-2512124451-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-2512124451-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2512124451-line-15)">│</text><text class="terminal-2512124451-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2512124451-line-15)">-</text><text class="terminal-2512124451-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-2512124451-line-15)">-help</text><text class="terminal-2512124451-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-2512124451 [...]
-</text><text class="terminal-2512124451-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2512124451-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2512124451-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-16)">
+    <g class="terminal-1294281603-matrix">
+    <text class="terminal-1294281603-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1294281603-line-0)">
+</text><text class="terminal-1294281603-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1294281603-line-1)">Usage:&#160;</text><text class="terminal-1294281603-r1" x="97.6" y="44.4" textLength="695.4" clip-path="url(#terminal-1294281603-line-1)">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1294281603-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-1)">
+</text><text class="terminal-1294281603-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-2)">
+</text><text class="terminal-1294281603-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#terminal-1294281603-line-3)">Verify&#160;Production&#160;image.</text><text class="terminal-1294281603-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1294281603-line-3)">
+</text><text class="terminal-1294281603-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-4)">
+</text><text class="terminal-1294281603-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1294281603-line-5)">╭─</text><text class="terminal-1294281603-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1294281603-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1294281603-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-6)">│</text><text class="terminal-1294281603-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-6)">-</text><text class="terminal-1294281603-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-1294281603-line-6)">-image</text><text class="terminal-1294281603-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-1294 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-7)">│</text><text class="terminal-1294281603-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-7)">-</text><text class="terminal-1294281603-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-1294281603-line-7)">-python</text><text class="terminal-1294281603-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1294281603-line-8)">│</text><text class="terminal-1294281603-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-1294281603-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;&#1 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-9)">│</text><text class="terminal-1294281603-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-9)">-</text><text class="terminal-1294281603-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-1294281603-line-9)">-image</text><text class="terminal-1294281603-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1294281603-line-10)">│</text><text class="terminal-1294281603-r2" x="244" y="264" textLength="1195.6" clip-path="url(#terminal-1294281603-line-10)">to&#160;run&#160;shell&#160;or&#160;tests)&#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-1294281603-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-11)">│</text><text class="terminal-1294281603-r7" x="244" y="288.4" textLength="1195.6" clip-path="url(#terminal-1294281603-line-11)">(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-1294281603-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-1294281603-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1294281603-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-12)">
+</text><text class="terminal-1294281603-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-1294281603-line-13)">╭─</text><text class="terminal-1294281603-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-1294281603-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1294281603-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-129 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-14)">│</text><text class="terminal-1294281603-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1294281603-line-14)">-</text><text class="terminal-1294281603-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1294281603-line-14)">-verbose</text><text class="terminal-1294281603-r6" x="280.6" y="361.6" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1294281603-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1294281603-line-15)">│</text><text class="terminal-1294281603-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1294281603-line-15)">-</text><text class="terminal-1294281603-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1294281603-line-15)">-dry</text><text class="terminal-1294281603-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-1294281603 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-16)">│</text><text class="terminal-1294281603-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1294281603-line-16)">-</text><text class="terminal-1294281603-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-1294281603-line-16)">-github</text><text class="terminal-1294281603-r5" x="122" y="410.4" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1294281603-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-17)">│</text><text class="terminal-1294281603-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1294281603-line-17)">-</text><text class="terminal-1294281603-r5" x="36.6" y="434.8" textLength="61" clip-path="url(#terminal-1294281603-line-17)">-help</text><text class="terminal-1294281603-r6" x="280.6" y="434.8" textLength="24.4" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1294281603-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-1294281603-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1294281603-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-1294281603-line-18)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-verify-provider-packages.svg b/images/breeze/output-verify-provider-packages.svg
index cfb88fbcc4..12853b46a2 100644
--- a/images/breeze/output-verify-provider-packages.svg
+++ b/images/breeze/output-verify-provider-packages.svg
@@ -19,149 +19,149 @@
         font-weight: 700;
     }
 
-    .terminal-1322667406-matrix {
+    .terminal-1578520108-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1322667406-title {
+    .terminal-1578520108-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1322667406-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1322667406-r2 { fill: #c5c8c6 }
-.terminal-1322667406-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1322667406-r4 { fill: #868887 }
-.terminal-1322667406-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1322667406-r6 { fill: #8d7b39 }
-.terminal-1322667406-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-1578520108-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1578520108-r2 { fill: #c5c8c6 }
+.terminal-1578520108-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1578520108-r4 { fill: #868887 }
+.terminal-1578520108-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1578520108-r6 { fill: #8d7b39 }
+.terminal-1578520108-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-1322667406-clip-terminal">
+    <clipPath id="terminal-1578520108-clip-terminal">
       <rect x="0" y="0" width="1463.0" height="657.8" />
     </clipPath>
-    <clipPath id="terminal-1322667406-line-0">
+    <clipPath id="terminal-1578520108-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-1">
+<clipPath id="terminal-1578520108-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-2">
+<clipPath id="terminal-1578520108-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-3">
+<clipPath id="terminal-1578520108-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-4">
+<clipPath id="terminal-1578520108-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-5">
+<clipPath id="terminal-1578520108-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-6">
+<clipPath id="terminal-1578520108-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-7">
+<clipPath id="terminal-1578520108-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-8">
+<clipPath id="terminal-1578520108-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-9">
+<clipPath id="terminal-1578520108-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-10">
+<clipPath id="terminal-1578520108-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-11">
+<clipPath id="terminal-1578520108-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-12">
+<clipPath id="terminal-1578520108-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-13">
+<clipPath id="terminal-1578520108-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-14">
+<clipPath id="terminal-1578520108-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-15">
+<clipPath id="terminal-1578520108-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-16">
+<clipPath id="terminal-1578520108-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-17">
+<clipPath id="terminal-1578520108-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-18">
+<clipPath id="terminal-1578520108-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-19">
+<clipPath id="terminal-1578520108-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-20">
+<clipPath id="terminal-1578520108-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-21">
+<clipPath id="terminal-1578520108-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-22">
+<clipPath id="terminal-1578520108-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-23">
+<clipPath id="terminal-1578520108-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-24">
+<clipPath id="terminal-1578520108-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1322667406-line-25">
+<clipPath id="terminal-1578520108-line-25">
     <rect x="0" y="611.5" 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="706.8" rx="8"/><text class="terminal-1322667406-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-provider-packages</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="706.8" rx="8"/><text class="terminal-1578520108-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-provider-packages</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-1322667406-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1578520108-clip-terminal)">
     
-    <g class="terminal-1322667406-matrix">
-    <text class="terminal-1322667406-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1322667406-line-0)">
-</text><text class="terminal-1322667406-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1322667406-line-1)">Usage:&#160;</text><text class="terminal-1322667406-r1" x="97.6" y="44.4" textLength="500.2" clip-path="url(#terminal-1322667406-line-1)">breeze&#160;verify-provider-packages&#160;[OPTIONS]</text><text class="terminal-1322667406-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-1)">
-</text><text class="terminal-1322667406-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-2)">
-</text><text class="terminal-1322667406-r2" x="12.2" y="93.2" textLength="854" clip-path="url(#terminal-1322667406-line-3)">Verifies&#160;if&#160;all&#160;provider&#160;code&#160;is&#160;following&#160;expectations&#160;for&#160;providers.</text><text class="terminal-1322667406-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-3)">
-</text><text class="terminal-1322667406-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-4)">
-</text><text class="terminal-1322667406-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1322667406-line-5)">╭─</text><text class="terminal-1322667406-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1322667406-line-5)">&#160;Provider&#160;verification&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1322667406-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1322667406-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-6)">│</text><text class="terminal-1322667406-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-6)">-</text><text class="terminal-1322667406-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-1322667406-line-6)">-use</text><text class="terminal-1322667406-r5" x="85.4" y="166.4" textLength="195.2" clip-path="url(#terminal-1322 [...]
-</text><text class="terminal-1322667406-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-7)">│</text><text class="terminal-1322667406-r2" x="451.4" y="190.8" textLength="988.2" clip-path="url(#terminal-1322667406-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;&#160;</text><text class="terminal-1322667406-r4" x="1451.8" y="190.8" textLength="12.2" clip-path=" [...]
-</text><text class="terminal-1322667406-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-8)">│</text><text class="terminal-1322667406-r2" x="451.4" y="215.2" textLength="793" clip-path="url(#terminal-1322667406-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1322667406-r5" x="1244.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-8)">-</t [...]
-</text><text class="terminal-1322667406-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-9)">│</text><text class="terminal-1322667406-r2" x="451.4" y="239.6" textLength="988.2" clip-path="url(#terminal-1322667406-line-9)">`none`.&#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-1322667406-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1322667406-line-10)">│</text><text class="terminal-1322667406-r6" x="451.4" y="264" textLength="988.2" clip-path="url(#terminal-1322667406-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1322667406-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-11)">│</text><text class="terminal-1322667406-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-11)">-</text><text class="terminal-1322667406-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-1322667406-line-11)">-airflow</text><text class="terminal-1322667406-r5" x="134.2" y="288.4" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-1322667406-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-12)">│</text><text class="terminal-1322667406-r2" x="451.4" y="312.8" textLength="988.2" clip-path="url(#terminal-1322667406-line-12)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1322667406-r4" x="1451.8" y="312.8" textLength="12.2" [...]
-</text><text class="terminal-1322667406-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-13)">│</text><text class="terminal-1322667406-r6" x="451.4" y="337.2" textLength="988.2" clip-path="url(#terminal-1322667406-line-13)">(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;&#16 [...]
-</text><text class="terminal-1322667406-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-14)">│</text><text class="terminal-1322667406-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-14)">-</text><text class="terminal-1322667406-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1322667406-line-14)">-airflow</text><text class="terminal-1322667406-r5" x="134.2" y="361.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1322667406-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1322667406-line-15)">│</text><text class="terminal-1322667406-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1322667406-line-15)">-</text><text class="terminal-1322667406-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1322667406-line-15)">-use</text><text class="terminal-1322667406-r5" x="85.4" y="386" textLength="231.8" clip-path="url(#terminal-132266740 [...]
-</text><text class="terminal-1322667406-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-16)">│</text><text class="terminal-1322667406-r2" x="451.4" y="410.4" textLength="988.2" clip-path="url(#terminal-1322667406-line-16)">when&#160;entering&#160;breeze.&#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-1322667406-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-17)">│</text><text class="terminal-1322667406-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-17)">-</text><text class="terminal-1322667406-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-1322667406-line-17)">-package</text><text class="terminal-1322667406-r5" x="134.2" y="434.8" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1322667406-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-18)">│</text><text class="terminal-1322667406-r4" x="451.4" y="459.2" textLength="658.8" clip-path="url(#terminal-1322667406-line-18)">[default:&#160;wheel]&#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-1322667406-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-19)">│</text><text class="terminal-1322667406-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-19)">-</text><text class="terminal-1322667406-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1322667406-line-19)">-debug</text><text class="terminal-1322667406-r2" x="451.4" y="483.6" textLength="878.4" clip-path="url(#termina [...]
-</text><text class="terminal-1322667406-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1322667406-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1322667406-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1322667406-line-20)">
-</text><text class="terminal-1322667406-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-1322667406-line-21)">╭─</text><text class="terminal-1322667406-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-1322667406-line-21)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1322667406-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#terminal-132 [...]
-</text><text class="terminal-1322667406-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-22)">│</text><text class="terminal-1322667406-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-22)">-</text><text class="terminal-1322667406-r5" x="36.6" y="556.8" textLength="97.6" clip-path="url(#terminal-1322667406-line-22)">-verbose</text><text class="terminal-1322667406-r7" x="280.6" y="556.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1322667406-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-23)">│</text><text class="terminal-1322667406-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-23)">-</text><text class="terminal-1322667406-r5" x="36.6" y="581.2" textLength="48.8" clip-path="url(#terminal-1322667406-line-23)">-dry</text><text class="terminal-1322667406-r5" x="85.4" y="581.2" textLength="48.8" clip-path="url(#terminal-13 [...]
-</text><text class="terminal-1322667406-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-24)">│</text><text class="terminal-1322667406-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-24)">-</text><text class="terminal-1322667406-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-1322667406-line-24)">-github</text><text class="terminal-1322667406-r5" x="122" y="605.6" textLength="134.2" clip-path="url(#terminal [...]
-</text><text class="terminal-1322667406-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1322667406-line-25)">│</text><text class="terminal-1322667406-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1322667406-line-25)">-</text><text class="terminal-1322667406-r5" x="36.6" y="630" textLength="61" clip-path="url(#terminal-1322667406-line-25)">-help</text><text class="terminal-1322667406-r7" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-1322667406 [...]
-</text><text class="terminal-1322667406-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-1322667406-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1322667406-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-26)">
+    <g class="terminal-1578520108-matrix">
+    <text class="terminal-1578520108-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1578520108-line-0)">
+</text><text class="terminal-1578520108-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1578520108-line-1)">Usage:&#160;</text><text class="terminal-1578520108-r1" x="97.6" y="44.4" textLength="500.2" clip-path="url(#terminal-1578520108-line-1)">breeze&#160;verify-provider-packages&#160;[OPTIONS]</text><text class="terminal-1578520108-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-1)">
+</text><text class="terminal-1578520108-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-2)">
+</text><text class="terminal-1578520108-r2" x="12.2" y="93.2" textLength="854" clip-path="url(#terminal-1578520108-line-3)">Verifies&#160;if&#160;all&#160;provider&#160;code&#160;is&#160;following&#160;expectations&#160;for&#160;providers.</text><text class="terminal-1578520108-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-3)">
+</text><text class="terminal-1578520108-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-4)">
+</text><text class="terminal-1578520108-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1578520108-line-5)">╭─</text><text class="terminal-1578520108-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1578520108-line-5)">&#160;Provider&#160;verification&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1578520108-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1578520108-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-6)">│</text><text class="terminal-1578520108-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-6)">-</text><text class="terminal-1578520108-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-1578520108-line-6)">-use</text><text class="terminal-1578520108-r5" x="85.4" y="166.4" textLength="195.2" clip-path="url(#terminal-1578 [...]
+</text><text class="terminal-1578520108-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-7)">│</text><text class="terminal-1578520108-r2" x="451.4" y="190.8" textLength="988.2" clip-path="url(#terminal-1578520108-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;&#160;</text><text class="terminal-1578520108-r4" x="1451.8" y="190.8" textLength="12.2" clip-path=" [...]
+</text><text class="terminal-1578520108-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-8)">│</text><text class="terminal-1578520108-r2" x="451.4" y="215.2" textLength="793" clip-path="url(#terminal-1578520108-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1578520108-r5" x="1244.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-8)">-</t [...]
+</text><text class="terminal-1578520108-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-9)">│</text><text class="terminal-1578520108-r2" x="451.4" y="239.6" textLength="988.2" clip-path="url(#terminal-1578520108-line-9)">`remove`.&#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-1578520108-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1578520108-line-10)">│</text><text class="terminal-1578520108-r6" x="451.4" y="264" textLength="988.2" clip-path="url(#terminal-1578520108-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1578520108-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-11)">│</text><text class="terminal-1578520108-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-11)">-</text><text class="terminal-1578520108-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-1578520108-line-11)">-airflow</text><text class="terminal-1578520108-r5" x="134.2" y="288.4" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-1578520108-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-12)">│</text><text class="terminal-1578520108-r2" x="451.4" y="312.8" textLength="988.2" clip-path="url(#terminal-1578520108-line-12)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1578520108-r4" x="1451.8" y="312.8" textLength="12.2" [...]
+</text><text class="terminal-1578520108-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-13)">│</text><text class="terminal-1578520108-r6" x="451.4" y="337.2" textLength="988.2" clip-path="url(#terminal-1578520108-line-13)">(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;&#16 [...]
+</text><text class="terminal-1578520108-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-14)">│</text><text class="terminal-1578520108-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-14)">-</text><text class="terminal-1578520108-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1578520108-line-14)">-airflow</text><text class="terminal-1578520108-r5" x="134.2" y="361.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1578520108-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1578520108-line-15)">│</text><text class="terminal-1578520108-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1578520108-line-15)">-</text><text class="terminal-1578520108-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1578520108-line-15)">-use</text><text class="terminal-1578520108-r5" x="85.4" y="386" textLength="231.8" clip-path="url(#terminal-157852010 [...]
+</text><text class="terminal-1578520108-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-16)">│</text><text class="terminal-1578520108-r2" x="451.4" y="410.4" textLength="988.2" clip-path="url(#terminal-1578520108-line-16)">when&#160;entering&#160;breeze.&#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-1578520108-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-17)">│</text><text class="terminal-1578520108-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-17)">-</text><text class="terminal-1578520108-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-1578520108-line-17)">-package</text><text class="terminal-1578520108-r5" x="134.2" y="434.8" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1578520108-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-18)">│</text><text class="terminal-1578520108-r4" x="451.4" y="459.2" textLength="658.8" clip-path="url(#terminal-1578520108-line-18)">[default:&#160;wheel]&#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-1578520108-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-19)">│</text><text class="terminal-1578520108-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-19)">-</text><text class="terminal-1578520108-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1578520108-line-19)">-debug</text><text class="terminal-1578520108-r2" x="451.4" y="483.6" textLength="878.4" clip-path="url(#termina [...]
+</text><text class="terminal-1578520108-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1578520108-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1578520108-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1578520108-line-20)">
+</text><text class="terminal-1578520108-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-1578520108-line-21)">╭─</text><text class="terminal-1578520108-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-1578520108-line-21)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1578520108-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#terminal-157 [...]
+</text><text class="terminal-1578520108-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-22)">│</text><text class="terminal-1578520108-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1578520108-line-22)">-</text><text class="terminal-1578520108-r5" x="36.6" y="556.8" textLength="97.6" clip-path="url(#terminal-1578520108-line-22)">-verbose</text><text class="terminal-1578520108-r7" x="280.6" y="556.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1578520108-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-23)">│</text><text class="terminal-1578520108-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1578520108-line-23)">-</text><text class="terminal-1578520108-r5" x="36.6" y="581.2" textLength="48.8" clip-path="url(#terminal-1578520108-line-23)">-dry</text><text class="terminal-1578520108-r5" x="85.4" y="581.2" textLength="48.8" clip-path="url(#terminal-15 [...]
+</text><text class="terminal-1578520108-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-24)">│</text><text class="terminal-1578520108-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1578520108-line-24)">-</text><text class="terminal-1578520108-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-1578520108-line-24)">-github</text><text class="terminal-1578520108-r5" x="122" y="605.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1578520108-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1578520108-line-25)">│</text><text class="terminal-1578520108-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1578520108-line-25)">-</text><text class="terminal-1578520108-r5" x="36.6" y="630" textLength="61" clip-path="url(#terminal-1578520108-line-25)">-help</text><text class="terminal-1578520108-r7" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-1578520108 [...]
+</text><text class="terminal-1578520108-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-1578520108-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1578520108-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-1578520108-line-26)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh b/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh
index d5db23fa74..d120b50ec7 100755
--- a/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh
+++ b/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh
@@ -133,10 +133,12 @@ function run_airflow_testing_in_docker() {
         echo "${COLOR_RED}***********************************************************************************************${COLOR_RESET}"
         echo
         echo "${COLOR_BLUE}***********************************************************************************************${COLOR_RESET}"
-        echo "${COLOR_BLUE}Reproduce the failed tests on your local machine (note that you need to use docker-compose v1 rather than v2 to enable Kerberos integration):${COLOR_RESET}"
-        echo "${COLOR_YELLOW}./breeze --github-image-id ${GITHUB_REGISTRY_PULL_IMAGE_TAG=} --backend ${BACKEND} ${EXTRA_ARGS}--python ${PYTHON_MAJOR_MINOR_VERSION} --db-reset --skip-mounting-local-sources --test-type ${TEST_TYPE} ${INTEGRATION_BREEZE_FLAGS[*]} shell${COLOR_RESET}"
+        echo "${COLOR_BLUE}Enter the same environment that was used for the tests:${COLOR_RESET}"
+        echo "${COLOR_YELLOW}breeze --image-tag ${IMAGE_TAG=} --backend ${BACKEND} ${EXTRA_ARGS}--python ${PYTHON_MAJOR_MINOR_VERSION} --db-reset --skip-mounting-local-sources --test-type ${TEST_TYPE} ${INTEGRATION_BREEZE_FLAGS[*]} shell${COLOR_RESET}"
         echo "${COLOR_BLUE}Then you can run failed tests with:${COLOR_RESET}"
         echo "${COLOR_YELLOW}pytest [TEST_NAME]${COLOR_RESET}"
+        echo "${COLOR_BLUE}Or you can run the tests: ${COLOR_RESET}"
+        echo "${COLOR_YELLOW}breeze --image-tag ${IMAGE_TAG=} --backend ${BACKEND} ${EXTRA_ARGS}--python ${PYTHON_MAJOR_MINOR_VERSION} --db-reset --skip-mounting-local-sources --test-type ${TEST_TYPE} ${INTEGRATION_BREEZE_FLAGS[*]} test${COLOR_RESET}"
         echo "${COLOR_BLUE}***********************************************************************************************${COLOR_RESET}"
 
 


[airflow] 11/39: Add CI-friendly progress output for tests (#24236)

Posted by po...@apache.org.
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 a66af3b17deb5d19258342bc89ff88466a63477d
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 14 22:32:49 2022 +0200

    Add CI-friendly progress output for tests (#24236)
    
    This is the first step to run breeze tests in parallel in CI.
    This flag adds "limited progress" output when running tests
    which means that the runnig tests will just print few lines with
    percent progress and color status indication from last few
    progress lines of Pytest output, but when it completes, the whole output is
    printed in a CI group - colored depending on status.
    
    The final version (wnen we implement parallel test execution) should
    also defer writing the output to until all tests are completed, but
    this should be a follow-up PR.
    
    (cherry picked from commit 41fefa146ac64379447db503b7dba82d5121f06a)
---
 TESTING.rst                                        |  15 ++
 .../configuration_and_maintenance_commands.py      |   6 +-
 .../airflow_breeze/commands/testing_commands.py    | 163 +++++++++++++++++++--
 dev/breeze/src/airflow_breeze/utils/ci_group.py    |   8 +-
 dev/breeze/src/airflow_breeze/utils/console.py     |  14 ++
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output-docker-compose-tests.svg      |  92 ++++++------
 images/breeze/output-tests.svg                     | 132 ++++++++++-------
 8 files changed, 319 insertions(+), 113 deletions(-)

diff --git a/TESTING.rst b/TESTING.rst
index 12983726e1..2271e73ecf 100644
--- a/TESTING.rst
+++ b/TESTING.rst
@@ -182,6 +182,21 @@ You can also specify individual tests or a group of tests:
 
     breeze tests --db-reset tests/core/test_core.py::TestCore
 
+You can also limit the tests to execute to specific group of tests
+
+.. code-block:: bash
+
+    breeze tests --test-type Core
+
+
+You can also write tests in "limited progress" mode (useful in the future to run CI). In this mode each
+test just prints "percentage" summary of the run as single line and only dumps full output of the test
+after it completes.
+
+.. code-block:: bash
+
+    breeze tests --test-type Core --limit-progress-output
+
 
 Running Tests of a specified type from the Host
 -----------------------------------------------
diff --git a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
index d4ca3bcf46..116319a2ef 100644
--- a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
@@ -157,9 +157,9 @@ def cleanup(verbose: bool, dry_run: bool, github_repository: str, all: bool, ans
         )
         images = command_result.stdout.splitlines() if command_result and command_result.stdout else []
         if images:
-            get_console().print("[light_blue]Removing images:[/]")
+            get_console().print("[info]Removing images:[/]")
             for image in images:
-                get_console().print(f"[light_blue] * {image}[/]")
+                get_console().print(f"[info] * {image}[/]")
             get_console().print()
             docker_rmi_command_to_execute = [
                 'docker',
@@ -173,7 +173,7 @@ def cleanup(verbose: bool, dry_run: bool, github_repository: str, all: bool, ans
             elif given_answer == Answer.QUIT:
                 sys.exit(0)
         else:
-            get_console().print("[light_blue]No locally downloaded images to remove[/]\n")
+            get_console().print("[info]No locally downloaded images to remove[/]\n")
     get_console().print("Pruning docker images")
     given_answer = user_confirm("Are you sure with the removal?")
     if given_answer == Answer.YES:
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 84bfd29d0e..ebe4701b73 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -14,10 +14,16 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-
+import errno
 import os
+import re
+import shutil
+import subprocess
 import sys
-from typing import Tuple
+import tempfile
+from threading import Event, Thread
+from time import sleep
+from typing import Dict, List, Tuple
 
 import click
 
@@ -25,24 +31,29 @@ from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import ALLOWED_TEST_TYPES
 from airflow_breeze.params.build_prod_params import BuildProdParams
 from airflow_breeze.params.shell_params import ShellParams
+from airflow_breeze.utils.ci_group import ci_group
 from airflow_breeze.utils.common_options import (
+    option_backend,
     option_db_reset,
     option_dry_run,
     option_github_repository,
     option_image_name,
     option_image_tag,
     option_integration,
+    option_mssql_version,
+    option_mysql_version,
+    option_postgres_version,
     option_python,
     option_verbose,
 )
-from airflow_breeze.utils.console import get_console
+from airflow_breeze.utils.console import get_console, message_type_from_return_code
 from airflow_breeze.utils.custom_param_types import BetterChoice
 from airflow_breeze.utils.docker_command_utils import (
     get_env_variables_for_docker_commands,
     perform_environment_checks,
 )
 from airflow_breeze.utils.run_tests import run_docker_compose_tests
-from airflow_breeze.utils.run_utils import run_command
+from airflow_breeze.utils.run_utils import RunCommandResult, run_command
 
 TESTING_COMMANDS = {
     "name": "Testing",
@@ -55,8 +66,8 @@ TESTING_PARAMETERS = {
             "name": "Docker-compose tests flag",
             "options": [
                 "--image-name",
-                "--python",
                 "--image-tag",
+                "--python",
             ],
         }
     ],
@@ -66,7 +77,13 @@ TESTING_PARAMETERS = {
             "options": [
                 "--integration",
                 "--test-type",
+                "--limit-progress-output",
                 "--db-reset",
+                "--backend",
+                "--python",
+                "--postgres-version",
+                "--mysql-version",
+                "--mssql-version",
             ],
         }
     ],
@@ -112,6 +129,91 @@ def docker_compose_tests(
     sys.exit(return_code)
 
 
+class MonitoringThread(Thread):
+    """Thread class with a stop() method. The thread itself has to check
+    regularly for the stopped() condition."""
+
+    def __init__(self, title: str, file_name: str):
+        super().__init__(target=self.peek_percent_at_last_lines_of_file, daemon=True)
+        self._stop_event = Event()
+        self.title = title
+        self.file_name = file_name
+
+    def peek_percent_at_last_lines_of_file(self) -> None:
+        max_line_length = 400
+        matcher = re.compile(r"^.*\[([^\]]*)\]$")
+        while not self.stopped():
+            if os.path.exists(self.file_name):
+                try:
+                    with open(self.file_name, 'rb') as temp_f:
+                        temp_f.seek(-(max_line_length * 2), os.SEEK_END)
+                        tail = temp_f.read().decode()
+                    try:
+                        two_last_lines = tail.splitlines()[-2:]
+                        previous_no_ansi_line = escape_ansi(two_last_lines[0])
+                        m = matcher.match(previous_no_ansi_line)
+                        if m:
+                            get_console().print(f"[info]{self.title}:[/] {m.group(1).strip()}")
+                            print(f"\r{two_last_lines[0]}\r")
+                            print(f"\r{two_last_lines[1]}\r")
+                    except IndexError:
+                        pass
+                except OSError as e:
+                    if e.errno == errno.EINVAL:
+                        pass
+                    else:
+                        raise
+            sleep(5)
+
+    def stop(self):
+        self._stop_event.set()
+
+    def stopped(self):
+        return self._stop_event.is_set()
+
+
+def escape_ansi(line):
+    ansi_escape = re.compile(r'(?:\x1B[@-_]|[\x80-\x9F])[0-?]*[ -/]*[@-~]')
+    return ansi_escape.sub('', line)
+
+
+def run_with_progress(
+    cmd: List[str],
+    env_variables: Dict[str, str],
+    test_type: str,
+    python: str,
+    backend: str,
+    version: str,
+    verbose: bool,
+    dry_run: bool,
+) -> RunCommandResult:
+    title = f"Running tests: {test_type}, Python: {python}, Backend: {backend}:{version}"
+    try:
+        with tempfile.NamedTemporaryFile(mode='w+t', delete=False) as f:
+            get_console().print(f"[info]Starting test = {title}[/]")
+            thread = MonitoringThread(title=title, file_name=f.name)
+            thread.start()
+            try:
+                result = run_command(
+                    cmd,
+                    verbose=verbose,
+                    dry_run=dry_run,
+                    env=env_variables,
+                    check=False,
+                    stdout=f,
+                    stderr=subprocess.STDOUT,
+                )
+            finally:
+                thread.stop()
+                thread.join()
+        with ci_group(f"Result of {title}", message_type=message_type_from_return_code(result.returncode)):
+            with open(f.name) as f:
+                shutil.copyfileobj(f, sys.stdout)
+    finally:
+        os.unlink(f.name)
+    return result
+
+
 @main.command(
     name='tests',
     help="Run the specified unit test targets. Multiple targets may be specified separated by spaces.",
@@ -122,10 +224,19 @@ def docker_compose_tests(
 )
 @option_dry_run
 @option_verbose
+@option_python
+@option_backend
+@option_postgres_version
+@option_mysql_version
+@option_mssql_version
 @option_integration
+@click.option(
+    '--limit-progress-output',
+    help="Limit progress to percentage only and just show the summary when tests complete.",
+    is_flag=True,
+)
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
 @click.option(
-    "-tt",
     "--test-type",
     help="Type of test to run.",
     default="All",
@@ -135,6 +246,12 @@ def docker_compose_tests(
 def tests(
     dry_run: bool,
     verbose: bool,
+    python: str,
+    backend: str,
+    postgres_version: str,
+    mysql_version: str,
+    mssql_version: str,
+    limit_progress_output: bool,
     integration: Tuple,
     extra_pytest_args: Tuple,
     test_type: str,
@@ -149,11 +266,39 @@ def tests(
         os.environ["LIST_OF_INTEGRATION_TESTS_TO_RUN"] = ' '.join(list(integration))
     if db_reset:
         os.environ["DB_RESET"] = "true"
-
-    exec_shell_params = ShellParams(verbose=verbose, dry_run=dry_run)
+    exec_shell_params = ShellParams(
+        verbose=verbose,
+        dry_run=dry_run,
+        python=python,
+        backend=backend,
+        postgres_version=postgres_version,
+        mysql_version=mysql_version,
+        mssql_version=mssql_version,
+    )
     env_variables = get_env_variables_for_docker_commands(exec_shell_params)
     perform_environment_checks(verbose=verbose)
     cmd = ['docker-compose', 'run', '--service-ports', '--rm', 'airflow']
     cmd.extend(list(extra_pytest_args))
-    result = run_command(cmd, verbose=verbose, dry_run=dry_run, env=env_variables, check=False)
+    version = (
+        mssql_version
+        if backend == "mssql"
+        else mysql_version
+        if backend == "mysql"
+        else postgres_version
+        if backend == "postgres"
+        else "none"
+    )
+    if limit_progress_output:
+        result = run_with_progress(
+            cmd=cmd,
+            env_variables=env_variables,
+            test_type=test_type,
+            python=python,
+            backend=backend,
+            version=version,
+            verbose=verbose,
+            dry_run=dry_run,
+        )
+    else:
+        result = run_command(cmd, verbose=verbose, dry_run=dry_run, env=env_variables, check=False)
     sys.exit(result.returncode)
diff --git a/dev/breeze/src/airflow_breeze/utils/ci_group.py b/dev/breeze/src/airflow_breeze/utils/ci_group.py
index e65751a322..96525b5525 100644
--- a/dev/breeze/src/airflow_breeze/utils/ci_group.py
+++ b/dev/breeze/src/airflow_breeze/utils/ci_group.py
@@ -18,11 +18,11 @@
 import os
 from contextlib import contextmanager
 
-from airflow_breeze.utils.console import get_console
+from airflow_breeze.utils.console import MessageType, get_console
 
 
 @contextmanager
-def ci_group(title: str, enabled: bool = True):
+def ci_group(title: str, enabled: bool = True, message_type: MessageType = MessageType.INFO):
     """
     If used in GitHub Action, creates an expandable group in the GitHub Action log.
     Otherwise, display simple text groups.
@@ -34,9 +34,9 @@ def ci_group(title: str, enabled: bool = True):
         yield
         return
     if os.environ.get('GITHUB_ACTIONS', 'false') != "true":
-        get_console().print(f"[info]{title}[/]")
+        get_console().print(f"[{message_type.value}]{title}[/]")
         yield
         return
-    get_console().print(f"::group::<CLICK_TO_EXPAND>: [info]{title}[/]")
+    get_console().print(f"::group::<CLICK_TO_EXPAND>: [{message_type.value}]{title}[/]")
     yield
     get_console().print("::endgroup::")
diff --git a/dev/breeze/src/airflow_breeze/utils/console.py b/dev/breeze/src/airflow_breeze/utils/console.py
index 9a14d91eae..41ae65ef61 100644
--- a/dev/breeze/src/airflow_breeze/utils/console.py
+++ b/dev/breeze/src/airflow_breeze/utils/console.py
@@ -19,6 +19,7 @@ Console used by all processes. We are forcing colors and terminal output as Bree
 to be only run in CI or real development terminal - in both cases we want to have colors on.
 """
 import os
+from enum import Enum
 from functools import lru_cache
 
 from rich.console import Console
@@ -56,6 +57,19 @@ def get_theme() -> Theme:
     )
 
 
+class MessageType(Enum):
+    SUCCESS = "success"
+    INFO = "info"
+    WARNING = "warning"
+    ERROR = "error"
+
+
+def message_type_from_return_code(return_code: int) -> MessageType:
+    if return_code == 0:
+        return MessageType.SUCCESS
+    return MessageType.ERROR
+
+
 @lru_cache(maxsize=None)
 def get_console() -> Console:
     return Console(
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 96155ac41a..aedf286361 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1 @@
-2f24dd5bade0ac4b635ef6ada358590b
+4715fa0a006457cc3f4f6447e3fecc95
diff --git a/images/breeze/output-docker-compose-tests.svg b/images/breeze/output-docker-compose-tests.svg
index 4830ca1215..75f5c1a31b 100644
--- a/images/breeze/output-docker-compose-tests.svg
+++ b/images/breeze/output-docker-compose-tests.svg
@@ -19,109 +19,109 @@
         font-weight: 700;
     }
 
-    .terminal-25948600-matrix {
+    .terminal-1448538552-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-25948600-title {
+    .terminal-1448538552-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-25948600-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-25948600-r2 { fill: #c5c8c6 }
-.terminal-25948600-r3 { fill: #d0b344;font-weight: bold }
-.terminal-25948600-r4 { fill: #868887 }
-.terminal-25948600-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-25948600-r6 { fill: #98a84b;font-weight: bold }
-.terminal-25948600-r7 { fill: #8d7b39 }
+    .terminal-1448538552-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1448538552-r2 { fill: #c5c8c6 }
+.terminal-1448538552-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1448538552-r4 { fill: #868887 }
+.terminal-1448538552-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1448538552-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1448538552-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-25948600-clip-terminal">
+    <clipPath id="terminal-1448538552-clip-terminal">
       <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
     </clipPath>
-    <clipPath id="terminal-25948600-line-0">
+    <clipPath id="terminal-1448538552-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-1">
+<clipPath id="terminal-1448538552-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-2">
+<clipPath id="terminal-1448538552-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-3">
+<clipPath id="terminal-1448538552-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-4">
+<clipPath id="terminal-1448538552-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-5">
+<clipPath id="terminal-1448538552-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-6">
+<clipPath id="terminal-1448538552-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-7">
+<clipPath id="terminal-1448538552-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-8">
+<clipPath id="terminal-1448538552-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-9">
+<clipPath id="terminal-1448538552-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-10">
+<clipPath id="terminal-1448538552-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-11">
+<clipPath id="terminal-1448538552-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-12">
+<clipPath id="terminal-1448538552-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-13">
+<clipPath id="terminal-1448538552-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-14">
+<clipPath id="terminal-1448538552-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-25948600-line-15">
+<clipPath id="terminal-1448538552-line-15">
     <rect x="0" y="367.5" 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="462.8" rx="8"/><text class="terminal-25948600-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="462.8" rx="8"/><text class="terminal-1448538552-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</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-25948600-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1448538552-clip-terminal)">
     
-    <g class="terminal-25948600-matrix">
-    <text class="terminal-25948600-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-25948600-line-0)">
-</text><text class="terminal-25948600-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-25948600-line-1)">Usage:&#160;</text><text class="terminal-25948600-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-25948600-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-25948600-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-25948600-line-1)">
-</text><text class="terminal-25948600-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-25948600-line-2)">
-</text><text class="terminal-25948600-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-25948600-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-25948600-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-25948600-line-3)">
-</text><text class="terminal-25948600-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-25948600-line-4)">
-</text><text class="terminal-25948600-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-25948600-line-5)">╭─</text><text class="terminal-25948600-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-25948600-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-25948600-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-25948600-li [...]
-</text><text class="terminal-25948600-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-25948600-line-6)">│</text><text class="terminal-25948600-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-25948600-line-6)">-</text><text class="terminal-25948600-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-25948600-line-6)">-image</text><text class="terminal-25948600-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-25948600-line-6)"> [...]
-</text><text class="terminal-25948600-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-25948600-line-7)">│</text><text class="terminal-25948600-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-25948600-line-7)">-</text><text class="terminal-25948600-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-25948600-line-7)">-python</text><text class="terminal-25948600-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-25948600-line-7 [...]
-</text><text class="terminal-25948600-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-25948600-line-8)">│</text><text class="terminal-25948600-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-25948600-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;&#160;&#160 [...]
-</text><text class="terminal-25948600-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-25948600-line-9)">│</text><text class="terminal-25948600-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-25948600-line-9)">-</text><text class="terminal-25948600-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-25948600-line-9)">-image</text><text class="terminal-25948600-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-25948600-line-9) [...]
-</text><text class="terminal-25948600-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-25948600-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-25948600-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-25948600-line-10)">
-</text><text class="terminal-25948600-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-25948600-line-11)">╭─</text><text class="terminal-25948600-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-25948600-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-25948600-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-25948600-line [...]
-</text><text class="terminal-25948600-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-25948600-line-12)">│</text><text class="terminal-25948600-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-25948600-line-12)">-</text><text class="terminal-25948600-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-25948600-line-12)">-verbose</text><text class="terminal-25948600-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#terminal-25948600-li [...]
-</text><text class="terminal-25948600-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-25948600-line-13)">│</text><text class="terminal-25948600-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-25948600-line-13)">-</text><text class="terminal-25948600-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-25948600-line-13)">-dry</text><text class="terminal-25948600-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-25948600-line-13 [...]
-</text><text class="terminal-25948600-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-25948600-line-14)">│</text><text class="terminal-25948600-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-25948600-line-14)">-</text><text class="terminal-25948600-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-25948600-line-14)">-github</text><text class="terminal-25948600-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal-25948600-line [...]
-</text><text class="terminal-25948600-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-25948600-line-15)">│</text><text class="terminal-25948600-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-25948600-line-15)">-</text><text class="terminal-25948600-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-25948600-line-15)">-help</text><text class="terminal-25948600-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-25948600-line-15)">-h</t [...]
-</text><text class="terminal-25948600-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-25948600-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-25948600-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-25948600-line-16)">
+    <g class="terminal-1448538552-matrix">
+    <text class="terminal-1448538552-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1448538552-line-0)">
+</text><text class="terminal-1448538552-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1448538552-line-1)">Usage:&#160;</text><text class="terminal-1448538552-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-1448538552-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1448538552-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-1)">
+</text><text class="terminal-1448538552-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-2)">
+</text><text class="terminal-1448538552-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-1448538552-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-1448538552-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-3)">
+</text><text class="terminal-1448538552-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-4)">
+</text><text class="terminal-1448538552-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1448538552-line-5)">╭─</text><text class="terminal-1448538552-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1448538552-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1448538552-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-6)">│</text><text class="terminal-1448538552-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-6)">-</text><text class="terminal-1448538552-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-1448538552-line-6)">-image</text><text class="terminal-1448538552-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-1448 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-7)">│</text><text class="terminal-1448538552-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-7)">-</text><text class="terminal-1448538552-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-1448538552-line-7)">-image</text><text class="terminal-1448538552-r5" x="109.8" y="190.8" textLength="48.8" clip-path="url(#terminal-14 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-8)">│</text><text class="terminal-1448538552-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-8)">-</text><text class="terminal-1448538552-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-1448538552-line-8)">-python</text><text class="terminal-1448538552-r6" x="195.2" y="215.2" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-9)">│</text><text class="terminal-1448538552-r4" x="244" y="239.6" textLength="732" clip-path="url(#terminal-1448538552-line-9)">[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;&#1 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-1448538552-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1448538552-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-1448538552-line-10)">
+</text><text class="terminal-1448538552-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-1448538552-line-11)">╭─</text><text class="terminal-1448538552-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-1448538552-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1448538552-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-144 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-12)">│</text><text class="terminal-1448538552-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1448538552-line-12)">-</text><text class="terminal-1448538552-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-1448538552-line-12)">-verbose</text><text class="terminal-1448538552-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1448538552-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-13)">│</text><text class="terminal-1448538552-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1448538552-line-13)">-</text><text class="terminal-1448538552-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-1448538552-line-13)">-dry</text><text class="terminal-1448538552-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-14 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-14)">│</text><text class="terminal-1448538552-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1448538552-line-14)">-</text><text class="terminal-1448538552-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-1448538552-line-14)">-github</text><text class="terminal-1448538552-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1448538552-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1448538552-line-15)">│</text><text class="terminal-1448538552-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1448538552-line-15)">-</text><text class="terminal-1448538552-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-1448538552-line-15)">-help</text><text class="terminal-1448538552-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-1448538552 [...]
+</text><text class="terminal-1448538552-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-1448538552-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1448538552-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-1448538552-line-16)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-tests.svg b/images/breeze/output-tests.svg
index 7c02458342..914f2c4587 100644
--- a/images/breeze/output-tests.svg
+++ b/images/breeze/output-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 684.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,113 +19,145 @@
         font-weight: 700;
     }
 
-    .terminal-4193911706-matrix {
+    .terminal-1343491645-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-4193911706-title {
+    .terminal-1343491645-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-4193911706-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4193911706-r2 { fill: #c5c8c6 }
-.terminal-4193911706-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4193911706-r4 { fill: #868887 }
-.terminal-4193911706-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4193911706-r6 { fill: #8d7b39 }
-.terminal-4193911706-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-1343491645-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1343491645-r2 { fill: #c5c8c6 }
+.terminal-1343491645-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1343491645-r4 { fill: #868887 }
+.terminal-1343491645-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1343491645-r6 { fill: #8d7b39 }
+.terminal-1343491645-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-4193911706-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="438.2" />
+    <clipPath id="terminal-1343491645-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="633.4" />
     </clipPath>
-    <clipPath id="terminal-4193911706-line-0">
+    <clipPath id="terminal-1343491645-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-1">
+<clipPath id="terminal-1343491645-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-2">
+<clipPath id="terminal-1343491645-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-3">
+<clipPath id="terminal-1343491645-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-4">
+<clipPath id="terminal-1343491645-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-5">
+<clipPath id="terminal-1343491645-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-6">
+<clipPath id="terminal-1343491645-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-7">
+<clipPath id="terminal-1343491645-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-8">
+<clipPath id="terminal-1343491645-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-9">
+<clipPath id="terminal-1343491645-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-10">
+<clipPath id="terminal-1343491645-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-11">
+<clipPath id="terminal-1343491645-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-12">
+<clipPath id="terminal-1343491645-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-13">
+<clipPath id="terminal-1343491645-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-14">
+<clipPath id="terminal-1343491645-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-15">
+<clipPath id="terminal-1343491645-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4193911706-line-16">
+<clipPath id="terminal-1343491645-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1343491645-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1343491645-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1343491645-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1343491645-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1343491645-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1343491645-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1343491645-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1343491645-line-24">
+    <rect x="0" y="587.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="487.2" rx="8"/><text class="terminal-4193911706-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="682.4" rx="8"/><text class="terminal-1343491645-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</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-4193911706-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1343491645-clip-terminal)">
     
-    <g class="terminal-4193911706-matrix">
-    <text class="terminal-4193911706-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4193911706-line-0)">
-</text><text class="terminal-4193911706-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4193911706-line-1)">Usage:&#160;</text><text class="terminal-4193911706-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-4193911706-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4193911706-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-1)">
-</text><text class="terminal-4193911706-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-2)">
-</text><text class="terminal-4193911706-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-4193911706-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-4193911706-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4193911706-line-3)">
-</text><text class="terminal-4193911706-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-4)">
-</text><text class="terminal-4193911706-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4193911706-line-5)">╭─</text><text class="terminal-4193911706-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4193911706-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4193911706-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
-</text><text class="terminal-4193911706-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-6)">│</text><text class="terminal-4193911706-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-6)">-</text><text class="terminal-4193911706-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-4193911706-line-6)">-integration</text><text class="terminal-4193911706-r2" x="268.4" y="166.4" textLength="1110.2" clip-path="url(#te [...]
-</text><text class="terminal-4193911706-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-7)">│</text><text class="terminal-4193911706-r6" x="268.4" y="190.8" textLength="1110.2" clip-path="url(#terminal-4193911706-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-4193911706-r4" x="1451.8" y=" [...]
-</text><text class="terminal-4193911706-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4193911706-line-8)">│</text><text class="terminal-4193911706-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-4193911706-line-8)">-</text><text class="terminal-4193911706-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-4193911706-line-8)">-test</text><text class="terminal-4193911706-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-41939117 [...]
-</text><text class="terminal-4193911706-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-9)">│</text><text class="terminal-4193911706-r6" x="268.4" y="239.6" textLength="1171.2" clip-path="url(#terminal-4193911706-line-9)">(All&#160;|&#160;Always&#160;|&#160;Core&#160;|&#160;Providers&#160;|&#160;API&#160;|&#160;CLI&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;WWW&#160;|&#160;Postgres&#160;|&#160;MySQL&#160;|&#160;&#160;&#160;</text><text class="ter [...]
-</text><text class="terminal-4193911706-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4193911706-line-10)">│</text><text class="terminal-4193911706-r6" x="268.4" y="264" textLength="1171.2" clip-path="url(#terminal-4193911706-line-10)">Helm&#160;|&#160;Quarantined)&#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-4193911706-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-11)">│</text><text class="terminal-4193911706-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-11)">-</text><text class="terminal-4193911706-r5" x="36.6" y="288.4" textLength="36.6" clip-path="url(#terminal-4193911706-line-11)">-db</text><text class="terminal-4193911706-r5" x="73.2" y="288.4" textLength="73.2" clip-path="url(#terminal-419 [...]
-</text><text class="terminal-4193911706-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-4193911706-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4193911706-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-12)">
-</text><text class="terminal-4193911706-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-4193911706-line-13)">╭─</text><text class="terminal-4193911706-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-4193911706-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4193911706-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-419 [...]
-</text><text class="terminal-4193911706-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-14)">│</text><text class="terminal-4193911706-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-14)">-</text><text class="terminal-4193911706-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-4193911706-line-14)">-dry</text><text class="terminal-4193911706-r5" x="85.4" y="361.6" textLength="48.8" clip-path="url(#terminal-41 [...]
-</text><text class="terminal-4193911706-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4193911706-line-15)">│</text><text class="terminal-4193911706-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4193911706-line-15)">-</text><text class="terminal-4193911706-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-4193911706-line-15)">-verbose</text><text class="terminal-4193911706-r7" x="158.6" y="386" textLength="24.4" clip-path="url(#terminal-41939 [...]
-</text><text class="terminal-4193911706-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-16)">│</text><text class="terminal-4193911706-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-16)">-</text><text class="terminal-4193911706-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-4193911706-line-16)">-help</text><text class="terminal-4193911706-r7" x="158.6" y="410.4" textLength="24.4" clip-path="url(#terminal-41 [...]
-</text><text class="terminal-4193911706-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-4193911706-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4193911706-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-17)">
+    <g class="terminal-1343491645-matrix">
+    <text class="terminal-1343491645-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1343491645-line-0)">
+</text><text class="terminal-1343491645-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1343491645-line-1)">Usage:&#160;</text><text class="terminal-1343491645-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-1343491645-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1343491645-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-1)">
+</text><text class="terminal-1343491645-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-2)">
+</text><text class="terminal-1343491645-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-1343491645-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-1343491645-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-3)">
+</text><text class="terminal-1343491645-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-4)">
+</text><text class="terminal-1343491645-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1343491645-line-5)">╭─</text><text class="terminal-1343491645-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1343491645-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1343491645-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-1343491645-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-6)">│</text><text class="terminal-1343491645-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-6)">-</text><text class="terminal-1343491645-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-1343491645-line-6)">-integration</text><text class="terminal-1343491645-r2" x="378.2" y="166.4" textLength="1061.4" clip-path="url(#te [...]
+</text><text class="terminal-1343491645-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-7)">│</text><text class="terminal-1343491645-r6" x="378.2" y="190.8" textLength="1061.4" clip-path="url(#terminal-1343491645-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;</text><text class="terminal-1343491645-r4" x="1451.8" y="190. [...]
+</text><text class="terminal-1343491645-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-8)">│</text><text class="terminal-1343491645-r6" x="378.2" y="215.2" textLength="1061.4" clip-path="url(#terminal-1343491645-line-8)">all)&#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-1343491645-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-9)">│</text><text class="terminal-1343491645-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-9)">-</text><text class="terminal-1343491645-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-1343491645-line-9)">-test</text><text class="terminal-1343491645-r5" x="97.6" y="239.6" textLength="61" clip-path="url(#terminal-13434916 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1343491645-line-10)">│</text><text class="terminal-1343491645-r6" x="378.2" y="264" textLength="1061.4" clip-path="url(#terminal-1343491645-line-10)">(All&#160;|&#160;Always&#160;|&#160;Core&#160;|&#160;Providers&#160;|&#160;API&#160;|&#160;CLI&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;WWW&#160;|&#160;Postgres&#160;|&#160;&#160;</text><text class="terminal-1343491645-r4" x="14 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-11)">│</text><text class="terminal-1343491645-r6" x="378.2" y="288.4" textLength="1061.4" clip-path="url(#terminal-1343491645-line-11)">MySQL&#160;|&#160;Helm&#160;|&#160;Quarantined)&#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;&#16 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-12)">│</text><text class="terminal-1343491645-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-12)">-</text><text class="terminal-1343491645-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-1343491645-line-12)">-limit</text><text class="terminal-1343491645-r5" x="109.8" y="312.8" textLength="195.2" clip-path="url(#termina [...]
+</text><text class="terminal-1343491645-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-13)">│</text><text class="terminal-1343491645-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-13)">-</text><text class="terminal-1343491645-r5" x="36.6" y="337.2" textLength="36.6" clip-path="url(#terminal-1343491645-line-13)">-db</text><text class="terminal-1343491645-r5" x="73.2" y="337.2" textLength="73.2" clip-path="url(#terminal-134 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-14)">│</text><text class="terminal-1343491645-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-14)">-</text><text class="terminal-1343491645-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1343491645-line-14)">-backend</text><text class="terminal-1343491645-r7" x="329.4" y="361.6" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1343491645-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1343491645-line-15)">│</text><text class="terminal-1343491645-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1343491645-line-15)">-</text><text class="terminal-1343491645-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-1343491645-line-15)">-python</text><text class="terminal-1343491645-r7" x="329.4" y="386" textLength="24.4" clip-path="url(#terminal-134349 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1343491645-line-16)">│</text><text class="terminal-1343491645-r4" x="378.2" y="410.4" textLength="732" clip-path="url(#terminal-1343491645-line-16)">[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-1343491645-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-17)">│</text><text class="terminal-1343491645-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-17)">-</text><text class="terminal-1343491645-r5" x="36.6" y="434.8" textLength="109.8" clip-path="url(#terminal-1343491645-line-17)">-postgres</text><text class="terminal-1343491645-r5" x="146.4" y="434.8" textLength="97.6" clip-path="url(#term [...]
+</text><text class="terminal-1343491645-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-18)">│</text><text class="terminal-1343491645-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-18)">-</text><text class="terminal-1343491645-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-1343491645-line-18)">-mysql</text><text class="terminal-1343491645-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1343491645-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-19)">│</text><text class="terminal-1343491645-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-19)">-</text><text class="terminal-1343491645-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1343491645-line-19)">-mssql</text><text class="terminal-1343491645-r5" x="109.8" y="483.6" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1343491645-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1343491645-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1343491645-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1343491645-line-20)">
+</text><text class="terminal-1343491645-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-1343491645-line-21)">╭─</text><text class="terminal-1343491645-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-1343491645-line-21)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1343491645-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#terminal-134 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-22)">│</text><text class="terminal-1343491645-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1343491645-line-22)">-</text><text class="terminal-1343491645-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-1343491645-line-22)">-dry</text><text class="terminal-1343491645-r5" x="85.4" y="556.8" textLength="48.8" clip-path="url(#terminal-13 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-23)">│</text><text class="terminal-1343491645-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1343491645-line-23)">-</text><text class="terminal-1343491645-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-1343491645-line-23)">-verbose</text><text class="terminal-1343491645-r7" x="158.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1343491645-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-24)">│</text><text class="terminal-1343491645-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1343491645-line-24)">-</text><text class="terminal-1343491645-r5" x="36.6" y="605.6" textLength="61" clip-path="url(#terminal-1343491645-line-24)">-help</text><text class="terminal-1343491645-r7" x="158.6" y="605.6" textLength="24.4" clip-path="url(#terminal-13 [...]
+</text><text class="terminal-1343491645-r4" x="0" y="630" textLength="1464" clip-path="url(#terminal-1343491645-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1343491645-r2" x="1464" y="630" textLength="12.2" clip-path="url(#terminal-1343491645-line-25)">
 </text>
     </g>
     </g>


[airflow] 29/39: Cleanup references to selective checks (#24649)

Posted by po...@apache.org.
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 44e181796c2890ffc60064c10dc20ccacf5c372a
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 25 11:26:52 2022 +0200

    Cleanup references to selective checks (#24649)
    
    Selective checks docs have been moved to breeze as part of #24610
    but some of the references were still left.
    
    This PR cleans it up.
    
    (cherry picked from commit aa8cd30c46dde496423c72aa4a2c72b44d554745)
---
 .gitattributes            |  1 -
 BREEZE.rst                |  2 +-
 PULL_REQUEST_WORKFLOW.rst | 13 +++----------
 dev/airflow-github        |  1 -
 4 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index 497db03fbc..083e1747cb 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -17,7 +17,6 @@ Dockerfile.ci export-ignore
 
 ISSUE_TRIAGE_PROCESS.rst export-ignore
 PULL_REQUEST_WORKFLOW.rst export-ignore
-SELECTIVE_CHECKS.md export-ignore
 STATIC_CODE_CHECKS.rst export-ignore
 TESTING.rst export-ignore
 LOCAL_VIRTUALENV.rst export-ignore
diff --git a/BREEZE.rst b/BREEZE.rst
index 78dfd74621..12bdeda0e9 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -1327,7 +1327,7 @@ needed to run the CI Builds. You can also use the tool to test what tests will b
 a specific commit that Breeze should run the tests on.
 
 More details about the algorithm used to pick the right tests can be
-found in `Selective Checks <SELECTIVE_CHECKS.md>`_.
+found in `Selective Checks <dev/breeze/SELECTIVE_CHECKS.md>`_.
 
 Those are all available flags of ``selective-check`` command:
 
diff --git a/PULL_REQUEST_WORKFLOW.rst b/PULL_REQUEST_WORKFLOW.rst
index d7ca2f9b93..7d7a7860fd 100644
--- a/PULL_REQUEST_WORKFLOW.rst
+++ b/PULL_REQUEST_WORKFLOW.rst
@@ -43,16 +43,9 @@ We approached the problem by:
 
 2) Heavily decreasing strain on the GitHub Actions jobs by introducing selective checks - mechanism
    to control which parts of the tests are run during the tests. This is implemented by the
-   ``scripts/ci/selective_ci_checks.sh`` script in our repository. This script analyses which part of the
-   code has changed and based on that it sets the right outputs that control which tests are executed in
-   the ``Tests`` workflow, and whether we need to build CI images necessary to run those steps. This allowed to
-   heavily decrease the strain especially for the Pull Requests that were not touching code (in which case
-   the builds can complete in < 2 minutes) but also by limiting the number of tests executed in PRs that do
-   not touch the "core" of Airflow, or only touching some - standalone - parts of Airflow such as
-   "Providers", "WWW" or "CLI". This solution is not yet perfect as there are likely some edge cases but
-   it is easy to maintain and we have an escape-hatch - all the tests are always executed in main pushes,
-   so contributors can easily spot if there is a "missed" case and fix it - both by fixing the problem and
-   adding those exceptions to the code. More about it can be found in `Selective checks <SELECTIVE_CHECKS.md>`_
+   ``breeze selective-check`` command. It selectively chooses which tests should be run in the PR based on
+   type of the PR and its content. More about it can be found in
+   `Selective checks <dev/breeze/SELECTIVE_CHECKS.md>`_
 
 3) Even more optimisation came from limiting the scope of tests to only "default" matrix parameters. So far
    in Airflow we always run all tests for all matrix combinations. The primary matrix components are:
diff --git a/dev/airflow-github b/dev/airflow-github
index aa202db085..5dc5f5bd9d 100755
--- a/dev/airflow-github
+++ b/dev/airflow-github
@@ -133,7 +133,6 @@ def is_core_commit(files: List[str]) -> bool:
         "BREEZE.rst",
         "CI.rst",
         "CI_DIAGRAMS.md",
-        "SELECTIVE_CHECKS.md",
         "STATIC_CODE_CHECKS.rst",
         "images/",
         "TESTING.rst",


[airflow] 25/39: Limit azure-servicebus to not be used on ARM (#24635)

Posted by po...@apache.org.
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 761b2d0f7f84d9d62355d9f211fe334f4994b900
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Fri Jun 24 11:39:10 2022 +0200

    Limit azure-servicebus to not be used on ARM (#24635)
    
    Azure service bus uses uamqp which does not build for ARM architecture
    and we need to disable it as a dependency for ARM.
    
    (cherry picked from commit 477f907b347511a1b14053a418ba258db6c3ed99)
---
 images/breeze/output-commands-hash.txt |  5 +++++
 setup.py                               | 12 +++++-------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
new file mode 100644
index 0000000000..1b791a7afb
--- /dev/null
+++ b/images/breeze/output-commands-hash.txt
@@ -0,0 +1,5 @@
+
+# This file is automatically generated by pre-commit. If you have a conflict with this file
+# Please do not solve it but run `breeze regenerate-command-images`.
+# This command should fix the conflict and regenerate help images that you have conflict with.
+518a158901cde1a5a889d37086eca87e
diff --git a/setup.py b/setup.py
index 16fcb73102..20f3d00432 100644
--- a/setup.py
+++ b/setup.py
@@ -202,7 +202,7 @@ amazon = [
     'mypy-boto3-redshift-data>=1.21.0',
 ]
 apache_beam = [
-    'apache-beam>=2.33.0',
+    'apache-beam>=2.39.0',
 ]
 arangodb = ['python-arango>=7.3.2']
 asana = ['asana>=0.10']
@@ -231,6 +231,8 @@ azure = [
     'azure-storage-blob>=12.7.0,<12.9.0',
     'azure-storage-common>=2.1.0',
     'azure-storage-file>=2.1.0',
+    # Limited due to https://github.com/Azure/azure-uamqp-python/issues/191
+    'azure-servicebus>=7.6.1; platform_machine != "aarch64"',
 ]
 cassandra = [
     'cassandra-driver>=3.13.0',
@@ -488,9 +490,7 @@ postgres = [
     'psycopg2-binary>=2.7.4',
 ]
 presto = [
-    # The limit to Presto 0.8 for unknown reason
-    # TODO: Remove the limit
-    'presto-python-client>=0.7.0,<0.8',
+    'presto-python-client>=0.8.2',
     pandas_requirement,
 ]
 psrp = [
@@ -622,9 +622,7 @@ devel_only = [
     'jira',
     'jsondiff',
     'mongomock',
-    # Version 3.1.10 is breaking main bump to 3.1.11 when released.
-    # Fix already merged but was not released https://github.com/spulec/moto/pull/5165
-    'moto[glue]>=3.1.6, <3.1.10',
+    'moto[cloudformation, glue]>=3.1.12',
     'parameterized',
     'paramiko',
     'pipdeptree',


[airflow] 32/39: Use target commit SHA for build image workflow (#24659)

Posted by po...@apache.org.
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 0c55c721f2299d27f8aa8359750a0b666e1aafe0
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 25 23:34:11 2022 +0200

    Use target commit SHA for build image workflow (#24659)
    
    The build-image workflow should use TARGET_COMMIT_SHA as the
    selective check COMMIT_REF otherwise it might not build
    image when needed
    
    (cherry picked from commit 2ffaebee255c73e7a137b55ac25b95c16e159d75)
---
 .github/workflows/build-images.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index e28a9d7619..5c6b085b97 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -121,7 +121,7 @@ jobs:
         id: selective-checks
         env:
           PR_LABELS: "$${{ steps.get-latest-pr-labels.outputs.pullRequestLabels }}"
-          COMMIT_REF: "${{ github.sha }}"
+          COMMIT_REF: "${{ env.TARGET_COMMIT_SHA }}"
         run: breeze selective-check
       - name: Compute dynamic outputs
         id: dynamic-outputs


[airflow] 20/39: Fix recording console for new rich-click 1.5 (#24611)

Posted by po...@apache.org.
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 839d67da27250689dc4580649ed3693ed5cb2d0b
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Thu Jun 23 01:06:23 2022 +0200

    Fix recording console for new rich-click 1.5 (#24611)
    
    (cherry picked from commit 8231add0a0d12a1a5f2de13de7e4eb5ac785f839)
---
 dev/breeze/src/airflow_breeze/utils/recording.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/dev/breeze/src/airflow_breeze/utils/recording.py b/dev/breeze/src/airflow_breeze/utils/recording.py
index 2fe9f5b555..41ca767a7f 100644
--- a/dev/breeze/src/airflow_breeze/utils/recording.py
+++ b/dev/breeze/src/airflow_breeze/utils/recording.py
@@ -47,7 +47,9 @@ def enable_recording_of_help_output(path: str, title: Optional[str], width: Opti
 
     class RecordingConsole(rich.console.Console):
         def __init__(self, **kwargs):
-            super().__init__(record=True, width=width_int, force_terminal=True, **kwargs)
+            kwargs["force_terminal"] = True
+            kwargs["width"] = width_int
+            super().__init__(record=True, **kwargs)
             global help_console
             help_console = self
 


[airflow] 03/39: Update 'rich' to latest version across the board. (#24186)

Posted by po...@apache.org.
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 df49aa06a6bad2010050cce13a9bd52ee705bb97
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 4 20:43:44 2022 +0200

    Update 'rich' to latest version across the board. (#24186)
    
    That Also includes regenerating the breeze output images.
    
    (cherry picked from commit 13c62b52cbe0bdcf3319a403ce061268661245b3)
---
 .pre-commit-config.yaml                            |  42 +-
 dev/breeze/README.md                               |   2 +-
 dev/breeze/setup.cfg                               |   2 +-
 images/breeze/output-build-docs.svg                | 318 +++++++++++----
 images/breeze/output-build-image.svg               | 333 +++++++++++----
 images/breeze/output-build-prod-image.svg          | 418 ++++++++++++++-----
 images/breeze/output-cleanup.svg                   | 118 ++++--
 images/breeze/output-command-hash-export.svg       |  86 ++--
 images/breeze/output-commands-hash.txt             |   1 +
 images/breeze/output-commands.svg                  | 454 ++++++++++++++++-----
 images/breeze/output-config.svg                    | 148 +++++--
 images/breeze/output-docker-compose-tests.svg      | 128 ++++--
 images/breeze/output-exec.svg                      |  91 +++--
 images/breeze/output-find-newer-dependencies.svg   | 133 ++++--
 images/breeze/output-fix-ownership.svg             |  98 +++--
 images/breeze/output-free-space.svg                |  98 +++--
 images/breeze/output-generate-constraints.svg      | 188 ++++++---
 images/breeze/output-prepare-airflow-package.svg   | 123 ++++--
 .../output-prepare-provider-documentation.svg      | 173 ++++++--
 images/breeze/output-prepare-provider-packages.svg | 183 ++++++---
 images/breeze/output-pull-image.svg                | 183 ++++++---
 images/breeze/output-pull-prod-image.svg           | 183 ++++++---
 images/breeze/output-release-prod-images.svg       | 168 ++++++--
 images/breeze/output-resource-check.svg            |  91 +++--
 images/breeze/output-self-upgrade.svg              | 101 +++--
 images/breeze/output-setup-autocomplete.svg        | 113 +++--
 images/breeze/output-shell.svg                     | 264 +++++++++---
 images/breeze/output-start-airflow.svg             | 274 ++++++++++---
 images/breeze/output-static-checks.svg             | 285 ++++++++++---
 images/breeze/output-stop.svg                      | 106 +++--
 images/breeze/output-tests.svg                     | 133 ++++--
 images/breeze/output-verify-image.svg              | 128 ++++--
 images/breeze/output-verify-prod-image.svg         | 128 ++++--
 images/breeze/output-verify-provider-packages.svg  | 178 ++++++--
 images/breeze/output-version.svg                   |  86 ++--
 setup.cfg                                          |   2 +-
 36 files changed, 4140 insertions(+), 1420 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8f4039f1e9..22d9712590 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -324,7 +324,7 @@ repos:
         files: ^setup\.cfg$|^setup\.py$
         pass_filenames: false
         entry: ./scripts/ci/pre_commit/pre_commit_check_order_setup.py
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: check-extra-packages-references
         name: Checks setup extra packages
         description: Checks if all the libraries in setup.py are listed in extra-packages-ref.rst file
@@ -332,7 +332,7 @@ repos:
         files: ^setup\.py$|^docs/apache-airflow/extra-packages-ref\.rst$
         pass_filenames: false
         entry: ./scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
         # This check might be removed when min-airflow-version in providers is 2.2
       - id: check-airflow-2-1-compatibility
         name: Check that providers are 2.1 compatible.
@@ -340,21 +340,21 @@ repos:
         language: python
         pass_filenames: true
         files: ^airflow/providers/.*\.py$
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: update-breeze-file
         name: Update output of breeze commands in BREEZE.rst
         entry: ./scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
         language: python
         files: ^BREEZE\.rst$|^dev/breeze/.*$
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.1', 'rich-click']
+        additional_dependencies: ['rich>=12.4.4', 'rich-click']
       - id: update-local-yml-file
         name: Update mounts in the local yml file
         entry: ./scripts/ci/pre_commit/pre_commit_local_yml_mounts.py
         language: python
         files: ^dev/breeze/src/airflow_breeze/utils/docker_command_utils\.py$|^scripts/ci/docker_compose/local\.yml$
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: update-setup-cfg-file
         name: Update setup.cfg file with all licenses
         entry: ./scripts/ci/pre_commit/pre_commit_setup_cfg_file.sh
@@ -380,7 +380,7 @@ repos:
         language: python
         files: ^Dockerfile$
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: update-supported-versions
         name: Updates supported versions in documentation
         entry: ./scripts/ci/pre_commit/pre_commit_supported_versions.py
@@ -602,7 +602,7 @@ repos:
           - 'jsonschema>=3.2.0,<5.0.0'
           - 'tabulate==0.8.8'
           - 'jsonpath-ng==1.5.3'
-          - 'rich>=12.4.1'
+          - 'rich>=12.4.4'
       - id: check-pre-commit-information-consistent
         name: Update information re pre-commit hooks and verify ids and names
         entry: ./scripts/ci/pre_commit/pre_commit_check_pre_commit_hooks.py
@@ -610,7 +610,7 @@ repos:
           - --max-length=64
         language: python
         files: ^\.pre-commit-config\.yaml$|^scripts/ci/pre_commit/pre_commit_check_pre_commit_hook_names\.py$
-        additional_dependencies: ['pyyaml', 'jinja2', 'black==22.3.0', 'tabulate', 'rich>=12.4.1']
+        additional_dependencies: ['pyyaml', 'jinja2', 'black==22.3.0', 'tabulate', 'rich>=12.4.4']
         require_serial: true
         pass_filenames: false
       - id: check-airflow-providers-have-extras
@@ -620,7 +620,7 @@ repos:
         files: ^setup\.py$|^airflow/providers/.*\.py$
         pass_filenames: false
         require_serial: true
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: update-breeze-readme-config-hash
         name: Update Breeze README.md with config files hash
         language: python
@@ -635,7 +635,7 @@ repos:
         files: ^dev/breeze/.*$
         pass_filenames: false
         require_serial: true
-        additional_dependencies: ['click', 'rich>=12.4.1']
+        additional_dependencies: ['click', 'rich>=12.4.4']
       - id: check-system-tests-present
         name: Check if system tests have required segments of code
         entry: ./scripts/ci/pre_commit/pre_commit_check_system_tests.py
@@ -643,7 +643,7 @@ repos:
         files: ^tests/system/.*/example_[^/]*.py$
         exclude: ^tests/system/providers/google/bigquery/example_bigquery_queries\.py$
         pass_filenames: true
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: lint-markdown
         name: Run markdownlint
         description: Checks the style of Markdown files.
@@ -734,7 +734,7 @@ repos:
         language: python
         pass_filenames: true
         files: ^\.github/workflows/.*\.yml$
-        additional_dependencies: ['PyYAML', 'rich>=12.4.1']
+        additional_dependencies: ['PyYAML', 'rich>=12.4.4']
       - id: check-docstring-param-types
         name: Check that docstrings do not specify param types
         entry: ./scripts/ci/pre_commit/pre_commit_docstring_param_type.py
@@ -742,7 +742,7 @@ repos:
         pass_filenames: true
         files: \.py$
         exclude: ^airflow/_vendor/
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: lint-chart-schema
         name: Lint chart/values.schema.json file
         entry: ./scripts/ci/pre_commit/pre_commit_chart_schema.py
@@ -777,7 +777,7 @@ repos:
         entry: ./scripts/ci/pre_commit/pre_commit_mypy.py
         files: ^dev/.*\.py$
         require_serial: true
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: run-mypy
         name: Run mypy for core
         language: python
@@ -785,14 +785,14 @@ repos:
         files: \.py$
         exclude: ^provider_packages|^docs|^airflow/_vendor/|^airflow/providers|^airflow/migrations|^dev
         require_serial: true
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: run-mypy
         name: Run mypy for providers
         language: python
         entry: ./scripts/ci/pre_commit/pre_commit_mypy.py --namespace-packages
         files: ^airflow/providers/.*\.py$
         require_serial: true
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: run-mypy
         name: Run mypy for /docs/ folder
         language: python
@@ -800,7 +800,7 @@ repos:
         files: ^docs/.*\.py$
         exclude: ^docs/rtd-deprecation
         require_serial: true
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: run-flake8
         name: Run flake8
         language: python
@@ -808,7 +808,7 @@ repos:
         files: \.py$
         pass_filenames: true
         exclude: ^airflow/_vendor/
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: lint-javascript
         name: ESLint against airflow/ui
         language: python
@@ -816,7 +816,7 @@ repos:
         files: ^airflow/ui/
         entry: ./scripts/ci/pre_commit/pre_commit_ui_lint.py
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: lint-javascript
         name: ESLint against current UI JavaScript files
         language: python
@@ -824,12 +824,12 @@ repos:
         files: ^airflow/www/static/js/
         entry: ./scripts/ci/pre_commit/pre_commit_www_lint.py
         pass_filenames: false
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
       - id: update-migration-references
         name: Update migration ref doc
         language: python
         entry: ./scripts/ci/pre_commit/pre_commit_migration_reference.py
         pass_filenames: false
         files: ^airflow/migrations/versions/.*\.py$|^docs/apache-airflow/migrations-ref\.rst$
-        additional_dependencies: ['rich>=12.4.1']
+        additional_dependencies: ['rich>=12.4.4']
         ## ONLY ADD PRE-COMMITS HERE THAT REQUIRE CI IMAGE
diff --git a/dev/breeze/README.md b/dev/breeze/README.md
index 78d69b4381..7794f25e4e 100644
--- a/dev/breeze/README.md
+++ b/dev/breeze/README.md
@@ -52,6 +52,6 @@ PLEASE DO NOT MODIFY THE HASH BELOW! IT IS AUTOMATICALLY UPDATED BY PRE-COMMIT.
 
 ---------------------------------------------------------------------------------------------------------
 
-Package config hash: 480e3d6ae41e7d82216d1d4196b5b44f65e0ff06a6e58f2a5b0c79c70c5912e8e4a42e99429cf3220718491f0ebde35a1a1d2663fd36cbd8d902a4d51f7ebeb1
+Package config hash: 40b9b6908905e94c93809cca70c68c632731242798dba9cbe62473e965cb4e5d44eaaa817c5ce9334397f3794a350bc00e3cf319631a25c461a935a389191e7b
 
 ---------------------------------------------------------------------------------------------------------
diff --git a/dev/breeze/setup.cfg b/dev/breeze/setup.cfg
index 14362ea492..9c7154ce52 100644
--- a/dev/breeze/setup.cfg
+++ b/dev/breeze/setup.cfg
@@ -63,7 +63,7 @@ install_requires =
     pytest-xdist
     pyyaml
     requests
-    rich>=12.4.1
+    rich>=12.4.4
     rich_click
 
 [options.packages.find]
diff --git a/images/breeze/output-build-docs.svg b/images/breeze/output-build-docs.svg
index c65181b9ae..928f8f898b 100644
--- a/images/breeze/output-build-docs.svg
+++ b/images/breeze/output-build-docs.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 1544.0000000000002" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1392.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,90 +19,262 @@
         font-weight: 700;
     }
 
-    .terminal-925795226-matrix {
+    .terminal-1803387802-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-925795226-title {
+    .terminal-1803387802-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-925795226-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-925795226-r2 { fill: #c5c8c6 }
-.terminal-925795226-r3 { fill: #d0b344;font-weight: bold }
-.terminal-925795226-r4 { fill: #868887 }
-.terminal-925795226-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-925795226-r6 { fill: #98a84b;font-weight: bold }
-.terminal-925795226-r7 { fill: #8d7b39 }
+    .terminal-1803387802-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1803387802-r2 { fill: #c5c8c6 }
+.terminal-1803387802-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1803387802-r4 { fill: #868887 }
+.terminal-1803387802-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1803387802-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1803387802-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="1504" rx="12"/><text class="terminal-925795226-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: build-docs</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-1803387802-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1341.0" />
+    </clipPath>
+    <clipPath id="terminal-1803387802-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-42">
+    <rect x="0" y="1026.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-46">
+    <rect x="0" y="1123.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-47">
+    <rect x="0" y="1148.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-48">
+    <rect x="0" y="1172.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-49">
+    <rect x="0" y="1197.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-50">
+    <rect x="0" y="1221.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-51">
+    <rect x="0" y="1245.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-52">
+    <rect x="0" y="1270.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1803387802-line-53">
+    <rect x="0" y="1294.7" 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="1390" rx="8"/><text class="terminal-1803387802-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-docs</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1803387802-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-925795226-matrix" font-variant="east-asian-width-values"><tspan class="terminal-925795226-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-925795226-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-925795226-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-925795226-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;build-docs&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-925795226-r1" x="0" y="72.8" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-925795226-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-925795226-r2" x="12.4" y="99.2" textLength="1463.2">Build&#160;documentation&#160;in&#160;the&#160;container.&#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;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-925795226-r2" x="0" y="125.6" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="152" textLength="1488">╭─&#160;Doc&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-925795226-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-925795226-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="178.4" textLength="136.4">--docs-only</tspan><tspan class="terminal-925795226-r2" x="173.6" y="178.4" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="272.8" y="178.4" textLength="24.8">-d</tspan> [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="204.8" textLength="210.8">--spellcheck-only</tspan><tspan class="terminal-925795226-r2" x="248" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="272.8" y="204.8" textLength="24.8">-s</tspan><tspan class="terminal-925795226 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="231.2" textLength="198.4">--for-production</tspan><tspan class="terminal-925795226-r2" x="235.6" y="231.2" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="272.8" y="231.2" textLength="24.8">-p</tspan><tspan class="terminal-92 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="257.6" textLength="198.4">--package-filter</tspan><tspan class="terminal-925795226-r2" x="235.6" y="257.6" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="272.8" y="257.6" textLength="24.8">-p</tspan><tspan class="terminal-92 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="284" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="284" textLength="1128.4">(apache-airflow&#160;|&#160;apache-airflow-providers&#160;|&#160;apache-airflow-providers-airbyte&#160 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="310.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="310.4" textLength="1128.4">apache-airflow-providers-alibaba&#160;|&#160;apache-airflow-providers-amazon&#160;|&#160;&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="336.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="336.8" textLength="1128.4">apache-airflow-providers-apache-beam&#160;|&#160;apache-airflow-providers-apache-cassandra&#160; [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="363.2" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="363.2" textLength="1128.4">apache-airflow-providers-apache-drill&#160;|&#160;apache-airflow-providers-apache-druid&#160;|&# [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="389.6" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="389.6" textLength="1128.4">apache-airflow-providers-apache-hdfs&#160;|&#160;apache-airflow-providers-apache-hive&#160;|&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="416" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="416" textLength="1128.4">apache-airflow-providers-apache-kylin&#160;|&#160;apache-airflow-providers-apache-livy&#160;|&#160;&#1 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="442.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="442.4" textLength="1128.4">apache-airflow-providers-apache-pig&#160;|&#160;apache-airflow-providers-apache-pinot&#160;|&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="468.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="468.8" textLength="1128.4">apache-airflow-providers-apache-spark&#160;|&#160;apache-airflow-providers-apache-sqoop&#160;|&# [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="495.2" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="495.2" textLength="1128.4">apache-airflow-providers-arangodb&#160;|&#160;apache-airflow-providers-asana&#160;|&#160;&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="521.6" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="521.6" textLength="1128.4">apache-airflow-providers-celery&#160;|&#160;apache-airflow-providers-cloudant&#160;|&#160;&#160; [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="548" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="548" textLength="1128.4">apache-airflow-providers-cncf-kubernetes&#160;|&#160;apache-airflow-providers-databricks&#160;|&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="574.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="574.4" textLength="1128.4">apache-airflow-providers-datadog&#160;|&#160;apache-airflow-providers-dbt-cloud&#160;|&#160;&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="600.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="600.8" textLength="1128.4">apache-airflow-providers-dingding&#160;|&#160;apache-airflow-providers-discord&#160;|&#160;&#160 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="627.2" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="627.2" textLength="1128.4">apache-airflow-providers-docker&#160;|&#160;apache-airflow-providers-elasticsearch&#160;|&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="653.6" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="653.6" textLength="1128.4">apache-airflow-providers-exasol&#160;|&#160;apache-airflow-providers-facebook&#160;|&#160;&#160; [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="680" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="680" textLength="1128.4">apache-airflow-providers-ftp&#160;|&#160;apache-airflow-providers-github&#160;|&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="706.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="706.4" textLength="1128.4">apache-airflow-providers-google&#160;|&#160;apache-airflow-providers-grpc&#160;|&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="732.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="732.8" textLength="1128.4">apache-airflow-providers-hashicorp&#160;|&#160;apache-airflow-providers-http&#160;|&#160;&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="759.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="759.2" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="759.2" textLength="1128.4">apache-airflow-providers-imap&#160;|&#160;apache-airflow-providers-influxdb&#160;|&#160;&#160;&# [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="785.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="785.6" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="785.6" textLength="1128.4">apache-airflow-providers-jdbc&#160;|&#160;apache-airflow-providers-jenkins&#160;|&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="812" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="812" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="812" textLength="1128.4">apache-airflow-providers-jira&#160;|&#160;apache-airflow-providers-microsoft-azure&#160;|&#160;&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="838.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="838.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="838.4" textLength="1128.4">apache-airflow-providers-microsoft-mssql&#160;|&#160;apache-airflow-providers-microsoft-psrp&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="864.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="864.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="864.8" textLength="1128.4">apache-airflow-providers-microsoft-winrm&#160;|&#160;apache-airflow-providers-mongo&#160;|&#160; [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="891.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="891.2" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="891.2" textLength="1128.4">apache-airflow-providers-mysql&#160;|&#160;apache-airflow-providers-neo4j&#160;|&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="917.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="917.6" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="917.6" textLength="1128.4">apache-airflow-providers-odbc&#160;|&#160;apache-airflow-providers-openfaas&#160;|&#160;&#160;&# [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="944" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="944" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="944" textLength="1128.4">apache-airflow-providers-opsgenie&#160;|&#160;apache-airflow-providers-oracle&#160;|&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="970.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="970.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="970.4" textLength="1128.4">apache-airflow-providers-pagerduty&#160;|&#160;apache-airflow-providers-papermill&#160;|&#160;&# [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="996.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="996.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="996.8" textLength="1128.4">apache-airflow-providers-plexus&#160;|&#160;apache-airflow-providers-postgres&#160;|&#160;&#160; [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1023.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1023.2" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1023.2" textLength="1128.4">apache-airflow-providers-presto&#160;|&#160;apache-airflow-providers-qubole&#160;|&#160;&#160 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1049.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1049.6" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1049.6" textLength="1128.4">apache-airflow-providers-redis&#160;|&#160;apache-airflow-providers-salesforce&#160;|&#160;&# [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1076" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1076" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1076" textLength="1128.4">apache-airflow-providers-samba&#160;|&#160;apache-airflow-providers-segment&#160;|&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1102.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1102.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1102.4" textLength="1128.4">apache-airflow-providers-sendgrid&#160;|&#160;apache-airflow-providers-sftp&#160;|&#160;&#160 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1128.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1128.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1128.8" textLength="1128.4">apache-airflow-providers-singularity&#160;|&#160;apache-airflow-providers-slack&#160;|&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1155.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1155.2" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1155.2" textLength="1128.4">apache-airflow-providers-snowflake&#160;|&#160;apache-airflow-providers-sqlite&#160;|&#160;&# [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1181.6" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1181.6" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1181.6" textLength="1128.4">apache-airflow-providers-ssh&#160;|&#160;apache-airflow-providers-tableau&#160;|&#160;&#160;& [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1208" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1208" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1208" textLength="1128.4">apache-airflow-providers-telegram&#160;|&#160;apache-airflow-providers-trino&#160;|&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1234.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1234.4" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1234.4" textLength="1128.4">apache-airflow-providers-vertica&#160;|&#160;apache-airflow-providers-yandex&#160;|&#160;&#16 [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1260.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1260.8" textLength="310">&#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;</tspan><tspan class="terminal-925795226-r7" x="322.4" y="1260.8" textLength="1128.4">apache-airflow-providers-zendesk&#160;|&#160;docker-stack&#160;|&#160;helm-chart)&#160;&#160; [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1287.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-925795226-r2" x="1488" y="1287.2" textLength="12.4">
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1313.6" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-925795226-r2" x="1488" y="1313.6" textLength="12.4">
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1340" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1340" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="1340" textLength="111.6">--verbose</tspan><tspan class="terminal-925795226-r2" x="148.8" y="1340" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="297.6" y="1340" textLength [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1366.4" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1366.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="1366.4" textLength="111.6">--dry-run</tspan><tspan class="terminal-925795226-r2" x="148.8" y="1366.4" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="297.6" y="1366.4"  [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1392.8" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1392.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="1392.8" textLength="235.6">--github-repository</tspan><tspan class="terminal-925795226-r2" x="272.8" y="1392.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="297.6" y="1392.8" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1419.2" textLength="12.4">│</tspan><tspan class="terminal-925795226-r2" x="12.4" y="1419.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-925795226-r5" x="37.2" y="1419.2" textLength="74.4">--help</tspan><tspan class="terminal-925795226-r2" x="111.6" y="1419.2" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-925795226-r6" x="297.6" [...]
-</tspan><tspan class="terminal-925795226-r4" x="0" y="1445.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-925795226-r2" x="1488" y="1445.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-1803387802-matrix">
+    <text class="terminal-1803387802-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1803387802-line-0)">
+</text><text class="terminal-1803387802-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1803387802-line-1)">Usage:&#160;</text><text class="terminal-1803387802-r1" x="97.6" y="44.4" textLength="329.4" clip-path="url(#terminal-1803387802-line-1)">breeze&#160;build-docs&#160;[OPTIONS]</text><text class="terminal-1803387802-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-1)">
+</text><text class="terminal-1803387802-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-2)">
+</text><text class="terminal-1803387802-r2" x="12.2" y="93.2" textLength="451.4" clip-path="url(#terminal-1803387802-line-3)">Build&#160;documentation&#160;in&#160;the&#160;container.</text><text class="terminal-1803387802-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-3)">
+</text><text class="terminal-1803387802-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-4)">
+</text><text class="terminal-1803387802-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1803387802-line-5)">╭─</text><text class="terminal-1803387802-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1803387802-line-5)">&#160;Doc&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1803387802-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-180338 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-6)">│</text><text class="terminal-1803387802-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-6)">-</text><text class="terminal-1803387802-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-1803387802-line-6)">-docs</text><text class="terminal-1803387802-r5" x="97.6" y="166.4" textLength="61" clip-path="url(#terminal-18033878 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-7)">│</text><text class="terminal-1803387802-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-7)">-</text><text class="terminal-1803387802-r5" x="36.6" y="190.8" textLength="134.2" clip-path="url(#terminal-1803387802-line-7)">-spellcheck</text><text class="terminal-1803387802-r5" x="170.8" y="190.8" textLength="61" clip-path="url(#termina [...]
+</text><text class="terminal-1803387802-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-8)">│</text><text class="terminal-1803387802-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-8)">-</text><text class="terminal-1803387802-r5" x="36.6" y="215.2" textLength="48.8" clip-path="url(#terminal-1803387802-line-8)">-for</text><text class="terminal-1803387802-r5" x="85.4" y="215.2" textLength="134.2" clip-path="url(#terminal-1803 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-9)">│</text><text class="terminal-1803387802-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-9)">-</text><text class="terminal-1803387802-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1803387802-line-9)">-package</text><text class="terminal-1803387802-r5" x="134.2" y="239.6" textLength="85.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1803387802-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1803387802-line-10)">│</text><text class="terminal-1803387802-r7" x="305" y="264" textLength="1134.6" clip-path="url(#terminal-1803387802-line-10)">(apache-airflow&#160;|&#160;apache-airflow-providers&#160;|&#160;apache-airflow-providers-airbyte&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451.8"  [...]
+</text><text class="terminal-1803387802-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-11)">│</text><text class="terminal-1803387802-r7" x="305" y="288.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-11)">apache-airflow-providers-alibaba&#160;|&#160;apache-airflow-providers-amazon&#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><text class="terminal-1803387802-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-12)">│</text><text class="terminal-1803387802-r7" x="305" y="312.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-12)">apache-airflow-providers-apache-beam&#160;|&#160;apache-airflow-providers-apache-cassandra&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451.8" y="312.8" textLength= [...]
+</text><text class="terminal-1803387802-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-13)">│</text><text class="terminal-1803387802-r7" x="305" y="337.2" textLength="1134.6" clip-path="url(#terminal-1803387802-line-13)">apache-airflow-providers-apache-drill&#160;|&#160;apache-airflow-providers-apache-druid&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451.8" y="337 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-14)">│</text><text class="terminal-1803387802-r7" x="305" y="361.6" textLength="1134.6" clip-path="url(#terminal-1803387802-line-14)">apache-airflow-providers-apache-hdfs&#160;|&#160;apache-airflow-providers-apache-hive&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1803387802-line-15)">│</text><text class="terminal-1803387802-r7" x="305" y="386" textLength="1134.6" clip-path="url(#terminal-1803387802-line-15)">apache-airflow-providers-apache-kylin&#160;|&#160;apache-airflow-providers-apache-livy&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451.8" y="38 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-16)">│</text><text class="terminal-1803387802-r7" x="305" y="410.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-16)">apache-airflow-providers-apache-pig&#160;|&#160;apache-airflow-providers-apache-pinot&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-17)">│</text><text class="terminal-1803387802-r7" x="305" y="434.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-17)">apache-airflow-providers-apache-spark&#160;|&#160;apache-airflow-providers-apache-sqoop&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451.8" y="434 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-18)">│</text><text class="terminal-1803387802-r7" x="305" y="459.2" textLength="1134.6" clip-path="url(#terminal-1803387802-line-18)">apache-airflow-providers-arangodb&#160;|&#160;apache-airflow-providers-asana&#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><text class="terminal-1803387802-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-19)">│</text><text class="terminal-1803387802-r7" x="305" y="483.6" textLength="1134.6" clip-path="url(#terminal-1803387802-line-19)">apache-airflow-providers-celery&#160;|&#160;apache-airflow-providers-cloudant&#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><tex [...]
+</text><text class="terminal-1803387802-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1803387802-line-20)">│</text><text class="terminal-1803387802-r7" x="305" y="508" textLength="1134.6" clip-path="url(#terminal-1803387802-line-20)">apache-airflow-providers-cncf-kubernetes&#160;|&#160;apache-airflow-providers-databricks&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451.8" y="508" textLen [...]
+</text><text class="terminal-1803387802-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-21)">│</text><text class="terminal-1803387802-r7" x="305" y="532.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-21)">apache-airflow-providers-datadog&#160;|&#160;apache-airflow-providers-dbt-cloud&#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="t [...]
+</text><text class="terminal-1803387802-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-22)">│</text><text class="terminal-1803387802-r7" x="305" y="556.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-22)">apache-airflow-providers-dingding&#160;|&#160;apache-airflow-providers-discord&#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 cla [...]
+</text><text class="terminal-1803387802-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-23)">│</text><text class="terminal-1803387802-r7" x="305" y="581.2" textLength="1134.6" clip-path="url(#terminal-1803387802-line-23)">apache-airflow-providers-docker&#160;|&#160;apache-airflow-providers-elasticsearch&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-24)">│</text><text class="terminal-1803387802-r7" x="305" y="605.6" textLength="1134.6" clip-path="url(#terminal-1803387802-line-24)">apache-airflow-providers-exasol&#160;|&#160;apache-airflow-providers-facebook&#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><tex [...]
+</text><text class="terminal-1803387802-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1803387802-line-25)">│</text><text class="terminal-1803387802-r7" x="305" y="630" textLength="1134.6" clip-path="url(#terminal-1803387802-line-25)">apache-airflow-providers-ftp&#160;|&#160;apache-airflow-providers-github&#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-1803387802-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-26)">│</text><text class="terminal-1803387802-r7" x="305" y="654.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-26)">apache-airflow-providers-google&#160;|&#160;apache-airflow-providers-grpc&#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-1803387802-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-27)">│</text><text class="terminal-1803387802-r7" x="305" y="678.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-27)">apache-airflow-providers-hashicorp&#160;|&#160;apache-airflow-providers-http&#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><text class="terminal-1803387802-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-28)">│</text><text class="terminal-1803387802-r7" x="305" y="703.2" textLength="1134.6" clip-path="url(#terminal-1803387802-line-28)">apache-airflow-providers-imap&#160;|&#160;apache-airflow-providers-influxdb&#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-1803387802-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-29)">│</text><text class="terminal-1803387802-r7" x="305" y="727.6" textLength="1134.6" clip-path="url(#terminal-1803387802-line-29)">apache-airflow-providers-jdbc&#160;|&#160;apache-airflow-providers-jenkins&#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-1803387802-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1803387802-line-30)">│</text><text class="terminal-1803387802-r7" x="305" y="752" textLength="1134.6" clip-path="url(#terminal-1803387802-line-30)">apache-airflow-providers-jira&#160;|&#160;apache-airflow-providers-microsoft-azure&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802- [...]
+</text><text class="terminal-1803387802-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-31)">│</text><text class="terminal-1803387802-r7" x="305" y="776.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-31)">apache-airflow-providers-microsoft-mssql&#160;|&#160;apache-airflow-providers-microsoft-psrp&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r4" x="1451.8" y="776.4" textLength="12.2" cli [...]
+</text><text class="terminal-1803387802-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-32)">│</text><text class="terminal-1803387802-r7" x="305" y="800.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-32)">apache-airflow-providers-microsoft-winrm&#160;|&#160;apache-airflow-providers-mongo&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1803387802-r [...]
+</text><text class="terminal-1803387802-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-33)">│</text><text class="terminal-1803387802-r7" x="305" y="825.2" textLength="1134.6" clip-path="url(#terminal-1803387802-line-33)">apache-airflow-providers-mysql&#160;|&#160;apache-airflow-providers-neo4j&#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-1803387802-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-34)">│</text><text class="terminal-1803387802-r7" x="305" y="849.6" textLength="1134.6" clip-path="url(#terminal-1803387802-line-34)">apache-airflow-providers-odbc&#160;|&#160;apache-airflow-providers-openfaas&#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-1803387802-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1803387802-line-35)">│</text><text class="terminal-1803387802-r7" x="305" y="874" textLength="1134.6" clip-path="url(#terminal-1803387802-line-35)">apache-airflow-providers-opsgenie&#160;|&#160;apache-airflow-providers-oracle&#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 cl [...]
+</text><text class="terminal-1803387802-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-36)">│</text><text class="terminal-1803387802-r7" x="305" y="898.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-36)">apache-airflow-providers-pagerduty&#160;|&#160;apache-airflow-providers-papermill&#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-18 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-37)">│</text><text class="terminal-1803387802-r7" x="305" y="922.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-37)">apache-airflow-providers-plexus&#160;|&#160;apache-airflow-providers-postgres&#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><tex [...]
+</text><text class="terminal-1803387802-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-38)">│</text><text class="terminal-1803387802-r7" x="305" y="947.2" textLength="1134.6" clip-path="url(#terminal-1803387802-line-38)">apache-airflow-providers-presto&#160;|&#160;apache-airflow-providers-qubole&#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-1803387802-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-39)">│</text><text class="terminal-1803387802-r7" x="305" y="971.6" textLength="1134.6" clip-path="url(#terminal-1803387802-line-39)">apache-airflow-providers-redis&#160;|&#160;apache-airflow-providers-salesforce&#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 cla [...]
+</text><text class="terminal-1803387802-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1803387802-line-40)">│</text><text class="terminal-1803387802-r7" x="305" y="996" textLength="1134.6" clip-path="url(#terminal-1803387802-line-40)">apache-airflow-providers-samba&#160;|&#160;apache-airflow-providers-segment&#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;</tex [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-41)">│</text><text class="terminal-1803387802-r7" x="305" y="1020.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-41)">apache-airflow-providers-sendgrid&#160;|&#160;apache-airflow-providers-sftp&#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-1803387802-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-42)">│</text><text class="terminal-1803387802-r7" x="305" y="1044.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-42)">apache-airflow-providers-singularity&#160;|&#160;apache-airflow-providers-slack&#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= [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-43)">│</text><text class="terminal-1803387802-r7" x="305" y="1069.2" textLength="1134.6" clip-path="url(#terminal-1803387802-line-43)">apache-airflow-providers-snowflake&#160;|&#160;apache-airflow-providers-sqlite&#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 c [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-44)">│</text><text class="terminal-1803387802-r7" x="305" y="1093.6" textLength="1134.6" clip-path="url(#terminal-1803387802-line-44)">apache-airflow-providers-ssh&#160;|&#160;apache-airflow-providers-tableau&#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-1803387802-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1803387802-line-45)">│</text><text class="terminal-1803387802-r7" x="305" y="1118" textLength="1134.6" clip-path="url(#terminal-1803387802-line-45)">apache-airflow-providers-telegram&#160;|&#160;apache-airflow-providers-trino&#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><text class="terminal-1803387802-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-46)">│</text><text class="terminal-1803387802-r7" x="305" y="1142.4" textLength="1134.6" clip-path="url(#terminal-1803387802-line-46)">apache-airflow-providers-vertica&#160;|&#160;apache-airflow-providers-yandex&#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;</te [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-47)">│</text><text class="terminal-1803387802-r7" x="305" y="1166.8" textLength="1134.6" clip-path="url(#terminal-1803387802-line-47)">apache-airflow-providers-zendesk&#160;|&#160;docker-stack&#160;|&#160;helm-chart)&#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-1803387802-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-1803387802-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1803387802-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-48)">
+</text><text class="terminal-1803387802-r4" x="0" y="1215.6" textLength="24.4" clip-path="url(#terminal-1803387802-line-49)">╭─</text><text class="terminal-1803387802-r4" x="24.4" y="1215.6" textLength="1415.2" clip-path="url(#terminal-1803387802-line-49)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1803387802-r4" x="1439.6" y="1215.6" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1803387802-line-50)">│</text><text class="terminal-1803387802-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1803387802-line-50)">-</text><text class="terminal-1803387802-r5" x="36.6" y="1240" textLength="97.6" clip-path="url(#terminal-1803387802-line-50)">-verbose</text><text class="terminal-1803387802-r6" x="280.6" y="1240" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-51)">│</text><text class="terminal-1803387802-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-1803387802-line-51)">-</text><text class="terminal-1803387802-r5" x="36.6" y="1264.4" textLength="48.8" clip-path="url(#terminal-1803387802-line-51)">-dry</text><text class="terminal-1803387802-r5" x="85.4" y="1264.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-52)">│</text><text class="terminal-1803387802-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1803387802-line-52)">-</text><text class="terminal-1803387802-r5" x="36.6" y="1288.8" textLength="85.4" clip-path="url(#terminal-1803387802-line-52)">-github</text><text class="terminal-1803387802-r5" x="122" y="1288.8" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-53)">│</text><text class="terminal-1803387802-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-1803387802-line-53)">-</text><text class="terminal-1803387802-r5" x="36.6" y="1313.2" textLength="61" clip-path="url(#terminal-1803387802-line-53)">-help</text><text class="terminal-1803387802-r6" x="280.6" y="1313.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1803387802-r4" x="0" y="1337.6" textLength="1464" clip-path="url(#terminal-1803387802-line-54)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1803387802-r2" x="1464" y="1337.6" textLength="12.2" clip-path="url(#terminal-1803387802-line-54)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg
index b779367062..34c28afd8b 100644
--- a/images/breeze/output-build-image.svg
+++ b/images/breeze/output-build-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 1623.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1465.1999999999998" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,93 +19,274 @@
         font-weight: 700;
     }
 
-    .terminal-2884033632-matrix {
+    .terminal-1635638368-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2884033632-title {
+    .terminal-1635638368-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2884033632-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2884033632-r2 { fill: #c5c8c6 }
-.terminal-2884033632-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2884033632-r4 { fill: #868887 }
-.terminal-2884033632-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2884033632-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2884033632-r7 { fill: #8d7b39 }
+    .terminal-1635638368-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1635638368-r2 { fill: #c5c8c6 }
+.terminal-1635638368-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1635638368-r4 { fill: #868887 }
+.terminal-1635638368-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1635638368-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1635638368-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="1583.2" rx="12"/><text class="terminal-2884033632-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: build-image</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-1635638368-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1414.1999999999998" />
+    </clipPath>
+    <clipPath id="terminal-1635638368-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-42">
+    <rect x="0" y="1026.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-46">
+    <rect x="0" y="1123.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-47">
+    <rect x="0" y="1148.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-48">
+    <rect x="0" y="1172.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-49">
+    <rect x="0" y="1197.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-50">
+    <rect x="0" y="1221.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-51">
+    <rect x="0" y="1245.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-52">
+    <rect x="0" y="1270.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-53">
+    <rect x="0" y="1294.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-54">
+    <rect x="0" y="1319.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-55">
+    <rect x="0" y="1343.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1635638368-line-56">
+    <rect x="0" y="1367.9" 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="1463.2" rx="8"/><text class="terminal-1635638368-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1635638368-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2884033632-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2884033632-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2884033632-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2884033632-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2884033632-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;build-image&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-2884033632-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2884033632-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="99.2" textLength="1463.2">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).&#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; [...]
-</tspan><tspan class="terminal-2884033632-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="152" textLength="1488">╭─&#160;Basic&#160;usage&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2884033632-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="178.4" textLength="99.2">--python</tspan><tspan class="terminal-2884033632-r2" x="136.4" y="178.4" textLength="310">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="204.8" textLength="483.6">&#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;</tspan><tspan class="terminal-2884033632-r7" x="496" y="204.8" textLength="744">(&gt;3.7&lt; [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="231.2" textLength="483.6">&#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;</tspan><tspan class="terminal-2884033632-r4" x="496" y="231.2" textLength="744">[default:&#1 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="257.6" textLength="384.4">--upgrade-to-newer-dependencies</tspan><tspan class="terminal-2884033632-r2" x="421.6" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r6" x="446.4" y="257.6" textLength="24.8">-u</tspan><tspan clas [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="284" textLength="198.4">--debian-version</tspan><tspan class="terminal-2884033632-r2" x="235.6" y="284" textLength="210.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-288403 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="310.4" textLength="136.4">--image-tag</tspan><tspan class="terminal-2884033632-r2" x="173.6" y="310.4" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</ts [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="336.8" textLength="186">--tag-as-latest</tspan><tspan class="terminal-2884033632-r2" x="223.2" y="336.8" textLength="223.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="term [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="363.2" textLength="992">&#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;Useful&#160;when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</tspan><tspan [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="389.6" textLength="173.6">--docker-cache</tspan><tspan class="terminal-2884033632-r2" x="210.8" y="389.6" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan clas [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="416" textLength="483.6">&#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;</tspan><tspan class="terminal-2884033632-r4" x="496" y="416" textLength="558">[default:&#160;reg [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="442.4" textLength="161.2">--force-build</tspan><tspan class="terminal-2884033632-r2" x="198.4" y="442.4" textLength="248">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan c [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="468.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2884033632-r2" x="1488" y="468.8" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="495.2" textLength="1488">╭─&#160;Building&#160;multiple&#160;images&#160;───────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2884033632-r2" x="1488" y="495.2" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="521.6" textLength="285.2">--build-multiple-images</tspan><tspan class="terminal-2884033632-r2" x="322.4" y="521.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="372" y="521.6" textLength="1078.8">Run&#160;the&#160 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="548" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="548" textLength="210.8">--python-versions</tspan><tspan class="terminal-2884033632-r2" x="248" y="548" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="372" y="548" textLength="967.2">S [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="574.4" textLength="359.6">&#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;</tspan><tspan class="terminal-2884033632-r4" x="372" y="574.4" textLength="967.2">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="600.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2884033632-r2" x="1488" y="600.8" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="627.2" textLength="1488">╭─&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;─────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2884033632-r2" x="1488" y="627.2" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="653.6" textLength="396.8">--install-providers-from-sources</tspan><tspan class="terminal-2884033632-r2" x="434" y="653.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y="653.6" textLength="967.2">Install&# [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="680" textLength="322.4">--airflow-constraints-mode</tspan><tspan class="terminal-2884033632-r2" x="359.6" y="680" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y="680" textLen [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="706.4" textLength="471.2">&#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;</tspan><tspan class="terminal-2884033632-r7" x="483.6" y="706.4" textLength="880.4">(constraints-s [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="732.8" textLength="471.2">&#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;</tspan><tspan class="terminal-2884033632-r4" x="483.6" y="732.8" textLength="880.4">[default:&#160 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="759.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="759.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="759.2" textLength="384.4">--airflow-constraints-reference</tspan><tspan class="terminal-2884033632-r2" x="421.6" y="759.2" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y="759.2" textLength="644.8">Cons [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="785.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="785.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="785.6" textLength="297.6">--additional-python-deps</tspan><tspan class="terminal-2884033632-r2" x="334.8" y="785.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="48 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="812" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="812" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="812" textLength="223.2">--runtime-apt-deps</tspan><tspan class="terminal-2884033632-r2" x="260.4" y="812" textLength="223.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="838.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="838.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="838.4" textLength="260.4">--runtime-apt-command</tspan><tspan class="terminal-2884033632-r2" x="297.6" y="838.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="864.8" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="864.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="864.8" textLength="235.6">--additional-extras</tspan><tspan class="terminal-2884033632-r2" x="272.8" y="864.8" textLength="210.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="term [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="891.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="891.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="891.2" textLength="359.6">--additional-runtime-apt-deps</tspan><tspan class="terminal-2884033632-r2" x="396.8" y="891.2" textLength="86.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y="891.2" textLength= [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="917.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="917.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="917.6" textLength="347.2">--additional-runtime-apt-env</tspan><tspan class="terminal-2884033632-r2" x="384.4" y="917.6" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y="917.6" textLe [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="944" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="944" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="944" textLength="396.8">--additional-runtime-apt-command</tspan><tspan class="terminal-2884033632-r2" x="434" y="944" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y="944" textLength="818.4">Additional&#160;com [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="970.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="970.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="970.4" textLength="310">--additional-dev-apt-deps</tspan><tspan class="terminal-2884033632-r2" x="347.2" y="970.4" textLength="136.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y= [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="996.8" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="996.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="996.8" textLength="297.6">--additional-dev-apt-env</tspan><tspan class="terminal-2884033632-r2" x="334.8" y="996.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="48 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1023.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1023.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1023.2" textLength="347.2">--additional-dev-apt-command</tspan><tspan class="terminal-2884033632-r2" x="384.4" y="1023.2" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="483.6" y="1023.2" t [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1049.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1049.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1049.6" textLength="173.6">--dev-apt-deps</tspan><tspan class="terminal-2884033632-r2" x="210.8" y="1049.6" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1076" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1076" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1076" textLength="210.8">--dev-apt-command</tspan><tspan class="terminal-2884033632-r2" x="248" y="1076" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class=" [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1102.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2884033632-r2" x="1488" y="1102.4" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1128.8" textLength="1488">╭─&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;──────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2884033632-r2" x="1488" y="1128.8" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1155.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1155.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1155.2" textLength="173.6">--github-token</tspan><tspan class="terminal-2884033632-r2" x="210.8" y="1155.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="359.6" y [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1181.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1181.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1181.6" textLength="210.8">--github-username</tspan><tspan class="terminal-2884033632-r2" x="248" y="1181.6" textLength="111.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="359.6" y="1181.6" textLen [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1208" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1208" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1208" textLength="124">--platform</tspan><tspan class="terminal-2884033632-r2" x="161.2" y="1208" textLength="198.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1234.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1234.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1234.4" textLength="148.8">--push-image</tspan><tspan class="terminal-2884033632-r2" x="186" y="1234.4" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x=" [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1260.8" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1260.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1260.8" textLength="161.2">--empty-image</tspan><tspan class="terminal-2884033632-r2" x="198.4" y="1260.8" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="359 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1287.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1287.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1287.2" textLength="272.8">--prepare-buildx-cache</tspan><tspan class="terminal-2884033632-r2" x="310" y="1287.2" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r2" x="359.6" y="1287.2" textLength="1091.2">Prepares&#160 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1313.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1313.6" textLength="347.2">&#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;</tspan><tspan class="terminal-2884033632-r2" x="359.6" y="1313.6" textLength="1091.2">the&#160;image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1340" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2884033632-r2" x="1488" y="1340" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1366.4" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2884033632-r2" x="1488" y="1366.4" textLength="12.4">
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1392.8" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1392.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1392.8" textLength="235.6">--github-repository</tspan><tspan class="terminal-2884033632-r2" x="272.8" y="1392.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r6" x="297.6" y="1392.8" textLength="24.8">-g</tspan><tspan class="term [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1419.2" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1419.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1419.2" textLength="111.6">--verbose</tspan><tspan class="terminal-2884033632-r2" x="148.8" y="1419.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r6" x="297.6" y="141 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1445.6" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1445.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1445.6" textLength="111.6">--dry-run</tspan><tspan class="terminal-2884033632-r2" x="148.8" y="1445.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r6" x="297.6" y="144 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1472" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1472" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1472" textLength="99.2">--answer</tspan><tspan class="terminal-2884033632-r2" x="136.4" y="1472" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r6" x="297.6" y="1472" t [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1498.4" textLength="12.4">│</tspan><tspan class="terminal-2884033632-r2" x="12.4" y="1498.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2884033632-r5" x="37.2" y="1498.4" textLength="74.4">--help</tspan><tspan class="terminal-2884033632-r2" x="111.6" y="1498.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2884033632-r6" x="2 [...]
-</tspan><tspan class="terminal-2884033632-r4" x="0" y="1524.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2884033632-r2" x="1488" y="1524.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-1635638368-matrix">
+    <text class="terminal-1635638368-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1635638368-line-0)">
+</text><text class="terminal-1635638368-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1635638368-line-1)">Usage:&#160;</text><text class="terminal-1635638368-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-1635638368-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-1635638368-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-1)">
+</text><text class="terminal-1635638368-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-2)">
+</text><text class="terminal-1635638368-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-1635638368-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-1635638368-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-3)">
+</text><text class="terminal-1635638368-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-4)">
+</text><text class="terminal-1635638368-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1635638368-line-5)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1635638368-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-163563 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-6)">│</text><text class="terminal-1635638368-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-6)">-</text><text class="terminal-1635638368-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1635638368-line-6)">-python</text><text class="terminal-1635638368-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-163 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-7)">│</text><text class="terminal-1635638368-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1635638368-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-1635638368-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-8)">│</text><text class="terminal-1635638368-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1635638368-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-1635638368-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-9)">│</text><text class="terminal-1635638368-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-9)">-</text><text class="terminal-1635638368-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1635638368-line-9)">-upgrade</text><text class="terminal-1635638368-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
+</text><text class="terminal-1635638368-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1635638368-line-10)">│</text><text class="terminal-1635638368-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1635638368-line-10)">-</text><text class="terminal-1635638368-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-1635638368-line-10)">-debian</text><text class="terminal-1635638368-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-16356383 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-11)">│</text><text class="terminal-1635638368-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-11)">-</text><text class="terminal-1635638368-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-1635638368-line-11)">-image</text><text class="terminal-1635638368-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1635638368-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-12)">│</text><text class="terminal-1635638368-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-12)">-</text><text class="terminal-1635638368-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-1635638368-line-12)">-tag</text><text class="terminal-1635638368-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-163 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-13)">│</text><text class="terminal-1635638368-r2" x="475.8" y="337.2" textLength="414.8" clip-path="url(#terminal-1635638368-line-13)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1635638368-r5" x="890.6" y="337.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-13)">-</text><text class="terminal-1635638368- [...]
+</text><text class="terminal-1635638368-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-14)">│</text><text class="terminal-1635638368-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-14)">-</text><text class="terminal-1635638368-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-1635638368-line-14)">-docker</text><text class="terminal-1635638368-r5" x="122" y="361.6" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1635638368-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1635638368-line-15)">│</text><text class="terminal-1635638368-r4" x="475.8" y="386" textLength="549" clip-path="url(#terminal-1635638368-line-15)">[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-1635638368-r4" x="1451.8" y="386" t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-16)">│</text><text class="terminal-1635638368-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-16)">-</text><text class="terminal-1635638368-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-1635638368-line-16)">-force</text><text class="terminal-1635638368-r5" x="109.8" y="410.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1635638368-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1635638368-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-17)">
+</text><text class="terminal-1635638368-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-1635638368-line-18)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-1635638368-line-18)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-1635638368-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-19)">│</text><text class="terminal-1635638368-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-19)">-</text><text class="terminal-1635638368-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1635638368-line-19)">-build</text><text class="terminal-1635638368-r5" x="109.8" y="483.6" textLength="195.2" clip-path="url(#termina [...]
+</text><text class="terminal-1635638368-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1635638368-line-20)">│</text><text class="terminal-1635638368-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-1635638368-line-20)">-</text><text class="terminal-1635638368-r5" x="36.6" y="508" textLength="85.4" clip-path="url(#terminal-1635638368-line-20)">-python</text><text class="terminal-1635638368-r5" x="122" y="508" textLength="109.8" clip-path="url(#terminal-1635638 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-21)">│</text><text class="terminal-1635638368-r4" x="353.8" y="532.4" textLength="951.6" clip-path="url(#terminal-1635638368-line-21)">[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-1635638368-r4" x="0" y="556.8" textLength="1464" clip-path="url(#terminal-1635638368-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-22)">
+</text><text class="terminal-1635638368-r4" x="0" y="581.2" textLength="24.4" clip-path="url(#terminal-1635638368-line-23)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="581.2" textLength="1415.2" clip-path="url(#terminal-1635638368-line-23)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="581.2" textLength="24.4" clip-pat [...]
+</text><text class="terminal-1635638368-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-24)">│</text><text class="terminal-1635638368-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-24)">-</text><text class="terminal-1635638368-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-1635638368-line-24)">-install</text><text class="terminal-1635638368-r5" x="134.2" y="605.6" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-1635638368-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1635638368-line-25)">│</text><text class="terminal-1635638368-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1635638368-line-25)">-</text><text class="terminal-1635638368-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-1635638368-line-25)">-airflow</text><text class="terminal-1635638368-r5" x="134.2" y="630" textLength="207.4" clip-path="url(#terminal-1635 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-26)">│</text><text class="terminal-1635638368-r7" x="463.6" y="654.4" textLength="866.2" clip-path="url(#terminal-1635638368-line-26)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-1635638368-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-26)">│</text><text clas [...]
+</text><text class="terminal-1635638368-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-27)">│</text><text class="terminal-1635638368-r4" x="463.6" y="678.8" textLength="866.2" clip-path="url(#terminal-1635638368-line-27)">[default:&#160;constraints-source-providers]&#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-1635638368-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-28)">│</text><text class="terminal-1635638368-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-28)">-</text><text class="terminal-1635638368-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-1635638368-line-28)">-airflow</text><text class="terminal-1635638368-r5" x="134.2" y="703.2" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-1635638368-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-29)">│</text><text class="terminal-1635638368-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-29)">-</text><text class="terminal-1635638368-r5" x="36.6" y="727.6" textLength="134.2" clip-path="url(#terminal-1635638368-line-29)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="727.6" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1635638368-line-30)">│</text><text class="terminal-1635638368-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1635638368-line-30)">-</text><text class="terminal-1635638368-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-1635638368-line-30)">-runtime</text><text class="terminal-1635638368-r5" x="134.2" y="752" textLength="109.8" clip-path="url(#terminal-1635 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-31)">│</text><text class="terminal-1635638368-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-31)">-</text><text class="terminal-1635638368-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-1635638368-line-31)">-runtime</text><text class="terminal-1635638368-r5" x="134.2" y="776.4" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-1635638368-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-32)">│</text><text class="terminal-1635638368-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-32)">-</text><text class="terminal-1635638368-r5" x="36.6" y="800.8" textLength="134.2" clip-path="url(#terminal-1635638368-line-32)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="800.8" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-1635638368-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-33)">│</text><text class="terminal-1635638368-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-33)">-</text><text class="terminal-1635638368-r5" x="36.6" y="825.2" textLength="134.2" clip-path="url(#terminal-1635638368-line-33)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="825.2" textLength="207.4" clip-path="url(#t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-34)">│</text><text class="terminal-1635638368-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-34)">-</text><text class="terminal-1635638368-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-1635638368-line-34)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="849.6" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1635638368-line-35)">│</text><text class="terminal-1635638368-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1635638368-line-35)">-</text><text class="terminal-1635638368-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-1635638368-line-35)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="874" textLength="244" clip-path="url(#terminal-16 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-36)">│</text><text class="terminal-1635638368-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-36)">-</text><text class="terminal-1635638368-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-1635638368-line-36)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="898.4" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-37)">│</text><text class="terminal-1635638368-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-37)">-</text><text class="terminal-1635638368-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-1635638368-line-37)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="922.8" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-38)">│</text><text class="terminal-1635638368-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-38)">-</text><text class="terminal-1635638368-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-1635638368-line-38)">-additional</text><text class="terminal-1635638368-r5" x="170.8" y="947.2" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-39)">│</text><text class="terminal-1635638368-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-39)">-</text><text class="terminal-1635638368-r5" x="36.6" y="971.6" textLength="48.8" clip-path="url(#terminal-1635638368-line-39)">-dev</text><text class="terminal-1635638368-r5" x="85.4" y="971.6" textLength="109.8" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1635638368-line-40)">│</text><text class="terminal-1635638368-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1635638368-line-40)">-</text><text class="terminal-1635638368-r5" x="36.6" y="996" textLength="48.8" clip-path="url(#terminal-1635638368-line-40)">-dev</text><text class="terminal-1635638368-r5" x="85.4" y="996" textLength="146.4" clip-path="url(#terminal-163563836 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1020.4" textLength="1464" clip-path="url(#terminal-1635638368-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="1020.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-41)">
+</text><text class="terminal-1635638368-r4" x="0" y="1044.8" textLength="24.4" clip-path="url(#terminal-1635638368-line-42)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="1044.8" textLength="1415.2" clip-path="url(#terminal-1635638368-line-42)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="1044.8" textLeng [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-43)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-43)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1069.2" textLength="85.4" clip-path="url(#terminal-1635638368-line-43)">-github</text><text class="terminal-1635638368-r5" x="122" y="1069.2" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-44)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-44)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1093.6" textLength="85.4" clip-path="url(#terminal-1635638368-line-44)">-github</text><text class="terminal-1635638368-r5" x="122" y="1093.6" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1635638368-line-45)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1635638368-line-45)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1118" textLength="109.8" clip-path="url(#terminal-1635638368-line-45)">-platform</text><text class="terminal-1635638368-r2" x="341.6" y="1118" textLength="329.4" clip-path="url(#termina [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-46)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-46)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1142.4" textLength="61" clip-path="url(#terminal-1635638368-line-46)">-push</text><text class="terminal-1635638368-r5" x="97.6" y="1142.4" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-47)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-47)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1166.8" textLength="73.2" clip-path="url(#terminal-1635638368-line-47)">-empty</text><text class="terminal-1635638368-r5" x="109.8" y="1166.8" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-48)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-48)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-1635638368-line-48)">-prepare</text><text class="terminal-1635638368-r5" x="134.2" y="1191.2" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-49)">│</text><text class="terminal-1635638368-r2" x="341.6" y="1215.6" textLength="1098" clip-path="url(#terminal-1635638368-line-49)">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-1635638368-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-1635638368-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-1635638368-line-50)">
+</text><text class="terminal-1635638368-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-1635638368-line-51)">╭─</text><text class="terminal-1635638368-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-1635638368-line-51)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1635638368-r4" x="1439.6" y="1264.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-52)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-52)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1288.8" textLength="85.4" clip-path="url(#terminal-1635638368-line-52)">-github</text><text class="terminal-1635638368-r5" x="122" y="1288.8" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-53)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-1635638368-line-53)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-1635638368-line-53)">-verbose</text><text class="terminal-1635638368-r6" x="280.6" y="1313.2" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-54)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1635638368-line-54)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1337.6" textLength="48.8" clip-path="url(#terminal-1635638368-line-54)">-dry</text><text class="terminal-1635638368-r5" x="85.4" y="1337.6" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1635638368-line-55)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1635638368-line-55)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1362" textLength="85.4" clip-path="url(#terminal-1635638368-line-55)">-answer</text><text class="terminal-1635638368-r6" x="280.6" y="1362" textLength="24.4" clip-path="url(#terminal-16 [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-56)">│</text><text class="terminal-1635638368-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-1635638368-line-56)">-</text><text class="terminal-1635638368-r5" x="36.6" y="1386.4" textLength="61" clip-path="url(#terminal-1635638368-line-56)">-help</text><text class="terminal-1635638368-r6" x="280.6" y="1386.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1635638368-r4" x="0" y="1410.8" textLength="1464" clip-path="url(#terminal-1635638368-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1635638368-r2" x="1464" y="1410.8" textLength="12.2" clip-path="url(#terminal-1635638368-line-57)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
index 247461d555..494e77574c 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 1544 2072.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1880.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,110 +19,342 @@
         font-weight: 700;
     }
 
-    .terminal-997154497-matrix {
+    .terminal-3136577362-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-997154497-title {
+    .terminal-3136577362-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-997154497-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-997154497-r2 { fill: #c5c8c6 }
-.terminal-997154497-r3 { fill: #d0b344;font-weight: bold }
-.terminal-997154497-r4 { fill: #868887 }
-.terminal-997154497-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-997154497-r6 { fill: #98a84b;font-weight: bold }
-.terminal-997154497-r7 { fill: #8d7b39 }
+    .terminal-3136577362-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3136577362-r2 { fill: #c5c8c6 }
+.terminal-3136577362-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3136577362-r4 { fill: #868887 }
+.terminal-3136577362-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3136577362-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3136577362-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="2032" rx="12"/><text class="terminal-997154497-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: build-prod-image</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-3136577362-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1829.0" />
+    </clipPath>
+    <clipPath id="terminal-3136577362-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-42">
+    <rect x="0" y="1026.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-46">
+    <rect x="0" y="1123.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-47">
+    <rect x="0" y="1148.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-48">
+    <rect x="0" y="1172.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-49">
+    <rect x="0" y="1197.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-50">
+    <rect x="0" y="1221.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-51">
+    <rect x="0" y="1245.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-52">
+    <rect x="0" y="1270.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-53">
+    <rect x="0" y="1294.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-54">
+    <rect x="0" y="1319.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-55">
+    <rect x="0" y="1343.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-56">
+    <rect x="0" y="1367.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-57">
+    <rect x="0" y="1392.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-58">
+    <rect x="0" y="1416.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-59">
+    <rect x="0" y="1441.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-60">
+    <rect x="0" y="1465.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-61">
+    <rect x="0" y="1489.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-62">
+    <rect x="0" y="1514.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-63">
+    <rect x="0" y="1538.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-64">
+    <rect x="0" y="1563.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-65">
+    <rect x="0" y="1587.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-66">
+    <rect x="0" y="1611.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-67">
+    <rect x="0" y="1636.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-68">
+    <rect x="0" y="1660.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-69">
+    <rect x="0" y="1685.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-70">
+    <rect x="0" y="1709.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-71">
+    <rect x="0" y="1733.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-72">
+    <rect x="0" y="1758.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3136577362-line-73">
+    <rect x="0" y="1782.7" 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="1878" rx="8"/><text class="terminal-3136577362-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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3136577362-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-997154497-matrix" font-variant="east-asian-width-values"><tspan class="terminal-997154497-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-997154497-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-997154497-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-997154497-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;build-prod-image&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-997154497-r1" x="0" y="72.8" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-997154497-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-997154497-r2" x="12.4" y="99.2" textLength="1463.2">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.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="1475.6" y="99.2" textLength="12.4" [...]
-</tspan><tspan class="terminal-997154497-r2" x="0" y="125.6" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="152" textLength="1488">╭─&#160;Basic&#160;usage&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-997154497-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="178.4" textLength="99.2">--python</tspan><tspan class="terminal-997154497-r2" x="136.4" y="178.4" textLength="310">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="204.8" textLength="483.6">&#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;</tspan><tspan class="terminal-997154497-r7" x="496" y="204.8" textLength="744">(&gt;3.7&lt;&#1 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="231.2" textLength="483.6">&#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;</tspan><tspan class="terminal-997154497-r4" x="496" y="231.2" textLength="744">[default:&#160; [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="257.6" textLength="310">--install-airflow-version</tspan><tspan class="terminal-997154497-r2" x="347.2" y="257.6" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r6" x="446.4" y="257.6" textLength="24.8 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="284" textLength="384.4">--upgrade-to-newer-dependencies</tspan><tspan class="terminal-997154497-r2" x="421.6" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r6" x="446.4" y="284" textLength="24.8">-u</tspan><tspan class="terminal-997 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="310.4" textLength="198.4">--debian-version</tspan><tspan class="terminal-997154497-r2" x="235.6" y="310.4" textLength="210.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-99 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="336.8" textLength="136.4">--image-tag</tspan><tspan class="terminal-997154497-r2" x="173.6" y="336.8" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan> [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="363.2" textLength="186">--tag-as-latest</tspan><tspan class="terminal-997154497-r2" x="223.2" y="363.2" textLength="223.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="389.6" textLength="992">&#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;Useful&#160;when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</tspan><tspan c [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="416" textLength="173.6">--docker-cache</tspan><tspan class="terminal-997154497-r2" x="210.8" y="416" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="442.4" textLength="483.6">&#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;</tspan><tspan class="terminal-997154497-r4" x="496" y="442.4" textLength="558">[default:&#160; [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="468.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-997154497-r2" x="1488" y="468.8" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="495.2" textLength="1488">╭─&#160;Building&#160;multiple&#160;images&#160;───────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-997154497-r2" x="1488" y="495.2" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="521.6" textLength="285.2">--build-multiple-images</tspan><tspan class="terminal-997154497-r2" x="322.4" y="521.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="372" y="521.6" textLength="1078.8">Run&#160;the&#160;oper [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="548" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="548" textLength="210.8">--python-versions</tspan><tspan class="terminal-997154497-r2" x="248" y="548" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="372" y="548" textLength="967.2">Space& [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="574.4" textLength="359.6">&#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;</tspan><tspan class="terminal-997154497-r4" x="372" y="574.4" textLength="967.2">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="600.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-997154497-r2" x="1488" y="600.8" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="627.2" textLength="1488">╭─&#160;Options&#160;for&#160;customizing&#160;images&#160;─────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-997154497-r2" x="1488" y="627.2" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="653.6" textLength="396.8">--install-providers-from-sources</tspan><tspan class="terminal-997154497-r2" x="434" y="653.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y="653.6" textLength="967.2">Install&#160;p [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="680" textLength="198.4">--airflow-extras</tspan><tspan class="terminal-997154497-r2" x="235.6" y="680" textLength="248">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="ter [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="706.4" textLength="471.2">&#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;</tspan><tspan class="terminal-997154497-r7" x="483.6" y="706.4" textLength="967.2">(TEXT)&#160;&#160 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="732.8" textLength="471.2">&#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;</tspan><tspan class="terminal-997154497-r4" x="483.6" y="732.8" textLength="967.2">[default:&#160;&# [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="759.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="759.2" textLength="471.2">&#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;</tspan><tspan class="terminal-997154497-r4" x="483.6" y="759.2" textLength="967.2">amazon,async,cele [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="785.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="785.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="785.6" textLength="322.4">--airflow-constraints-mode</tspan><tspan class="terminal-997154497-r2" x="359.6" y="785.6" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y="785.6" te [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="812" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="812" textLength="471.2">&#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;</tspan><tspan class="terminal-997154497-r7" x="483.6" y="812" textLength="880.4">(constraints&#160;|&#16 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="838.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="838.4" textLength="471.2">&#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;</tspan><tspan class="terminal-997154497-r4" x="483.6" y="838.4" textLength="880.4">[default:&#160;co [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="864.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="864.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="864.8" textLength="384.4">--airflow-constraints-reference</tspan><tspan class="terminal-997154497-r2" x="421.6" y="864.8" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y="864.8" textLength="644.8">Constrain [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="891.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="891.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="891.2" textLength="297.6">--additional-python-deps</tspan><tspan class="terminal-997154497-r2" x="334.8" y="891.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6"  [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="917.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="917.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="917.6" textLength="235.6">--additional-extras</tspan><tspan class="terminal-997154497-r2" x="272.8" y="917.6" textLength="210.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="944" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="944" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="944" textLength="359.6">--additional-runtime-apt-deps</tspan><tspan class="terminal-997154497-r2" x="396.8" y="944" textLength="86.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y="944" textLength="843.2">Additio [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="970.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="970.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="970.4" textLength="347.2">--additional-runtime-apt-env</tspan><tspan class="terminal-997154497-r2" x="384.4" y="970.4" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y="970.4" textLength= [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="996.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="996.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="996.8" textLength="396.8">--additional-runtime-apt-command</tspan><tspan class="terminal-997154497-r2" x="434" y="996.8" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y="996.8" textLength="818.4">Additional&#16 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1023.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1023.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1023.2" textLength="310">--additional-dev-apt-deps</tspan><tspan class="terminal-997154497-r2" x="347.2" y="1023.2" textLength="136.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y=" [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1049.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1049.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1049.6" textLength="297.6">--additional-dev-apt-env</tspan><tspan class="terminal-997154497-r2" x="334.8" y="1049.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1076" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1076" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1076" textLength="347.2">--additional-dev-apt-command</tspan><tspan class="terminal-997154497-r2" x="384.4" y="1076" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="483.6" y="1076" textLength="768. [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1102.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1102.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1102.4" textLength="223.2">--runtime-apt-deps</tspan><tspan class="terminal-997154497-r2" x="260.4" y="1102.4" textLength="223.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class= [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1128.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1128.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1128.8" textLength="260.4">--runtime-apt-command</tspan><tspan class="terminal-997154497-r2" x="297.6" y="1128.8" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-9971544 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1155.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1155.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1155.2" textLength="173.6">--dev-apt-deps</tspan><tspan class="terminal-997154497-r2" x="210.8" y="1155.2" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;< [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1181.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1181.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1181.6" textLength="210.8">--dev-apt-command</tspan><tspan class="terminal-997154497-r2" x="248" y="1181.6" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan cla [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1208" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-997154497-r2" x="1488" y="1208" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1234.4" textLength="1488">╭─&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;───────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-997154497-r2" x="1488" y="1234.4" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1260.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1260.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1260.8" textLength="384.4">--install-packages-from-context</tspan><tspan class="terminal-997154497-r2" x="421.6" y="1260.8" textLength="136.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="55 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1287.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1287.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1287.2" textLength="285.2">--airflow-is-in-context</tspan><tspan class="terminal-997154497-r2" x="322.4" y="1287.2" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><t [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1313.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1313.6" textLength="545.6">&#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;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="558" y="1313.6" [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1340" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1340" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1340" textLength="210.8">--cleanup-context</tspan><tspan class="terminal-997154497-r2" x="248" y="1340" textLength="1227.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1366.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1366.4" textLength="719.2">&#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;&#160;&#160;&#160;&#160;&#160;together&#160;with&#160;</tspan><tspan class="terminal-99715449 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1392.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1392.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1392.8" textLength="434">--disable-mysql-client-installation</tspan><tspan class="terminal-997154497-r2" x="471.2" y="1392.8" textLength="86.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="558" y="1392.8" textLengt [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1419.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1419.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1419.2" textLength="434">--disable-mssql-client-installation</tspan><tspan class="terminal-997154497-r2" x="471.2" y="1419.2" textLength="86.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="558" y="1419.2" textLengt [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1445.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1445.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1445.6" textLength="471.2">--disable-postgres-client-installation</tspan><tspan class="terminal-997154497-r2" x="508.4" y="1445.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="558" y="1445.6" textLength="892.8">Do& [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1472" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1472" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1472" textLength="347.2">--disable-airflow-repo-cache</tspan><tspan class="terminal-997154497-r2" x="384.4" y="1472" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1498.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1498.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1498.4" textLength="334.8">--install-airflow-reference</tspan><tspan class="terminal-997154497-r2" x="372" y="1498.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1524.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1524.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1524.8" textLength="260.4">--installation-method</tspan><tspan class="terminal-997154497-r2" x="297.6" y="1524.8" textLength="260.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1551.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-997154497-r2" x="1488" y="1551.2" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1577.6" textLength="1488">╭─&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;──────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-997154497-r2" x="1488" y="1577.6" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1604" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1604" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1604" textLength="173.6">--github-token</tspan><tspan class="terminal-997154497-r2" x="210.8" y="1604" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="359.6" y="1604" textL [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1630.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1630.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1630.4" textLength="210.8">--github-username</tspan><tspan class="terminal-997154497-r2" x="248" y="1630.4" textLength="111.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="359.6" y="1630.4" textLength=" [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1656.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1656.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1656.8" textLength="124">--platform</tspan><tspan class="terminal-997154497-r2" x="161.2" y="1656.8" textLength="198.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1683.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1683.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1683.2" textLength="148.8">--push-image</tspan><tspan class="terminal-997154497-r2" x="186" y="1683.2" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="359.6 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1709.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1709.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1709.6" textLength="161.2">--empty-image</tspan><tspan class="terminal-997154497-r2" x="198.4" y="1709.6" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="359.6" y [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1736" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1736" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1736" textLength="272.8">--prepare-buildx-cache</tspan><tspan class="terminal-997154497-r2" x="310" y="1736" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r2" x="359.6" y="1736" textLength="1091.2">Prepares&#160;build&#160;cac [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1762.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1762.4" textLength="347.2">&#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;</tspan><tspan class="terminal-997154497-r2" x="359.6" y="1762.4" textLength="1091.2">the&#160;image).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1788.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-997154497-r2" x="1488" y="1788.8" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1815.2" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-997154497-r2" x="1488" y="1815.2" textLength="12.4">
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1841.6" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1841.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1841.6" textLength="235.6">--github-repository</tspan><tspan class="terminal-997154497-r2" x="272.8" y="1841.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r6" x="297.6" y="1841.6" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1868" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1868" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1868" textLength="99.2">--answer</tspan><tspan class="terminal-997154497-r2" x="136.4" y="1868" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r6" x="297.6" y="1868" textLe [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1894.4" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1894.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1894.4" textLength="111.6">--dry-run</tspan><tspan class="terminal-997154497-r2" x="148.8" y="1894.4" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r6" x="297.6" y="1894.4"  [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1920.8" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1920.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1920.8" textLength="111.6">--verbose</tspan><tspan class="terminal-997154497-r2" x="148.8" y="1920.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r6" x="297.6" y="1920.8"  [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1947.2" textLength="12.4">│</tspan><tspan class="terminal-997154497-r2" x="12.4" y="1947.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-997154497-r5" x="37.2" y="1947.2" textLength="74.4">--help</tspan><tspan class="terminal-997154497-r2" x="111.6" y="1947.2" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-997154497-r6" x="297.6" [...]
-</tspan><tspan class="terminal-997154497-r4" x="0" y="1973.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-997154497-r2" x="1488" y="1973.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-3136577362-matrix">
+    <text class="terminal-3136577362-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3136577362-line-0)">
+</text><text class="terminal-3136577362-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-1)">Usage:&#160;</text><text class="terminal-3136577362-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-3136577362-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-3136577362-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-1)">
+</text><text class="terminal-3136577362-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-2)">
+</text><text class="terminal-3136577362-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-3136577362-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-3136577362-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-3)">
+</text><text class="terminal-3136577362-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-4)">
+</text><text class="terminal-3136577362-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3136577362-line-5)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3136577362-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-313657 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-6)">│</text><text class="terminal-3136577362-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-6)">-</text><text class="terminal-3136577362-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-6)">-python</text><text class="terminal-3136577362-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-313 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-7)">│</text><text class="terminal-3136577362-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-3136577362-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-3136577362-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-8)">│</text><text class="terminal-3136577362-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-3136577362-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-3136577362-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-9)">│</text><text class="terminal-3136577362-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-9)">-</text><text class="terminal-3136577362-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-9)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3136577362-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3136577362-line-10)">│</text><text class="terminal-3136577362-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3136577362-line-10)">-</text><text class="terminal-3136577362-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-3136577362-line-10)">-upgrade</text><text class="terminal-3136577362-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-3136 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-11)">│</text><text class="terminal-3136577362-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-11)">-</text><text class="terminal-3136577362-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-11)">-debian</text><text class="terminal-3136577362-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-3136577362-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-12)">│</text><text class="terminal-3136577362-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-12)">-</text><text class="terminal-3136577362-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-3136577362-line-12)">-image</text><text class="terminal-3136577362-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3136577362-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-13)">│</text><text class="terminal-3136577362-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-13)">-</text><text class="terminal-3136577362-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-3136577362-line-13)">-tag</text><text class="terminal-3136577362-r5" x="85.4" y="337.2" textLength="122" clip-path="url(#terminal-313 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-14)">│</text><text class="terminal-3136577362-r2" x="475.8" y="361.6" textLength="414.8" clip-path="url(#terminal-3136577362-line-14)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3136577362-r5" x="890.6" y="361.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-14)">-</text><text class="terminal-3136577362- [...]
+</text><text class="terminal-3136577362-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3136577362-line-15)">│</text><text class="terminal-3136577362-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3136577362-line-15)">-</text><text class="terminal-3136577362-r5" x="36.6" y="386" textLength="85.4" clip-path="url(#terminal-3136577362-line-15)">-docker</text><text class="terminal-3136577362-r5" x="122" y="386" textLength="73.2" clip-path="url(#terminal-31365773 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-16)">│</text><text class="terminal-3136577362-r4" x="475.8" y="410.4" textLength="549" clip-path="url(#terminal-3136577362-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-3136577362-r4" x="1451.8" y="41 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3136577362-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-17)">
+</text><text class="terminal-3136577362-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-3136577362-line-18)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-3136577362-line-18)">&#160;Building&#160;multiple&#160;images&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-3136577362-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-19)">│</text><text class="terminal-3136577362-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-19)">-</text><text class="terminal-3136577362-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-3136577362-line-19)">-build</text><text class="terminal-3136577362-r5" x="109.8" y="483.6" textLength="195.2" clip-path="url(#termina [...]
+</text><text class="terminal-3136577362-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3136577362-line-20)">│</text><text class="terminal-3136577362-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3136577362-line-20)">-</text><text class="terminal-3136577362-r5" x="36.6" y="508" textLength="85.4" clip-path="url(#terminal-3136577362-line-20)">-python</text><text class="terminal-3136577362-r5" x="122" y="508" textLength="109.8" clip-path="url(#terminal-3136577 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-21)">│</text><text class="terminal-3136577362-r4" x="353.8" y="532.4" textLength="951.6" clip-path="url(#terminal-3136577362-line-21)">[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-3136577362-r4" x="0" y="556.8" textLength="1464" clip-path="url(#terminal-3136577362-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="556.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-22)">
+</text><text class="terminal-3136577362-r4" x="0" y="581.2" textLength="24.4" clip-path="url(#terminal-3136577362-line-23)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="581.2" textLength="1415.2" clip-path="url(#terminal-3136577362-line-23)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="581.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-3136577362-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-24)">│</text><text class="terminal-3136577362-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-24)">-</text><text class="terminal-3136577362-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-24)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="605.6" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-3136577362-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3136577362-line-25)">│</text><text class="terminal-3136577362-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3136577362-line-25)">-</text><text class="terminal-3136577362-r5" x="36.6" y="630" textLength="97.6" clip-path="url(#terminal-3136577362-line-25)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="630" textLength="85.4" clip-path="url(#terminal-31365 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-26)">│</text><text class="terminal-3136577362-r7" x="463.6" y="654.4" textLength="976" clip-path="url(#terminal-3136577362-line-26)">(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-3136577362-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-27)">│</text><text class="terminal-3136577362-r4" x="463.6" y="678.8" textLength="976" clip-path="url(#terminal-3136577362-line-27)">[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-3136577362-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-28)">│</text><text class="terminal-3136577362-r4" x="463.6" y="703.2" textLength="976" clip-path="url(#terminal-3136577362-line-28)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-3136577362-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-28)">│</text><text class="terminal-3 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-29)">│</text><text class="terminal-3136577362-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-29)">-</text><text class="terminal-3136577362-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-29)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="727.6" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-3136577362-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3136577362-line-30)">│</text><text class="terminal-3136577362-r7" x="463.6" y="752" textLength="866.2" clip-path="url(#terminal-3136577362-line-30)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-3136577362-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-3136577362-line-30)">│</text><text class="ter [...]
+</text><text class="terminal-3136577362-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-31)">│</text><text class="terminal-3136577362-r4" x="463.6" y="776.4" textLength="866.2" clip-path="url(#terminal-3136577362-line-31)">[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-3136577362-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-32)">│</text><text class="terminal-3136577362-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-32)">-</text><text class="terminal-3136577362-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-32)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="800.8" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-3136577362-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-33)">│</text><text class="terminal-3136577362-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-33)">-</text><text class="terminal-3136577362-r5" x="36.6" y="825.2" textLength="134.2" clip-path="url(#terminal-3136577362-line-33)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="825.2" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-34)">│</text><text class="terminal-3136577362-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-34)">-</text><text class="terminal-3136577362-r5" x="36.6" y="849.6" textLength="134.2" clip-path="url(#terminal-3136577362-line-34)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="849.6" textLength="85.4" clip-path="url(#te [...]
+</text><text class="terminal-3136577362-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3136577362-line-35)">│</text><text class="terminal-3136577362-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-3136577362-line-35)">-</text><text class="terminal-3136577362-r5" x="36.6" y="874" textLength="134.2" clip-path="url(#terminal-3136577362-line-35)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="874" textLength="207.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3136577362-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-36)">│</text><text class="terminal-3136577362-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-36)">-</text><text class="terminal-3136577362-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-3136577362-line-36)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="898.4" textLength="195.2" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-37)">│</text><text class="terminal-3136577362-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-37)">-</text><text class="terminal-3136577362-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-3136577362-line-37)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="922.8" textLength="244" clip-path="url(#ter [...]
+</text><text class="terminal-3136577362-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-38)">│</text><text class="terminal-3136577362-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-38)">-</text><text class="terminal-3136577362-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-3136577362-line-38)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="947.2" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-39)">│</text><text class="terminal-3136577362-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-39)">-</text><text class="terminal-3136577362-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-3136577362-line-39)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="971.6" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3136577362-line-40)">│</text><text class="terminal-3136577362-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3136577362-line-40)">-</text><text class="terminal-3136577362-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-3136577362-line-40)">-additional</text><text class="terminal-3136577362-r5" x="170.8" y="996" textLength="195.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-41)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-41)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1020.4" textLength="97.6" clip-path="url(#terminal-3136577362-line-41)">-runtime</text><text class="terminal-3136577362-r5" x="134.2" y="1020.4" textLength="109.8" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-42)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-42)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-42)">-runtime</text><text class="terminal-3136577362-r5" x="134.2" y="1044.8" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-43)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-43)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1069.2" textLength="48.8" clip-path="url(#terminal-3136577362-line-43)">-dev</text><text class="terminal-3136577362-r5" x="85.4" y="1069.2" textLength="109.8" clip-path="url(#termin [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-44)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-44)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-3136577362-line-44)">-dev</text><text class="terminal-3136577362-r5" x="85.4" y="1093.6" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-3136577362-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-3136577362-line-45)">
+</text><text class="terminal-3136577362-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-3136577362-line-46)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-3136577362-line-46)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="1142.4" textLength="24.4"  [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-47)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-47)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-47)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="1166.8" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-48)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-48)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-3136577362-line-48)">-airflow</text><text class="terminal-3136577362-r5" x="134.2" y="1191.2" textLength="170.8" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-49)">│</text><text class="terminal-3136577362-r2" x="536.8" y="1215.6" textLength="902.8" clip-path="url(#terminal-3136577362-line-49)">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-3136577362-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-3136577362-line-50)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-3136577362-line-50)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1240" textLength="97.6" clip-path="url(#terminal-3136577362-line-50)">-cleanup</text><text class="terminal-3136577362-r5" x="134.2" y="1240" textLength="97.6" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-51)">│</text><text class="terminal-3136577362-r2" x="536.8" y="1264.4" textLength="170.8" clip-path="url(#terminal-3136577362-line-51)">together&#160;with&#160;</text><text class="terminal-3136577362-r5" x="707.6" y="1264.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-51)">-</text><text class="terminal-3136577362-r5" x="719.8" y="1264.4" textLength="97.6" [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-52)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-52)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-52)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1288.8" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-53)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-53)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#terminal-3136577362-line-53)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1313.2" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-54)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-54)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-3136577362-line-54)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1337.6" textLength="353.8" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-3136577362-line-55)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-3136577362-line-55)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-3136577362-line-55)">-disable</text><text class="terminal-3136577362-r5" x="134.2" y="1362" textLength="231.8" clip-path="url(#terminal- [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-56)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-56)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-3136577362-line-56)">-install</text><text class="terminal-3136577362-r5" x="134.2" y="1386.4" textLength="219.6" clip-path="url(#t [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-57)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-57)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1410.8" textLength="158.6" clip-path="url(#terminal-3136577362-line-57)">-installation</text><text class="terminal-3136577362-r5" x="195.2" y="1410.8" textLength="85.4" clip-path="u [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1435.2" textLength="1464" clip-path="url(#terminal-3136577362-line-58)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1435.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-58)">
+</text><text class="terminal-3136577362-r4" x="0" y="1459.6" textLength="24.4" clip-path="url(#terminal-3136577362-line-59)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="1459.6" textLength="1415.2" clip-path="url(#terminal-3136577362-line-59)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="1459.6" textLeng [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-3136577362-line-60)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-3136577362-line-60)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1484" textLength="85.4" clip-path="url(#terminal-3136577362-line-60)">-github</text><text class="terminal-3136577362-r5" x="122" y="1484" textLength="73.2" clip-path="url(#terminal-3136 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-61)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-61)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1508.4" textLength="85.4" clip-path="url(#terminal-3136577362-line-61)">-github</text><text class="terminal-3136577362-r5" x="122" y="1508.4" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-62)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-62)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1532.8" textLength="109.8" clip-path="url(#terminal-3136577362-line-62)">-platform</text><text class="terminal-3136577362-r2" x="341.6" y="1532.8" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-63)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-63)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1557.2" textLength="61" clip-path="url(#terminal-3136577362-line-63)">-push</text><text class="terminal-3136577362-r5" x="97.6" y="1557.2" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-64)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-64)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1581.6" textLength="73.2" clip-path="url(#terminal-3136577362-line-64)">-empty</text><text class="terminal-3136577362-r5" x="109.8" y="1581.6" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-3136577362-line-65)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-3136577362-line-65)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1606" textLength="97.6" clip-path="url(#terminal-3136577362-line-65)">-prepare</text><text class="terminal-3136577362-r5" x="134.2" y="1606" textLength="158.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-66)">│</text><text class="terminal-3136577362-r2" x="341.6" y="1630.4" textLength="1098" clip-path="url(#terminal-3136577362-line-66)">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-3136577362-r4" x="0" y="1654.8" textLength="1464" clip-path="url(#terminal-3136577362-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1654.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-67)">
+</text><text class="terminal-3136577362-r4" x="0" y="1679.2" textLength="24.4" clip-path="url(#terminal-3136577362-line-68)">╭─</text><text class="terminal-3136577362-r4" x="24.4" y="1679.2" textLength="1415.2" clip-path="url(#terminal-3136577362-line-68)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3136577362-r4" x="1439.6" y="1679.2" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-69)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-69)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1703.6" textLength="85.4" clip-path="url(#terminal-3136577362-line-69)">-github</text><text class="terminal-3136577362-r5" x="122" y="1703.6" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-3136577362-line-70)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1728" textLength="12.2" clip-path="url(#terminal-3136577362-line-70)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1728" textLength="85.4" clip-path="url(#terminal-3136577362-line-70)">-answer</text><text class="terminal-3136577362-r6" x="280.6" y="1728" textLength="24.4" clip-path="url(#terminal-31 [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-71)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#terminal-3136577362-line-71)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1752.4" textLength="48.8" clip-path="url(#terminal-3136577362-line-71)">-dry</text><text class="terminal-3136577362-r5" x="85.4" y="1752.4" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-72)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#terminal-3136577362-line-72)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1776.8" textLength="97.6" clip-path="url(#terminal-3136577362-line-72)">-verbose</text><text class="terminal-3136577362-r6" x="280.6" y="1776.8" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-73)">│</text><text class="terminal-3136577362-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-3136577362-line-73)">-</text><text class="terminal-3136577362-r5" x="36.6" y="1801.2" textLength="61" clip-path="url(#terminal-3136577362-line-73)">-help</text><text class="terminal-3136577362-r6" x="280.6" y="1801.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3136577362-r4" x="0" y="1825.6" textLength="1464" clip-path="url(#terminal-3136577362-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3136577362-r2" x="1464" y="1825.6" textLength="12.2" clip-path="url(#terminal-3136577362-line-74)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-cleanup.svg b/images/breeze/output-cleanup.svg
index 68395e65eb..9bd373b98b 100644
--- a/images/breeze/output-cleanup.svg
+++ b/images/breeze/output-cleanup.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 488.00000000000006" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 416.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,50 +19,102 @@
         font-weight: 700;
     }
 
-    .terminal-2880815510-matrix {
+    .terminal-111002006-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2880815510-title {
+    .terminal-111002006-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2880815510-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2880815510-r2 { fill: #c5c8c6 }
-.terminal-2880815510-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2880815510-r4 { fill: #868887 }
-.terminal-2880815510-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2880815510-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2880815510-r7 { fill: #8d7b39 }
+    .terminal-111002006-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-111002006-r2 { fill: #c5c8c6 }
+.terminal-111002006-r3 { fill: #d0b344;font-weight: bold }
+.terminal-111002006-r4 { fill: #868887 }
+.terminal-111002006-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-111002006-r6 { fill: #98a84b;font-weight: bold }
+.terminal-111002006-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="448" rx="12"/><text class="terminal-2880815510-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: cleanup</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-111002006-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="365.0" />
+    </clipPath>
+    <clipPath id="terminal-111002006-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-111002006-line-13">
+    <rect x="0" y="318.7" 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="414" rx="8"/><text class="terminal-111002006-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;cleanup</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-111002006-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2880815510-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2880815510-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2880815510-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2880815510-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2880815510-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;cleanup&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-2880815510-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2880815510-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2880815510-r2" x="12.4" y="99.2" textLength="1463.2">Cleans&#160;the&#160;cache&#160;of&#160;parameters,&#160;docker&#160;cache&#160;and&#160;optionally&#160;-&#160;currently&#160;downloaded&#160;images.&#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;</tsp [...]
-</tspan><tspan class="terminal-2880815510-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="152" textLength="1488">╭─&#160;Cleanup&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2880815510-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2880815510-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2880815510-r5" x="37.2" y="178.4" textLength="62">--all</tspan><tspan class="terminal-2880815510-r2" x="99.2" y="178.4" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2880815510-r2" x="148.8" y="178.4" textLength="1302">Also&#160;remove&#160;currently&#160;do [...]
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="204.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2880815510-r2" x="1488" y="204.8" textLength="12.4">
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="231.2" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2880815510-r2" x="1488" y="231.2" textLength="12.4">
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2880815510-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2880815510-r5" x="37.2" y="257.6" textLength="111.6">--verbose</tspan><tspan class="terminal-2880815510-r2" x="148.8" y="257.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2880815510-r6" x="297.6" y="257.6"  [...]
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2880815510-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2880815510-r5" x="37.2" y="284" textLength="99.2">--answer</tspan><tspan class="terminal-2880815510-r2" x="136.4" y="284" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2880815510-r6" x="297.6" y="284" textLe [...]
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2880815510-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2880815510-r5" x="37.2" y="310.4" textLength="111.6">--dry-run</tspan><tspan class="terminal-2880815510-r2" x="148.8" y="310.4" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2880815510-r6" x="297.6" y="310.4"  [...]
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2880815510-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2880815510-r5" x="37.2" y="336.8" textLength="235.6">--github-repository</tspan><tspan class="terminal-2880815510-r2" x="272.8" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2880815510-r6" x="297.6" y="336.8" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2880815510-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2880815510-r5" x="37.2" y="363.2" textLength="74.4">--help</tspan><tspan class="terminal-2880815510-r2" x="111.6" y="363.2" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2880815510-r6" x="297.6 [...]
-</tspan><tspan class="terminal-2880815510-r4" x="0" y="389.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2880815510-r2" x="1488" y="389.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-111002006-matrix">
+    <text class="terminal-111002006-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-111002006-line-0)">
+</text><text class="terminal-111002006-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-111002006-line-1)">Usage:&#160;</text><text class="terminal-111002006-r1" x="97.6" y="44.4" textLength="292.8" clip-path="url(#terminal-111002006-line-1)">breeze&#160;cleanup&#160;[OPTIONS]</text><text class="terminal-111002006-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-111002006-line-1)">
+</text><text class="terminal-111002006-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-111002006-line-2)">
+</text><text class="terminal-111002006-r2" x="12.2" y="93.2" textLength="1098" clip-path="url(#terminal-111002006-line-3)">Cleans&#160;the&#160;cache&#160;of&#160;parameters,&#160;docker&#160;cache&#160;and&#160;optionally&#160;-&#160;currently&#160;downloaded&#160;images.</text><text class="terminal-111002006-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-111002006-line-3)">
+</text><text class="terminal-111002006-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-111002006-line-4)">
+</text><text class="terminal-111002006-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-111002006-line-5)">╭─</text><text class="terminal-111002006-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-111002006-line-5)">&#160;Cleanup&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-111002006-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-111002006-l [...]
+</text><text class="terminal-111002006-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-111002006-line-6)">│</text><text class="terminal-111002006-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-111002006-line-6)">-</text><text class="terminal-111002006-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-111002006-line-6)">-all</text><text class="terminal-111002006-r2" x="134.2" y="166.4" textLength="573.4" clip-path="url(#terminal-111002006- [...]
+</text><text class="terminal-111002006-r4" x="0" y="190.8" textLength="1464" clip-path="url(#terminal-111002006-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-111002006-r2" x="1464" y="190.8" textLength="12.2" clip-path="url(#terminal-111002006-line-7)">
+</text><text class="terminal-111002006-r4" x="0" y="215.2" textLength="24.4" clip-path="url(#terminal-111002006-line-8)">╭─</text><text class="terminal-111002006-r4" x="24.4" y="215.2" textLength="1415.2" clip-path="url(#terminal-111002006-line-8)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-111002006-r4" x="1439.6" y="215.2" textLength="24.4" clip-path="url(#terminal-111002006- [...]
+</text><text class="terminal-111002006-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-111002006-line-9)">│</text><text class="terminal-111002006-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-111002006-line-9)">-</text><text class="terminal-111002006-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-111002006-line-9)">-verbose</text><text class="terminal-111002006-r6" x="280.6" y="239.6" textLength="24.4" clip-path="url(#terminal-1110020 [...]
+</text><text class="terminal-111002006-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-111002006-line-10)">│</text><text class="terminal-111002006-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-111002006-line-10)">-</text><text class="terminal-111002006-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-111002006-line-10)">-answer</text><text class="terminal-111002006-r6" x="280.6" y="264" textLength="24.4" clip-path="url(#terminal-111002006-lin [...]
+</text><text class="terminal-111002006-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-111002006-line-11)">│</text><text class="terminal-111002006-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-111002006-line-11)">-</text><text class="terminal-111002006-r5" x="36.6" y="288.4" textLength="48.8" clip-path="url(#terminal-111002006-line-11)">-dry</text><text class="terminal-111002006-r5" x="85.4" y="288.4" textLength="48.8" clip-path="url(#terminal-111002006 [...]
+</text><text class="terminal-111002006-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-111002006-line-12)">│</text><text class="terminal-111002006-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-111002006-line-12)">-</text><text class="terminal-111002006-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-111002006-line-12)">-github</text><text class="terminal-111002006-r5" x="122" y="312.8" textLength="134.2" clip-path="url(#terminal-111002 [...]
+</text><text class="terminal-111002006-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-111002006-line-13)">│</text><text class="terminal-111002006-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-111002006-line-13)">-</text><text class="terminal-111002006-r5" x="36.6" y="337.2" textLength="61" clip-path="url(#terminal-111002006-line-13)">-help</text><text class="terminal-111002006-r6" x="280.6" y="337.2" textLength="24.4" clip-path="url(#terminal-111002006 [...]
+</text><text class="terminal-111002006-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-111002006-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-111002006-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-111002006-line-14)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-command-hash-export.svg b/images/breeze/output-command-hash-export.svg
index 03d562e242..789317d724 100644
--- a/images/breeze/output-command-hash-export.svg
+++ b/images/breeze/output-command-hash-export.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 329.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 269.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,43 +19,77 @@
         font-weight: 700;
     }
 
-    .terminal-4066869648-matrix {
+    .terminal-161448336-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-4066869648-title {
+    .terminal-161448336-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-4066869648-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4066869648-r2 { fill: #c5c8c6 }
-.terminal-4066869648-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4066869648-r4 { fill: #868887 }
-.terminal-4066869648-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4066869648-r6 { fill: #98a84b;font-weight: bold }
+    .terminal-161448336-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-161448336-r2 { fill: #c5c8c6 }
+.terminal-161448336-r3 { fill: #d0b344;font-weight: bold }
+.terminal-161448336-r4 { fill: #868887 }
+.terminal-161448336-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-161448336-r6 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="289.6" rx="12"/><text class="terminal-4066869648-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: command-hash-export</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-161448336-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="218.6" />
+    </clipPath>
+    <clipPath id="terminal-161448336-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-161448336-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-161448336-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-161448336-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-161448336-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-161448336-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-161448336-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-161448336-line-7">
+    <rect x="0" y="172.3" 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="267.6" rx="8"/><text class="terminal-161448336-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;command-hash-export</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-161448336-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-4066869648-matrix" font-variant="east-asian-width-values"><tspan class="terminal-4066869648-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-4066869648-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-4066869648-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-4066869648-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;command-hash-export&#160;[OPTIONS]&#160;OUTPUT&#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 [...]
-</tspan><tspan class="terminal-4066869648-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-4066869648-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-4066869648-r2" x="12.4" y="99.2" textLength="1463.2">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands&#160;to&#160;file&#160;or&#160;stdout&#160;if&#160;`-`&#160;is&#160;used&#160;(useful&#160;to&#160;see&#160;if&#160;images&#160;should&#160;be&#160;regenerated).&#160;&#160;</tspan><tspan class="terminal-4066869648-r2" x="1475.6" y="99.2" textLength="12.4">&#160; [...]
-</tspan><tspan class="terminal-4066869648-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-4066869648-r4" x="0" y="152" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-4066869648-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-4066869648-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-4066869648-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-4066869648-r5" x="37.2" y="178.4" textLength="111.6">--verbose</tspan><tspan class="terminal-4066869648-r2" x="148.8" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-4066869648-r6" x="173.6" y="178.4" textLength="24.8">-v</tspan><tspan class="terminal-4066869648 [...]
-</tspan><tspan class="terminal-4066869648-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-4066869648-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-4066869648-r5" x="37.2" y="204.8" textLength="74.4">--help</tspan><tspan class="terminal-4066869648-r2" x="111.6" y="204.8" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-4066869648-r6" x="173.6" y="204.8" textLength="24.8">-h</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-4066869648-r4" x="0" y="231.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-4066869648-r2" x="1488" y="231.2" textLength="12.4">
-</tspan></text>
+    <g class="terminal-161448336-matrix">
+    <text class="terminal-161448336-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-161448336-line-0)">
+</text><text class="terminal-161448336-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-161448336-line-1)">Usage:&#160;</text><text class="terminal-161448336-r1" x="97.6" y="44.4" textLength="524.6" clip-path="url(#terminal-161448336-line-1)">breeze&#160;command-hash-export&#160;[OPTIONS]&#160;OUTPUT</text><text class="terminal-161448336-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-161448336-line-1)">
+</text><text class="terminal-161448336-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-161448336-line-2)">
+</text><text class="terminal-161448336-r2" x="12.2" y="93.2" textLength="1415.2" clip-path="url(#terminal-161448336-line-3)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands&#160;to&#160;file&#160;or&#160;stdout&#160;if&#160;`-`&#160;is&#160;used&#160;(useful&#160;to&#160;see&#160;if&#160;images&#160;should&#160;be&#160;regenerated).</text><text class="terminal-161448336-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-161448336-line-3)">
+</text><text class="terminal-161448336-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-161448336-line-4)">
+</text><text class="terminal-161448336-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-161448336-line-5)">╭─</text><text class="terminal-161448336-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-161448336-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-161448336-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-161448336-line-5 [...]
+</text><text class="terminal-161448336-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-161448336-line-6)">│</text><text class="terminal-161448336-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-161448336-line-6)">-</text><text class="terminal-161448336-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-161448336-line-6)">-verbose</text><text class="terminal-161448336-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal-1614483 [...]
+</text><text class="terminal-161448336-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-161448336-line-7)">│</text><text class="terminal-161448336-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-161448336-line-7)">-</text><text class="terminal-161448336-r5" x="36.6" y="190.8" textLength="61" clip-path="url(#terminal-161448336-line-7)">-help</text><text class="terminal-161448336-r6" x="158.6" y="190.8" textLength="24.4" clip-path="url(#terminal-161448336-li [...]
+</text><text class="terminal-161448336-r4" x="0" y="215.2" textLength="1464" clip-path="url(#terminal-161448336-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-161448336-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#terminal-161448336-line-8)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
new file mode 100644
index 0000000000..08e0c94ed2
--- /dev/null
+++ b/images/breeze/output-commands-hash.txt
@@ -0,0 +1 @@
+c227c66369d92c76c0e52939e3e4ecf1
diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg
index 4fe025fcef..be4ea5a514 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 2283.2000000000003" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2050.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,118 +19,370 @@
         font-weight: 700;
     }
 
-    .terminal-2803425993-matrix {
+    .terminal-2398605327-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2803425993-title {
+    .terminal-2398605327-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2803425993-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2803425993-r2 { fill: #c5c8c6 }
-.terminal-2803425993-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2803425993-r4 { fill: #868887 }
-.terminal-2803425993-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2803425993-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2803425993-r7 { fill: #8d7b39 }
+    .terminal-2398605327-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2398605327-r2 { fill: #c5c8c6 }
+.terminal-2398605327-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2398605327-r4 { fill: #868887 }
+.terminal-2398605327-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2398605327-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2398605327-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="2243.2" rx="12"/><text class="terminal-2803425993-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Breeze commands</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2398605327-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1999.8" />
+    </clipPath>
+    <clipPath id="terminal-2398605327-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-42">
+    <rect x="0" y="1026.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-46">
+    <rect x="0" y="1123.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-47">
+    <rect x="0" y="1148.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-48">
+    <rect x="0" y="1172.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-49">
+    <rect x="0" y="1197.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-50">
+    <rect x="0" y="1221.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-51">
+    <rect x="0" y="1245.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-52">
+    <rect x="0" y="1270.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-53">
+    <rect x="0" y="1294.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-54">
+    <rect x="0" y="1319.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-55">
+    <rect x="0" y="1343.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-56">
+    <rect x="0" y="1367.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-57">
+    <rect x="0" y="1392.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-58">
+    <rect x="0" y="1416.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-59">
+    <rect x="0" y="1441.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-60">
+    <rect x="0" y="1465.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-61">
+    <rect x="0" y="1489.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-62">
+    <rect x="0" y="1514.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-63">
+    <rect x="0" y="1538.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-64">
+    <rect x="0" y="1563.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-65">
+    <rect x="0" y="1587.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-66">
+    <rect x="0" y="1611.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-67">
+    <rect x="0" y="1636.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-68">
+    <rect x="0" y="1660.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-69">
+    <rect x="0" y="1685.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-70">
+    <rect x="0" y="1709.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-71">
+    <rect x="0" y="1733.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-72">
+    <rect x="0" y="1758.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-73">
+    <rect x="0" y="1782.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-74">
+    <rect x="0" y="1807.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-75">
+    <rect x="0" y="1831.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-76">
+    <rect x="0" y="1855.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-77">
+    <rect x="0" y="1880.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-78">
+    <rect x="0" y="1904.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-79">
+    <rect x="0" y="1929.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2398605327-line-80">
+    <rect x="0" y="1953.5" 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="2048.8" rx="8"/><text class="terminal-2398605327-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2398605327-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2803425993-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2803425993-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2803425993-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2803425993-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...&#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; [...]
-</tspan><tspan class="terminal-2803425993-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="99.2" textLength="1488">╭─&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="99.2" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="125.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="125.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="125.6" textLength="99.2">--python</tspan><tspan class="terminal-2803425993-r2" x="136.4" y="125.6" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="322 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="152" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="152" textLength="359.6">&#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;</tspan><tspan class="terminal-2803425993-r4" x="372" y="152" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="178.4" textLength="111.6">--backend</tspan><tspan class="terminal-2803425993-r2" x="148.8" y="178.4" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="322.4 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="204.8" textLength="223.2">--postgres-version</tspan><tspan class="terminal-2803425993-r2" x="260.4" y="204.8" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="322.4" y="204.8" textLength="24.8">-P</tspan><tspan c [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="231.2" textLength="186">--mysql-version</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="231.2" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="322.4" y="231.2" textLength="24.8">-M< [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="257.6" textLength="186">--mssql-version</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="257.6" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="322.4" y="257.6" textLength="24.8">-S< [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="284" textLength="161.2">--integration</tspan><tspan class="terminal-2803425993-r2" x="198.4" y="284" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="322.4" y="284" textLength="24.8">&# [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="310.4" textLength="359.6">&#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;</tspan><tspan class="terminal-2803425993-r7" x="372" y="310.4" textLength="1078.8">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openlda [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="336.8" textLength="359.6">&#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;</tspan><tspan class="terminal-2803425993-r7" x="372" y="336.8" textLength="1078.8">all)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="363.2" textLength="260.4">--forward-credentials</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="322.4" y="363.2" textLength="24.8">-f</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="389.6" textLength="124">--db-reset</tspan><tspan class="terminal-2803425993-r2" x="161.2" y="389.6" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="322.4" y="38 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="416" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="416" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="442.4" textLength="1488">╭─&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;─────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="442.4" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="468.8" textLength="260.4">--use-airflow-version</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="468.8" textLength="1178">&#160;&#160;&#160;&#160;&#160;&#160;&#160;Use&#160;(reinstall&#160;at&#160;entry)&#160;Airflow&#160;version&#160;from&#160;PyPI [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="495.2" textLength="1463.2">&#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;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages& [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="521.6" textLength="954.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;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</tspan><tspan class="terminal-2803425993-r5" x="967.2" y="521.6" text [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="548" textLength="372">&#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;</tspan><tspan class="terminal-2803425993-r7" x="384.4" y="548" textLength="1066.4">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_ver [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="574.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="574.4" textLength="198.4">--airflow-extras</tspan><tspan class="terminal-2803425993-r2" x="235.6" y="574.4" textLength="533.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Airflow&#160;extras&#160;to&#160;install&#160;when&#160;</t [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="600.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="600.8" textLength="297.6">--use-packages-from-dist</tspan><tspan class="terminal-2803425993-r2" x="334.8" y="600.8" textLength="396.8">&#160;&#160;&#160;&#160;Install&#160;all&#160;found&#160;packages&#160;(</tspan><tspan class="terminal-2803425993-r5" x="73 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="627.2" textLength="1463.2">&#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;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="653.6" textLength="198.4">--package-format</tspan><tspan class="terminal-2803425993-r2" x="235.6" y="653.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="384.4" y=" [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="680" textLength="372">&#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;</tspan><tspan class="terminal-2803425993-r4" x="384.4" y="680" textLength="669.6">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="706.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="706.4" textLength="161.2">--force-build</tspan><tspan class="terminal-2803425993-r2" x="198.4" y="706.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2"  [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="732.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="732.8" textLength="186">--mount-sources</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="732.8" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="384.4"  [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="759.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="759.2" textLength="372">&#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;</tspan><tspan class="terminal-2803425993-r7" x="384.4" y="759.2" textLength="855.6">(selected&#160;|&#160;all&#160;|&#160;none)&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="785.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="785.6" textLength="372">&#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;</tspan><tspan class="terminal-2803425993-r4" x="384.4" y="785.6" textLength="855.6">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="812" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="812" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="812" textLength="198.4">--debian-version</tspan><tspan class="terminal-2803425993-r2" x="235.6" y="812" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="384.4" y="812" tex [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="838.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="838.4" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="864.8" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="864.8" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="891.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="891.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="891.2" textLength="111.6">--verbose</tspan><tspan class="terminal-2803425993-r2" x="148.8" y="891.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="297.6" y="891.2"  [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="917.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="917.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="917.6" textLength="111.6">--dry-run</tspan><tspan class="terminal-2803425993-r2" x="148.8" y="917.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="297.6" y="917.6"  [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="944" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="944" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="944" textLength="235.6">--github-repository</tspan><tspan class="terminal-2803425993-r2" x="272.8" y="944" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="297.6" y="944" textLength="24.8">-g</tspan><tspan class="terminal-2803425993 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="970.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="970.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="970.4" textLength="99.2">--answer</tspan><tspan class="terminal-2803425993-r2" x="136.4" y="970.4" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="297.6" y="970 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="996.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="996.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2803425993-r5" x="37.2" y="996.8" textLength="74.4">--help</tspan><tspan class="terminal-2803425993-r2" x="111.6" y="996.8" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r6" x="297.6 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1023.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1023.2" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1049.6" textLength="1488">╭─&#160;Developer&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1049.6" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1076" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1076" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1076" textLength="186">&#160;shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1076" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="1076" textLength="1078.8">Ente [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1102.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1102.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1102.4" textLength="186">&#160;start-airflow&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1102.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="1102.4" textLength="1078.8">Enter&#160;breeze.py&#160;environm [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1128.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1128.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1128.8" textLength="186">&#160;exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1128.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="1128.8" textLengt [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1155.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1155.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1155.2" textLength="186">&#160;stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1155.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="1155.2" textLengt [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1181.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1181.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1181.6" textLength="186">&#160;build-docs&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1181.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="1181.6" textLength="1078.8">Build&#160;document [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1208" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1208" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1208" textLength="186">&#160;static-checks&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1208" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="223.2" y="1208" textLength="1078.8">Run&#160;static&#160;checks.&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1234.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1234.4" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1260.8" textLength="1488">╭─&#160;Testing&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1260.8" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1287.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1287.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1287.2" textLength="272.8">&#160;docker-compose-tests&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1287.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="310" y="1287.2" textLength="1128.4">Run&#160;docker-compose&#16 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1313.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1313.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1313.6" textLength="272.8">&#160;tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1313.6" textLength="12.4">&#160;</tspan><tspan class="terminal-280342 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1340" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1340" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1366.4" textLength="1488">╭─&#160;Configuration&#160;&amp;&#160;maintenance&#160;────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1366.4" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1392.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1392.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1392.8" textLength="260.4">&#160;cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1392.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297. [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1419.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1419.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1419.2" textLength="260.4">&#160;self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1419.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1419.2" textLength= [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1445.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1445.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1445.6" textLength="260.4">&#160;setup-autocomplete&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1445.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1445.6" textLength="1153.2">Enables&#160;autocomp [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1472" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1472" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1472" textLength="260.4">&#160;config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1472" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6"  [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1498.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1498.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1498.4" textLength="260.4">&#160;resource-check&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1498.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1498.4" textLength="1153.2">C [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1524.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1524.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1524.8" textLength="260.4">&#160;free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1524.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1524.8" t [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1551.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1551.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1551.2" textLength="260.4">&#160;fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1551.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1551.2" textLength="1153 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1577.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1577.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1577.6" textLength="260.4">&#160;command-hash-export&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1577.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297.6" y="1577.6" textLength="1153.2">Outputs&#160;hash&#160;of& [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1604" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1604" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1604" textLength="260.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1604" textLength="12.4">&#160;</tspan><tspan class="term [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1630.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1630.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1630.4" textLength="260.4">&#160;version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="285.2" y="1630.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="297. [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1656.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1656.8" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1683.2" textLength="1488">╭─&#160;CI&#160;Image&#160;tools&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1683.2" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1709.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1709.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1709.6" textLength="173.6">&#160;build-image&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="198.4" y="1709.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1709.6" textLength="1091.2">Build&#160;CI&#160;image.&#1 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1736" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1736" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1736" textLength="173.6">&#160;pull-image&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="198.4" y="1736" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1736" textLength="1091.2">Pull&#160;and&#160;optionally&#16 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1762.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1762.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1762.4" textLength="173.6">&#160;verify-image&#160;</tspan><tspan class="terminal-2803425993-r2" x="198.4" y="1762.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="210.8" y="1762.4" textLength="1091.2">Verify&#160;CI&#160;image.&#160;& [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1788.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1788.8" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1815.2" textLength="1488">╭─&#160;Production&#160;Image&#160;tools&#160;─────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1815.2" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1841.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1841.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1841.6" textLength="235.6">&#160;build-prod-image&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="260.4" y="1841.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="272.8" y="1841.6" textLength="1178">Build&#160;Production&#16 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1868" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1868" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1868" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="260.4" y="1868" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1894.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1894.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1894.4" textLength="235.6">&#160;pull-prod-image&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="260.4" y="1894.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="272.8" y="1894.4" textLength="1178">Pull&#160;and&#160;o [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1920.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="1920.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="1920.8" textLength="235.6">&#160;verify-prod-image&#160;</tspan><tspan class="terminal-2803425993-r2" x="260.4" y="1920.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="272.8" y="1920.8" textLength="1178">Verify&#160;Production&#160;im [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1947.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1947.2" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="1973.6" textLength="1488">╭─&#160;Release&#160;management&#160;─────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2803425993-r2" x="1488" y="1973.6" textLength="12.4">
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2000" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="2000" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="2000" textLength="396.8">&#160;verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="421.6" y="2000" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="434" y="2000" textLength="942.4 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2026.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="2026.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="2026.4" textLength="396.8">&#160;prepare-provider-documentation&#160;</tspan><tspan class="terminal-2803425993-r2" x="421.6" y="2026.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="434" y="2026.4" textLength="942.4">Prepare&#160;CHANG [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2052.8" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="2052.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="2052.8" textLength="396.8">&#160;prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="421.6" y="2052.8" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="434" y="2052.8" textLength=" [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2079.2" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="2079.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="2079.2" textLength="396.8">&#160;prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="421.6" y="2079.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="434" y="2079.2" te [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2105.6" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="2105.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="2105.6" textLength="396.8">&#160;release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="421.6" y="2105.6" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2132" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="2132" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="2132" textLength="396.8">&#160;generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="421.6" y="2132" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="434" y="213 [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2158.4" textLength="12.4">│</tspan><tspan class="terminal-2803425993-r2" x="12.4" y="2158.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r5" x="24.8" y="2158.4" textLength="396.8">&#160;find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2803425993-r2" x="421.6" y="2158.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2803425993-r2" x="434" y="2158.4" te [...]
-</tspan><tspan class="terminal-2803425993-r4" x="0" y="2184.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2803425993-r2" x="1488" y="2184.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2398605327-matrix">
+    <text class="terminal-2398605327-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2398605327-line-0)">
+</text><text class="terminal-2398605327-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2398605327-line-1)">Usage:&#160;</text><text class="terminal-2398605327-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-2398605327-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-2398605327-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-1)">
+</text><text class="terminal-2398605327-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-2)">
+</text><text class="terminal-2398605327-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-2398605327-line-3)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-2398605327-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
+</text><text class="terminal-2398605327-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-4)">│</text><text class="terminal-2398605327-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-4)">-</text><text class="terminal-2398605327-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-2398605327-line-4)">-python</text><text class="terminal-2398605327-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-239 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-2398605327-line-5)">│</text><text class="terminal-2398605327-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-2398605327-line-5)">[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;&#160 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-6)">│</text><text class="terminal-2398605327-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-6)">-</text><text class="terminal-2398605327-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2398605327-line-6)">-backend</text><text class="terminal-2398605327-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-7)">│</text><text class="terminal-2398605327-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-7)">-</text><text class="terminal-2398605327-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-2398605327-line-7)">-postgres</text><text class="terminal-2398605327-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-2398605327-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-8)">│</text><text class="terminal-2398605327-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-8)">-</text><text class="terminal-2398605327-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-2398605327-line-8)">-mysql</text><text class="terminal-2398605327-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-9)">│</text><text class="terminal-2398605327-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-9)">-</text><text class="terminal-2398605327-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2398605327-line-9)">-mssql</text><text class="terminal-2398605327-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2398605327-line-10)">│</text><text class="terminal-2398605327-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2398605327-line-10)">-</text><text class="terminal-2398605327-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-2398605327-line-10)">-integration</text><text class="terminal-2398605327-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
+</text><text class="terminal-2398605327-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-11)">│</text><text class="terminal-2398605327-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-2398605327-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2398605327-r4" x="1 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-12)">│</text><text class="terminal-2398605327-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-2398605327-line-12)">all)&#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-2398605327-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-13)">│</text><text class="terminal-2398605327-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-13)">-</text><text class="terminal-2398605327-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-2398605327-line-13)">-forward</text><text class="terminal-2398605327-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
+</text><text class="terminal-2398605327-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-14)">│</text><text class="terminal-2398605327-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-14)">-</text><text class="terminal-2398605327-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-2398605327-line-14)">-db</text><text class="terminal-2398605327-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-239 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-2398605327-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2398605327-line-15)">
+</text><text class="terminal-2398605327-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-2398605327-line-16)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-2398605327-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="410.4" textLength="24.4 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-17)">│</text><text class="terminal-2398605327-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-17)">-</text><text class="terminal-2398605327-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-2398605327-line-17)">-use</text><text class="terminal-2398605327-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-18)">│</text><text class="terminal-2398605327-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-2398605327-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-2398605327-r4" x="1451.8" y="459.2" textLength= [...]
+</text><text class="terminal-2398605327-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-19)">│</text><text class="terminal-2398605327-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-2398605327-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2398605327-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-19)">-</text><text class="terminal-23986 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2398605327-line-20)">│</text><text class="terminal-2398605327-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-2398605327-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2398605327-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-21)">│</text><text class="terminal-2398605327-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-21)">-</text><text class="terminal-2398605327-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-2398605327-line-21)">-airflow</text><text class="terminal-2398605327-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2398605327-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-22)">│</text><text class="terminal-2398605327-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-22)">-</text><text class="terminal-2398605327-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-2398605327-line-22)">-use</text><text class="terminal-2398605327-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-23)">│</text><text class="terminal-2398605327-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-2398605327-line-23)">entering&#160;breeze.&#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-2398605327-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-24)">│</text><text class="terminal-2398605327-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-24)">-</text><text class="terminal-2398605327-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-2398605327-line-24)">-package</text><text class="terminal-2398605327-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2398605327-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2398605327-line-25)">│</text><text class="terminal-2398605327-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2398605327-line-25)">-</text><text class="terminal-2398605327-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-2398605327-line-25)">-force</text><text class="terminal-2398605327-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-2398605 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-26)">│</text><text class="terminal-2398605327-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-26)">-</text><text class="terminal-2398605327-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-2398605327-line-26)">-mount</text><text class="terminal-2398605327-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2398605327-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-27)">│</text><text class="terminal-2398605327-r7" x="366" y="678.8" textLength="841.8" clip-path="url(#terminal-2398605327-line-27)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-2398605327-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-28)">│</text><text class="terminal-2398605327-r4" x="366" y="703.2" textLength="841.8" clip-path="url(#terminal-2398605327-line-28)">[default:&#160;selected]&#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-2398605327-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-29)">│</text><text class="terminal-2398605327-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-29)">-</text><text class="terminal-2398605327-r5" x="36.6" y="727.6" textLength="85.4" clip-path="url(#terminal-2398605327-line-29)">-debian</text><text class="terminal-2398605327-r5" x="122" y="727.6" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-2398605327-r4" x="0" y="752" textLength="1464" clip-path="url(#terminal-2398605327-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="752" textLength="12.2" clip-path="url(#terminal-2398605327-line-30)">
+</text><text class="terminal-2398605327-r4" x="0" y="776.4" textLength="24.4" clip-path="url(#terminal-2398605327-line-31)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="776.4" textLength="1415.2" clip-path="url(#terminal-2398605327-line-31)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="776.4" textLength="24.4" clip-path="url(#terminal-239 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-32)">│</text><text class="terminal-2398605327-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-32)">-</text><text class="terminal-2398605327-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-2398605327-line-32)">-verbose</text><text class="terminal-2398605327-r6" x="280.6" y="800.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2398605327-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-33)">│</text><text class="terminal-2398605327-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-33)">-</text><text class="terminal-2398605327-r5" x="36.6" y="825.2" textLength="48.8" clip-path="url(#terminal-2398605327-line-33)">-dry</text><text class="terminal-2398605327-r5" x="85.4" y="825.2" textLength="48.8" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-34)">│</text><text class="terminal-2398605327-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-34)">-</text><text class="terminal-2398605327-r5" x="36.6" y="849.6" textLength="85.4" clip-path="url(#terminal-2398605327-line-34)">-github</text><text class="terminal-2398605327-r5" x="122" y="849.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2398605327-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2398605327-line-35)">│</text><text class="terminal-2398605327-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2398605327-line-35)">-</text><text class="terminal-2398605327-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-2398605327-line-35)">-answer</text><text class="terminal-2398605327-r6" x="280.6" y="874" textLength="24.4" clip-path="url(#terminal-239860 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-36)">│</text><text class="terminal-2398605327-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-36)">-</text><text class="terminal-2398605327-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-2398605327-line-36)">-help</text><text class="terminal-2398605327-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="922.8" textLength="1464" clip-path="url(#terminal-2398605327-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="922.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-37)">
+</text><text class="terminal-2398605327-r4" x="0" y="947.2" textLength="24.4" clip-path="url(#terminal-2398605327-line-38)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="947.2" textLength="1415.2" clip-path="url(#terminal-2398605327-line-38)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="947.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2398605327-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-39)">│</text><text class="terminal-2398605327-r5" x="24.4" y="971.6" textLength="183" clip-path="url(#terminal-2398605327-line-39)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="971.6" textLength="1207.8" clip-path="url(#terminal-2398605327-line-39)">Enter&#160;breeze.py&#160;environment.&#160;th [...]
+</text><text class="terminal-2398605327-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2398605327-line-40)">│</text><text class="terminal-2398605327-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-2398605327-line-40)">start-airflow&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-2398605327-line-40)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;compon [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-41)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-2398605327-line-41)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-2398605327-line-41)">Joins&#160;the&#160;interactive&#160;s [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-42)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-2398605327-line-42)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-2398605327-line-42)">Stop&#160;running&#160;breeze&#160;env [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-43)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-2398605327-line-43)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-2398605327-line-43)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-44)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-2398605327-line-44)">static-checks&#160;&#160;</text><text class="terminal-2398605327-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-2398605327-line-44)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-2398605327-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-2398605327-line-45)">
+</text><text class="terminal-2398605327-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-2398605327-line-46)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-2398605327-line-46)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1142.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-47)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1166.8" textLength="256.2" clip-path="url(#terminal-2398605327-line-47)">docker-compose-tests&#160;</text><text class="terminal-2398605327-r2" x="305" y="1166.8" textLength="1134.6" clip-path="url(#terminal-2398605327-line-47)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-48)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-2398605327-line-48)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-2398605327-line-48)">Run&#16 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-2398605327-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-49)">
+</text><text class="terminal-2398605327-r4" x="0" y="1240" textLength="24.4" clip-path="url(#terminal-2398605327-line-50)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1240" textLength="1415.2" clip-path="url(#terminal-2398605327-line-50)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1240" textLength="24.4" clip-path="url(#t [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-51)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1264.4" textLength="231.8" clip-path="url(#terminal-2398605327-line-51)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1264.4" textLength="1159" clip-path="url(#terminal-2398605327-line-51)">Cleans&#160;the&#160;cache&#1 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-52)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1288.8" textLength="231.8" clip-path="url(#terminal-2398605327-line-52)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1288.8" textLength="1159" clip-path="url(#terminal-2398605327-line-52)">Self&#160;upgrade&#160;Breeze.&#160;&#160;&#160;&#160; [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-53)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1313.2" textLength="231.8" clip-path="url(#terminal-2398605327-line-53)">setup-autocomplete&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1313.2" textLength="1159" clip-path="url(#terminal-2398605327-line-53)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;commands.&#160;&#160;&#160;&#16 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-54)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1337.6" textLength="231.8" clip-path="url(#terminal-2398605327-line-54)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1337.6" textLength="1159" clip-path="url(#terminal-2398605327-line-54)">Show/update&#160;configu [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-2398605327-line-55)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1362" textLength="231.8" clip-path="url(#terminal-2398605327-line-55)">resource-check&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1362" textLength="1159" clip-path="url(#terminal-2398605327-line-55)">Check&#160;if&#160;available&#160;docker&#160;resources&#160;are&#160; [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-56)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1386.4" textLength="231.8" clip-path="url(#terminal-2398605327-line-56)">free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1386.4" textLength="1159" clip-path="url(#terminal-2398605327-line-56)">Free&#160;space&#160;for&#160;jobs&#160;run& [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-57)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1410.8" textLength="231.8" clip-path="url(#terminal-2398605327-line-57)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1410.8" textLength="1159" clip-path="url(#terminal-2398605327-line-57)">Fix&#160;ownership&#160;of&#160;source&#160;files&#160;to&# [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-58)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1435.2" textLength="231.8" clip-path="url(#terminal-2398605327-line-58)">command-hash-export</text><text class="terminal-2398605327-r2" x="280.6" y="1435.2" textLength="1159" clip-path="url(#terminal-2398605327-line-58)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands&#160;to&#160;file&#160;or&#16 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-59)">│</text><text class="terminal-2398605327-r2" x="280.6" y="1459.6" textLength="1159" clip-path="url(#terminal-2398605327-line-59)">should&#160;be&#160;regenerated).&#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-2398605327-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-2398605327-line-60)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1484" textLength="231.8" clip-path="url(#terminal-2398605327-line-60)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="280.6" y="1484" textLength="1159" clip-path="url(#terminal-2398605327-line-60)">Print&#160;information&#160;about&# [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1508.4" textLength="1464" clip-path="url(#terminal-2398605327-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1508.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-61)">
+</text><text class="terminal-2398605327-r4" x="0" y="1532.8" textLength="24.4" clip-path="url(#terminal-2398605327-line-62)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1532.8" textLength="1415.2" clip-path="url(#terminal-2398605327-line-62)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1532.8" textLength="24.4" clip-path="url( [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-63)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1557.2" textLength="170.8" clip-path="url(#terminal-2398605327-line-63)">build-image&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="219.6" y="1557.2" textLength="1220" clip-path="url(#terminal-2398605327-line-63)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images& [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-64)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1581.6" textLength="170.8" clip-path="url(#terminal-2398605327-line-64)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="219.6" y="1581.6" textLength="1220" clip-path="url(#terminal-2398605327-line-64)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160; [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-2398605327-line-65)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-2398605327-line-65)">verify-image&#160;&#160;</text><text class="terminal-2398605327-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-2398605327-line-65)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1630.4" textLength="1464" clip-path="url(#terminal-2398605327-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1630.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-66)">
+</text><text class="terminal-2398605327-r4" x="0" y="1654.8" textLength="24.4" clip-path="url(#terminal-2398605327-line-67)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1654.8" textLength="1415.2" clip-path="url(#terminal-2398605327-line-67)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1654.8" textLength="24.4" clip-path="url( [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-68)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1679.2" textLength="207.4" clip-path="url(#terminal-2398605327-line-68)">build-prod-image&#160;</text><text class="terminal-2398605327-r2" x="256.2" y="1679.2" textLength="1183.4" clip-path="url(#terminal-2398605327-line-68)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;imag [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-69)">│</text><text class="terminal-2398605327-r2" x="256.2" y="1703.6" textLength="1183.4" clip-path="url(#terminal-2398605327-line-69)">sequentially.&#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-2398605327-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-2398605327-line-70)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1728" textLength="207.4" clip-path="url(#terminal-2398605327-line-70)">pull-prod-image&#160;&#160;</text><text class="terminal-2398605327-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-2398605327-line-70)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;pos [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-71)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-2398605327-line-71)">verify-prod-image</text><text class="terminal-2398605327-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-2398605327-line-71)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-2398605327-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-72)">
+</text><text class="terminal-2398605327-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-2398605327-line-73)">╭─</text><text class="terminal-2398605327-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-2398605327-line-73)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2398605327-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-74)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1825.6" textLength="402.6" clip-path="url(#terminal-2398605327-line-74)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1825.6" textLength="988.2" clip-path="url(#terminal-2398605327-line-74)">Verifies&#160;if&#160;all&#16 [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-2398605327-line-75)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1850" textLength="402.6" clip-path="url(#terminal-2398605327-line-75)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1850" textLength="988.2" clip-path="url(#terminal-2398605327-line-75)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;in [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-76)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1874.4" textLength="402.6" clip-path="url(#terminal-2398605327-line-76)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1874.4" textLength="988.2" clip-path="url(#terminal-2398605327-line-76)">Prepare&#160;sdist/whl&#160;packag [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-2398605327-line-77)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1898.8" textLength="402.6" clip-path="url(#terminal-2398605327-line-77)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1898.8" textLength="988.2" clip-path="url(#terminal-2398605327-line-77)">Prepare&#160;sdist/whl&# [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-2398605327-line-78)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1923.2" textLength="402.6" clip-path="url(#terminal-2398605327-line-78)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1923.2" textLength="988.2" clip-path="url(#terminal-2398605327-line-78)">Rele [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-2398605327-line-79)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1947.6" textLength="402.6" clip-path="url(#terminal-2398605327-line-79)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1947.6" textLength="988.2" clip-path="url(#terminal-2398605327-line-79)">Generates [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-2398605327-line-80)">│</text><text class="terminal-2398605327-r5" x="24.4" y="1972" textLength="402.6" clip-path="url(#terminal-2398605327-line-80)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-2398605327-r2" x="451.4" y="1972" textLength="988.2" clip-path="url(#terminal-2398605327-line-80)">Finds&#160;which&#160;dependen [...]
+</text><text class="terminal-2398605327-r4" x="0" y="1996.4" textLength="1464" clip-path="url(#terminal-2398605327-line-81)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2398605327-r2" x="1464" y="1996.4" textLength="12.2" clip-path="url(#terminal-2398605327-line-81)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-config.svg b/images/breeze/output-config.svg
index f3c2e8c23e..b196ab3306 100644
--- a/images/breeze/output-config.svg
+++ b/images/breeze/output-config.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 646.4000000000001" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 562.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,56 +19,126 @@
         font-weight: 700;
     }
 
-    .terminal-1927308537-matrix {
+    .terminal-119432441-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1927308537-title {
+    .terminal-119432441-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1927308537-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1927308537-r2 { fill: #c5c8c6 }
-.terminal-1927308537-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1927308537-r4 { fill: #868887 }
-.terminal-1927308537-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1927308537-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1927308537-r7 { fill: #8d7b39 }
+    .terminal-119432441-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-119432441-r2 { fill: #c5c8c6 }
+.terminal-119432441-r3 { fill: #d0b344;font-weight: bold }
+.terminal-119432441-r4 { fill: #868887 }
+.terminal-119432441-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-119432441-r6 { fill: #98a84b;font-weight: bold }
+.terminal-119432441-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="606.4" rx="12"/><text class="terminal-1927308537-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: config</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-119432441-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="511.4" />
+    </clipPath>
+    <clipPath id="terminal-119432441-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-119432441-line-19">
+    <rect x="0" y="465.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="560.4" rx="8"/><text class="terminal-119432441-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;config</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-119432441-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1927308537-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1927308537-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1927308537-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1927308537-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1927308537-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;config&#160;[OPTIONS]&#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;&#16 [...]
-</tspan><tspan class="terminal-1927308537-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-1927308537-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="99.2" textLength="1463.2">Show/update&#160;configuration&#160;(Python,&#160;Backend,&#160;Cheatsheet,&#160;ASCIIART).&#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;&#16 [...]
-</tspan><tspan class="terminal-1927308537-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="152" textLength="1488">╭─&#160;Config&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1927308537-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="178.4" textLength="99.2">--python</tspan><tspan class="terminal-1927308537-r2" x="136.4" y="178.4" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan> [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="204.8" textLength="483.6">&#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;</tspan><tspan class="terminal-1927308537-r7" x="496" y="204.8" textLength="744">(&gt;3.7&lt; [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="231.2" textLength="483.6">&#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;</tspan><tspan class="terminal-1927308537-r4" x="496" y="231.2" textLength="744">[default:&#1 [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="257.6" textLength="111.6">--backend</tspan><tspan class="terminal-1927308537-r2" x="148.8" y="257.6" textLength="260.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tsp [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="284" textLength="483.6">&#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;</tspan><tspan class="terminal-1927308537-r4" x="496" y="284" textLength="297.6">[default:&#160;s [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="310.4" textLength="148.8">--cheatsheet</tspan><tspan class="terminal-1927308537-r2" x="186" y="310.4" textLength="12.4">/</tspan><tspan class="terminal-1927308537-r5" x="198.4" y="310.4" textLength="186">--no-cheatsheet</tspan><tspan class="terminal-19273085 [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="336.8" textLength="124">--asciiart</tspan><tspan class="terminal-1927308537-r2" x="161.2" y="336.8" textLength="12.4">/</tspan><tspan class="terminal-1927308537-r5" x="173.6" y="336.8" textLength="161.2">--no-asciiart</tspan><tspan class="terminal-1927308537 [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="363.2" textLength="99.2">--colour</tspan><tspan class="terminal-1927308537-r2" x="136.4" y="363.2" textLength="12.4">/</tspan><tspan class="terminal-1927308537-r5" x="148.8" y="363.2" textLength="136.4">--no-colour</tspan><tspan class="terminal-1927308537-r2 [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="389.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1927308537-r2" x="1488" y="389.6" textLength="12.4">
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="416" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1927308537-r2" x="1488" y="416" textLength="12.4">
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="442.4" textLength="223.2">--postgres-version</tspan><tspan class="terminal-1927308537-r2" x="260.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r6" x="285.2" y="442.4" textLength="24.8">-P</tspan><tspan class="terminal-1 [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="468.8" textLength="186">--mysql-version</tspan><tspan class="terminal-1927308537-r2" x="223.2" y="468.8" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1927308537-r6" x="285.2" y="468.8" textLength="24.8">-M</tspan><tspan class= [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="495.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="495.2" textLength="186">--mssql-version</tspan><tspan class="terminal-1927308537-r2" x="223.2" y="495.2" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1927308537-r6" x="285.2" y="495.2" textLength="24.8">-S</tspan><tspan class= [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-1927308537-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1927308537-r5" x="37.2" y="521.6" textLength="74.4">--help</tspan><tspan class="terminal-1927308537-r2" x="111.6" y="521.6" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1927308537-r6" x="285.2" y= [...]
-</tspan><tspan class="terminal-1927308537-r4" x="0" y="548" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1927308537-r2" x="1488" y="548" textLength="12.4">
-</tspan></text>
+    <g class="terminal-119432441-matrix">
+    <text class="terminal-119432441-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-119432441-line-0)">
+</text><text class="terminal-119432441-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-119432441-line-1)">Usage:&#160;</text><text class="terminal-119432441-r1" x="97.6" y="44.4" textLength="280.6" clip-path="url(#terminal-119432441-line-1)">breeze&#160;config&#160;[OPTIONS]</text><text class="terminal-119432441-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-119432441-line-1)">
+</text><text class="terminal-119432441-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-119432441-line-2)">
+</text><text class="terminal-119432441-r2" x="12.2" y="93.2" textLength="805.2" clip-path="url(#terminal-119432441-line-3)">Show/update&#160;configuration&#160;(Python,&#160;Backend,&#160;Cheatsheet,&#160;ASCIIART).</text><text class="terminal-119432441-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-119432441-line-3)">
+</text><text class="terminal-119432441-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-119432441-line-4)">
+</text><text class="terminal-119432441-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-119432441-line-5)">╭─</text><text class="terminal-119432441-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-119432441-line-5)">&#160;Config&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-119432441-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-119432441-l [...]
+</text><text class="terminal-119432441-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-119432441-line-6)">│</text><text class="terminal-119432441-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-119432441-line-6)">-</text><text class="terminal-119432441-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-119432441-line-6)">-python</text><text class="terminal-119432441-r6" x="390.4" y="166.4" textLength="24.4" clip-path="url(#terminal-11943244 [...]
+</text><text class="terminal-119432441-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-119432441-line-7)">│</text><text class="terminal-119432441-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-119432441-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;&#16 [...]
+</text><text class="terminal-119432441-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-119432441-line-8)">│</text><text class="terminal-119432441-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-119432441-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;&#160 [...]
+</text><text class="terminal-119432441-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-119432441-line-9)">│</text><text class="terminal-119432441-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-119432441-line-9)">-</text><text class="terminal-119432441-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-119432441-line-9)">-backend</text><text class="terminal-119432441-r6" x="390.4" y="239.6" textLength="24.4" clip-path="url(#terminal-1194324 [...]
+</text><text class="terminal-119432441-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-119432441-line-10)">│</text><text class="terminal-119432441-r4" x="475.8" y="264" textLength="292.8" clip-path="url(#terminal-119432441-line-10)">[default:&#160;sqlite]&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-119432441-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-119432441-line-10)">│</text><text class="terminal-119432441-r2" x="1464" y="2 [...]
+</text><text class="terminal-119432441-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-119432441-line-11)">│</text><text class="terminal-119432441-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-119432441-line-11)">-</text><text class="terminal-119432441-r5" x="36.6" y="288.4" textLength="134.2" clip-path="url(#terminal-119432441-line-11)">-cheatsheet</text><text class="terminal-119432441-r2" x="170.8" y="288.4" textLength="12.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-119432441-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-119432441-line-12)">│</text><text class="terminal-119432441-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-119432441-line-12)">-</text><text class="terminal-119432441-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-119432441-line-12)">-asciiart</text><text class="terminal-119432441-r2" x="146.4" y="312.8" textLength="12.2" clip-path="url(#terminal-11 [...]
+</text><text class="terminal-119432441-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-119432441-line-13)">│</text><text class="terminal-119432441-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-119432441-line-13)">-</text><text class="terminal-119432441-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-119432441-line-13)">-colour</text><text class="terminal-119432441-r2" x="122" y="337.2" textLength="12.2" clip-path="url(#terminal-1194324 [...]
+</text><text class="terminal-119432441-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-119432441-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-119432441-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-119432441-line-14)">
+</text><text class="terminal-119432441-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-119432441-line-15)">╭─</text><text class="terminal-119432441-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-119432441-line-15)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-119432441-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-119432441-line [...]
+</text><text class="terminal-119432441-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-119432441-line-16)">│</text><text class="terminal-119432441-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-119432441-line-16)">-</text><text class="terminal-119432441-r5" x="36.6" y="410.4" textLength="109.8" clip-path="url(#terminal-119432441-line-16)">-postgres</text><text class="terminal-119432441-r5" x="146.4" y="410.4" textLength="97.6" clip-path="url(#terminal-11 [...]
+</text><text class="terminal-119432441-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-119432441-line-17)">│</text><text class="terminal-119432441-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-119432441-line-17)">-</text><text class="terminal-119432441-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-119432441-line-17)">-mysql</text><text class="terminal-119432441-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal-119432 [...]
+</text><text class="terminal-119432441-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-119432441-line-18)">│</text><text class="terminal-119432441-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-119432441-line-18)">-</text><text class="terminal-119432441-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-119432441-line-18)">-mssql</text><text class="terminal-119432441-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal-119432 [...]
+</text><text class="terminal-119432441-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-119432441-line-19)">│</text><text class="terminal-119432441-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-119432441-line-19)">-</text><text class="terminal-119432441-r5" x="36.6" y="483.6" textLength="61" clip-path="url(#terminal-119432441-line-19)">-help</text><text class="terminal-119432441-r6" x="268.4" y="483.6" textLength="24.4" clip-path="url(#terminal-119432441 [...]
+</text><text class="terminal-119432441-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-119432441-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-119432441-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-119432441-line-20)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-docker-compose-tests.svg b/images/breeze/output-docker-compose-tests.svg
index 71d16ecda4..4830ca1215 100644
--- a/images/breeze/output-docker-compose-tests.svg
+++ b/images/breeze/output-docker-compose-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 540.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,52 +19,110 @@
         font-weight: 700;
     }
 
-    .terminal-2246963640-matrix {
+    .terminal-25948600-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2246963640-title {
+    .terminal-25948600-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2246963640-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2246963640-r2 { fill: #c5c8c6 }
-.terminal-2246963640-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2246963640-r4 { fill: #868887 }
-.terminal-2246963640-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2246963640-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2246963640-r7 { fill: #8d7b39 }
+    .terminal-25948600-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-25948600-r2 { fill: #c5c8c6 }
+.terminal-25948600-r3 { fill: #d0b344;font-weight: bold }
+.terminal-25948600-r4 { fill: #868887 }
+.terminal-25948600-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-25948600-r6 { fill: #98a84b;font-weight: bold }
+.terminal-25948600-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="500.8" rx="12"/><text class="terminal-2246963640-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: docker-compose-tests</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-25948600-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+    </clipPath>
+    <clipPath id="terminal-25948600-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-25948600-line-15">
+    <rect x="0" y="367.5" 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="462.8" rx="8"/><text class="terminal-25948600-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;docker-compose-tests</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-25948600-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2246963640-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2246963640-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2246963640-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2246963640-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2246963640-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...&#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;&#16 [...]
-</tspan><tspan class="terminal-2246963640-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2246963640-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="99.2" textLength="1463.2">Run&#160;docker-compose&#160;tests.&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-2246963640-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="152" textLength="1488">╭─&#160;Docker-compose&#160;tests&#160;flag&#160;──────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2246963640-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r5" x="37.2" y="178.4" textLength="148.8">--image-name</tspan><tspan class="terminal-2246963640-r2" x="186" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r6" x="210.8" y="178.4" textLength="24.8">-n</tspan><tspan class="terminal-224696364 [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r5" x="37.2" y="204.8" textLength="99.2">--python</tspan><tspan class="terminal-2246963640-r2" x="136.4" y="204.8" textLength="74.4">&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2246963640-r6" x="210.8" y="204.8" textLength="24.8">-p</tspan><tspan clas [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="231.2" textLength="248">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2246963640-r4" x="260.4" y="231.2" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r5" x="37.2" y="257.6" textLength="136.4">--image-tag</tspan><tspan class="terminal-2246963640-r2" x="173.6" y="257.6" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-2246963640-r6" x="210.8" y="257.6" textLength="24.8">-t</tspan><tspan class="terminal-22 [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="284" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2246963640-r2" x="1488" y="284" textLength="12.4">
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="310.4" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2246963640-r2" x="1488" y="310.4" textLength="12.4">
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r5" x="37.2" y="336.8" textLength="111.6">--verbose</tspan><tspan class="terminal-2246963640-r2" x="148.8" y="336.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2246963640-r6" x="297.6" y="336.8"  [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r5" x="37.2" y="363.2" textLength="111.6">--dry-run</tspan><tspan class="terminal-2246963640-r2" x="148.8" y="363.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2246963640-r6" x="297.6" y="363.2"  [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r5" x="37.2" y="389.6" textLength="235.6">--github-repository</tspan><tspan class="terminal-2246963640-r2" x="272.8" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r6" x="297.6" y="389.6" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-2246963640-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2246963640-r5" x="37.2" y="416" textLength="74.4">--help</tspan><tspan class="terminal-2246963640-r2" x="111.6" y="416" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2246963640-r6" x="297.6" y="416 [...]
-</tspan><tspan class="terminal-2246963640-r4" x="0" y="442.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2246963640-r2" x="1488" y="442.4" textLength="12.4">
-</tspan></text>
+    <g class="terminal-25948600-matrix">
+    <text class="terminal-25948600-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-25948600-line-0)">
+</text><text class="terminal-25948600-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-25948600-line-1)">Usage:&#160;</text><text class="terminal-25948600-r1" x="97.6" y="44.4" textLength="732" clip-path="url(#terminal-25948600-line-1)">breeze&#160;docker-compose-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-25948600-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-25948600-line-1)">
+</text><text class="terminal-25948600-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-25948600-line-2)">
+</text><text class="terminal-25948600-r2" x="12.2" y="93.2" textLength="305" clip-path="url(#terminal-25948600-line-3)">Run&#160;docker-compose&#160;tests.</text><text class="terminal-25948600-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-25948600-line-3)">
+</text><text class="terminal-25948600-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-25948600-line-4)">
+</text><text class="terminal-25948600-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-25948600-line-5)">╭─</text><text class="terminal-25948600-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-25948600-line-5)">&#160;Docker-compose&#160;tests&#160;flag&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-25948600-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-25948600-li [...]
+</text><text class="terminal-25948600-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-25948600-line-6)">│</text><text class="terminal-25948600-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-25948600-line-6)">-</text><text class="terminal-25948600-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-25948600-line-6)">-image</text><text class="terminal-25948600-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-25948600-line-6)"> [...]
+</text><text class="terminal-25948600-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-25948600-line-7)">│</text><text class="terminal-25948600-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-25948600-line-7)">-</text><text class="terminal-25948600-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-25948600-line-7)">-python</text><text class="terminal-25948600-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-25948600-line-7 [...]
+</text><text class="terminal-25948600-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-25948600-line-8)">│</text><text class="terminal-25948600-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-25948600-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;&#160;&#160 [...]
+</text><text class="terminal-25948600-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-25948600-line-9)">│</text><text class="terminal-25948600-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-25948600-line-9)">-</text><text class="terminal-25948600-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-25948600-line-9)">-image</text><text class="terminal-25948600-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-25948600-line-9) [...]
+</text><text class="terminal-25948600-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-25948600-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-25948600-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-25948600-line-10)">
+</text><text class="terminal-25948600-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-25948600-line-11)">╭─</text><text class="terminal-25948600-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-25948600-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-25948600-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-25948600-line [...]
+</text><text class="terminal-25948600-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-25948600-line-12)">│</text><text class="terminal-25948600-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-25948600-line-12)">-</text><text class="terminal-25948600-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-25948600-line-12)">-verbose</text><text class="terminal-25948600-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#terminal-25948600-li [...]
+</text><text class="terminal-25948600-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-25948600-line-13)">│</text><text class="terminal-25948600-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-25948600-line-13)">-</text><text class="terminal-25948600-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-25948600-line-13)">-dry</text><text class="terminal-25948600-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-25948600-line-13 [...]
+</text><text class="terminal-25948600-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-25948600-line-14)">│</text><text class="terminal-25948600-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-25948600-line-14)">-</text><text class="terminal-25948600-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-25948600-line-14)">-github</text><text class="terminal-25948600-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal-25948600-line [...]
+</text><text class="terminal-25948600-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-25948600-line-15)">│</text><text class="terminal-25948600-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-25948600-line-15)">-</text><text class="terminal-25948600-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-25948600-line-15)">-help</text><text class="terminal-25948600-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-25948600-line-15)">-h</t [...]
+</text><text class="terminal-25948600-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-25948600-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-25948600-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-25948600-line-16)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-exec.svg b/images/breeze/output-exec.svg
index b197eb3d63..b8e69cd3ad 100644
--- a/images/breeze/output-exec.svg
+++ b/images/breeze/output-exec.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 356.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 294.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,44 +19,81 @@
         font-weight: 700;
     }
 
-    .terminal-3580858145-matrix {
+    .terminal-4239167265-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3580858145-title {
+    .terminal-4239167265-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3580858145-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3580858145-r2 { fill: #c5c8c6 }
-.terminal-3580858145-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3580858145-r4 { fill: #868887 }
-.terminal-3580858145-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3580858145-r6 { fill: #98a84b;font-weight: bold }
+    .terminal-4239167265-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4239167265-r2 { fill: #c5c8c6 }
+.terminal-4239167265-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4239167265-r4 { fill: #868887 }
+.terminal-4239167265-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4239167265-r6 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="316" rx="12"/><text class="terminal-3580858145-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: exec</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-4239167265-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="243.0" />
+    </clipPath>
+    <clipPath id="terminal-4239167265-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4239167265-line-8">
+    <rect x="0" y="196.7" 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="292" rx="8"/><text class="terminal-4239167265-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;exec</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4239167265-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-3580858145-matrix" font-variant="east-asian-width-values"><tspan class="terminal-3580858145-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-3580858145-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-3580858145-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-3580858145-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;exec&#160;[OPTIONS]&#160;[EXEC_ARGS]...&#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;&#16 [...]
-</tspan><tspan class="terminal-3580858145-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-3580858145-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-3580858145-r2" x="12.4" y="99.2" textLength="1463.2">Joins&#160;the&#160;interactive&#160;shell&#160;of&#160;running&#160;airflow&#160;container&#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;&#16 [...]
-</tspan><tspan class="terminal-3580858145-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-3580858145-r4" x="0" y="152" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-3580858145-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-3580858145-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-3580858145-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3580858145-r5" x="37.2" y="178.4" textLength="111.6">--verbose</tspan><tspan class="terminal-3580858145-r2" x="148.8" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3580858145-r6" x="173.6" y="178.4" textLength="24.8">-v</tspan><tspan class="terminal-3580858145 [...]
-</tspan><tspan class="terminal-3580858145-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-3580858145-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3580858145-r5" x="37.2" y="204.8" textLength="111.6">--dry-run</tspan><tspan class="terminal-3580858145-r2" x="148.8" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3580858145-r6" x="173.6" y="204.8" textLength="24.8">-D</tspan><tspan class="terminal-3580858145 [...]
-</tspan><tspan class="terminal-3580858145-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-3580858145-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3580858145-r5" x="37.2" y="231.2" textLength="74.4">--help</tspan><tspan class="terminal-3580858145-r2" x="111.6" y="231.2" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-3580858145-r6" x="173.6" y="231.2" textLength="24.8">-h</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-3580858145-r4" x="0" y="257.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-3580858145-r2" x="1488" y="257.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-4239167265-matrix">
+    <text class="terminal-4239167265-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4239167265-line-0)">
+</text><text class="terminal-4239167265-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4239167265-line-1)">Usage:&#160;</text><text class="terminal-4239167265-r1" x="97.6" y="44.4" textLength="439.2" clip-path="url(#terminal-4239167265-line-1)">breeze&#160;exec&#160;[OPTIONS]&#160;[EXEC_ARGS]...</text><text class="terminal-4239167265-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4239167265-line-1)">
+</text><text class="terminal-4239167265-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4239167265-line-2)">
+</text><text class="terminal-4239167265-r2" x="12.2" y="93.2" textLength="683.2" clip-path="url(#terminal-4239167265-line-3)">Joins&#160;the&#160;interactive&#160;shell&#160;of&#160;running&#160;airflow&#160;container</text><text class="terminal-4239167265-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4239167265-line-3)">
+</text><text class="terminal-4239167265-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4239167265-line-4)">
+</text><text class="terminal-4239167265-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4239167265-line-5)">╭─</text><text class="terminal-4239167265-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4239167265-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4239167265-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4239167265- [...]
+</text><text class="terminal-4239167265-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4239167265-line-6)">│</text><text class="terminal-4239167265-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4239167265-line-6)">-</text><text class="terminal-4239167265-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-4239167265-line-6)">-verbose</text><text class="terminal-4239167265-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-4239167265-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4239167265-line-7)">│</text><text class="terminal-4239167265-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4239167265-line-7)">-</text><text class="terminal-4239167265-r5" x="36.6" y="190.8" textLength="48.8" clip-path="url(#terminal-4239167265-line-7)">-dry</text><text class="terminal-4239167265-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-42391 [...]
+</text><text class="terminal-4239167265-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4239167265-line-8)">│</text><text class="terminal-4239167265-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-4239167265-line-8)">-</text><text class="terminal-4239167265-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-4239167265-line-8)">-help</text><text class="terminal-4239167265-r6" x="158.6" y="215.2" textLength="24.4" clip-path="url(#terminal-42391 [...]
+</text><text class="terminal-4239167265-r4" x="0" y="239.6" textLength="1464" clip-path="url(#terminal-4239167265-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4239167265-r2" x="1464" y="239.6" textLength="12.2" clip-path="url(#terminal-4239167265-line-9)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-find-newer-dependencies.svg b/images/breeze/output-find-newer-dependencies.svg
index ea60bb6ab5..43fc632ead 100644
--- a/images/breeze/output-find-newer-dependencies.svg
+++ b/images/breeze/output-find-newer-dependencies.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 567.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,53 +19,114 @@
         font-weight: 700;
     }
 
-    .terminal-1328349300-matrix {
+    .terminal-3402563700-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1328349300-title {
+    .terminal-3402563700-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1328349300-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1328349300-r2 { fill: #c5c8c6 }
-.terminal-1328349300-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1328349300-r4 { fill: #868887 }
-.terminal-1328349300-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1328349300-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1328349300-r7 { fill: #8d7b39 }
+    .terminal-3402563700-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3402563700-r2 { fill: #c5c8c6 }
+.terminal-3402563700-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3402563700-r4 { fill: #868887 }
+.terminal-3402563700-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3402563700-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3402563700-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="527.2" rx="12"/><text class="terminal-1328349300-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: find-newer-dependencies</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-3402563700-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="438.2" />
+    </clipPath>
+    <clipPath id="terminal-3402563700-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3402563700-line-16">
+    <rect x="0" y="391.9" 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="487.2" rx="8"/><text class="terminal-3402563700-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;find-newer-dependencies</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3402563700-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1328349300-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1328349300-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1328349300-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1328349300-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1328349300-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;find-newer-dependencies&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-1328349300-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-1328349300-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="99.2" textLength="1463.2">Finds&#160;which&#160;dependencies&#160;are&#160;being&#160;upgraded.&#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;&#160;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-1328349300-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="152" textLength="1488">╭─&#160;Find&#160;newer&#160;dependencies&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1328349300-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r5" x="37.2" y="178.4" textLength="99.2">--python</tspan><tspan class="terminal-1328349300-r2" x="136.4" y="178.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1328349300-r6" x="322 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="204.8" textLength="359.6">&#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;</tspan><tspan class="terminal-1328349300-r4" x="372" y="204.8" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r5" x="37.2" y="231.2" textLength="124">--timezone</tspan><tspan class="terminal-1328349300-r2" x="161.2" y="231.2" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1328349300-r2" x="322.4" y="23 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r5" x="37.2" y="257.6" textLength="260.4">--updated-on-or-after</tspan><tspan class="terminal-1328349300-r2" x="297.6" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r2" x="322.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan clas [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r5" x="37.2" y="284" textLength="111.6">--max-age</tspan><tspan class="terminal-1328349300-r2" x="148.8" y="284" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1328349300-r2" x="322.4" y="284 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="310.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1328349300-r2" x="1488" y="310.4" textLength="12.4">
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="336.8" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1328349300-r2" x="1488" y="336.8" textLength="12.4">
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r5" x="37.2" y="363.2" textLength="384.4">--airflow-constraints-reference</tspan><tspan class="terminal-1328349300-r2" x="421.6" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r2" x="446.4" y="363.2" textLength="24.8">&#160;&#160;</tspan>< [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="389.6" textLength="1463.2">&#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;specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="416" textLength="483.6">&#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;</tspan><tspan class="terminal-1328349300-r7" x="496" y="416" textLength="954.8">(TEXT)&#160;&#16 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-1328349300-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1328349300-r5" x="37.2" y="442.4" textLength="74.4">--help</tspan><tspan class="terminal-1328349300-r2" x="111.6" y="442.4" textLength="334.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-1328349300-r4" x="0" y="468.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1328349300-r2" x="1488" y="468.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-3402563700-matrix">
+    <text class="terminal-3402563700-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3402563700-line-0)">
+</text><text class="terminal-3402563700-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3402563700-line-1)">Usage:&#160;</text><text class="terminal-3402563700-r1" x="97.6" y="44.4" textLength="488" clip-path="url(#terminal-3402563700-line-1)">breeze&#160;find-newer-dependencies&#160;[OPTIONS]</text><text class="terminal-3402563700-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-1)">
+</text><text class="terminal-3402563700-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3402563700-line-2)">
+</text><text class="terminal-3402563700-r2" x="12.2" y="93.2" textLength="536.8" clip-path="url(#terminal-3402563700-line-3)">Finds&#160;which&#160;dependencies&#160;are&#160;being&#160;upgraded.</text><text class="terminal-3402563700-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-3)">
+</text><text class="terminal-3402563700-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-4)">
+</text><text class="terminal-3402563700-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3402563700-line-5)">╭─</text><text class="terminal-3402563700-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3402563700-line-5)">&#160;Find&#160;newer&#160;dependencies&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3402563700-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-3402563700-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-6)">│</text><text class="terminal-3402563700-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-6)">-</text><text class="terminal-3402563700-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3402563700-line-6)">-python</text><text class="terminal-3402563700-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-340 [...]
+</text><text class="terminal-3402563700-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3402563700-line-7)">│</text><text class="terminal-3402563700-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-3402563700-line-7)">[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-3402563700-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-8)">│</text><text class="terminal-3402563700-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-8)">-</text><text class="terminal-3402563700-r5" x="36.6" y="215.2" textLength="109.8" clip-path="url(#terminal-3402563700-line-8)">-timezone</text><text class="terminal-3402563700-r2" x="353.8" y="215.2" textLength="390.4" clip-path="url(#termin [...]
+</text><text class="terminal-3402563700-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-9)">│</text><text class="terminal-3402563700-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-9)">-</text><text class="terminal-3402563700-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3402563700-line-9)">-updated</text><text class="terminal-3402563700-r5" x="134.2" y="239.6" textLength="146.4" clip-path="url(#terminal [...]
+</text><text class="terminal-3402563700-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3402563700-line-10)">│</text><text class="terminal-3402563700-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3402563700-line-10)">-</text><text class="terminal-3402563700-r5" x="36.6" y="264" textLength="48.8" clip-path="url(#terminal-3402563700-line-10)">-max</text><text class="terminal-3402563700-r5" x="85.4" y="264" textLength="48.8" clip-path="url(#terminal-3402563700 [...]
+</text><text class="terminal-3402563700-r4" x="0" y="288.4" textLength="1464" clip-path="url(#terminal-3402563700-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3402563700-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-11)">
+</text><text class="terminal-3402563700-r4" x="0" y="312.8" textLength="24.4" clip-path="url(#terminal-3402563700-line-12)">╭─</text><text class="terminal-3402563700-r4" x="24.4" y="312.8" textLength="1415.2" clip-path="url(#terminal-3402563700-line-12)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3402563700-r4" x="1439.6" y="312.8" textLength="24.4" clip-path="url(#terminal-340 [...]
+</text><text class="terminal-3402563700-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-13)">│</text><text class="terminal-3402563700-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3402563700-line-13)">-</text><text class="terminal-3402563700-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-3402563700-line-13)">-airflow</text><text class="terminal-3402563700-r5" x="134.2" y="337.2" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-3402563700-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3402563700-line-14)">│</text><text class="terminal-3402563700-r2" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-3402563700-line-14)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-3402563700-r4" x="1451.8" y="361.6" textLength="12.2" clip-path=" [...]
+</text><text class="terminal-3402563700-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3402563700-line-15)">│</text><text class="terminal-3402563700-r7" x="475.8" y="386" textLength="963.8" clip-path="url(#terminal-3402563700-line-15)">(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-3402563700-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-16)">│</text><text class="terminal-3402563700-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3402563700-line-16)">-</text><text class="terminal-3402563700-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-3402563700-line-16)">-help</text><text class="terminal-3402563700-r6" x="427" y="410.4" textLength="24.4" clip-path="url(#terminal-3402 [...]
+</text><text class="terminal-3402563700-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3402563700-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3402563700-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3402563700-line-17)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-fix-ownership.svg b/images/breeze/output-fix-ownership.svg
index a35f337ea3..d8fe2ea84f 100644
--- a/images/breeze/output-fix-ownership.svg
+++ b/images/breeze/output-fix-ownership.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 382.40000000000003" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 318.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,46 +19,86 @@
         font-weight: 700;
     }
 
-    .terminal-1748745364-matrix {
+    .terminal-2814491796-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1748745364-title {
+    .terminal-2814491796-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1748745364-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1748745364-r2 { fill: #c5c8c6 }
-.terminal-1748745364-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1748745364-r4 { fill: #868887 }
-.terminal-1748745364-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1748745364-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1748745364-r7 { fill: #8d7b39 }
+    .terminal-2814491796-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2814491796-r2 { fill: #c5c8c6 }
+.terminal-2814491796-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2814491796-r4 { fill: #868887 }
+.terminal-2814491796-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2814491796-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2814491796-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="342.4" rx="12"/><text class="terminal-1748745364-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: fix-ownership</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2814491796-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="267.4" />
+    </clipPath>
+    <clipPath id="terminal-2814491796-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2814491796-line-9">
+    <rect x="0" y="221.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="316.4" rx="8"/><text class="terminal-2814491796-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;fix-ownership</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2814491796-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1748745364-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1748745364-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1748745364-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1748745364-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1748745364-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;fix-ownership&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-1748745364-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-1748745364-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1748745364-r2" x="12.4" y="99.2" textLength="1463.2">Fix&#160;ownership&#160;of&#160;source&#160;files&#160;to&#160;be&#160;same&#160;as&#160;host&#160;user.&#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 [...]
-</tspan><tspan class="terminal-1748745364-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1748745364-r4" x="0" y="152" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1748745364-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-1748745364-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-1748745364-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1748745364-r5" x="37.2" y="178.4" textLength="235.6">--github-repository</tspan><tspan class="terminal-1748745364-r2" x="272.8" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1748745364-r6" x="297.6" y="178.4" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-1748745364-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-1748745364-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1748745364-r5" x="37.2" y="204.8" textLength="111.6">--verbose</tspan><tspan class="terminal-1748745364-r2" x="148.8" y="204.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1748745364-r6" x="297.6" y="204.8"  [...]
-</tspan><tspan class="terminal-1748745364-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-1748745364-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1748745364-r5" x="37.2" y="231.2" textLength="111.6">--dry-run</tspan><tspan class="terminal-1748745364-r2" x="148.8" y="231.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1748745364-r6" x="297.6" y="231.2"  [...]
-</tspan><tspan class="terminal-1748745364-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-1748745364-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1748745364-r5" x="37.2" y="257.6" textLength="74.4">--help</tspan><tspan class="terminal-1748745364-r2" x="111.6" y="257.6" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1748745364-r6" x="297.6 [...]
-</tspan><tspan class="terminal-1748745364-r4" x="0" y="284" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1748745364-r2" x="1488" y="284" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2814491796-matrix">
+    <text class="terminal-2814491796-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2814491796-line-0)">
+</text><text class="terminal-2814491796-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2814491796-line-1)">Usage:&#160;</text><text class="terminal-2814491796-r1" x="97.6" y="44.4" textLength="366" clip-path="url(#terminal-2814491796-line-1)">breeze&#160;fix-ownership&#160;[OPTIONS]</text><text class="terminal-2814491796-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2814491796-line-1)">
+</text><text class="terminal-2814491796-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2814491796-line-2)">
+</text><text class="terminal-2814491796-r2" x="12.2" y="93.2" textLength="658.8" clip-path="url(#terminal-2814491796-line-3)">Fix&#160;ownership&#160;of&#160;source&#160;files&#160;to&#160;be&#160;same&#160;as&#160;host&#160;user.</text><text class="terminal-2814491796-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2814491796-line-3)">
+</text><text class="terminal-2814491796-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2814491796-line-4)">
+</text><text class="terminal-2814491796-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2814491796-line-5)">╭─</text><text class="terminal-2814491796-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2814491796-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2814491796-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2814491796- [...]
+</text><text class="terminal-2814491796-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2814491796-line-6)">│</text><text class="terminal-2814491796-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2814491796-line-6)">-</text><text class="terminal-2814491796-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2814491796-line-6)">-github</text><text class="terminal-2814491796-r5" x="122" y="166.4" textLength="134.2" clip-path="url(#terminal-28 [...]
+</text><text class="terminal-2814491796-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2814491796-line-7)">│</text><text class="terminal-2814491796-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2814491796-line-7)">-</text><text class="terminal-2814491796-r5" x="36.6" y="190.8" textLength="97.6" clip-path="url(#terminal-2814491796-line-7)">-verbose</text><text class="terminal-2814491796-r6" x="280.6" y="190.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2814491796-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2814491796-line-8)">│</text><text class="terminal-2814491796-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2814491796-line-8)">-</text><text class="terminal-2814491796-r5" x="36.6" y="215.2" textLength="48.8" clip-path="url(#terminal-2814491796-line-8)">-dry</text><text class="terminal-2814491796-r5" x="85.4" y="215.2" textLength="48.8" clip-path="url(#terminal-28144 [...]
+</text><text class="terminal-2814491796-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2814491796-line-9)">│</text><text class="terminal-2814491796-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2814491796-line-9)">-</text><text class="terminal-2814491796-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-2814491796-line-9)">-help</text><text class="terminal-2814491796-r6" x="280.6" y="239.6" textLength="24.4" clip-path="url(#terminal-28144 [...]
+</text><text class="terminal-2814491796-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-2814491796-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2814491796-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-2814491796-line-10)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-free-space.svg b/images/breeze/output-free-space.svg
index d0dd2934fe..e0e4296201 100644
--- a/images/breeze/output-free-space.svg
+++ b/images/breeze/output-free-space.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 382.40000000000003" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 318.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,46 +19,86 @@
         font-weight: 700;
     }
 
-    .terminal-1041213903-matrix {
+    .terminal-1942333903-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1041213903-title {
+    .terminal-1942333903-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1041213903-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1041213903-r2 { fill: #c5c8c6 }
-.terminal-1041213903-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1041213903-r4 { fill: #868887 }
-.terminal-1041213903-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1041213903-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1041213903-r7 { fill: #8d7b39 }
+    .terminal-1942333903-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1942333903-r2 { fill: #c5c8c6 }
+.terminal-1942333903-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1942333903-r4 { fill: #868887 }
+.terminal-1942333903-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1942333903-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1942333903-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="342.4" rx="12"/><text class="terminal-1041213903-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: free-space</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-1942333903-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="267.4" />
+    </clipPath>
+    <clipPath id="terminal-1942333903-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1942333903-line-9">
+    <rect x="0" y="221.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="316.4" rx="8"/><text class="terminal-1942333903-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;free-space</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1942333903-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1041213903-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1041213903-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1041213903-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1041213903-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1041213903-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;free-space&#160;[OPTIONS]&#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; [...]
-</tspan><tspan class="terminal-1041213903-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-1041213903-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1041213903-r2" x="12.4" y="99.2" textLength="1463.2">Free&#160;space&#160;for&#160;jobs&#160;run&#160;in&#160;CI.&#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;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-1041213903-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1041213903-r4" x="0" y="152" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1041213903-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-1041213903-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-1041213903-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1041213903-r5" x="37.2" y="178.4" textLength="111.6">--verbose</tspan><tspan class="terminal-1041213903-r2" x="148.8" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1041213903-r6" x="173.6" y="178.4" textLength="24.8">-v</tspan><tspan class="terminal-1041213903 [...]
-</tspan><tspan class="terminal-1041213903-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-1041213903-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1041213903-r5" x="37.2" y="204.8" textLength="111.6">--dry-run</tspan><tspan class="terminal-1041213903-r2" x="148.8" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1041213903-r6" x="173.6" y="204.8" textLength="24.8">-D</tspan><tspan class="terminal-1041213903 [...]
-</tspan><tspan class="terminal-1041213903-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-1041213903-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1041213903-r5" x="37.2" y="231.2" textLength="99.2">--answer</tspan><tspan class="terminal-1041213903-r2" x="136.4" y="231.2" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-1041213903-r6" x="173.6" y="231.2" textLength="24.8">-a</tspan><tspan class="terminal-104121 [...]
-</tspan><tspan class="terminal-1041213903-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-1041213903-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1041213903-r5" x="37.2" y="257.6" textLength="74.4">--help</tspan><tspan class="terminal-1041213903-r2" x="111.6" y="257.6" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1041213903-r6" x="173.6" y="257.6" textLength="24.8">-h</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-1041213903-r4" x="0" y="284" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1041213903-r2" x="1488" y="284" textLength="12.4">
-</tspan></text>
+    <g class="terminal-1942333903-matrix">
+    <text class="terminal-1942333903-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1942333903-line-0)">
+</text><text class="terminal-1942333903-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1942333903-line-1)">Usage:&#160;</text><text class="terminal-1942333903-r1" x="97.6" y="44.4" textLength="329.4" clip-path="url(#terminal-1942333903-line-1)">breeze&#160;free-space&#160;[OPTIONS]</text><text class="terminal-1942333903-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1942333903-line-1)">
+</text><text class="terminal-1942333903-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1942333903-line-2)">
+</text><text class="terminal-1942333903-r2" x="12.2" y="93.2" textLength="366" clip-path="url(#terminal-1942333903-line-3)">Free&#160;space&#160;for&#160;jobs&#160;run&#160;in&#160;CI.</text><text class="terminal-1942333903-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1942333903-line-3)">
+</text><text class="terminal-1942333903-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1942333903-line-4)">
+</text><text class="terminal-1942333903-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1942333903-line-5)">╭─</text><text class="terminal-1942333903-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1942333903-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1942333903-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1942333903- [...]
+</text><text class="terminal-1942333903-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1942333903-line-6)">│</text><text class="terminal-1942333903-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1942333903-line-6)">-</text><text class="terminal-1942333903-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-1942333903-line-6)">-verbose</text><text class="terminal-1942333903-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1942333903-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1942333903-line-7)">│</text><text class="terminal-1942333903-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1942333903-line-7)">-</text><text class="terminal-1942333903-r5" x="36.6" y="190.8" textLength="48.8" clip-path="url(#terminal-1942333903-line-7)">-dry</text><text class="terminal-1942333903-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-19423 [...]
+</text><text class="terminal-1942333903-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1942333903-line-8)">│</text><text class="terminal-1942333903-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1942333903-line-8)">-</text><text class="terminal-1942333903-r5" x="36.6" y="215.2" textLength="85.4" clip-path="url(#terminal-1942333903-line-8)">-answer</text><text class="terminal-1942333903-r6" x="158.6" y="215.2" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1942333903-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1942333903-line-9)">│</text><text class="terminal-1942333903-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1942333903-line-9)">-</text><text class="terminal-1942333903-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-1942333903-line-9)">-help</text><text class="terminal-1942333903-r6" x="158.6" y="239.6" textLength="24.4" clip-path="url(#terminal-19423 [...]
+</text><text class="terminal-1942333903-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-1942333903-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1942333903-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-1942333903-line-10)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-generate-constraints.svg b/images/breeze/output-generate-constraints.svg
index ac2afa05a1..ca04956607 100644
--- a/images/breeze/output-generate-constraints.svg
+++ b/images/breeze/output-generate-constraints.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 857.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 757.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,64 +19,158 @@
         font-weight: 700;
     }
 
-    .terminal-2001992685-matrix {
+    .terminal-2130901997-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2001992685-title {
+    .terminal-2130901997-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2001992685-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2001992685-r2 { fill: #c5c8c6 }
-.terminal-2001992685-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2001992685-r4 { fill: #868887 }
-.terminal-2001992685-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2001992685-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2001992685-r7 { fill: #8d7b39 }
+    .terminal-2130901997-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2130901997-r2 { fill: #c5c8c6 }
+.terminal-2130901997-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2130901997-r4 { fill: #868887 }
+.terminal-2130901997-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2130901997-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2130901997-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="817.6" rx="12"/><text class="terminal-2001992685-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: generate-constraints</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2130901997-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="706.5999999999999" />
+    </clipPath>
+    <clipPath id="terminal-2130901997-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2130901997-line-27">
+    <rect x="0" y="660.3" 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="755.6" rx="8"/><text class="terminal-2130901997-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;generate-constraints</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2130901997-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2001992685-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2001992685-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2001992685-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2001992685-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2001992685-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;generate-constraints&#160;[OPTIONS]&#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;&# [...]
-</tspan><tspan class="terminal-2001992685-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2001992685-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="99.2" textLength="1463.2">Generates&#160;pinned&#160;constraint&#160;files&#160;with&#160;all&#160;extras&#160;from&#160;setup.py&#160;in&#160;parallel.&#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 [...]
-</tspan><tspan class="terminal-2001992685-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="152" textLength="1488">╭─&#160;Generate&#160;constraints&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2001992685-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="178.4" textLength="136.4">--image-tag</tspan><tspan class="terminal-2001992685-r2" x="173.6" y="178.4" textLength="210.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-200 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="204.8" textLength="99.2">--python</tspan><tspan class="terminal-2001992685-r2" x="136.4" y="204.8" textLength="248">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class=" [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="231.2" textLength="421.6">&#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;</tspan><tspan class="terminal-2001992685-r7" x="434" y="231.2" textLength="744">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="257.6" textLength="421.6">&#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;</tspan><tspan class="terminal-2001992685-r4" x="434" y="257.6" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="284" textLength="322.4">--airflow-constraints-mode</tspan><tspan class="terminal-2001992685-r2" x="359.6" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r2" x="384.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="te [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="310.4" textLength="421.6">&#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;</tspan><tspan class="terminal-2001992685-r7" x="434" y="310.4" textLength="880.4">(constraints-source-providers&#160;|&#16 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="336.8" textLength="421.6">&#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;</tspan><tspan class="terminal-2001992685-r4" x="434" y="336.8" textLength="880.4">[default:&#160;constraints-source-provid [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="363.2" textLength="86.8">--debug</tspan><tspan class="terminal-2001992685-r2" x="124" y="363.2" textLength="260.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan cl [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="389.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2001992685-r2" x="1488" y="389.6" textLength="12.4">
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="416" textLength="1488">╭─&#160;Parallel&#160;running&#160;───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2001992685-r2" x="1488" y="416" textLength="12.4">
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="442.4" textLength="210.8">--run-in-parallel</tspan><tspan class="terminal-2001992685-r2" x="248" y="442.4" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r2" x="297.6" y="442.4" textLength="1153.2">Run&#160;the&#160;opera [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="468.8" textLength="161.2">--parallelism</tspan><tspan class="terminal-2001992685-r2" x="198.4" y="468.8" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r2" x="297.6" y="468.8" textLength="930">Maxi [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="495.2" textLength="285.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r4" x="297.6" y="495.2" textLength="930">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="521.6" textLength="210.8">--python-versions</tspan><tspan class="terminal-2001992685-r2" x="248" y="521.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r2" x="297.6" y="521.6" textLength="967.2">Space&#160;separated&#16 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="548" textLength="285.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r4" x="297.6" y="548" textLength="967.2">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="574.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2001992685-r2" x="1488" y="574.4" textLength="12.4">
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="600.8" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2001992685-r2" x="1488" y="600.8" textLength="12.4">
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="627.2" textLength="111.6">--verbose</tspan><tspan class="terminal-2001992685-r2" x="148.8" y="627.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r6" x="297.6" y="627.2"  [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="653.6" textLength="111.6">--dry-run</tspan><tspan class="terminal-2001992685-r2" x="148.8" y="653.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r6" x="297.6" y="653.6"  [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="680" textLength="235.6">--github-repository</tspan><tspan class="terminal-2001992685-r2" x="272.8" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r6" x="297.6" y="680" textLength="24.8">-g</tspan><tspan class="terminal-2001992685 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="706.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="706.4" textLength="99.2">--answer</tspan><tspan class="terminal-2001992685-r2" x="136.4" y="706.4" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r6" x="297.6" y="706 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-2001992685-r2" x="12.4" y="732.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2001992685-r5" x="37.2" y="732.8" textLength="74.4">--help</tspan><tspan class="terminal-2001992685-r2" x="111.6" y="732.8" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2001992685-r6" x="297.6 [...]
-</tspan><tspan class="terminal-2001992685-r4" x="0" y="759.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2001992685-r2" x="1488" y="759.2" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2130901997-matrix">
+    <text class="terminal-2130901997-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2130901997-line-0)">
+</text><text class="terminal-2130901997-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2130901997-line-1)">Usage:&#160;</text><text class="terminal-2130901997-r1" x="97.6" y="44.4" textLength="451.4" clip-path="url(#terminal-2130901997-line-1)">breeze&#160;generate-constraints&#160;[OPTIONS]</text><text class="terminal-2130901997-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-1)">
+</text><text class="terminal-2130901997-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-2)">
+</text><text class="terminal-2130901997-r2" x="12.2" y="93.2" textLength="927.2" clip-path="url(#terminal-2130901997-line-3)">Generates&#160;pinned&#160;constraint&#160;files&#160;with&#160;all&#160;extras&#160;from&#160;setup.py&#160;in&#160;parallel.</text><text class="terminal-2130901997-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-3)">
+</text><text class="terminal-2130901997-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-4)">
+</text><text class="terminal-2130901997-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2130901997-line-5)">╭─</text><text class="terminal-2130901997-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2130901997-line-5)">&#160;Generate&#160;constraints&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2130901997-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-6)">│</text><text class="terminal-2130901997-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-6)">-</text><text class="terminal-2130901997-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2130901997-line-6)">-image</text><text class="terminal-2130901997-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-7)">│</text><text class="terminal-2130901997-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-7)">-</text><text class="terminal-2130901997-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-2130901997-line-7)">-python</text><text class="terminal-2130901997-r6" x="366" y="190.8" textLength="24.4" clip-path="url(#terminal-213 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-8)">│</text><text class="terminal-2130901997-r7" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-2130901997-line-8)">(&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-2130901997-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-9)">│</text><text class="terminal-2130901997-r4" x="414.8" y="239.6" textLength="732" clip-path="url(#terminal-2130901997-line-9)">[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-2130901997-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2130901997-line-10)">│</text><text class="terminal-2130901997-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2130901997-line-10)">-</text><text class="terminal-2130901997-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-2130901997-line-10)">-airflow</text><text class="terminal-2130901997-r5" x="134.2" y="264" textLength="207.4" clip-path="url(#terminal-2130 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-11)">│</text><text class="terminal-2130901997-r7" x="414.8" y="288.4" textLength="866.2" clip-path="url(#terminal-2130901997-line-11)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-2130901997-r4" x="1451.8" y="288.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-11)">│</text><text clas [...]
+</text><text class="terminal-2130901997-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-12)">│</text><text class="terminal-2130901997-r4" x="414.8" y="312.8" textLength="866.2" clip-path="url(#terminal-2130901997-line-12)">[default:&#160;constraints-source-providers]&#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-2130901997-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-13)">│</text><text class="terminal-2130901997-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-13)">-</text><text class="terminal-2130901997-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-2130901997-line-13)">-debug</text><text class="terminal-2130901997-r2" x="414.8" y="337.2" textLength="878.4" clip-path="url(#termina [...]
+</text><text class="terminal-2130901997-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-2130901997-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2130901997-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-14)">
+</text><text class="terminal-2130901997-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-2130901997-line-15)">╭─</text><text class="terminal-2130901997-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-2130901997-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2130901997-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-2130 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-16)">│</text><text class="terminal-2130901997-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-16)">-</text><text class="terminal-2130901997-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-2130901997-line-16)">-run</text><text class="terminal-2130901997-r5" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-17)">│</text><text class="terminal-2130901997-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-17)">-</text><text class="terminal-2130901997-r5" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-2130901997-line-17)">-parallelism</text><text class="terminal-2130901997-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-2130901997-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-18)">│</text><text class="terminal-2130901997-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-2130901997-line-18)">[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-2130901997-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-19)">│</text><text class="terminal-2130901997-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-19)">-</text><text class="terminal-2130901997-r5" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-2130901997-line-19)">-python</text><text class="terminal-2130901997-r5" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2130901997-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2130901997-line-20)">│</text><text class="terminal-2130901997-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-2130901997-line-20)">[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;&#1 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-2130901997-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2130901997-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-21)">
+</text><text class="terminal-2130901997-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-2130901997-line-22)">╭─</text><text class="terminal-2130901997-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-2130901997-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2130901997-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-213 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-23)">│</text><text class="terminal-2130901997-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-23)">-</text><text class="terminal-2130901997-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-2130901997-line-23)">-verbose</text><text class="terminal-2130901997-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2130901997-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-24)">│</text><text class="terminal-2130901997-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2130901997-line-24)">-</text><text class="terminal-2130901997-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-2130901997-line-24)">-dry</text><text class="terminal-2130901997-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2130901997-line-25)">│</text><text class="terminal-2130901997-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-2130901997-line-25)">-</text><text class="terminal-2130901997-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-2130901997-line-25)">-github</text><text class="terminal-2130901997-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-2130901 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-26)">│</text><text class="terminal-2130901997-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2130901997-line-26)">-</text><text class="terminal-2130901997-r5" x="36.6" y="654.4" textLength="85.4" clip-path="url(#terminal-2130901997-line-26)">-answer</text><text class="terminal-2130901997-r6" x="280.6" y="654.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2130901997-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-27)">│</text><text class="terminal-2130901997-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2130901997-line-27)">-</text><text class="terminal-2130901997-r5" x="36.6" y="678.8" textLength="61" clip-path="url(#terminal-2130901997-line-27)">-help</text><text class="terminal-2130901997-r6" x="280.6" y="678.8" textLength="24.4" clip-path="url(#terminal-21 [...]
+</text><text class="terminal-2130901997-r4" x="0" y="703.2" textLength="1464" clip-path="url(#terminal-2130901997-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2130901997-r2" x="1464" y="703.2" textLength="12.2" clip-path="url(#terminal-2130901997-line-28)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-prepare-airflow-package.svg b/images/breeze/output-prepare-airflow-package.svg
index 2a3c147b51..996151f94c 100644
--- a/images/breeze/output-prepare-airflow-package.svg
+++ b/images/breeze/output-prepare-airflow-package.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 514.4000000000001" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 440.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,51 +19,106 @@
         font-weight: 700;
     }
 
-    .terminal-747892512-matrix {
+    .terminal-2766663456-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-747892512-title {
+    .terminal-2766663456-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-747892512-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-747892512-r2 { fill: #c5c8c6 }
-.terminal-747892512-r3 { fill: #d0b344;font-weight: bold }
-.terminal-747892512-r4 { fill: #868887 }
-.terminal-747892512-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-747892512-r6 { fill: #8d7b39 }
-.terminal-747892512-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-2766663456-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2766663456-r2 { fill: #c5c8c6 }
+.terminal-2766663456-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2766663456-r4 { fill: #868887 }
+.terminal-2766663456-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2766663456-r6 { fill: #8d7b39 }
+.terminal-2766663456-r7 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="474.4" rx="12"/><text class="terminal-747892512-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: prepare-airflow-package</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2766663456-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="389.4" />
+    </clipPath>
+    <clipPath id="terminal-2766663456-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2766663456-line-14">
+    <rect x="0" y="343.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="438.4" rx="8"/><text class="terminal-2766663456-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prepare-airflow-package</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2766663456-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-747892512-matrix" font-variant="east-asian-width-values"><tspan class="terminal-747892512-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-747892512-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-747892512-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-747892512-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;prepare-airflow-package&#160;[OPTIONS]&#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;&# [...]
-</tspan><tspan class="terminal-747892512-r1" x="0" y="72.8" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-747892512-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-747892512-r2" x="12.4" y="99.2" textLength="1463.2">Prepare&#160;sdist/whl&#160;package&#160;of&#160;Airflow.&#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;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-747892512-r2" x="0" y="125.6" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="152" textLength="1488">╭─&#160;Package&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-747892512-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-747892512-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-747892512-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r5" x="37.2" y="178.4" textLength="198.4">--package-format</tspan><tspan class="terminal-747892512-r2" x="235.6" y="178.4" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-747892512-r2" x="396.8" y= [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-747892512-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r5" x="37.2" y="204.8" textLength="310">--version-suffix-for-pypi</tspan><tspan class="terminal-747892512-r2" x="347.2" y="204.8" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-747892512-r2" x="396.8" y="204.8" textLength="781.2">Version&#160;suffix&# [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="231.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-747892512-r2" x="1488" y="231.2" textLength="12.4">
-</tspan><tspan class="terminal-747892512-r4" x="0" y="257.6" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-747892512-r2" x="1488" y="257.6" textLength="12.4">
-</tspan><tspan class="terminal-747892512-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-747892512-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r5" x="37.2" y="284" textLength="111.6">--verbose</tspan><tspan class="terminal-747892512-r2" x="148.8" y="284" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-747892512-r7" x="297.6" y="284" textLength="24. [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-747892512-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r5" x="37.2" y="310.4" textLength="111.6">--dry-run</tspan><tspan class="terminal-747892512-r2" x="148.8" y="310.4" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-747892512-r7" x="297.6" y="310.4" textL [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-747892512-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r5" x="37.2" y="336.8" textLength="235.6">--github-repository</tspan><tspan class="terminal-747892512-r2" x="272.8" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r7" x="297.6" y="336.8" textLength="24.8">-g</tspan><tspan class="terminal-74789 [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-747892512-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r5" x="37.2" y="363.2" textLength="86.8">--debug</tspan><tspan class="terminal-747892512-r2" x="124" y="363.2" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-747892512-r2" x="297.6" y="363.2 [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-747892512-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-747892512-r5" x="37.2" y="389.6" textLength="74.4">--help</tspan><tspan class="terminal-747892512-r2" x="111.6" y="389.6" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-747892512-r7" x="297.6" y=" [...]
-</tspan><tspan class="terminal-747892512-r4" x="0" y="416" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-747892512-r2" x="1488" y="416" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2766663456-matrix">
+    <text class="terminal-2766663456-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2766663456-line-0)">
+</text><text class="terminal-2766663456-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2766663456-line-1)">Usage:&#160;</text><text class="terminal-2766663456-r1" x="97.6" y="44.4" textLength="488" clip-path="url(#terminal-2766663456-line-1)">breeze&#160;prepare-airflow-package&#160;[OPTIONS]</text><text class="terminal-2766663456-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-1)">
+</text><text class="terminal-2766663456-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-2)">
+</text><text class="terminal-2766663456-r2" x="12.2" y="93.2" textLength="451.4" clip-path="url(#terminal-2766663456-line-3)">Prepare&#160;sdist/whl&#160;package&#160;of&#160;Airflow.</text><text class="terminal-2766663456-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-3)">
+</text><text class="terminal-2766663456-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2766663456-line-4)">
+</text><text class="terminal-2766663456-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2766663456-line-5)">╭─</text><text class="terminal-2766663456-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2766663456-line-5)">&#160;Package&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2766663456-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-276666 [...]
+</text><text class="terminal-2766663456-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-6)">│</text><text class="terminal-2766663456-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-6)">-</text><text class="terminal-2766663456-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2766663456-line-6)">-package</text><text class="terminal-2766663456-r5" x="134.2" y="166.4" textLength="85.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2766663456-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-7)">│</text><text class="terminal-2766663456-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-7)">-</text><text class="terminal-2766663456-r5" x="36.6" y="190.8" textLength="97.6" clip-path="url(#terminal-2766663456-line-7)">-version</text><text class="terminal-2766663456-r5" x="134.2" y="190.8" textLength="195.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2766663456-r4" x="0" y="215.2" textLength="1464" clip-path="url(#terminal-2766663456-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2766663456-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-8)">
+</text><text class="terminal-2766663456-r4" x="0" y="239.6" textLength="24.4" clip-path="url(#terminal-2766663456-line-9)">╭─</text><text class="terminal-2766663456-r4" x="24.4" y="239.6" textLength="1415.2" clip-path="url(#terminal-2766663456-line-9)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2766663456-r4" x="1439.6" y="239.6" textLength="24.4" clip-path="url(#terminal-27666 [...]
+</text><text class="terminal-2766663456-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2766663456-line-10)">│</text><text class="terminal-2766663456-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2766663456-line-10)">-</text><text class="terminal-2766663456-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-2766663456-line-10)">-verbose</text><text class="terminal-2766663456-r7" x="280.6" y="264" textLength="24.4" clip-path="url(#terminal-27666 [...]
+</text><text class="terminal-2766663456-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-11)">│</text><text class="terminal-2766663456-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2766663456-line-11)">-</text><text class="terminal-2766663456-r5" x="36.6" y="288.4" textLength="48.8" clip-path="url(#terminal-2766663456-line-11)">-dry</text><text class="terminal-2766663456-r5" x="85.4" y="288.4" textLength="48.8" clip-path="url(#terminal-27 [...]
+</text><text class="terminal-2766663456-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-12)">│</text><text class="terminal-2766663456-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2766663456-line-12)">-</text><text class="terminal-2766663456-r5" x="36.6" y="312.8" textLength="85.4" clip-path="url(#terminal-2766663456-line-12)">-github</text><text class="terminal-2766663456-r5" x="122" y="312.8" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2766663456-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-13)">│</text><text class="terminal-2766663456-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2766663456-line-13)">-</text><text class="terminal-2766663456-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-2766663456-line-13)">-debug</text><text class="terminal-2766663456-r2" x="329.4" y="337.2" textLength="878.4" clip-path="url(#termina [...]
+</text><text class="terminal-2766663456-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2766663456-line-14)">│</text><text class="terminal-2766663456-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2766663456-line-14)">-</text><text class="terminal-2766663456-r5" x="36.6" y="361.6" textLength="61" clip-path="url(#terminal-2766663456-line-14)">-help</text><text class="terminal-2766663456-r7" x="280.6" y="361.6" textLength="24.4" clip-path="url(#terminal-27 [...]
+</text><text class="terminal-2766663456-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-2766663456-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2766663456-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2766663456-line-15)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-prepare-provider-documentation.svg b/images/breeze/output-prepare-provider-documentation.svg
index 2e5369e5ce..49e1dd54b6 100644
--- a/images/breeze/output-prepare-provider-documentation.svg
+++ b/images/breeze/output-prepare-provider-documentation.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 778.4000000000001" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 684.4" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,61 +19,146 @@
         font-weight: 700;
     }
 
-    .terminal-1009257927-matrix {
+    .terminal-2632715719-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1009257927-title {
+    .terminal-2632715719-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1009257927-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1009257927-r2 { fill: #c5c8c6 }
-.terminal-1009257927-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1009257927-r4 { fill: #868887 }
-.terminal-1009257927-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1009257927-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1009257927-r7 { fill: #8d7b39 }
+    .terminal-2632715719-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2632715719-r2 { fill: #c5c8c6 }
+.terminal-2632715719-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2632715719-r4 { fill: #868887 }
+.terminal-2632715719-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2632715719-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2632715719-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="738.4" rx="12"/><text class="terminal-1009257927-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: prepare-provider-documentation</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2632715719-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="633.4" />
+    </clipPath>
+    <clipPath id="terminal-2632715719-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2632715719-line-24">
+    <rect x="0" y="587.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="682.4" rx="8"/><text class="terminal-2632715719-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prepare-provider-documentation</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2632715719-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1009257927-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1009257927-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1009257927-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1009257927-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;prepare-provider-documentation&#160;[OPTIONS]&#160;[airbyte&#160;|&#160;alibaba&#160;|&#160;amazon&#160;|&#160;apache.beam&#160;|&#160;apache.cassandra&#160;|&#160;&#160;</tspan><tspan class="terminal-1009257927-r2" x [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="72.8" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;apache.drill&#160;|&#160;apache.druid&#160;|&#160;apache.hdfs&#160;|&#160;apache.hive&#160;|&#160;apache.kylin&#160;|&#160;&#160;</tspan> [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="99.2" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;apache.livy&#160;|&#160;apache.pig&#160;|&#160;apache.pinot&#160;|&#160;apache.spark&#160;|&#160;apache.sqoop&#160;|&#160;&#160;&#160;</t [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="125.6" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;arangodb&#160;|&#160;asana&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes&#160;|&#160;databricks&#160;|&#160;&#160; [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="152" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;datadog&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;docker&#160;|&#160;elasticsearch&#160;|&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="178.4" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;exasol&#160;|&#160;facebook&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160;grpc&#160;|&#160;hashicorp&#160;|&#160;htt [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="204.8" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;imap&#160;|&#160;influxdb&#160;|&#160;jdbc&#160;|&#160;jenkins&#160;|&#160;jira&#160;|&#160;microsoft.azure&#160;|&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="231.2" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|&#160;microsoft.winrm&#160;|&#160;mongo&#160;|&#160;mysql&#160;|&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="257.6" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;opsgenie&#160;|&#160;oracle&#160;|&#160;pagerduty&#160;|&#160;papermill&#160;|&# [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="284" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#160;qubole&#160;|&#160;redis&#160;|&#160;salesforce&#160;|&#160;samba&#160;|&#160;& [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="310.4" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;segment&#160;|&#160;sendgrid&#160;|&#160;sftp&#160;|&#160;singularity&#160;|&#160;slack&#160;|&#160;snowflake&#160;|&#160;sqlite&#160;|& [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="336.8" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ssh&#160;|&#160;tableau&#160;|&#160;telegram&#160;|&#160;trino&#160;|&#160;vertica&#160;|&#160;yandex&#160;|&#160;zendesk]...&#160;&#160 [...]
-</tspan><tspan class="terminal-1009257927-r1" x="0" y="363.2" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1009257927-r2" x="0" y="389.6" textLength="12.4">&#160;</tspan><tspan class="terminal-1009257927-r2" x="12.4" y="389.6" textLength="1463.2">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;information&#160;for&#160;providers.&#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; [...]
-</tspan><tspan class="terminal-1009257927-r2" x="0" y="416" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="442.4" textLength="1488">╭─&#160;Provider&#160;documentation&#160;preparation&#160;flags&#160;───────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1009257927-r2" x="1488" y="442.4" textLength="12.4">
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-1009257927-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1009257927-r5" x="37.2" y="468.8" textLength="86.8">--debug</tspan><tspan class="terminal-1009257927-r2" x="124" y="468.8" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1009257927-r2" x="173.6" y="468.8" textLength="1277.2">Drop&#160;user&#160;in&#160;shell& [...]
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="495.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1009257927-r2" x="1488" y="495.2" textLength="12.4">
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="521.6" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1009257927-r2" x="1488" y="521.6" textLength="12.4">
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-1009257927-r2" x="12.4" y="548" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1009257927-r5" x="37.2" y="548" textLength="111.6">--verbose</tspan><tspan class="terminal-1009257927-r2" x="148.8" y="548" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1009257927-r6" x="297.6" y="548" textLength [...]
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-1009257927-r2" x="12.4" y="574.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1009257927-r5" x="37.2" y="574.4" textLength="111.6">--dry-run</tspan><tspan class="terminal-1009257927-r2" x="148.8" y="574.4" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1009257927-r6" x="297.6" y="574.4"  [...]
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-1009257927-r2" x="12.4" y="600.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1009257927-r5" x="37.2" y="600.8" textLength="235.6">--github-repository</tspan><tspan class="terminal-1009257927-r2" x="272.8" y="600.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1009257927-r6" x="297.6" y="600.8" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-1009257927-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1009257927-r5" x="37.2" y="627.2" textLength="99.2">--answer</tspan><tspan class="terminal-1009257927-r2" x="136.4" y="627.2" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1009257927-r6" x="297.6" y="627 [...]
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-1009257927-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1009257927-r5" x="37.2" y="653.6" textLength="74.4">--help</tspan><tspan class="terminal-1009257927-r2" x="111.6" y="653.6" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1009257927-r6" x="297.6 [...]
-</tspan><tspan class="terminal-1009257927-r4" x="0" y="680" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1009257927-r2" x="1488" y="680" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2632715719-matrix">
+    <text class="terminal-2632715719-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2632715719-line-0)">
+</text><text class="terminal-2632715719-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2632715719-line-1)">Usage:&#160;</text><text class="terminal-2632715719-r1" x="97.6" y="44.4" textLength="1342" clip-path="url(#terminal-2632715719-line-1)">breeze&#160;prepare-provider-documentation&#160;[OPTIONS]&#160;[airbyte&#160;|&#160;alibaba&#160;|&#160;amazon&#160;|&#160;apache.beam&#160;|&#160;apache.cassandra&#160;|</text><text class="terminal-2632715719-r2" x="1464" y="44.4 [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="68.8" textLength="1427.4" clip-path="url(#terminal-2632715719-line-2)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;apache.drill&#160;|&#160;apache.druid&#160;|&#160;apache.hdfs&#160;|&#160;apache.hive&#160;|&#1 [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="93.2" textLength="1415.2" clip-path="url(#terminal-2632715719-line-3)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;apache.livy&#160;|&#160;apache.pig&#160;|&#160;apache.pinot&#160;|&#160;apache.spark&#160;|&#16 [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="117.6" textLength="1390.8" clip-path="url(#terminal-2632715719-line-4)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;arangodb&#160;|&#160;asana&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="142" textLength="1366.4" clip-path="url(#terminal-2632715719-line-5)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;datadog&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;docker&#160;| [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="166.4" textLength="1390.8" clip-path="url(#terminal-2632715719-line-6)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;exasol&#160;|&#160;facebook&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160; [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="190.8" textLength="1268.8" clip-path="url(#terminal-2632715719-line-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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;imap&#160;|&#160;influxdb&#160;|&#160;jdbc&#160;|&#160;jenkins&#160;|&#160;jira&#160;|&#160;mi [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="215.2" textLength="1378.6" clip-path="url(#terminal-2632715719-line-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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|&#160;microsoft.winrm&#160;|&#160;mongo&#160; [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="239.6" textLength="1390.8" clip-path="url(#terminal-2632715719-line-9)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;opsgenie&#160;|&#160;oracle&#160;|&#16 [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="264" textLength="1354.2" clip-path="url(#terminal-2632715719-line-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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#160;qubole&#160;|&#160;redis&#160;|&#160 [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="288.4" textLength="1403" clip-path="url(#terminal-2632715719-line-11)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;segment&#160;|&#160;sendgrid&#160;|&#160;sftp&#160;|&#160;singularity&#160;|&#160;slack&#160;|& [...]
+</text><text class="terminal-2632715719-r1" x="12.2" y="312.8" textLength="1342" clip-path="url(#terminal-2632715719-line-12)">&#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;&#160;&#160;&#160;&#160;&#160;&#160;ssh&#160;|&#160;tableau&#160;|&#160;telegram&#160;|&#160;trino&#160;|&#160;vertica&#160;|&#160; [...]
+</text><text class="terminal-2632715719-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-13)">
+</text><text class="terminal-2632715719-r2" x="12.2" y="361.6" textLength="780.8" clip-path="url(#terminal-2632715719-line-14)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;information&#160;for&#160;providers.</text><text class="terminal-2632715719-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-2632715719-line-14)">
+</text><text class="terminal-2632715719-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-2632715719-line-15)">
+</text><text class="terminal-2632715719-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-2632715719-line-16)">╭─</text><text class="terminal-2632715719-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-2632715719-line-16)">&#160;Provider&#160;documentation&#160;preparation&#160;flags&#160;──────────────────────────────────────────────────────────────────────────</text><text class="terminal-2632715719-r4" x="1439.6" y="410.4" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-2632715719-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-17)">│</text><text class="terminal-2632715719-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-17)">-</text><text class="terminal-2632715719-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-2632715719-line-17)">-debug</text><text class="terminal-2632715719-r2" x="158.6" y="434.8" textLength="878.4" clip-path="url(#termina [...]
+</text><text class="terminal-2632715719-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-2632715719-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2632715719-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-18)">
+</text><text class="terminal-2632715719-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-2632715719-line-19)">╭─</text><text class="terminal-2632715719-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-2632715719-line-19)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2632715719-r4" x="1439.6" y="483.6" textLength="24.4" clip-path="url(#terminal-263 [...]
+</text><text class="terminal-2632715719-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2632715719-line-20)">│</text><text class="terminal-2632715719-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2632715719-line-20)">-</text><text class="terminal-2632715719-r5" x="36.6" y="508" textLength="97.6" clip-path="url(#terminal-2632715719-line-20)">-verbose</text><text class="terminal-2632715719-r6" x="280.6" y="508" textLength="24.4" clip-path="url(#terminal-26327 [...]
+</text><text class="terminal-2632715719-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2632715719-line-21)">│</text><text class="terminal-2632715719-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2632715719-line-21)">-</text><text class="terminal-2632715719-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-2632715719-line-21)">-dry</text><text class="terminal-2632715719-r5" x="85.4" y="532.4" textLength="48.8" clip-path="url(#terminal-26 [...]
+</text><text class="terminal-2632715719-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-22)">│</text><text class="terminal-2632715719-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2632715719-line-22)">-</text><text class="terminal-2632715719-r5" x="36.6" y="556.8" textLength="85.4" clip-path="url(#terminal-2632715719-line-22)">-github</text><text class="terminal-2632715719-r5" x="122" y="556.8" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2632715719-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-23)">│</text><text class="terminal-2632715719-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2632715719-line-23)">-</text><text class="terminal-2632715719-r5" x="36.6" y="581.2" textLength="85.4" clip-path="url(#terminal-2632715719-line-23)">-answer</text><text class="terminal-2632715719-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2632715719-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2632715719-line-24)">│</text><text class="terminal-2632715719-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2632715719-line-24)">-</text><text class="terminal-2632715719-r5" x="36.6" y="605.6" textLength="61" clip-path="url(#terminal-2632715719-line-24)">-help</text><text class="terminal-2632715719-r6" x="280.6" y="605.6" textLength="24.4" clip-path="url(#terminal-26 [...]
+</text><text class="terminal-2632715719-r4" x="0" y="630" textLength="1464" clip-path="url(#terminal-2632715719-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2632715719-r2" x="1464" y="630" textLength="12.2" clip-path="url(#terminal-2632715719-line-25)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-prepare-provider-packages.svg b/images/breeze/output-prepare-provider-packages.svg
index ec2a04598f..1da53c7d56 100644
--- a/images/breeze/output-prepare-provider-packages.svg
+++ b/images/breeze/output-prepare-provider-packages.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 831.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,63 +19,154 @@
         font-weight: 700;
     }
 
-    .terminal-1292600021-matrix {
+    .terminal-3636495061-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1292600021-title {
+    .terminal-3636495061-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1292600021-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1292600021-r2 { fill: #c5c8c6 }
-.terminal-1292600021-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1292600021-r4 { fill: #868887 }
-.terminal-1292600021-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1292600021-r6 { fill: #8d7b39 }
-.terminal-1292600021-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-3636495061-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3636495061-r2 { fill: #c5c8c6 }
+.terminal-3636495061-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3636495061-r4 { fill: #868887 }
+.terminal-3636495061-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3636495061-r6 { fill: #8d7b39 }
+.terminal-3636495061-r7 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="791.2" rx="12"/><text class="terminal-1292600021-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: prepare-provider-packages</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-3636495061-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
+    </clipPath>
+    <clipPath id="terminal-3636495061-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3636495061-line-26">
+    <rect x="0" y="635.9" 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="731.2" rx="8"/><text class="terminal-3636495061-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;prepare-provider-packages</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3636495061-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1292600021-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1292600021-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1292600021-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1292600021-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;prepare-provider-packages&#160;[OPTIONS]&#160;[airbyte&#160;|&#160;alibaba&#160;|&#160;amazon&#160;|&#160;apache.beam&#160;|&#160;apache.cassandra&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class=" [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="72.8" textLength="1488">&#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;&#160;&#160;apache.drill&#160;|&#160;apache.druid&#160;|&#160;apache.hdfs&#160;|&#160;apache.hive&#160;|&#160;apache.kylin&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan> [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="99.2" textLength="1488">&#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;&#160;&#160;apache.livy&#160;|&#160;apache.pig&#160;|&#160;apache.pinot&#160;|&#160;apache.spark&#160;|&#160;apache.sqoop&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</t [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="125.6" textLength="1488">&#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;&#160;&#160;arangodb&#160;|&#160;asana&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes&#160;|&#160;databricks&#160;|&#160;datadog&#160;&#160;</tspan><tspan cl [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="152" textLength="1488">&#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;&#160;&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;docker&#160;|&#160;elasticsearch&#160;|&#160;exasol&#160;|&#160;facebook&#160;&#160;</tspan><tspan [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="178.4" textLength="1488">&#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;&#160;&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160;grpc&#160;|&#160;hashicorp&#160;|&#160;http&#160;|&#160;imap&#160;|&#160;influxdb&#160;|&#160;jdbc&#160;| [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="204.8" textLength="1488">&#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;&#160;&#160;jenkins&#160;|&#160;jira&#160;|&#160;microsoft.azure&#160;|&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="231.2" textLength="1488">&#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;&#160;&#160;microsoft.winrm&#160;|&#160;mongo&#160;|&#160;mysql&#160;|&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;opsgenie&#160;|&#160;oracle&#160;&#160;</tspan [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="257.6" textLength="1488">&#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;&#160;&#160;|&#160;pagerduty&#160;|&#160;papermill&#160;|&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#160;qubole&#160;|&#160;redis&#160;|&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="284" textLength="1488">&#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;&#160;&#160;salesforce&#160;|&#160;samba&#160;|&#160;segment&#160;|&#160;sendgrid&#160;|&#160;sftp&#160;|&#160;singularity&#160;|&#160;slack&#160;|&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="310.4" textLength="1488">&#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;&#160;&#160;snowflake&#160;|&#160;sqlite&#160;|&#160;ssh&#160;|&#160;tableau&#160;|&#160;telegram&#160;|&#160;trino&#160;|&#160;vertica&#160;|&#160;yandex&#160;|&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="336.8" textLength="1488">&#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;&#160;&#160;zendesk]...&#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 [...]
-</tspan><tspan class="terminal-1292600021-r1" x="0" y="363.2" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1292600021-r2" x="0" y="389.6" textLength="12.4">&#160;</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="389.6" textLength="1463.2">Prepare&#160;sdist/whl&#160;packages&#160;of&#160;Airflow&#160;Providers.&#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;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-1292600021-r2" x="0" y="416" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="442.4" textLength="1488">╭─&#160;Package&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1292600021-r2" x="1488" y="442.4" textLength="12.4">
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="468.8" textLength="198.4">--package-format</tspan><tspan class="terminal-1292600021-r2" x="235.6" y="468.8" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1292600021-r2" x="396. [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="495.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="495.2" textLength="310">--version-suffix-for-pypi</tspan><tspan class="terminal-1292600021-r2" x="347.2" y="495.2" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1292600021-r2" x="396.8" y="495.2" textLength="781.2">Version&#160;suf [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="521.6" textLength="235.6">--package-list-file</tspan><tspan class="terminal-1292600021-r2" x="272.8" y="521.6" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1292600021-r2" x="396.8" y="521.6" text [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="548" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="548" textLength="86.8">--debug</tspan><tspan class="terminal-1292600021-r2" x="124" y="548" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan clas [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="574.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1292600021-r2" x="1488" y="574.4" textLength="12.4">
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="600.8" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1292600021-r2" x="1488" y="600.8" textLength="12.4">
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="627.2" textLength="111.6">--verbose</tspan><tspan class="terminal-1292600021-r2" x="148.8" y="627.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1292600021-r7" x="297.6" y="627.2"  [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="653.6" textLength="111.6">--dry-run</tspan><tspan class="terminal-1292600021-r2" x="148.8" y="653.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1292600021-r7" x="297.6" y="653.6"  [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="680" textLength="235.6">--github-repository</tspan><tspan class="terminal-1292600021-r2" x="272.8" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r7" x="297.6" y="680" textLength="24.8">-g</tspan><tspan class="terminal-1292600021 [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-1292600021-r2" x="12.4" y="706.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1292600021-r5" x="37.2" y="706.4" textLength="74.4">--help</tspan><tspan class="terminal-1292600021-r2" x="111.6" y="706.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1292600021-r7" x="297.6 [...]
-</tspan><tspan class="terminal-1292600021-r4" x="0" y="732.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1292600021-r2" x="1488" y="732.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-3636495061-matrix">
+    <text class="terminal-3636495061-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3636495061-line-0)">
+</text><text class="terminal-3636495061-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3636495061-line-1)">Usage:&#160;</text><text class="terminal-3636495061-r1" x="97.6" y="44.4" textLength="1281" clip-path="url(#terminal-3636495061-line-1)">breeze&#160;prepare-provider-packages&#160;[OPTIONS]&#160;[airbyte&#160;|&#160;alibaba&#160;|&#160;amazon&#160;|&#160;apache.beam&#160;|&#160;apache.cassandra&#160;|</text><text class="terminal-3636495061-r2" x="1464" y="44.4" tex [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="68.8" textLength="1366.4" clip-path="url(#terminal-3636495061-line-2)">&#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;&#160;apache.drill&#160;|&#160;apache.druid&#160;|&#160;apache.hdfs&#160;|&#160;apache.hive&#160;|&#160;apache.kylin&#160;|</text>< [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="93.2" textLength="1354.2" clip-path="url(#terminal-3636495061-line-3)">&#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;&#160;apache.livy&#160;|&#160;apache.pig&#160;|&#160;apache.pinot&#160;|&#160;apache.spark&#160;|&#160;apache.sqoop&#160;|</text><t [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="117.6" textLength="1427.4" clip-path="url(#terminal-3636495061-line-4)">&#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;&#160;arangodb&#160;|&#160;asana&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes&#160;|&#160;databricks&#160;| [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="142" textLength="1427.4" clip-path="url(#terminal-3636495061-line-5)">&#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;&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;docker&#160;|&#160;elasticsearch&#160;|&#160;exasol&#160 [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="166.4" textLength="1415.2" clip-path="url(#terminal-3636495061-line-6)">&#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;&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160;grpc&#160;|&#160;hashicorp&#160;|&#160;http&#160;|&#160;imap&#1 [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="190.8" textLength="1329.8" clip-path="url(#terminal-3636495061-line-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;&#160;&#160;&#160;jenkins&#160;|&#160;jira&#160;|&#160;microsoft.azure&#160;|&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|</text><te [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="215.2" textLength="1427.4" clip-path="url(#terminal-3636495061-line-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;&#160;&#160;&#160;&#160;&#160;&#160;microsoft.winrm&#160;|&#160;mongo&#160;|&#160;mysql&#160;|&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;opsg [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="239.6" textLength="1354.2" clip-path="url(#terminal-3636495061-line-9)">&#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;&#160;|&#160;pagerduty&#160;|&#160;papermill&#160;|&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#160;qubole&#160;|& [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="264" textLength="1342" clip-path="url(#terminal-3636495061-line-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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;salesforce&#160;|&#160;samba&#160;|&#160;segment&#160;|&#160;sendgrid&#160;|&#160;sftp&#160;|&#160;singularity&#160;|&#160;slac [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="288.4" textLength="1390.8" clip-path="url(#terminal-3636495061-line-11)">&#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;&#160;snowflake&#160;|&#160;sqlite&#160;|&#160;ssh&#160;|&#160;tableau&#160;|&#160;telegram&#160;|&#160;trino&#160;|&#160;vertica [...]
+</text><text class="terminal-3636495061-r1" x="12.2" y="312.8" textLength="622.2" clip-path="url(#terminal-3636495061-line-12)">&#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;&#160;zendesk]...</text><text class="terminal-3636495061-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-3636495 [...]
+</text><text class="terminal-3636495061-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-13)">
+</text><text class="terminal-3636495061-r2" x="12.2" y="361.6" textLength="585.6" clip-path="url(#terminal-3636495061-line-14)">Prepare&#160;sdist/whl&#160;packages&#160;of&#160;Airflow&#160;Providers.</text><text class="terminal-3636495061-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-14)">
+</text><text class="terminal-3636495061-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-3636495061-line-15)">
+</text><text class="terminal-3636495061-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-3636495061-line-16)">╭─</text><text class="terminal-3636495061-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-3636495061-line-16)">&#160;Package&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3636495061-r4" x="1439.6" y="410.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3636495061-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3636495061-line-17)">│</text><text class="terminal-3636495061-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3636495061-line-17)">-</text><text class="terminal-3636495061-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-3636495061-line-17)">-package</text><text class="terminal-3636495061-r5" x="134.2" y="434.8" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-3636495061-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-18)">│</text><text class="terminal-3636495061-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-18)">-</text><text class="terminal-3636495061-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-3636495061-line-18)">-version</text><text class="terminal-3636495061-r5" x="134.2" y="459.2" textLength="195.2" clip-path="url(#termi [...]
+</text><text class="terminal-3636495061-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-19)">│</text><text class="terminal-3636495061-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-19)">-</text><text class="terminal-3636495061-r5" x="36.6" y="483.6" textLength="97.6" clip-path="url(#terminal-3636495061-line-19)">-package</text><text class="terminal-3636495061-r5" x="134.2" y="483.6" textLength="122" clip-path="url(#termina [...]
+</text><text class="terminal-3636495061-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3636495061-line-20)">│</text><text class="terminal-3636495061-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3636495061-line-20)">-</text><text class="terminal-3636495061-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-3636495061-line-20)">-debug</text><text class="terminal-3636495061-r2" x="378.2" y="508" textLength="878.4" clip-path="url(#terminal-363649 [...]
+</text><text class="terminal-3636495061-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-3636495061-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3636495061-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-3636495061-line-21)">
+</text><text class="terminal-3636495061-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-3636495061-line-22)">╭─</text><text class="terminal-3636495061-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-3636495061-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3636495061-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-363 [...]
+</text><text class="terminal-3636495061-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-23)">│</text><text class="terminal-3636495061-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-3636495061-line-23)">-</text><text class="terminal-3636495061-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-3636495061-line-23)">-verbose</text><text class="terminal-3636495061-r7" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3636495061-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-24)">│</text><text class="terminal-3636495061-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3636495061-line-24)">-</text><text class="terminal-3636495061-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-3636495061-line-24)">-dry</text><text class="terminal-3636495061-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-36 [...]
+</text><text class="terminal-3636495061-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3636495061-line-25)">│</text><text class="terminal-3636495061-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3636495061-line-25)">-</text><text class="terminal-3636495061-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-3636495061-line-25)">-github</text><text class="terminal-3636495061-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-3636495 [...]
+</text><text class="terminal-3636495061-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3636495061-line-26)">│</text><text class="terminal-3636495061-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3636495061-line-26)">-</text><text class="terminal-3636495061-r5" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-3636495061-line-26)">-help</text><text class="terminal-3636495061-r7" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-36 [...]
+</text><text class="terminal-3636495061-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-3636495061-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3636495061-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-3636495061-line-27)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-pull-image.svg b/images/breeze/output-pull-image.svg
index 42cf6b6689..e1cce7beeb 100644
--- a/images/breeze/output-pull-image.svg
+++ b/images/breeze/output-pull-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 831.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,63 +19,154 @@
         font-weight: 700;
     }
 
-    .terminal-2196825906-matrix {
+    .terminal-3638880050-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2196825906-title {
+    .terminal-3638880050-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2196825906-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2196825906-r2 { fill: #c5c8c6 }
-.terminal-2196825906-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2196825906-r4 { fill: #868887 }
-.terminal-2196825906-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2196825906-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2196825906-r7 { fill: #8d7b39 }
+    .terminal-3638880050-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3638880050-r2 { fill: #c5c8c6 }
+.terminal-3638880050-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3638880050-r4 { fill: #868887 }
+.terminal-3638880050-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3638880050-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3638880050-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="791.2" rx="12"/><text class="terminal-2196825906-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: pull-image</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-3638880050-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
+    </clipPath>
+    <clipPath id="terminal-3638880050-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3638880050-line-26">
+    <rect x="0" y="635.9" 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="731.2" rx="8"/><text class="terminal-3638880050-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3638880050-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2196825906-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2196825906-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2196825906-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2196825906-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2196825906-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;pull-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...&#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;&# [...]
-</tspan><tspan class="terminal-2196825906-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2196825906-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="99.2" textLength="1463.2">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.&#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; [...]
-</tspan><tspan class="terminal-2196825906-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="152" textLength="1488">╭─&#160;Pull&#160;image&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2196825906-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="178.4" textLength="136.4">--image-tag</tspan><tspan class="terminal-2196825906-r2" x="173.6" y="178.4" textLength="86.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r6" x="260.4" y="178.4" textLength="24.8">-t</tspan>< [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="204.8" textLength="99.2">--python</tspan><tspan class="terminal-2196825906-r2" x="136.4" y="204.8" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r6" x="260.4" y="204.8" textLength="24.8 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="231.2" textLength="297.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r4" x="310" y="231.2" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="257.6" textLength="173.6">--github-token</tspan><tspan class="terminal-2196825906-r2" x="210.8" y="257.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r2" x="260.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="284" textLength="173.6">--verify-image</tspan><tspan class="terminal-2196825906-r2" x="210.8" y="284" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r2" x="260.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="te [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="310.4" textLength="198.4">--wait-for-image</tspan><tspan class="terminal-2196825906-r2" x="235.6" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r2" x="260.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="te [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="336.8" textLength="186">--tag-as-latest</tspan><tspan class="terminal-2196825906-r2" x="223.2" y="336.8" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r2" x="260.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class= [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="363.2" textLength="607.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</tspan><tspan class="terminal-2196825906-r5" x="620" y="363.2" textLength="136.4">--image-tag</tspan><tspan class="terminal-21968259 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="389.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2196825906-r2" x="1488" y="389.6" textLength="12.4">
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="416" textLength="1488">╭─&#160;Parallel&#160;running&#160;───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2196825906-r2" x="1488" y="416" textLength="12.4">
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="442.4" textLength="210.8">--run-in-parallel</tspan><tspan class="terminal-2196825906-r2" x="248" y="442.4" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r2" x="297.6" y="442.4" textLength="1153.2">Run&#160;the&#160;opera [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="468.8" textLength="161.2">--parallelism</tspan><tspan class="terminal-2196825906-r2" x="198.4" y="468.8" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r2" x="297.6" y="468.8" textLength="930">Maxi [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="495.2" textLength="285.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r4" x="297.6" y="495.2" textLength="930">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="521.6" textLength="210.8">--python-versions</tspan><tspan class="terminal-2196825906-r2" x="248" y="521.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r2" x="297.6" y="521.6" textLength="967.2">Space&#160;separated&#16 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="548" textLength="285.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r4" x="297.6" y="548" textLength="967.2">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="574.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2196825906-r2" x="1488" y="574.4" textLength="12.4">
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="600.8" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2196825906-r2" x="1488" y="600.8" textLength="12.4">
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="627.2" textLength="111.6">--verbose</tspan><tspan class="terminal-2196825906-r2" x="148.8" y="627.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r6" x="297.6" y="627.2"  [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="653.6" textLength="111.6">--dry-run</tspan><tspan class="terminal-2196825906-r2" x="148.8" y="653.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r6" x="297.6" y="653.6"  [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="680" textLength="235.6">--github-repository</tspan><tspan class="terminal-2196825906-r2" x="272.8" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r6" x="297.6" y="680" textLength="24.8">-g</tspan><tspan class="terminal-2196825906 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-2196825906-r2" x="12.4" y="706.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2196825906-r5" x="37.2" y="706.4" textLength="74.4">--help</tspan><tspan class="terminal-2196825906-r2" x="111.6" y="706.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2196825906-r6" x="297.6 [...]
-</tspan><tspan class="terminal-2196825906-r4" x="0" y="732.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2196825906-r2" x="1488" y="732.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-3638880050-matrix">
+    <text class="terminal-3638880050-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3638880050-line-0)">
+</text><text class="terminal-3638880050-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3638880050-line-1)">Usage:&#160;</text><text class="terminal-3638880050-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-3638880050-line-1)">breeze&#160;pull-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3638880050-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-1)">
+</text><text class="terminal-3638880050-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-2)">
+</text><text class="terminal-3638880050-r2" x="12.2" y="93.2" textLength="1024.8" clip-path="url(#terminal-3638880050-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-3638880050-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-3)">
+</text><text class="terminal-3638880050-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-4)">
+</text><text class="terminal-3638880050-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3638880050-line-5)">╭─</text><text class="terminal-3638880050-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3638880050-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3638880050-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-6)">│</text><text class="terminal-3638880050-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-6)">-</text><text class="terminal-3638880050-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-3638880050-line-6)">-image</text><text class="terminal-3638880050-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-36 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-7)">│</text><text class="terminal-3638880050-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-7)">-</text><text class="terminal-3638880050-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-3638880050-line-7)">-python</text><text class="terminal-3638880050-r6" x="244" y="190.8" textLength="24.4" clip-path="url(#terminal-363 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-8)">│</text><text class="terminal-3638880050-r4" x="292.8" y="215.2" textLength="732" clip-path="url(#terminal-3638880050-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-3638880050-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-9)">│</text><text class="terminal-3638880050-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-9)">-</text><text class="terminal-3638880050-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-3638880050-line-9)">-github</text><text class="terminal-3638880050-r5" x="122" y="239.6" textLength="73.2" clip-path="url(#terminal-363 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3638880050-line-10)">│</text><text class="terminal-3638880050-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3638880050-line-10)">-</text><text class="terminal-3638880050-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-3638880050-line-10)">-verify</text><text class="terminal-3638880050-r5" x="122" y="264" textLength="73.2" clip-path="url(#terminal-36388800 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-11)">│</text><text class="terminal-3638880050-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-11)">-</text><text class="terminal-3638880050-r5" x="36.6" y="288.4" textLength="61" clip-path="url(#terminal-3638880050-line-11)">-wait</text><text class="terminal-3638880050-r5" x="97.6" y="288.4" textLength="122" clip-path="url(#terminal-3638 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-12)">│</text><text class="terminal-3638880050-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-12)">-</text><text class="terminal-3638880050-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-3638880050-line-12)">-tag</text><text class="terminal-3638880050-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-363 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-13)">│</text><text class="terminal-3638880050-r2" x="292.8" y="337.2" textLength="231.8" clip-path="url(#terminal-3638880050-line-13)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3638880050-r5" x="524.6" y="337.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-13)">-</text><text class="terminal-3638880050-r5" x="536.8" y="337.2" textLe [...]
+</text><text class="terminal-3638880050-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-3638880050-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3638880050-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-14)">
+</text><text class="terminal-3638880050-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-3638880050-line-15)">╭─</text><text class="terminal-3638880050-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-3638880050-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3638880050-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-3638 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-16)">│</text><text class="terminal-3638880050-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-16)">-</text><text class="terminal-3638880050-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-3638880050-line-16)">-run</text><text class="terminal-3638880050-r5" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-17)">│</text><text class="terminal-3638880050-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-17)">-</text><text class="terminal-3638880050-r5" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-3638880050-line-17)">-parallelism</text><text class="terminal-3638880050-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-3638880050-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-18)">│</text><text class="terminal-3638880050-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-3638880050-line-18)">[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-3638880050-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-19)">│</text><text class="terminal-3638880050-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-19)">-</text><text class="terminal-3638880050-r5" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-3638880050-line-19)">-python</text><text class="terminal-3638880050-r5" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-3638880050-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3638880050-line-20)">│</text><text class="terminal-3638880050-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-3638880050-line-20)">[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;&#1 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-3638880050-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3638880050-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-21)">
+</text><text class="terminal-3638880050-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-3638880050-line-22)">╭─</text><text class="terminal-3638880050-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-3638880050-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3638880050-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-363 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-23)">│</text><text class="terminal-3638880050-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-3638880050-line-23)">-</text><text class="terminal-3638880050-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-3638880050-line-23)">-verbose</text><text class="terminal-3638880050-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3638880050-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-24)">│</text><text class="terminal-3638880050-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3638880050-line-24)">-</text><text class="terminal-3638880050-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-3638880050-line-24)">-dry</text><text class="terminal-3638880050-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-36 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3638880050-line-25)">│</text><text class="terminal-3638880050-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-3638880050-line-25)">-</text><text class="terminal-3638880050-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-3638880050-line-25)">-github</text><text class="terminal-3638880050-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-3638880 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-26)">│</text><text class="terminal-3638880050-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-3638880050-line-26)">-</text><text class="terminal-3638880050-r5" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-3638880050-line-26)">-help</text><text class="terminal-3638880050-r6" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-36 [...]
+</text><text class="terminal-3638880050-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-3638880050-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3638880050-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-3638880050-line-27)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-pull-prod-image.svg b/images/breeze/output-pull-prod-image.svg
index 9a12580b3b..d6ee293d03 100644
--- a/images/breeze/output-pull-prod-image.svg
+++ b/images/breeze/output-pull-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 831.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 733.1999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,63 +19,154 @@
         font-weight: 700;
     }
 
-    .terminal-2898717937-matrix {
+    .terminal-46787825-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2898717937-title {
+    .terminal-46787825-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2898717937-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2898717937-r2 { fill: #c5c8c6 }
-.terminal-2898717937-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2898717937-r4 { fill: #868887 }
-.terminal-2898717937-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2898717937-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2898717937-r7 { fill: #8d7b39 }
+    .terminal-46787825-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-46787825-r2 { fill: #c5c8c6 }
+.terminal-46787825-r3 { fill: #d0b344;font-weight: bold }
+.terminal-46787825-r4 { fill: #868887 }
+.terminal-46787825-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-46787825-r6 { fill: #98a84b;font-weight: bold }
+.terminal-46787825-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="791.2" rx="12"/><text class="terminal-2898717937-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: pull-prod-image</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-46787825-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
+    </clipPath>
+    <clipPath id="terminal-46787825-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-46787825-line-26">
+    <rect x="0" y="635.9" 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="731.2" rx="8"/><text class="terminal-46787825-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;pull-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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-46787825-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2898717937-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2898717937-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2898717937-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2898717937-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2898717937-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;pull-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...&#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 [...]
-</tspan><tspan class="terminal-2898717937-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2898717937-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="99.2" textLength="1463.2">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.&#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;</tspan><t [...]
-</tspan><tspan class="terminal-2898717937-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="152" textLength="1488">╭─&#160;Pull&#160;image&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2898717937-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="178.4" textLength="136.4">--image-tag</tspan><tspan class="terminal-2898717937-r2" x="173.6" y="178.4" textLength="86.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r6" x="260.4" y="178.4" textLength="24.8">-t</tspan>< [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="204.8" textLength="99.2">--python</tspan><tspan class="terminal-2898717937-r2" x="136.4" y="204.8" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r6" x="260.4" y="204.8" textLength="24.8 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="231.2" textLength="297.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r4" x="310" y="231.2" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="257.6" textLength="173.6">--github-token</tspan><tspan class="terminal-2898717937-r2" x="210.8" y="257.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r2" x="260.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="284" textLength="173.6">--verify-image</tspan><tspan class="terminal-2898717937-r2" x="210.8" y="284" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r2" x="260.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="te [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="310.4" textLength="198.4">--wait-for-image</tspan><tspan class="terminal-2898717937-r2" x="235.6" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r2" x="260.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="te [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="336.8" textLength="186">--tag-as-latest</tspan><tspan class="terminal-2898717937-r2" x="223.2" y="336.8" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r2" x="260.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class= [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="363.2" textLength="607.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</tspan><tspan class="terminal-2898717937-r5" x="620" y="363.2" textLength="136.4">--image-tag</tspan><tspan class="terminal-28987179 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="389.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2898717937-r2" x="1488" y="389.6" textLength="12.4">
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="416" textLength="1488">╭─&#160;Parallel&#160;running&#160;───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2898717937-r2" x="1488" y="416" textLength="12.4">
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="442.4" textLength="210.8">--run-in-parallel</tspan><tspan class="terminal-2898717937-r2" x="248" y="442.4" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r2" x="297.6" y="442.4" textLength="1153.2">Run&#160;the&#160;opera [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="468.8" textLength="161.2">--parallelism</tspan><tspan class="terminal-2898717937-r2" x="198.4" y="468.8" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r2" x="297.6" y="468.8" textLength="930">Maxi [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="495.2" textLength="285.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r4" x="297.6" y="495.2" textLength="930">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="521.6" textLength="210.8">--python-versions</tspan><tspan class="terminal-2898717937-r2" x="248" y="521.6" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r2" x="297.6" y="521.6" textLength="967.2">Space&#160;separated&#16 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="548" textLength="285.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r4" x="297.6" y="548" textLength="967.2">[default:&#160;3.7&#160;3.8&#160;3.9&#160;3.10]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="574.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2898717937-r2" x="1488" y="574.4" textLength="12.4">
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="600.8" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2898717937-r2" x="1488" y="600.8" textLength="12.4">
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="627.2" textLength="111.6">--verbose</tspan><tspan class="terminal-2898717937-r2" x="148.8" y="627.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r6" x="297.6" y="627.2"  [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="653.6" textLength="111.6">--dry-run</tspan><tspan class="terminal-2898717937-r2" x="148.8" y="653.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r6" x="297.6" y="653.6"  [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="680" textLength="235.6">--github-repository</tspan><tspan class="terminal-2898717937-r2" x="272.8" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r6" x="297.6" y="680" textLength="24.8">-g</tspan><tspan class="terminal-2898717937 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-2898717937-r2" x="12.4" y="706.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2898717937-r5" x="37.2" y="706.4" textLength="74.4">--help</tspan><tspan class="terminal-2898717937-r2" x="111.6" y="706.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2898717937-r6" x="297.6 [...]
-</tspan><tspan class="terminal-2898717937-r4" x="0" y="732.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2898717937-r2" x="1488" y="732.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-46787825-matrix">
+    <text class="terminal-46787825-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-46787825-line-0)">
+</text><text class="terminal-46787825-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-46787825-line-1)">Usage:&#160;</text><text class="terminal-46787825-r1" x="97.6" y="44.4" textLength="671" clip-path="url(#terminal-46787825-line-1)">breeze&#160;pull-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-46787825-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-46787825-line-1)">
+</text><text class="terminal-46787825-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-46787825-line-2)">
+</text><text class="terminal-46787825-r2" x="12.2" y="93.2" textLength="1122.4" clip-path="url(#terminal-46787825-line-3)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly&#160;in&#160;parallel&#160;for&#160;all&#160;Python&#160;versions.</text><text class="terminal-46787825-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-46787825-line-3)">
+</text><text class="terminal-46787825-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-46787825-line-4)">
+</text><text class="terminal-46787825-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-46787825-line-5)">╭─</text><text class="terminal-46787825-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-46787825-line-5)">&#160;Pull&#160;image&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-46787825-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-46787825-li [...]
+</text><text class="terminal-46787825-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-46787825-line-6)">│</text><text class="terminal-46787825-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-46787825-line-6)">-</text><text class="terminal-46787825-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-46787825-line-6)">-image</text><text class="terminal-46787825-r5" x="109.8" y="166.4" textLength="48.8" clip-path="url(#terminal-46787825-line-6) [...]
+</text><text class="terminal-46787825-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-46787825-line-7)">│</text><text class="terminal-46787825-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-46787825-line-7)">-</text><text class="terminal-46787825-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-46787825-line-7)">-python</text><text class="terminal-46787825-r6" x="244" y="190.8" textLength="24.4" clip-path="url(#terminal-46787825-line-7)" [...]
+</text><text class="terminal-46787825-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-46787825-line-8)">│</text><text class="terminal-46787825-r4" x="292.8" y="215.2" textLength="732" clip-path="url(#terminal-46787825-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;&#160;&#1 [...]
+</text><text class="terminal-46787825-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-46787825-line-9)">│</text><text class="terminal-46787825-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-46787825-line-9)">-</text><text class="terminal-46787825-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-46787825-line-9)">-github</text><text class="terminal-46787825-r5" x="122" y="239.6" textLength="73.2" clip-path="url(#terminal-46787825-line-9)" [...]
+</text><text class="terminal-46787825-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-46787825-line-10)">│</text><text class="terminal-46787825-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-46787825-line-10)">-</text><text class="terminal-46787825-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-46787825-line-10)">-verify</text><text class="terminal-46787825-r5" x="122" y="264" textLength="73.2" clip-path="url(#terminal-46787825-line-10)">-im [...]
+</text><text class="terminal-46787825-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-46787825-line-11)">│</text><text class="terminal-46787825-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-46787825-line-11)">-</text><text class="terminal-46787825-r5" x="36.6" y="288.4" textLength="61" clip-path="url(#terminal-46787825-line-11)">-wait</text><text class="terminal-46787825-r5" x="97.6" y="288.4" textLength="122" clip-path="url(#terminal-46787825-line-11)" [...]
+</text><text class="terminal-46787825-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-46787825-line-12)">│</text><text class="terminal-46787825-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-46787825-line-12)">-</text><text class="terminal-46787825-r5" x="36.6" y="312.8" textLength="48.8" clip-path="url(#terminal-46787825-line-12)">-tag</text><text class="terminal-46787825-r5" x="85.4" y="312.8" textLength="122" clip-path="url(#terminal-46787825-line-12) [...]
+</text><text class="terminal-46787825-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-46787825-line-13)">│</text><text class="terminal-46787825-r2" x="292.8" y="337.2" textLength="231.8" clip-path="url(#terminal-46787825-line-13)">or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-46787825-r5" x="524.6" y="337.2" textLength="12.2" clip-path="url(#terminal-46787825-line-13)">-</text><text class="terminal-46787825-r5" x="536.8" y="337.2" textLength="73.2" cl [...]
+</text><text class="terminal-46787825-r4" x="0" y="361.6" textLength="1464" clip-path="url(#terminal-46787825-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-46787825-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#terminal-46787825-line-14)">
+</text><text class="terminal-46787825-r4" x="0" y="386" textLength="24.4" clip-path="url(#terminal-46787825-line-15)">╭─</text><text class="terminal-46787825-r4" x="24.4" y="386" textLength="1415.2" clip-path="url(#terminal-46787825-line-15)">&#160;Parallel&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-46787825-r4" x="1439.6" y="386" textLength="24.4" clip-path="url(#terminal-46787825-line- [...]
+</text><text class="terminal-46787825-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-46787825-line-16)">│</text><text class="terminal-46787825-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-46787825-line-16)">-</text><text class="terminal-46787825-r5" x="36.6" y="410.4" textLength="48.8" clip-path="url(#terminal-46787825-line-16)">-run</text><text class="terminal-46787825-r5" x="85.4" y="410.4" textLength="146.4" clip-path="url(#terminal-46787825-line-1 [...]
+</text><text class="terminal-46787825-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-46787825-line-17)">│</text><text class="terminal-46787825-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-46787825-line-17)">-</text><text class="terminal-46787825-r5" x="36.6" y="434.8" textLength="146.4" clip-path="url(#terminal-46787825-line-17)">-parallelism</text><text class="terminal-46787825-r2" x="280.6" y="434.8" textLength="915" clip-path="url(#terminal-4678782 [...]
+</text><text class="terminal-46787825-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-46787825-line-18)">│</text><text class="terminal-46787825-r4" x="280.6" y="459.2" textLength="915" clip-path="url(#terminal-46787825-line-18)">[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;&#160;& [...]
+</text><text class="terminal-46787825-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-46787825-line-19)">│</text><text class="terminal-46787825-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-46787825-line-19)">-</text><text class="terminal-46787825-r5" x="36.6" y="483.6" textLength="85.4" clip-path="url(#terminal-46787825-line-19)">-python</text><text class="terminal-46787825-r5" x="122" y="483.6" textLength="109.8" clip-path="url(#terminal-46787825-line [...]
+</text><text class="terminal-46787825-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-46787825-line-20)">│</text><text class="terminal-46787825-r4" x="280.6" y="508" textLength="951.6" clip-path="url(#terminal-46787825-line-20)">[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;&#160;&#160 [...]
+</text><text class="terminal-46787825-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-46787825-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-46787825-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-46787825-line-21)">
+</text><text class="terminal-46787825-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-46787825-line-22)">╭─</text><text class="terminal-46787825-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-46787825-line-22)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-46787825-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#terminal-46787825-line [...]
+</text><text class="terminal-46787825-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-46787825-line-23)">│</text><text class="terminal-46787825-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-46787825-line-23)">-</text><text class="terminal-46787825-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-46787825-line-23)">-verbose</text><text class="terminal-46787825-r6" x="280.6" y="581.2" textLength="24.4" clip-path="url(#terminal-46787825-li [...]
+</text><text class="terminal-46787825-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-46787825-line-24)">│</text><text class="terminal-46787825-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-46787825-line-24)">-</text><text class="terminal-46787825-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-46787825-line-24)">-dry</text><text class="terminal-46787825-r5" x="85.4" y="605.6" textLength="48.8" clip-path="url(#terminal-46787825-line-24 [...]
+</text><text class="terminal-46787825-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-46787825-line-25)">│</text><text class="terminal-46787825-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-46787825-line-25)">-</text><text class="terminal-46787825-r5" x="36.6" y="630" textLength="85.4" clip-path="url(#terminal-46787825-line-25)">-github</text><text class="terminal-46787825-r5" x="122" y="630" textLength="134.2" clip-path="url(#terminal-46787825-line-25)">-r [...]
+</text><text class="terminal-46787825-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-46787825-line-26)">│</text><text class="terminal-46787825-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-46787825-line-26)">-</text><text class="terminal-46787825-r5" x="36.6" y="654.4" textLength="61" clip-path="url(#terminal-46787825-line-26)">-help</text><text class="terminal-46787825-r6" x="280.6" y="654.4" textLength="24.4" clip-path="url(#terminal-46787825-line-26 [...]
+</text><text class="terminal-46787825-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-46787825-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-46787825-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-46787825-line-27)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-release-prod-images.svg b/images/breeze/output-release-prod-images.svg
index 31f4da7b4d..a3a392acc5 100644
--- a/images/breeze/output-release-prod-images.svg
+++ b/images/breeze/output-release-prod-images.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 752.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 635.5999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,62 +19,140 @@
         font-weight: 700;
     }
 
-    .terminal-1467282442-matrix {
+    .terminal-3294421328-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1467282442-title {
+    .terminal-3294421328-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1467282442-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1467282442-r2 { fill: #c5c8c6 }
-.terminal-1467282442-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1467282442-r4 { fill: #868887 }
-.terminal-1467282442-r5 { fill: #cc555a }
-.terminal-1467282442-r6 { fill: #68a0b3;font-weight: bold }
-.terminal-1467282442-r7 { fill: #8d7b39 }
-.terminal-1467282442-r8 { fill: #8a4346 }
-.terminal-1467282442-r9 { fill: #98a84b;font-weight: bold }
+    .terminal-3294421328-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3294421328-r2 { fill: #c5c8c6 }
+.terminal-3294421328-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3294421328-r4 { fill: #868887 }
+.terminal-3294421328-r5 { fill: #cc555a }
+.terminal-3294421328-r6 { fill: #68a0b3;font-weight: bold }
+.terminal-3294421328-r7 { fill: #8d7b39 }
+.terminal-3294421328-r8 { fill: #8a4346 }
+.terminal-3294421328-r9 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="712" rx="12"/><text class="terminal-1467282442-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: release-prod-images</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-3294421328-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="584.5999999999999" />
+    </clipPath>
+    <clipPath id="terminal-3294421328-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3294421328-line-22">
+    <rect x="0" y="538.3" 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="633.6" rx="8"/><text class="terminal-3294421328-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;release-prod-images</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3294421328-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1467282442-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1467282442-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1467282442-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1467282442-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1467282442-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;release-prod-images&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-1467282442-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-1467282442-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="99.2" textLength="1463.2">Release&#160;production&#160;images&#160;to&#160;DockerHub&#160;(needs&#160;DockerHub&#160;permissions).&#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 [...]
-</tspan><tspan class="terminal-1467282442-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="152" textLength="1488">╭─&#160;Release&#160;PROD&#160;IMAGE&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1467282442-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r5" x="37.2" y="178.4" textLength="12.4">*</tspan><tspan class="terminal-1467282442-r2" x="49.6" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="74.4" y="178.4" textLength="210.8">--airflow-version</tspan><tspan class="terminal-14672 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r2" x="37.2" y="204.8" textLength="12.4">&#160;</tspan><tspan class="terminal-1467282442-r2" x="49.6" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="74.4" y="204.8" textLength="198.4">--dockerhub-repo</tspan><tspan class="terminal-1 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r2" x="37.2" y="231.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1467282442-r2" x="49.6" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="74.4" y="231.2" textLength="161.2">--slim-images</tspan><tspan class="terminal-1467 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r2" x="37.2" y="257.6" textLength="12.4">&#160;</tspan><tspan class="terminal-1467282442-r2" x="49.6" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="74.4" y="257.6" textLength="173.6">--limit-python</tspan><tspan class="terminal-146 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="284" textLength="322.4">&#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;</tspan><tspan class="terminal-1467282442-r2" x="334.8" y="284" textLength="1116">available&#160;python&#160;versions)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="310.4" textLength="322.4">&#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;</tspan><tspan class="terminal-1467282442-r7" x="334.8" y="310.4" textLength="1116">(3.7&#160;|&#160;3.8&#160;|&#160;3.9&#160;|&#160;3.10)&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r2" x="37.2" y="336.8" textLength="12.4">&#160;</tspan><tspan class="terminal-1467282442-r2" x="49.6" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="74.4" y="336.8" textLength="198.4">--limit-platform</tspan><tspan class="terminal-1 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="363.2" textLength="322.4">&#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;</tspan><tspan class="terminal-1467282442-r2" x="334.8" y="363.2" textLength="1116">built.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="389.6" textLength="322.4">&#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;</tspan><tspan class="terminal-1467282442-r7" x="334.8" y="389.6" textLength="1116">(linux/amd64&#160;|&#160;linux/arm64&#160;|&#160;linux/amd64,linux/arm64)&#160;&#160;&# [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="416" textLength="322.4">&#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;</tspan><tspan class="terminal-1467282442-r4" x="334.8" y="416" textLength="1116">[default:&#160;linux/amd64,linux/arm64]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r2" x="37.2" y="442.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1467282442-r2" x="49.6" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="74.4" y="442.4" textLength="161.2">--skip-latest</tspan><tspan class="terminal-1467 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="468.8" textLength="322.4">&#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;</tspan><tspan class="terminal-1467282442-r2" x="334.8" y="468.8" textLength="1116">This&#160;should&#160;only&#160;be&#160;used&#160;if&#160;you&#160;release&#160;image&# [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="495.2" textLength="322.4">&#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;</tspan><tspan class="terminal-1467282442-r2" x="334.8" y="495.2" textLength="1116">when&#160;rc/alpha/beta&#160;images&#160;are&#160;built.&#160;&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="521.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1467282442-r2" x="1488" y="521.6" textLength="12.4">
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="548" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1467282442-r2" x="1488" y="548" textLength="12.4">
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="574.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="37.2" y="574.4" textLength="111.6">--verbose</tspan><tspan class="terminal-1467282442-r2" x="148.8" y="574.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r9" x="173.6" y="574.4" textLength="24.8">-v</tspan><tspan class="terminal-1467282442 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="600.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="37.2" y="600.8" textLength="111.6">--dry-run</tspan><tspan class="terminal-1467282442-r2" x="148.8" y="600.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r9" x="173.6" y="600.8" textLength="24.8">-D</tspan><tspan class="terminal-1467282442 [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-1467282442-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1467282442-r6" x="37.2" y="627.2" textLength="74.4">--help</tspan><tspan class="terminal-1467282442-r2" x="111.6" y="627.2" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1467282442-r9" x="173.6" y="627.2" textLength="24.8">-h</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-1467282442-r4" x="0" y="653.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1467282442-r2" x="1488" y="653.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-3294421328-matrix">
+    <text class="terminal-3294421328-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3294421328-line-0)">
+</text><text class="terminal-3294421328-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3294421328-line-1)">Usage:&#160;</text><text class="terminal-3294421328-r1" x="97.6" y="44.4" textLength="439.2" clip-path="url(#terminal-3294421328-line-1)">breeze&#160;release-prod-images&#160;[OPTIONS]</text><text class="terminal-3294421328-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-1)">
+</text><text class="terminal-3294421328-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-2)">
+</text><text class="terminal-3294421328-r2" x="12.2" y="93.2" textLength="841.8" clip-path="url(#terminal-3294421328-line-3)">Release&#160;production&#160;images&#160;to&#160;DockerHub&#160;(needs&#160;DockerHub&#160;permissions).</text><text class="terminal-3294421328-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3294421328-line-3)">
+</text><text class="terminal-3294421328-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3294421328-line-4)">
+</text><text class="terminal-3294421328-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3294421328-line-5)">╭─</text><text class="terminal-3294421328-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3294421328-line-5)">&#160;Release&#160;PROD&#160;IMAGE&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3294421328-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-3294421328-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-6)">│</text><text class="terminal-3294421328-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-6)">*</text><text class="terminal-3294421328-r6" x="61" y="166.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-6)">-</text><text class="terminal-3294421328-r6" x="73.2" y="166.4" textLength="97.6" clip-path="url(#terminal-3294421328 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-7)">│</text><text class="terminal-3294421328-r6" x="61" y="190.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-7)">-</text><text class="terminal-3294421328-r6" x="73.2" y="190.8" textLength="122" clip-path="url(#terminal-3294421328-line-7)">-dockerhub</text><text class="terminal-3294421328-r6" x="195.2" y="190.8" textLength="61" clip-path="url(#terminal-329 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3294421328-line-8)">│</text><text class="terminal-3294421328-r6" x="61" y="215.2" textLength="12.2" clip-path="url(#terminal-3294421328-line-8)">-</text><text class="terminal-3294421328-r6" x="73.2" y="215.2" textLength="61" clip-path="url(#terminal-3294421328-line-8)">-slim</text><text class="terminal-3294421328-r6" x="134.2" y="215.2" textLength="85.4" clip-path="url(#terminal-3294421 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3294421328-line-9)">│</text><text class="terminal-3294421328-r6" x="61" y="239.6" textLength="12.2" clip-path="url(#terminal-3294421328-line-9)">-</text><text class="terminal-3294421328-r6" x="73.2" y="239.6" textLength="73.2" clip-path="url(#terminal-3294421328-line-9)">-limit</text><text class="terminal-3294421328-r6" x="146.4" y="239.6" textLength="85.4" clip-path="url(#terminal-3294 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3294421328-line-10)">│</text><text class="terminal-3294421328-r2" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-3294421328-line-10)">available&#160;python&#160;versions)&#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-3294421328-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-11)">│</text><text class="terminal-3294421328-r7" x="317.2" y="288.4" textLength="1122.4" clip-path="url(#terminal-3294421328-line-11)">(3.7&#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;&#1 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-12)">│</text><text class="terminal-3294421328-r6" x="61" y="312.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-12)">-</text><text class="terminal-3294421328-r6" x="73.2" y="312.8" textLength="73.2" clip-path="url(#terminal-3294421328-line-12)">-limit</text><text class="terminal-3294421328-r6" x="146.4" y="312.8" textLength="109.8" clip-path="url(#terminal- [...]
+</text><text class="terminal-3294421328-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3294421328-line-13)">│</text><text class="terminal-3294421328-r7" x="317.2" y="337.2" textLength="1122.4" clip-path="url(#terminal-3294421328-line-13)">(linux/amd64&#160;|&#160;linux/arm64&#160;|&#160;linux/amd64,linux/arm64)&#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-3294421328-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3294421328-line-14)">│</text><text class="terminal-3294421328-r4" x="317.2" y="361.6" textLength="1122.4" clip-path="url(#terminal-3294421328-line-14)">[default:&#160;linux/amd64,linux/arm64]&#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-3294421328-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3294421328-line-15)">│</text><text class="terminal-3294421328-r6" x="61" y="386" textLength="12.2" clip-path="url(#terminal-3294421328-line-15)">-</text><text class="terminal-3294421328-r6" x="73.2" y="386" textLength="61" clip-path="url(#terminal-3294421328-line-15)">-skip</text><text class="terminal-3294421328-r6" x="134.2" y="386" textLength="85.4" clip-path="url(#terminal-3294421328-l [...]
+</text><text class="terminal-3294421328-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-16)">│</text><text class="terminal-3294421328-r2" x="317.2" y="410.4" textLength="1122.4" clip-path="url(#terminal-3294421328-line-16)">should&#160;only&#160;be&#160;used&#160;if&#160;you&#160;release&#160;image&#160;for&#160;previous&#160;branches.&#160;Automatically&#160;set&#160;when&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3294421328-r4" x="145 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-17)">│</text><text class="terminal-3294421328-r2" x="317.2" y="434.8" textLength="1122.4" clip-path="url(#terminal-3294421328-line-17)">rc/alpha/beta&#160;images&#160;are&#160;built.&#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-3294421328-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-3294421328-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3294421328-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-3294421328-line-18)">
+</text><text class="terminal-3294421328-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-3294421328-line-19)">╭─</text><text class="terminal-3294421328-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-3294421328-line-19)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3294421328-r4" x="1439.6" y="483.6" textLength="24.4" clip-path="url(#terminal-329 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3294421328-line-20)">│</text><text class="terminal-3294421328-r6" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3294421328-line-20)">-</text><text class="terminal-3294421328-r6" x="36.6" y="508" textLength="97.6" clip-path="url(#terminal-3294421328-line-20)">-verbose</text><text class="terminal-3294421328-r9" x="158.6" y="508" textLength="24.4" clip-path="url(#terminal-32944 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-21)">│</text><text class="terminal-3294421328-r6" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-3294421328-line-21)">-</text><text class="terminal-3294421328-r6" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-3294421328-line-21)">-dry</text><text class="terminal-3294421328-r6" x="85.4" y="532.4" textLength="48.8" clip-path="url(#terminal-32 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-22)">│</text><text class="terminal-3294421328-r6" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3294421328-line-22)">-</text><text class="terminal-3294421328-r6" x="36.6" y="556.8" textLength="61" clip-path="url(#terminal-3294421328-line-22)">-help</text><text class="terminal-3294421328-r9" x="158.6" y="556.8" textLength="24.4" clip-path="url(#terminal-32 [...]
+</text><text class="terminal-3294421328-r4" x="0" y="581.2" textLength="1464" clip-path="url(#terminal-3294421328-line-23)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3294421328-r2" x="1464" y="581.2" textLength="12.2" clip-path="url(#terminal-3294421328-line-23)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-resource-check.svg b/images/breeze/output-resource-check.svg
index 310eaf9a1e..8ec8aa32d7 100644
--- a/images/breeze/output-resource-check.svg
+++ b/images/breeze/output-resource-check.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 356.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 294.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,44 +19,81 @@
         font-weight: 700;
     }
 
-    .terminal-1721143440-matrix {
+    .terminal-2379452560-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1721143440-title {
+    .terminal-2379452560-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1721143440-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1721143440-r2 { fill: #c5c8c6 }
-.terminal-1721143440-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1721143440-r4 { fill: #868887 }
-.terminal-1721143440-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1721143440-r6 { fill: #98a84b;font-weight: bold }
+    .terminal-2379452560-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2379452560-r2 { fill: #c5c8c6 }
+.terminal-2379452560-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2379452560-r4 { fill: #868887 }
+.terminal-2379452560-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2379452560-r6 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="316" rx="12"/><text class="terminal-1721143440-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: resource-check</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2379452560-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="243.0" />
+    </clipPath>
+    <clipPath id="terminal-2379452560-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2379452560-line-8">
+    <rect x="0" y="196.7" 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="292" rx="8"/><text class="terminal-2379452560-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;resource-check</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2379452560-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1721143440-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1721143440-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1721143440-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1721143440-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1721143440-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;resource-check&#160;[OPTIONS]&#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;&# [...]
-</tspan><tspan class="terminal-1721143440-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-1721143440-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1721143440-r2" x="12.4" y="99.2" textLength="1463.2">Check&#160;if&#160;available&#160;docker&#160;resources&#160;are&#160;enough.&#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;&#160;&#160; [...]
-</tspan><tspan class="terminal-1721143440-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1721143440-r4" x="0" y="152" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1721143440-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-1721143440-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-1721143440-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1721143440-r5" x="37.2" y="178.4" textLength="111.6">--verbose</tspan><tspan class="terminal-1721143440-r2" x="148.8" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1721143440-r6" x="173.6" y="178.4" textLength="24.8">-v</tspan><tspan class="terminal-1721143440 [...]
-</tspan><tspan class="terminal-1721143440-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-1721143440-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1721143440-r5" x="37.2" y="204.8" textLength="111.6">--dry-run</tspan><tspan class="terminal-1721143440-r2" x="148.8" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1721143440-r6" x="173.6" y="204.8" textLength="24.8">-D</tspan><tspan class="terminal-1721143440 [...]
-</tspan><tspan class="terminal-1721143440-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-1721143440-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1721143440-r5" x="37.2" y="231.2" textLength="74.4">--help</tspan><tspan class="terminal-1721143440-r2" x="111.6" y="231.2" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1721143440-r6" x="173.6" y="231.2" textLength="24.8">-h</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-1721143440-r4" x="0" y="257.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1721143440-r2" x="1488" y="257.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2379452560-matrix">
+    <text class="terminal-2379452560-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2379452560-line-0)">
+</text><text class="terminal-2379452560-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2379452560-line-1)">Usage:&#160;</text><text class="terminal-2379452560-r1" x="97.6" y="44.4" textLength="378.2" clip-path="url(#terminal-2379452560-line-1)">breeze&#160;resource-check&#160;[OPTIONS]</text><text class="terminal-2379452560-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2379452560-line-1)">
+</text><text class="terminal-2379452560-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2379452560-line-2)">
+</text><text class="terminal-2379452560-r2" x="12.2" y="93.2" textLength="573.4" clip-path="url(#terminal-2379452560-line-3)">Check&#160;if&#160;available&#160;docker&#160;resources&#160;are&#160;enough.</text><text class="terminal-2379452560-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2379452560-line-3)">
+</text><text class="terminal-2379452560-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2379452560-line-4)">
+</text><text class="terminal-2379452560-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2379452560-line-5)">╭─</text><text class="terminal-2379452560-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2379452560-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2379452560-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2379452560- [...]
+</text><text class="terminal-2379452560-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2379452560-line-6)">│</text><text class="terminal-2379452560-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2379452560-line-6)">-</text><text class="terminal-2379452560-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-2379452560-line-6)">-verbose</text><text class="terminal-2379452560-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2379452560-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2379452560-line-7)">│</text><text class="terminal-2379452560-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2379452560-line-7)">-</text><text class="terminal-2379452560-r5" x="36.6" y="190.8" textLength="48.8" clip-path="url(#terminal-2379452560-line-7)">-dry</text><text class="terminal-2379452560-r5" x="85.4" y="190.8" textLength="48.8" clip-path="url(#terminal-23794 [...]
+</text><text class="terminal-2379452560-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2379452560-line-8)">│</text><text class="terminal-2379452560-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2379452560-line-8)">-</text><text class="terminal-2379452560-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-2379452560-line-8)">-help</text><text class="terminal-2379452560-r6" x="158.6" y="215.2" textLength="24.4" clip-path="url(#terminal-23794 [...]
+</text><text class="terminal-2379452560-r4" x="0" y="239.6" textLength="1464" clip-path="url(#terminal-2379452560-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2379452560-r2" x="1464" y="239.6" textLength="12.2" clip-path="url(#terminal-2379452560-line-9)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-self-upgrade.svg b/images/breeze/output-self-upgrade.svg
index 147e6581b2..205b6f1042 100644
--- a/images/breeze/output-self-upgrade.svg
+++ b/images/breeze/output-self-upgrade.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 408.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 342.79999999999995" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,46 +19,89 @@
         font-weight: 700;
     }
 
-    .terminal-3684385563-matrix {
+    .terminal-103170843-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3684385563-title {
+    .terminal-103170843-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3684385563-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3684385563-r2 { fill: #c5c8c6 }
-.terminal-3684385563-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3684385563-r4 { fill: #868887 }
-.terminal-3684385563-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3684385563-r6 { fill: #98a84b;font-weight: bold }
+    .terminal-103170843-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-103170843-r2 { fill: #c5c8c6 }
+.terminal-103170843-r3 { fill: #d0b344;font-weight: bold }
+.terminal-103170843-r4 { fill: #868887 }
+.terminal-103170843-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-103170843-r6 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="368.8" rx="12"/><text class="terminal-3684385563-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: self-upgrade</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-103170843-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="291.79999999999995" />
+    </clipPath>
+    <clipPath id="terminal-103170843-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-103170843-line-10">
+    <rect x="0" y="245.5" 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="340.8" rx="8"/><text class="terminal-103170843-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;self-upgrade</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-103170843-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-3684385563-matrix" font-variant="east-asian-width-values"><tspan class="terminal-3684385563-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-3684385563-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-3684385563-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-3684385563-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;self-upgrade&#160;[OPTIONS]&#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;&#16 [...]
-</tspan><tspan class="terminal-3684385563-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-3684385563-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-3684385563-r2" x="12.4" y="99.2" textLength="1463.2">Self&#160;upgrade&#160;Breeze.&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-3684385563-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-3684385563-r4" x="0" y="152" textLength="1488">╭─&#160;Self-upgrade&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-3684385563-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-3684385563-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-3684385563-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3684385563-r5" x="37.2" y="178.4" textLength="359.6">--use-current-airflow-sources</tspan><tspan class="terminal-3684385563-r2" x="396.8" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3684385563-r6" x="421.6" y="178.4" textLength="24.8">-a</tspan><tspan class= [...]
-</tspan><tspan class="terminal-3684385563-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-3684385563-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3684385563-r5" x="37.2" y="204.8" textLength="86.8">--force</tspan><tspan class="terminal-3684385563-r2" x="124" y="204.8" textLength="297.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-3684385563-r4" x="0" y="231.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-3684385563-r2" x="1488" y="231.2" textLength="12.4">
-</tspan><tspan class="terminal-3684385563-r4" x="0" y="257.6" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-3684385563-r2" x="1488" y="257.6" textLength="12.4">
-</tspan><tspan class="terminal-3684385563-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-3684385563-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3684385563-r5" x="37.2" y="284" textLength="74.4">--help</tspan><tspan class="terminal-3684385563-r2" x="111.6" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3684385563-r6" x="136.4" y="284" textLength="24.8">-h</tspan><tspan class="terminal-3684385563-r2" x="161.2" [...]
-</tspan><tspan class="terminal-3684385563-r4" x="0" y="310.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-3684385563-r2" x="1488" y="310.4" textLength="12.4">
-</tspan></text>
+    <g class="terminal-103170843-matrix">
+    <text class="terminal-103170843-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-103170843-line-0)">
+</text><text class="terminal-103170843-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-103170843-line-1)">Usage:&#160;</text><text class="terminal-103170843-r1" x="97.6" y="44.4" textLength="353.8" clip-path="url(#terminal-103170843-line-1)">breeze&#160;self-upgrade&#160;[OPTIONS]</text><text class="terminal-103170843-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-103170843-line-1)">
+</text><text class="terminal-103170843-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-103170843-line-2)">
+</text><text class="terminal-103170843-r2" x="12.2" y="93.2" textLength="244" clip-path="url(#terminal-103170843-line-3)">Self&#160;upgrade&#160;Breeze.</text><text class="terminal-103170843-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-103170843-line-3)">
+</text><text class="terminal-103170843-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-103170843-line-4)">
+</text><text class="terminal-103170843-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-103170843-line-5)">╭─</text><text class="terminal-103170843-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-103170843-line-5)">&#160;Self-upgrade&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-103170843-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-103170843-l [...]
+</text><text class="terminal-103170843-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-103170843-line-6)">│</text><text class="terminal-103170843-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-103170843-line-6)">-</text><text class="terminal-103170843-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-103170843-line-6)">-use</text><text class="terminal-103170843-r5" x="85.4" y="166.4" textLength="292.8" clip-path="url(#terminal-103170843-l [...]
+</text><text class="terminal-103170843-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-103170843-line-7)">│</text><text class="terminal-103170843-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-103170843-line-7)">-</text><text class="terminal-103170843-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-103170843-line-7)">-force</text><text class="terminal-103170843-r6" x="402.6" y="190.8" textLength="24.4" clip-path="url(#terminal-103170843 [...]
+</text><text class="terminal-103170843-r4" x="0" y="215.2" textLength="1464" clip-path="url(#terminal-103170843-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-103170843-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#terminal-103170843-line-8)">
+</text><text class="terminal-103170843-r4" x="0" y="239.6" textLength="24.4" clip-path="url(#terminal-103170843-line-9)">╭─</text><text class="terminal-103170843-r4" x="24.4" y="239.6" textLength="1415.2" clip-path="url(#terminal-103170843-line-9)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-103170843-r4" x="1439.6" y="239.6" textLength="24.4" clip-path="url(#terminal-103170843- [...]
+</text><text class="terminal-103170843-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-103170843-line-10)">│</text><text class="terminal-103170843-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-103170843-line-10)">-</text><text class="terminal-103170843-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-103170843-line-10)">-help</text><text class="terminal-103170843-r6" x="122" y="264" textLength="24.4" clip-path="url(#terminal-103170843-line-10)" [...]
+</text><text class="terminal-103170843-r4" x="0" y="288.4" textLength="1464" clip-path="url(#terminal-103170843-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-103170843-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#terminal-103170843-line-11)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-setup-autocomplete.svg b/images/breeze/output-setup-autocomplete.svg
index b07eca2b16..de7c17ab43 100644
--- a/images/breeze/output-setup-autocomplete.svg
+++ b/images/breeze/output-setup-autocomplete.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 461.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 391.59999999999997" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,49 +19,98 @@
         font-weight: 700;
     }
 
-    .terminal-3033303522-matrix {
+    .terminal-4279732706-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3033303522-title {
+    .terminal-4279732706-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3033303522-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3033303522-r2 { fill: #c5c8c6 }
-.terminal-3033303522-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3033303522-r4 { fill: #868887 }
-.terminal-3033303522-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3033303522-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3033303522-r7 { fill: #8d7b39 }
+    .terminal-4279732706-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4279732706-r2 { fill: #c5c8c6 }
+.terminal-4279732706-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4279732706-r4 { fill: #868887 }
+.terminal-4279732706-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4279732706-r6 { fill: #98a84b;font-weight: bold }
+.terminal-4279732706-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="421.6" rx="12"/><text class="terminal-3033303522-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: setup-autocomplete</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-4279732706-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="340.59999999999997" />
+    </clipPath>
+    <clipPath id="terminal-4279732706-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4279732706-line-12">
+    <rect x="0" y="294.3" 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="389.6" rx="8"/><text class="terminal-4279732706-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;setup-autocomplete</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4279732706-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-3033303522-matrix" font-variant="east-asian-width-values"><tspan class="terminal-3033303522-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-3033303522-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-3033303522-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-3033303522-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;setup-autocomplete&#160;[OPTIONS]&#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;&#16 [...]
-</tspan><tspan class="terminal-3033303522-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-3033303522-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-3033303522-r2" x="12.4" y="99.2" textLength="1463.2">Enables&#160;autocompletion&#160;of&#160;breeze&#160;commands.&#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;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-3033303522-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="152" textLength="1488">╭─&#160;Setup&#160;autocomplete&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-3033303522-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-3033303522-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r5" x="37.2" y="178.4" textLength="86.8">--force</tspan><tspan class="terminal-3033303522-r2" x="124" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r6" x="148.8" y="178.4" textLength="24.8">-f</tspan><tspan class="terminal-3033303522-r2"  [...]
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="204.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-3033303522-r2" x="1488" y="204.8" textLength="12.4">
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="231.2" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-3033303522-r2" x="1488" y="231.2" textLength="12.4">
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-3033303522-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r5" x="37.2" y="257.6" textLength="99.2">--answer</tspan><tspan class="terminal-3033303522-r2" x="136.4" y="257.6" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-3033303522-r6" x="173.6" y="257.6" textLength="24.8">-a</tspan><tspan class="terminal-303330 [...]
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-3033303522-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r5" x="37.2" y="284" textLength="111.6">--dry-run</tspan><tspan class="terminal-3033303522-r2" x="148.8" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r6" x="173.6" y="284" textLength="24.8">-D</tspan><tspan class="terminal-3033303522-r2" x="19 [...]
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-3033303522-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r5" x="37.2" y="310.4" textLength="111.6">--verbose</tspan><tspan class="terminal-3033303522-r2" x="148.8" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r6" x="173.6" y="310.4" textLength="24.8">-v</tspan><tspan class="terminal-3033303522 [...]
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-3033303522-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3033303522-r5" x="37.2" y="336.8" textLength="74.4">--help</tspan><tspan class="terminal-3033303522-r2" x="111.6" y="336.8" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-3033303522-r6" x="173.6" y="336.8" textLength="24.8">-h</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-3033303522-r4" x="0" y="363.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-3033303522-r2" x="1488" y="363.2" textLength="12.4">
-</tspan></text>
+    <g class="terminal-4279732706-matrix">
+    <text class="terminal-4279732706-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4279732706-line-0)">
+</text><text class="terminal-4279732706-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4279732706-line-1)">Usage:&#160;</text><text class="terminal-4279732706-r1" x="97.6" y="44.4" textLength="427" clip-path="url(#terminal-4279732706-line-1)">breeze&#160;setup-autocomplete&#160;[OPTIONS]</text><text class="terminal-4279732706-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4279732706-line-1)">
+</text><text class="terminal-4279732706-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4279732706-line-2)">
+</text><text class="terminal-4279732706-r2" x="12.2" y="93.2" textLength="512.4" clip-path="url(#terminal-4279732706-line-3)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;commands.</text><text class="terminal-4279732706-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4279732706-line-3)">
+</text><text class="terminal-4279732706-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4279732706-line-4)">
+</text><text class="terminal-4279732706-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4279732706-line-5)">╭─</text><text class="terminal-4279732706-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4279732706-line-5)">&#160;Setup&#160;autocomplete&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4279732706-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4279732706-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4279732706-line-6)">│</text><text class="terminal-4279732706-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4279732706-line-6)">-</text><text class="terminal-4279732706-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-4279732706-line-6)">-force</text><text class="terminal-4279732706-r6" x="134.2" y="166.4" textLength="24.4" clip-path="url(#terminal-42 [...]
+</text><text class="terminal-4279732706-r4" x="0" y="190.8" textLength="1464" clip-path="url(#terminal-4279732706-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4279732706-r2" x="1464" y="190.8" textLength="12.2" clip-path="url(#terminal-4279732706-line-7)">
+</text><text class="terminal-4279732706-r4" x="0" y="215.2" textLength="24.4" clip-path="url(#terminal-4279732706-line-8)">╭─</text><text class="terminal-4279732706-r4" x="24.4" y="215.2" textLength="1415.2" clip-path="url(#terminal-4279732706-line-8)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4279732706-r4" x="1439.6" y="215.2" textLength="24.4" clip-path="url(#terminal-42797 [...]
+</text><text class="terminal-4279732706-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4279732706-line-9)">│</text><text class="terminal-4279732706-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4279732706-line-9)">-</text><text class="terminal-4279732706-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-4279732706-line-9)">-answer</text><text class="terminal-4279732706-r6" x="158.6" y="239.6" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4279732706-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4279732706-line-10)">│</text><text class="terminal-4279732706-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-4279732706-line-10)">-</text><text class="terminal-4279732706-r5" x="36.6" y="264" textLength="48.8" clip-path="url(#terminal-4279732706-line-10)">-dry</text><text class="terminal-4279732706-r5" x="85.4" y="264" textLength="48.8" clip-path="url(#terminal-4279732706 [...]
+</text><text class="terminal-4279732706-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4279732706-line-11)">│</text><text class="terminal-4279732706-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-4279732706-line-11)">-</text><text class="terminal-4279732706-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-4279732706-line-11)">-verbose</text><text class="terminal-4279732706-r6" x="158.6" y="288.4" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-4279732706-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4279732706-line-12)">│</text><text class="terminal-4279732706-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-4279732706-line-12)">-</text><text class="terminal-4279732706-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-4279732706-line-12)">-help</text><text class="terminal-4279732706-r6" x="158.6" y="312.8" textLength="24.4" clip-path="url(#terminal-42 [...]
+</text><text class="terminal-4279732706-r4" x="0" y="337.2" textLength="1464" clip-path="url(#terminal-4279732706-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4279732706-r2" x="1464" y="337.2" textLength="12.2" clip-path="url(#terminal-4279732706-line-13)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-shell.svg b/images/breeze/output-shell.svg
index c4a63835bc..f279eab2d7 100644
--- a/images/breeze/output-shell.svg
+++ b/images/breeze/output-shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 1280.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1123.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,80 +19,218 @@
         font-weight: 700;
     }
 
-    .terminal-2045188022-matrix {
+    .terminal-2317354236-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2045188022-title {
+    .terminal-2317354236-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2045188022-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2045188022-r2 { fill: #c5c8c6 }
-.terminal-2045188022-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2045188022-r4 { fill: #868887 }
-.terminal-2045188022-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2045188022-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2045188022-r7 { fill: #8d7b39 }
+    .terminal-2317354236-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2317354236-r2 { fill: #c5c8c6 }
+.terminal-2317354236-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2317354236-r4 { fill: #868887 }
+.terminal-2317354236-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2317354236-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2317354236-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="1240" rx="12"/><text class="terminal-2045188022-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: shell</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2317354236-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1072.6" />
+    </clipPath>
+    <clipPath id="terminal-2317354236-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2317354236-line-42">
+    <rect x="0" y="1026.3" 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="1121.6" rx="8"/><text class="terminal-2317354236-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;shell</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2317354236-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2045188022-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2045188022-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2045188022-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2045188022-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2045188022-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...&#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;&# [...]
-</tspan><tspan class="terminal-2045188022-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2045188022-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="99.2" textLength="1463.2">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.&#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 [...]
-</tspan><tspan class="terminal-2045188022-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="152" textLength="1488">╭─&#160;Basic&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2045188022-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="178.4" textLength="99.2">--python</tspan><tspan class="terminal-2045188022-r2" x="136.4" y="178.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r6" x="322 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="204.8" textLength="359.6">&#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;</tspan><tspan class="terminal-2045188022-r4" x="372" y="204.8" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="231.2" textLength="111.6">--backend</tspan><tspan class="terminal-2045188022-r2" x="148.8" y="231.2" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r6" x="322.4 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="257.6" textLength="223.2">--postgres-version</tspan><tspan class="terminal-2045188022-r2" x="260.4" y="257.6" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r6" x="322.4" y="257.6" textLength="24.8">-P</tspan><tspan c [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="284" textLength="186">--mysql-version</tspan><tspan class="terminal-2045188022-r2" x="223.2" y="284" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r6" x="322.4" y="284" textLength="24.8">-M</tspan><ts [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="310.4" textLength="186">--mssql-version</tspan><tspan class="terminal-2045188022-r2" x="223.2" y="310.4" textLength="99.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r6" x="322.4" y="310.4" textLength="24.8">-S< [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="336.8" textLength="161.2">--integration</tspan><tspan class="terminal-2045188022-r2" x="198.4" y="336.8" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r2" x="322.4" y="336.8" textLength [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="363.2" textLength="359.6">&#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;</tspan><tspan class="terminal-2045188022-r7" x="372" y="363.2" textLength="1078.8">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openlda [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="389.6" textLength="359.6">&#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;</tspan><tspan class="terminal-2045188022-r7" x="372" y="389.6" textLength="1078.8">all)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="416" textLength="260.4">--forward-credentials</tspan><tspan class="terminal-2045188022-r2" x="297.6" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r6" x="322.4" y="416" textLength="24.8">-f</tspan><tspan class="terminal-20451880 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="442.4" textLength="124">--db-reset</tspan><tspan class="terminal-2045188022-r2" x="161.2" y="442.4" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r6" x="322.4" y="44 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="468.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2045188022-r2" x="1488" y="468.8" textLength="12.4">
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="495.2" textLength="1488">╭─&#160;Advanced&#160;flag&#160;for&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2045188022-r2" x="1488" y="495.2" textLength="12.4">
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="521.6" textLength="260.4">--use-airflow-version</tspan><tspan class="terminal-2045188022-r2" x="297.6" y="521.6" textLength="1178">&#160;&#160;&#160;&#160;&#160;&#160;&#160;Use&#160;(reinstall&#160;at&#160;entry)&#160;Airflow&#160;version&#160;from&#160;PyPI [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="548" textLength="1463.2">&#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;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="574.4" textLength="954.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;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</tspan><tspan class="terminal-2045188022-r5" x="967.2" y="574.4" text [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="600.8" textLength="372">&#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;</tspan><tspan class="terminal-2045188022-r7" x="384.4" y="600.8" textLength="1066.4">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airfl [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="627.2" textLength="198.4">--airflow-extras</tspan><tspan class="terminal-2045188022-r2" x="235.6" y="627.2" textLength="533.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Airflow&#160;extras&#160;to&#160;install&#160;when&#160;</t [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="653.6" textLength="297.6">--use-packages-from-dist</tspan><tspan class="terminal-2045188022-r2" x="334.8" y="653.6" textLength="396.8">&#160;&#160;&#160;&#160;Install&#160;all&#160;found&#160;packages&#160;(</tspan><tspan class="terminal-2045188022-r5" x="73 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="680" textLength="1463.2">&#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;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="706.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="706.4" textLength="198.4">--package-format</tspan><tspan class="terminal-2045188022-r2" x="235.6" y="706.4" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r2" x="384.4" y=" [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="732.8" textLength="372">&#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;</tspan><tspan class="terminal-2045188022-r4" x="384.4" y="732.8" textLength="669.6">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="759.2" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="759.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="759.2" textLength="161.2">--force-build</tspan><tspan class="terminal-2045188022-r2" x="198.4" y="759.2" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r2"  [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="785.6" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="785.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="785.6" textLength="186">--mount-sources</tspan><tspan class="terminal-2045188022-r2" x="223.2" y="785.6" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r2" x="384.4"  [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="812" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="812" textLength="372">&#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;</tspan><tspan class="terminal-2045188022-r7" x="384.4" y="812" textLength="855.6">(selected&#160;|&#160;all&#160;|&#160;none)&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="838.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="838.4" textLength="372">&#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;</tspan><tspan class="terminal-2045188022-r4" x="384.4" y="838.4" textLength="855.6">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="864.8" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="864.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="864.8" textLength="198.4">--debian-version</tspan><tspan class="terminal-2045188022-r2" x="235.6" y="864.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r2" x="384.4" y=" [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="891.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2045188022-r2" x="1488" y="891.2" textLength="12.4">
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="917.6" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2045188022-r2" x="1488" y="917.6" textLength="12.4">
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="944" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="944" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="944" textLength="111.6">--verbose</tspan><tspan class="terminal-2045188022-r2" x="148.8" y="944" textLength="297.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</ [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="970.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="970.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="970.4" textLength="111.6">--dry-run</tspan><tspan class="terminal-2045188022-r2" x="148.8" y="970.4" textLength="297.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="996.8" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="996.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="996.8" textLength="235.6">--github-repository</tspan><tspan class="terminal-2045188022-r2" x="272.8" y="996.8" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2045188022-r6 [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="1023.2" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="1023.2" textLength="483.6">&#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;</tspan><tspan class="terminal-2045188022-r4" x="496" y="1023.2" textLength="595.2">[defaul [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="1049.6" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="1049.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="1049.6" textLength="384.4">--airflow-constraints-reference</tspan><tspan class="terminal-2045188022-r2" x="421.6" y="1049.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r2" x="446.4" y="1049.6" textLength="24.8">&#160;&#160;</ts [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="1076" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="1076" textLength="1463.2">&#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;specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;f [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="1102.4" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="1102.4" textLength="483.6">&#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;</tspan><tspan class="terminal-2045188022-r7" x="496" y="1102.4" textLength="954.8">(TEXT)& [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="1128.8" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="1128.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="1128.8" textLength="99.2">--answer</tspan><tspan class="terminal-2045188022-r2" x="136.4" y="1128.8" textLength="310">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="1155.2" textLength="12.4">│</tspan><tspan class="terminal-2045188022-r2" x="12.4" y="1155.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2045188022-r5" x="37.2" y="1155.2" textLength="74.4">--help</tspan><tspan class="terminal-2045188022-r2" x="111.6" y="1155.2" textLength="334.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-2045188022-r4" x="0" y="1181.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2045188022-r2" x="1488" y="1181.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2317354236-matrix">
+    <text class="terminal-2317354236-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2317354236-line-0)">
+</text><text class="terminal-2317354236-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-1)">Usage:&#160;</text><text class="terminal-2317354236-r1" x="97.6" y="44.4" textLength="463.6" clip-path="url(#terminal-2317354236-line-1)">breeze&#160;shell&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-2317354236-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-1)">
+</text><text class="terminal-2317354236-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-2)">
+</text><text class="terminal-2317354236-r2" x="12.2" y="93.2" textLength="1061.4" clip-path="url(#terminal-2317354236-line-3)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&#160;the&#160;default&#160;command&#160;use&#160;when&#160;no&#160;other&#160;is&#160;selected.</text><text class="terminal-2317354236-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-3)">
+</text><text class="terminal-2317354236-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-4)">
+</text><text class="terminal-2317354236-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2317354236-line-5)">╭─</text><text class="terminal-2317354236-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2317354236-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2317354236-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-231735 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-6)">│</text><text class="terminal-2317354236-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-6)">-</text><text class="terminal-2317354236-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-6)">-python</text><text class="terminal-2317354236-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-231 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-7)">│</text><text class="terminal-2317354236-r4" x="353.8" y="190.8" textLength="732" clip-path="url(#terminal-2317354236-line-7)">[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-2317354236-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-8)">│</text><text class="terminal-2317354236-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-8)">-</text><text class="terminal-2317354236-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-2317354236-line-8)">-backend</text><text class="terminal-2317354236-r6" x="305" y="215.2" textLength="24.4" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-9)">│</text><text class="terminal-2317354236-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-9)">-</text><text class="terminal-2317354236-r5" x="36.6" y="239.6" textLength="109.8" clip-path="url(#terminal-2317354236-line-9)">-postgres</text><text class="terminal-2317354236-r5" x="146.4" y="239.6" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-2317354236-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2317354236-line-10)">│</text><text class="terminal-2317354236-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-2317354236-line-10)">-</text><text class="terminal-2317354236-r5" x="36.6" y="264" textLength="73.2" clip-path="url(#terminal-2317354236-line-10)">-mysql</text><text class="terminal-2317354236-r5" x="109.8" y="264" textLength="97.6" clip-path="url(#terminal-2317354 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-11)">│</text><text class="terminal-2317354236-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-11)">-</text><text class="terminal-2317354236-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-2317354236-line-11)">-mssql</text><text class="terminal-2317354236-r5" x="109.8" y="288.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2317354236-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-12)">│</text><text class="terminal-2317354236-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-12)">-</text><text class="terminal-2317354236-r5" x="36.6" y="312.8" textLength="146.4" clip-path="url(#terminal-2317354236-line-12)">-integration</text><text class="terminal-2317354236-r2" x="353.8" y="312.8" textLength="1085.8" clip-path="url( [...]
+</text><text class="terminal-2317354236-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-13)">│</text><text class="terminal-2317354236-r7" x="353.8" y="337.2" textLength="1085.8" clip-path="url(#terminal-2317354236-line-13)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-2317354236-r4" x="1 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-14)">│</text><text class="terminal-2317354236-r7" x="353.8" y="361.6" textLength="1085.8" clip-path="url(#terminal-2317354236-line-14)">all)&#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-2317354236-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2317354236-line-15)">│</text><text class="terminal-2317354236-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2317354236-line-15)">-</text><text class="terminal-2317354236-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-2317354236-line-15)">-forward</text><text class="terminal-2317354236-r5" x="134.2" y="386" textLength="146.4" clip-path="url(#terminal-2317 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-16)">│</text><text class="terminal-2317354236-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-16)">-</text><text class="terminal-2317354236-r5" x="36.6" y="410.4" textLength="36.6" clip-path="url(#terminal-2317354236-line-16)">-db</text><text class="terminal-2317354236-r5" x="73.2" y="410.4" textLength="73.2" clip-path="url(#terminal-231 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-2317354236-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2317354236-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-17)">
+</text><text class="terminal-2317354236-r4" x="0" y="459.2" textLength="24.4" clip-path="url(#terminal-2317354236-line-18)">╭─</text><text class="terminal-2317354236-r4" x="24.4" y="459.2" textLength="1415.2" clip-path="url(#terminal-2317354236-line-18)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2317354236-r4" x="1439.6" y="459.2" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-2317354236-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-19)">│</text><text class="terminal-2317354236-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-19)">-</text><text class="terminal-2317354236-r5" x="36.6" y="483.6" textLength="48.8" clip-path="url(#terminal-2317354236-line-19)">-use</text><text class="terminal-2317354236-r5" x="85.4" y="483.6" textLength="195.2" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2317354236-line-20)">│</text><text class="terminal-2317354236-r2" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-2317354236-line-20)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-2317354236-r4" x="1451.8" y="508" textLength="12.2" [...]
+</text><text class="terminal-2317354236-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-21)">│</text><text class="terminal-2317354236-r2" x="366" y="532.4" textLength="573.4" clip-path="url(#terminal-2317354236-line-21)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-2317354236-r5" x="939.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-21)">-</text><text class="terminal-23173 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-22)">│</text><text class="terminal-2317354236-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-2317354236-line-22)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-2317354236-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-23)">│</text><text class="terminal-2317354236-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-23)">-</text><text class="terminal-2317354236-r5" x="36.6" y="581.2" textLength="97.6" clip-path="url(#terminal-2317354236-line-23)">-airflow</text><text class="terminal-2317354236-r5" x="134.2" y="581.2" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2317354236-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-24)">│</text><text class="terminal-2317354236-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-24)">-</text><text class="terminal-2317354236-r5" x="36.6" y="605.6" textLength="48.8" clip-path="url(#terminal-2317354236-line-24)">-use</text><text class="terminal-2317354236-r5" x="85.4" y="605.6" textLength="231.8" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2317354236-line-25)">│</text><text class="terminal-2317354236-r2" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-2317354236-line-25)">entering&#160;breeze.&#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-2317354236-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-26)">│</text><text class="terminal-2317354236-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-26)">-</text><text class="terminal-2317354236-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-2317354236-line-26)">-package</text><text class="terminal-2317354236-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-2317354236-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-27)">│</text><text class="terminal-2317354236-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-27)">-</text><text class="terminal-2317354236-r5" x="36.6" y="678.8" textLength="73.2" clip-path="url(#terminal-2317354236-line-27)">-force</text><text class="terminal-2317354236-r5" x="109.8" y="678.8" textLength="73.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2317354236-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-28)">│</text><text class="terminal-2317354236-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-28)">-</text><text class="terminal-2317354236-r5" x="36.6" y="703.2" textLength="73.2" clip-path="url(#terminal-2317354236-line-28)">-mount</text><text class="terminal-2317354236-r5" x="109.8" y="703.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2317354236-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-29)">│</text><text class="terminal-2317354236-r7" x="366" y="727.6" textLength="841.8" clip-path="url(#terminal-2317354236-line-29)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-2317354236-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2317354236-line-30)">│</text><text class="terminal-2317354236-r4" x="366" y="752" textLength="841.8" clip-path="url(#terminal-2317354236-line-30)">[default:&#160;selected]&#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;&#16 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-31)">│</text><text class="terminal-2317354236-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-31)">-</text><text class="terminal-2317354236-r5" x="36.6" y="776.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-31)">-debian</text><text class="terminal-2317354236-r5" x="122" y="776.4" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-2317354236-r4" x="0" y="800.8" textLength="1464" clip-path="url(#terminal-2317354236-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2317354236-r2" x="1464" y="800.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-32)">
+</text><text class="terminal-2317354236-r4" x="0" y="825.2" textLength="24.4" clip-path="url(#terminal-2317354236-line-33)">╭─</text><text class="terminal-2317354236-r4" x="24.4" y="825.2" textLength="1415.2" clip-path="url(#terminal-2317354236-line-33)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2317354236-r4" x="1439.6" y="825.2" textLength="24.4" clip-path="url(#terminal-231 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-34)">│</text><text class="terminal-2317354236-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-34)">-</text><text class="terminal-2317354236-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-2317354236-line-34)">-verbose</text><text class="terminal-2317354236-r6" x="427" y="849.6" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-2317354236-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2317354236-line-35)">│</text><text class="terminal-2317354236-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-2317354236-line-35)">-</text><text class="terminal-2317354236-r5" x="36.6" y="874" textLength="48.8" clip-path="url(#terminal-2317354236-line-35)">-dry</text><text class="terminal-2317354236-r5" x="85.4" y="874" textLength="48.8" clip-path="url(#terminal-2317354236 [...]
+</text><text class="terminal-2317354236-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-36)">│</text><text class="terminal-2317354236-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-36)">-</text><text class="terminal-2317354236-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-36)">-github</text><text class="terminal-2317354236-r5" x="122" y="898.4" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2317354236-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-37)">│</text><text class="terminal-2317354236-r4" x="475.8" y="922.8" textLength="585.6" clip-path="url(#terminal-2317354236-line-37)">[default:&#160;apache/airflow]&#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-2317354236-r4" x="1451.8" y="922.8" textL [...]
+</text><text class="terminal-2317354236-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-38)">│</text><text class="terminal-2317354236-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-38)">-</text><text class="terminal-2317354236-r5" x="36.6" y="947.2" textLength="97.6" clip-path="url(#terminal-2317354236-line-38)">-airflow</text><text class="terminal-2317354236-r5" x="134.2" y="947.2" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-2317354236-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2317354236-line-39)">│</text><text class="terminal-2317354236-r2" x="475.8" y="971.6" textLength="963.8" clip-path="url(#terminal-2317354236-line-39)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-2317354236-r4" x="1451.8" y="971.6" textLength="12.2" clip-path=" [...]
+</text><text class="terminal-2317354236-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-2317354236-line-40)">│</text><text class="terminal-2317354236-r7" x="475.8" y="996" textLength="963.8" clip-path="url(#terminal-2317354236-line-40)">(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-2317354236-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-41)">│</text><text class="terminal-2317354236-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-2317354236-line-41)">-</text><text class="terminal-2317354236-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-2317354236-line-41)">-answer</text><text class="terminal-2317354236-r6" x="427" y="1020.4" textLength="24.4" clip-path="url(#termi [...]
+</text><text class="terminal-2317354236-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-42)">│</text><text class="terminal-2317354236-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2317354236-line-42)">-</text><text class="terminal-2317354236-r5" x="36.6" y="1044.8" textLength="61" clip-path="url(#terminal-2317354236-line-42)">-help</text><text class="terminal-2317354236-r6" x="427" y="1044.8" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-2317354236-r4" x="0" y="1069.2" textLength="1464" clip-path="url(#terminal-2317354236-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2317354236-r2" x="1464" y="1069.2" textLength="12.2" clip-path="url(#terminal-2317354236-line-43)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-start-airflow.svg b/images/breeze/output-start-airflow.svg
index 6f305e940e..159eec8cb2 100644
--- a/images/breeze/output-start-airflow.svg
+++ b/images/breeze/output-start-airflow.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 1332.8000000000002" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1172.3999999999999" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,82 +19,226 @@
         font-weight: 700;
     }
 
-    .terminal-1961843149-matrix {
+    .terminal-231556883-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1961843149-title {
+    .terminal-231556883-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1961843149-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1961843149-r2 { fill: #c5c8c6 }
-.terminal-1961843149-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1961843149-r4 { fill: #868887 }
-.terminal-1961843149-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1961843149-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1961843149-r7 { fill: #8d7b39 }
+    .terminal-231556883-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-231556883-r2 { fill: #c5c8c6 }
+.terminal-231556883-r3 { fill: #d0b344;font-weight: bold }
+.terminal-231556883-r4 { fill: #868887 }
+.terminal-231556883-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-231556883-r6 { fill: #98a84b;font-weight: bold }
+.terminal-231556883-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="1292.8" rx="12"/><text class="terminal-1961843149-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: start-airflow</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-231556883-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1121.3999999999999" />
+    </clipPath>
+    <clipPath id="terminal-231556883-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-42">
+    <rect x="0" y="1026.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-231556883-line-44">
+    <rect x="0" y="1075.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="1170.4" rx="8"/><text class="terminal-231556883-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;start-airflow</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-231556883-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-1961843149-matrix" font-variant="east-asian-width-values"><tspan class="terminal-1961843149-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1961843149-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-1961843149-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-1961843149-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...&#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; [...]
-</tspan><tspan class="terminal-1961843149-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-1961843149-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="99.2" textLength="1463.2">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.&#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; [...]
-</tspan><tspan class="terminal-1961843149-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="152" textLength="1488">╭─&#160;Basic&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1961843149-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="178.4" textLength="99.2">--python</tspan><tspan class="terminal-1961843149-r2" x="136.4" y="178.4" textLength="248">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class=" [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="204.8" textLength="421.6">&#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;</tspan><tspan class="terminal-1961843149-r7" x="434" y="204.8" textLength="744">(&gt;3.7&lt;&#160;|&#160;3.8&#160;|&#160;3 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="231.2" textLength="421.6">&#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;</tspan><tspan class="terminal-1961843149-r4" x="434" y="231.2" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="257.6" textLength="235.6">--load-example-dags</tspan><tspan class="terminal-1961843149-r2" x="272.8" y="257.6" textLength="111.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r6" x="384.4" y="257.6" textLeng [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="284" textLength="322.4">--load-default-connections</tspan><tspan class="terminal-1961843149-r2" x="359.6" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r6" x="384.4" y="284" textLength="24.8">-c</tspan><tspan class="terminal-196 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="310.4" textLength="111.6">--backend</tspan><tspan class="terminal-1961843149-r2" x="148.8" y="310.4" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="te [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="336.8" textLength="223.2">--postgres-version</tspan><tspan class="terminal-1961843149-r2" x="260.4" y="336.8" textLength="124">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r6" x="384.4" y="336.8" textL [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="363.2" textLength="186">--mysql-version</tspan><tspan class="terminal-1961843149-r2" x="223.2" y="363.2" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r6" x="384.4"  [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="389.6" textLength="186">--mssql-version</tspan><tspan class="terminal-1961843149-r2" x="223.2" y="389.6" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r6" x="384.4"  [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="416" textLength="161.2">--integration</tspan><tspan class="terminal-1961843149-r2" x="198.4" y="416" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r2" x="384.4 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="442.4" textLength="421.6">&#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;</tspan><tspan class="terminal-1961843149-r7" x="434" y="442.4" textLength="1016.8">(cassandra&#160;|&#160;kerberos&#160;|& [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="468.8" textLength="421.6">&#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;</tspan><tspan class="terminal-1961843149-r7" x="434" y="468.8" textLength="1016.8">trino&#160;|&#160;all)&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="495.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="495.2" textLength="260.4">--forward-credentials</tspan><tspan class="terminal-1961843149-r2" x="297.6" y="495.2" textLength="86.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r6" x="384.4" y="495.2" textLength="24.8">- [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="521.6" textLength="124">--db-reset</tspan><tspan class="terminal-1961843149-r2" x="161.2" y="521.6" textLength="223.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="548" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1961843149-r2" x="1488" y="548" textLength="12.4">
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="574.4" textLength="1488">╭─&#160;Advanced&#160;flag&#160;for&#160;running&#160;──────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1961843149-r2" x="1488" y="574.4" textLength="12.4">
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="600.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="600.8" textLength="260.4">--use-airflow-version</tspan><tspan class="terminal-1961843149-r2" x="297.6" y="600.8" textLength="1178">&#160;&#160;&#160;&#160;&#160;&#160;&#160;Use&#160;(reinstall&#160;at&#160;entry)&#160;Airflow&#160;version&#160;from&#160;PyPI [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="627.2" textLength="1463.2">&#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;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages& [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="653.6" textLength="954.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;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</tspan><tspan class="terminal-1961843149-r5" x="967.2" y="653.6" text [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="680" textLength="372">&#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;</tspan><tspan class="terminal-1961843149-r7" x="384.4" y="680" textLength="1066.4">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_ver [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="706.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="706.4" textLength="198.4">--airflow-extras</tspan><tspan class="terminal-1961843149-r2" x="235.6" y="706.4" textLength="533.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Airflow&#160;extras&#160;to&#160;install&#160;when&#160;</t [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="732.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="732.8" textLength="297.6">--use-packages-from-dist</tspan><tspan class="terminal-1961843149-r2" x="334.8" y="732.8" textLength="396.8">&#160;&#160;&#160;&#160;Install&#160;all&#160;found&#160;packages&#160;(</tspan><tspan class="terminal-1961843149-r5" x="73 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="759.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="759.2" textLength="1463.2">&#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;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="785.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="785.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="785.6" textLength="198.4">--package-format</tspan><tspan class="terminal-1961843149-r2" x="235.6" y="785.6" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r2" x="384.4" y=" [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="812" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="812" textLength="372">&#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;</tspan><tspan class="terminal-1961843149-r4" x="384.4" y="812" textLength="669.6">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="838.4" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="838.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="838.4" textLength="161.2">--force-build</tspan><tspan class="terminal-1961843149-r2" x="198.4" y="838.4" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r2"  [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="864.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="864.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="864.8" textLength="186">--mount-sources</tspan><tspan class="terminal-1961843149-r2" x="223.2" y="864.8" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1961843149-r2" x="384.4"  [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="891.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="891.2" textLength="372">&#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;</tspan><tspan class="terminal-1961843149-r7" x="384.4" y="891.2" textLength="855.6">(selected&#160;|&#160;all&#160;|&#160;none)&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="917.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="917.6" textLength="372">&#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;</tspan><tspan class="terminal-1961843149-r4" x="384.4" y="917.6" textLength="855.6">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="944" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1961843149-r2" x="1488" y="944" textLength="12.4">
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="970.4" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-1961843149-r2" x="1488" y="970.4" textLength="12.4">
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="996.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="996.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="996.8" textLength="111.6">--dry-run</tspan><tspan class="terminal-1961843149-r2" x="148.8" y="996.8" textLength="297.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1023.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1023.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="1023.2" textLength="235.6">--github-repository</tspan><tspan class="terminal-1961843149-r2" x="272.8" y="1023.2" textLength="173.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-196184314 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1049.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1049.6" textLength="483.6">&#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;</tspan><tspan class="terminal-1961843149-r4" x="496" y="1049.6" textLength="595.2">[defaul [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1076" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1076" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="1076" textLength="384.4">--airflow-constraints-reference</tspan><tspan class="terminal-1961843149-r2" x="421.6" y="1076" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r2" x="446.4" y="1076" textLength="24.8">&#160;&#160;</tspan><tspan [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1102.4" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1102.4" textLength="1463.2">&#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;specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#1 [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1128.8" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1128.8" textLength="483.6">&#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;</tspan><tspan class="terminal-1961843149-r7" x="496" y="1128.8" textLength="954.8">(TEXT)& [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1155.2" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1155.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="1155.2" textLength="99.2">--answer</tspan><tspan class="terminal-1961843149-r2" x="136.4" y="1155.2" textLength="310">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1181.6" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1181.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="1181.6" textLength="111.6">--verbose</tspan><tspan class="terminal-1961843149-r2" x="148.8" y="1181.6" textLength="297.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1208" textLength="12.4">│</tspan><tspan class="terminal-1961843149-r2" x="12.4" y="1208" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-1961843149-r5" x="37.2" y="1208" textLength="74.4">--help</tspan><tspan class="terminal-1961843149-r2" x="111.6" y="1208" textLength="334.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;&# [...]
-</tspan><tspan class="terminal-1961843149-r4" x="0" y="1234.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-1961843149-r2" x="1488" y="1234.4" textLength="12.4">
-</tspan></text>
+    <g class="terminal-231556883-matrix">
+    <text class="terminal-231556883-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-231556883-line-0)">
+</text><text class="terminal-231556883-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-231556883-line-1)">Usage:&#160;</text><text class="terminal-231556883-r1" x="97.6" y="44.4" textLength="561.2" clip-path="url(#terminal-231556883-line-1)">breeze&#160;start-airflow&#160;[OPTIONS]&#160;[EXTRA_ARGS]...</text><text class="terminal-231556883-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-231556883-line-1)">
+</text><text class="terminal-231556883-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-231556883-line-2)">
+</text><text class="terminal-231556883-r2" x="12.2" y="93.2" textLength="1000.4" clip-path="url(#terminal-231556883-line-3)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;components&#160;in&#160;the&#160;tmux&#160;session.</text><text class="terminal-231556883-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-231556883-line-3)">
+</text><text class="terminal-231556883-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-231556883-line-4)">
+</text><text class="terminal-231556883-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-231556883-line-5)">╭─</text><text class="terminal-231556883-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-231556883-line-5)">&#160;Basic&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-231556883-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-231556883-l [...]
+</text><text class="terminal-231556883-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-231556883-line-6)">│</text><text class="terminal-231556883-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-231556883-line-6)">-</text><text class="terminal-231556883-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-231556883-line-6)">-python</text><text class="terminal-231556883-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#terminal-231556883- [...]
+</text><text class="terminal-231556883-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-231556883-line-7)">│</text><text class="terminal-231556883-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#terminal-231556883-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;&#16 [...]
+</text><text class="terminal-231556883-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-231556883-line-8)">│</text><text class="terminal-231556883-r4" x="414.8" y="215.2" textLength="732" clip-path="url(#terminal-231556883-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;&#160 [...]
+</text><text class="terminal-231556883-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-231556883-line-9)">│</text><text class="terminal-231556883-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-231556883-line-9)">-</text><text class="terminal-231556883-r5" x="36.6" y="239.6" textLength="61" clip-path="url(#terminal-231556883-line-9)">-load</text><text class="terminal-231556883-r5" x="97.6" y="239.6" textLength="158.6" clip-path="url(#terminal-231556883-li [...]
+</text><text class="terminal-231556883-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-231556883-line-10)">│</text><text class="terminal-231556883-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-231556883-line-10)">-</text><text class="terminal-231556883-r5" x="36.6" y="264" textLength="61" clip-path="url(#terminal-231556883-line-10)">-load</text><text class="terminal-231556883-r5" x="97.6" y="264" textLength="244" clip-path="url(#terminal-231556883-line-10)" [...]
+</text><text class="terminal-231556883-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-231556883-line-11)">│</text><text class="terminal-231556883-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-231556883-line-11)">-</text><text class="terminal-231556883-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-231556883-line-11)">-backend</text><text class="terminal-231556883-r6" x="366" y="288.4" textLength="24.4" clip-path="url(#terminal-231556 [...]
+</text><text class="terminal-231556883-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-231556883-line-12)">│</text><text class="terminal-231556883-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-231556883-line-12)">-</text><text class="terminal-231556883-r5" x="36.6" y="312.8" textLength="109.8" clip-path="url(#terminal-231556883-line-12)">-postgres</text><text class="terminal-231556883-r5" x="146.4" y="312.8" textLength="97.6" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-231556883-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-231556883-line-13)">│</text><text class="terminal-231556883-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-231556883-line-13)">-</text><text class="terminal-231556883-r5" x="36.6" y="337.2" textLength="73.2" clip-path="url(#terminal-231556883-line-13)">-mysql</text><text class="terminal-231556883-r5" x="109.8" y="337.2" textLength="97.6" clip-path="url(#terminal-231556 [...]
+</text><text class="terminal-231556883-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-231556883-line-14)">│</text><text class="terminal-231556883-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-231556883-line-14)">-</text><text class="terminal-231556883-r5" x="36.6" y="361.6" textLength="73.2" clip-path="url(#terminal-231556883-line-14)">-mssql</text><text class="terminal-231556883-r5" x="109.8" y="361.6" textLength="97.6" clip-path="url(#terminal-231556 [...]
+</text><text class="terminal-231556883-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-231556883-line-15)">│</text><text class="terminal-231556883-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-231556883-line-15)">-</text><text class="terminal-231556883-r5" x="36.6" y="386" textLength="146.4" clip-path="url(#terminal-231556883-line-15)">-integration</text><text class="terminal-231556883-r2" x="414.8" y="386" textLength="1024.8" clip-path="url(#terminal-23155 [...]
+</text><text class="terminal-231556883-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-231556883-line-16)">│</text><text class="terminal-231556883-r7" x="414.8" y="410.4" textLength="1024.8" clip-path="url(#terminal-231556883-line-16)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino</text><text class="terminal-231556883-r4" x="1451.8" y="410.4" textLength="1 [...]
+</text><text class="terminal-231556883-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-231556883-line-17)">│</text><text class="terminal-231556883-r7" x="414.8" y="434.8" textLength="1024.8" clip-path="url(#terminal-231556883-line-17)">|&#160;all)&#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-231556883-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-231556883-line-18)">│</text><text class="terminal-231556883-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-231556883-line-18)">-</text><text class="terminal-231556883-r5" x="36.6" y="459.2" textLength="97.6" clip-path="url(#terminal-231556883-line-18)">-forward</text><text class="terminal-231556883-r5" x="134.2" y="459.2" textLength="146.4" clip-path="url(#terminal-231 [...]
+</text><text class="terminal-231556883-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-231556883-line-19)">│</text><text class="terminal-231556883-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-231556883-line-19)">-</text><text class="terminal-231556883-r5" x="36.6" y="483.6" textLength="36.6" clip-path="url(#terminal-231556883-line-19)">-db</text><text class="terminal-231556883-r5" x="73.2" y="483.6" textLength="73.2" clip-path="url(#terminal-231556883- [...]
+</text><text class="terminal-231556883-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-231556883-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-231556883-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-231556883-line-20)">
+</text><text class="terminal-231556883-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-231556883-line-21)">╭─</text><text class="terminal-231556883-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-231556883-line-21)">&#160;Advanced&#160;flag&#160;for&#160;running&#160;─────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-231556883-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-231556883-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-231556883-line-22)">│</text><text class="terminal-231556883-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-231556883-line-22)">-</text><text class="terminal-231556883-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-231556883-line-22)">-use</text><text class="terminal-231556883-r5" x="85.4" y="556.8" textLength="195.2" clip-path="url(#terminal-23155688 [...]
+</text><text class="terminal-231556883-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-231556883-line-23)">│</text><text class="terminal-231556883-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-231556883-line-23)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-231556883-r4" x="1451.8" y="581.2" textLength="12.2 [...]
+</text><text class="terminal-231556883-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-231556883-line-24)">│</text><text class="terminal-231556883-r2" x="366" y="605.6" textLength="573.4" clip-path="url(#terminal-231556883-line-24)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-231556883-r5" x="939.4" y="605.6" textLength="12.2" clip-path="url(#terminal-231556883-line-24)">-</text><text class="terminal-231556883-r [...]
+</text><text class="terminal-231556883-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-231556883-line-25)">│</text><text class="terminal-231556883-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-231556883-line-25)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-231556883-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-231556883-line-26)">│</text><text class="terminal-231556883-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-231556883-line-26)">-</text><text class="terminal-231556883-r5" x="36.6" y="654.4" textLength="97.6" clip-path="url(#terminal-231556883-line-26)">-airflow</text><text class="terminal-231556883-r5" x="134.2" y="654.4" textLength="85.4" clip-path="url(#terminal-2315 [...]
+</text><text class="terminal-231556883-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-231556883-line-27)">│</text><text class="terminal-231556883-r5" x="24.4" y="678.8" textLength="12.2" clip-path="url(#terminal-231556883-line-27)">-</text><text class="terminal-231556883-r5" x="36.6" y="678.8" textLength="48.8" clip-path="url(#terminal-231556883-line-27)">-use</text><text class="terminal-231556883-r5" x="85.4" y="678.8" textLength="231.8" clip-path="url(#terminal-23155688 [...]
+</text><text class="terminal-231556883-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-231556883-line-28)">│</text><text class="terminal-231556883-r2" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-231556883-line-28)">entering&#160;breeze.&#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-231556883-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-231556883-line-29)">│</text><text class="terminal-231556883-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-231556883-line-29)">-</text><text class="terminal-231556883-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-231556883-line-29)">-package</text><text class="terminal-231556883-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#terminal-2315 [...]
+</text><text class="terminal-231556883-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-231556883-line-30)">│</text><text class="terminal-231556883-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-231556883-line-30)">-</text><text class="terminal-231556883-r5" x="36.6" y="752" textLength="73.2" clip-path="url(#terminal-231556883-line-30)">-force</text><text class="terminal-231556883-r5" x="109.8" y="752" textLength="73.2" clip-path="url(#terminal-231556883-line [...]
+</text><text class="terminal-231556883-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-231556883-line-31)">│</text><text class="terminal-231556883-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-231556883-line-31)">-</text><text class="terminal-231556883-r5" x="36.6" y="776.4" textLength="73.2" clip-path="url(#terminal-231556883-line-31)">-mount</text><text class="terminal-231556883-r5" x="109.8" y="776.4" textLength="97.6" clip-path="url(#terminal-231556 [...]
+</text><text class="terminal-231556883-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-231556883-line-32)">│</text><text class="terminal-231556883-r7" x="366" y="800.8" textLength="841.8" clip-path="url(#terminal-231556883-line-32)">(selected&#160;|&#160;all&#160;|&#160;none)&#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-231556883-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-231556883-line-33)">│</text><text class="terminal-231556883-r4" x="366" y="825.2" textLength="841.8" clip-path="url(#terminal-231556883-line-33)">[default:&#160;selected]&#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;&#16 [...]
+</text><text class="terminal-231556883-r4" x="0" y="849.6" textLength="1464" clip-path="url(#terminal-231556883-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-231556883-r2" x="1464" y="849.6" textLength="12.2" clip-path="url(#terminal-231556883-line-34)">
+</text><text class="terminal-231556883-r4" x="0" y="874" textLength="24.4" clip-path="url(#terminal-231556883-line-35)">╭─</text><text class="terminal-231556883-r4" x="24.4" y="874" textLength="1415.2" clip-path="url(#terminal-231556883-line-35)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-231556883-r4" x="1439.6" y="874" textLength="24.4" clip-path="url(#terminal-231556883-line [...]
+</text><text class="terminal-231556883-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-231556883-line-36)">│</text><text class="terminal-231556883-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-231556883-line-36)">-</text><text class="terminal-231556883-r5" x="36.6" y="898.4" textLength="48.8" clip-path="url(#terminal-231556883-line-36)">-dry</text><text class="terminal-231556883-r5" x="85.4" y="898.4" textLength="48.8" clip-path="url(#terminal-231556883 [...]
+</text><text class="terminal-231556883-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-231556883-line-37)">│</text><text class="terminal-231556883-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-231556883-line-37)">-</text><text class="terminal-231556883-r5" x="36.6" y="922.8" textLength="85.4" clip-path="url(#terminal-231556883-line-37)">-github</text><text class="terminal-231556883-r5" x="122" y="922.8" textLength="134.2" clip-path="url(#terminal-231556 [...]
+</text><text class="terminal-231556883-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-231556883-line-38)">│</text><text class="terminal-231556883-r4" x="475.8" y="947.2" textLength="585.6" clip-path="url(#terminal-231556883-line-38)">[default:&#160;apache/airflow]&#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-231556883-r4" x="1451.8" y="947.2" textLength [...]
+</text><text class="terminal-231556883-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-231556883-line-39)">│</text><text class="terminal-231556883-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-231556883-line-39)">-</text><text class="terminal-231556883-r5" x="36.6" y="971.6" textLength="97.6" clip-path="url(#terminal-231556883-line-39)">-airflow</text><text class="terminal-231556883-r5" x="134.2" y="971.6" textLength="268.4" clip-path="url(#terminal-231 [...]
+</text><text class="terminal-231556883-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-231556883-line-40)">│</text><text class="terminal-231556883-r2" x="475.8" y="996" textLength="963.8" clip-path="url(#terminal-231556883-line-40)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;</text><text class="terminal-231556883-r4" x="1451.8" y="996" textLength="12.2" clip-path="url(#termin [...]
+</text><text class="terminal-231556883-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-231556883-line-41)">│</text><text class="terminal-231556883-r7" x="475.8" y="1020.4" textLength="963.8" clip-path="url(#terminal-231556883-line-41)">(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-231556883-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-231556883-line-42)">│</text><text class="terminal-231556883-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-231556883-line-42)">-</text><text class="terminal-231556883-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-231556883-line-42)">-answer</text><text class="terminal-231556883-r6" x="427" y="1044.8" textLength="24.4" clip-path="url(#terminal-231 [...]
+</text><text class="terminal-231556883-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-231556883-line-43)">│</text><text class="terminal-231556883-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-231556883-line-43)">-</text><text class="terminal-231556883-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-231556883-line-43)">-verbose</text><text class="terminal-231556883-r6" x="427" y="1069.2" textLength="24.4" clip-path="url(#terminal-23 [...]
+</text><text class="terminal-231556883-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-231556883-line-44)">│</text><text class="terminal-231556883-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-231556883-line-44)">-</text><text class="terminal-231556883-r5" x="36.6" y="1093.6" textLength="61" clip-path="url(#terminal-231556883-line-44)">-help</text><text class="terminal-231556883-r6" x="427" y="1093.6" textLength="24.4" clip-path="url(#terminal-2315568 [...]
+</text><text class="terminal-231556883-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-231556883-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-231556883-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-231556883-line-45)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-static-checks.svg b/images/breeze/output-static-checks.svg
index e76f1a3f27..edbc2fee71 100644
--- a/images/breeze/output-static-checks.svg
+++ b/images/breeze/output-static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 1412.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,85 +19,234 @@
         font-weight: 700;
     }
 
-    .terminal-158108476-matrix {
+    .terminal-3465962952-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-158108476-title {
+    .terminal-3465962952-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-158108476-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-158108476-r2 { fill: #c5c8c6 }
-.terminal-158108476-r3 { fill: #d0b344;font-weight: bold }
-.terminal-158108476-r4 { fill: #868887 }
-.terminal-158108476-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-158108476-r6 { fill: #98a84b;font-weight: bold }
-.terminal-158108476-r7 { fill: #8d7b39 }
+    .terminal-3465962952-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3465962952-r2 { fill: #c5c8c6 }
+.terminal-3465962952-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3465962952-r4 { fill: #868887 }
+.terminal-3465962952-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3465962952-r6 { fill: #98a84b;font-weight: bold }
+.terminal-3465962952-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="1372" rx="12"/><text class="terminal-158108476-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: static-checks</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-3465962952-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
+    </clipPath>
+    <clipPath id="terminal-3465962952-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-29">
+    <rect x="0" y="709.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-30">
+    <rect x="0" y="733.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-34">
+    <rect x="0" y="831.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-35">
+    <rect x="0" y="855.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-36">
+    <rect x="0" y="879.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-37">
+    <rect x="0" y="904.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-41">
+    <rect x="0" y="1001.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-42">
+    <rect x="0" y="1026.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-43">
+    <rect x="0" y="1050.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-44">
+    <rect x="0" y="1075.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-45">
+    <rect x="0" y="1099.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3465962952-line-46">
+    <rect x="0" y="1123.9" 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="1219.2" rx="8"/><text class="terminal-3465962952-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-3465962952-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-158108476-matrix" font-variant="east-asian-width-values"><tspan class="terminal-158108476-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-158108476-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-158108476-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-158108476-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...&#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 [...]
-</tspan><tspan class="terminal-158108476-r1" x="0" y="72.8" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-158108476-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-158108476-r2" x="12.4" y="99.2" textLength="1463.2">Run&#160;static&#160;checks.&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-158108476-r2" x="0" y="125.6" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="152" textLength="1488">╭─&#160;Pre-commit&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-158108476-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-158108476-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="178.4" textLength="74.4">--type</tspan><tspan class="terminal-158108476-r2" x="111.6" y="178.4" textLength="223.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1581084 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="204.8" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="204.8" textLength="1066.4">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check- [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="231.2" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="231.2" textLength="1066.4">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-pro [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="257.6" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="257.6" textLength="1066.4">check-apache-license-rat&#160;|&#160;check-base-operator-usage&#16 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="284" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="284" textLength="1066.4">check-boring-cyborg-configuration&#160;|&#160;check-breeze-top-dependenc [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="310.4" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="310.4" textLength="1066.4">check-builtin-literals&#160;|&#160;check-changelog-has-no-duplicat [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="336.8" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="336.8" textLength="1066.4">check-daysago-import-from-utils&#160;|&#160;check-docstring-param- [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="363.2" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="363.2" textLength="1066.4">check-executables-have-shebangs&#160;|&#160;check-extra-packages-r [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="389.6" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="389.6" textLength="1066.4">|&#160;check-for-inclusive-language&#160;|&#160;check-hooks-apply& [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="416" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="416" textLength="1066.4">check-incorrect-use-of-LoggingMixin&#160;|&#160;check-integrations-are-c [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="442.4" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="442.4" textLength="1066.4">check-merge-conflict&#160;|&#160;check-newsfragments-are-valid&#16 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="468.8" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="468.8" textLength="1066.4">check-no-providers-in-core-examples&#160;|&#160;check-no-relative- [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="495.2" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="495.2" textLength="1066.4">check-persist-credentials-disabled-in-github-workflows&#160;|&#160 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="521.6" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="521.6" textLength="1066.4">check-pre-commit-information-consistent&#160;|&#160;check-provide- [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="548" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="548" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="548" textLength="1066.4">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing& [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="574.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="574.4" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="574.4" textLength="1066.4">check-providers-subpackages-init-file-exist&#160;|&#160;check-pyde [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="600.8" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="600.8" textLength="1066.4">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-ht [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="627.2" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="627.2" textLength="1066.4">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tes [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="653.6" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="653.6" textLength="1066.4">codespell&#160;|&#160;debug-statements&#160;|&#160;detect-private- [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="680" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="680" textLength="1066.4">fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#16 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="706.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="706.4" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="706.4" textLength="1066.4">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="732.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="732.8" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="732.8" textLength="1066.4">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openap [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="759.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="759.2" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="759.2" textLength="1066.4">pretty-format-json&#160;|&#160;pydocstyle&#160;|&#160;python-no-lo [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="785.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="785.6" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="785.6" textLength="1066.4">run-flake8&#160;|&#160;run-mypy&#160;|&#160;run-shellcheck&#160;|& [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="812" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="812" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="812" textLength="1066.4">|&#160;update-breeze-file&#160;|&#160;update-breeze-readme-config-hash&# [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="838.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="838.4" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="838.4" textLength="1066.4">update-in-the-wild-to-be-sorted&#160;|&#160;update-inlined-dockerf [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="864.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="864.8" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="864.8" textLength="1066.4">update-local-yml-file&#160;|&#160;update-migration-references&#160 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="891.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="891.2" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="891.2" textLength="1066.4">update-setup-cfg-file&#160;|&#160;update-spelling-wordlist-to-be-s [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="917.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="917.6" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="917.6" textLength="1066.4">update-supported-versions&#160;|&#160;update-vendored-in-k8s-json- [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="944" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="944" textLength="372">&#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;</tspan><tspan class="terminal-158108476-r7" x="384.4" y="944" textLength="1066.4">yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="970.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="970.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="970.4" textLength="74.4">--file</tspan><tspan class="terminal-158108476-r2" x="111.6" y="970.4" textLength="223.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-1581084 [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="996.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="996.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="996.8" textLength="136.4">--all-files</tspan><tspan class="terminal-158108476-r2" x="173.6" y="996.8" textLength="161.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="334.8" y="996. [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1023.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1023.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="1023.2" textLength="272.8">--show-diff-on-failure</tspan><tspan class="terminal-158108476-r2" x="310" y="1023.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="334.8" y="1023.2" textLength="24.8">-s</tspan><tspan class="terminal [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1049.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1049.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="1049.6" textLength="161.2">--last-commit</tspan><tspan class="terminal-158108476-r2" x="198.4" y="1049.6" textLength="136.4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="334.8" y="1049.6" te [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1076" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-158108476-r2" x="1488" y="1076" textLength="12.4">
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1102.4" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-158108476-r2" x="1488" y="1102.4" textLength="12.4">
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1128.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1128.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="1128.8" textLength="148.8">--commit-ref</tspan><tspan class="terminal-158108476-r2" x="186" y="1128.8" textLength="111.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="297.6" y="1128.8" textLength="24.8" [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1155.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1155.2" textLength="520.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;exclusive&#160;with&#160;</tspan><tspan class="terminal-158108476-r5" x="533.2" y="1155.2" textLength="161.2">--last-commit</tspan><tspan class="terminal-158108476-r [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1181.6" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1181.6" textLength="334.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;</tspan><tspan class="terminal-158108476-r7" x="347.2" y="1181.6" textLength="1103.6">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1208" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1208" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="1208" textLength="111.6">--verbose</tspan><tspan class="terminal-158108476-r2" x="148.8" y="1208" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="297.6" y="1208" textLength [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1234.4" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1234.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="1234.4" textLength="111.6">--dry-run</tspan><tspan class="terminal-158108476-r2" x="148.8" y="1234.4" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="297.6" y="1234.4"  [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1260.8" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1260.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="1260.8" textLength="235.6">--github-repository</tspan><tspan class="terminal-158108476-r2" x="272.8" y="1260.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="297.6" y="1260.8" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1287.2" textLength="12.4">│</tspan><tspan class="terminal-158108476-r2" x="12.4" y="1287.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-158108476-r5" x="37.2" y="1287.2" textLength="74.4">--help</tspan><tspan class="terminal-158108476-r2" x="111.6" y="1287.2" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-158108476-r6" x="297.6" [...]
-</tspan><tspan class="terminal-158108476-r4" x="0" y="1313.6" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-158108476-r2" x="1488" y="1313.6" textLength="12.4">
-</tspan></text>
+    <g class="terminal-3465962952-matrix">
+    <text class="terminal-3465962952-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3465962952-line-0)">
+</text><text class="terminal-3465962952-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3465962952-line-1)">Usage:&#160;</text><text class="terminal-3465962952-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-3465962952-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-3465962952-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-1)">
+</text><text class="terminal-3465962952-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-2)">
+</text><text class="terminal-3465962952-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-3465962952-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-3465962952-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-3)">
+</text><text class="terminal-3465962952-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-4)">
+</text><text class="terminal-3465962952-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3465962952-line-5)">╭─</text><text class="terminal-3465962952-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3465962952-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3465962952-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-346596 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-6)">│</text><text class="terminal-3465962952-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-6)">-</text><text class="terminal-3465962952-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-3465962952-line-6)">-type</text><text class="terminal-3465962952-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-34659 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-7)">│</text><text class="terminal-3465962952-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-1-compatibility&#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-3465962952-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-8)">│</text><text class="terminal-3465962952-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-providers-have-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="215.2" textLength="1 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-9)">│</text><text class="terminal-3465962952-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-9)">check-apache-license-rat&#160;|&#160;check-base-operator-usage&#160;|&#160;check-boring-cyborg-configuration</text><text class="terminal-3465962952-r4" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-9)">│</te [...]
+</text><text class="terminal-3465962952-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3465962952-line-10)">│</text><text class="terminal-3465962952-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-3465962952-line-10)">|&#160;check-breeze-top-dependencies-limited&#160;|&#160;check-builtin-literals&#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="termi [...]
+</text><text class="terminal-3465962952-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-11)">│</text><text class="terminal-3465962952-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-11)">check-changelog-has-no-duplicates&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r [...]
+</text><text class="terminal-3465962952-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-12)">│</text><text class="terminal-3465962952-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-12)">check-docstring-param-types&#160;|&#160;check-executables-have-shebangs&#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><tex [...]
+</text><text class="terminal-3465962952-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-13)">│</text><text class="terminal-3465962952-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-13)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-346 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-14)">│</text><text class="terminal-3465962952-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-14)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#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-3465962952-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3465962952-line-15)">│</text><text class="terminal-3465962952-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-3465962952-line-15)">check-integrations-are-consistent&#160;|&#160;check-merge-conflict&#160;|&#160;check-newsfragments-are-valid</text><text class="terminal-3465962952-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-3465962952-line-15)">│</text> [...]
+</text><text class="terminal-3465962952-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-16)">│</text><text class="terminal-3465962952-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-16)">|&#160;check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#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="termin [...]
+</text><text class="terminal-3465962952-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-17)">│</text><text class="terminal-3465962952-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-17)">check-persist-credentials-disabled-in-github-workflows&#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;&#16 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-18)">│</text><text class="terminal-3465962952-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-3465962952-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-19)">│</text><text class="terminal-3465962952-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#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><tex [...]
+</text><text class="terminal-3465962952-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3465962952-line-20)">│</text><text class="terminal-3465962952-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-3465962952-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="508" te [...]
+</text><text class="terminal-3465962952-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-21)">│</text><text class="terminal-3465962952-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="532.4" textLength="12.2" cli [...]
+</text><text class="terminal-3465962952-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-22)">│</text><text class="terminal-3465962952-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#160;|&#160;check-xml&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="556.8" textLength="12.2" cli [...]
+</text><text class="terminal-3465962952-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-23)">│</text><text class="terminal-3465962952-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-23)">codespell&#160;|&#160;debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="581.2" t [...]
+</text><text class="terminal-3465962952-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-24)">│</text><text class="terminal-3465962952-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-24)">fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3465962952-line-25)">│</text><text class="terminal-3465962952-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-3465962952-line-25)">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="630" textLength="12.2" clip-path [...]
+</text><text class="terminal-3465962952-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-26)">│</text><text class="terminal-3465962952-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-26)">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json</text><text class="terminal-3465962952-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#terminal-346 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-27)">│</text><text class="terminal-3465962952-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-27)">|&#160;pydocstyle&#160;|&#160;python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="678.8" textLength="12.2" cli [...]
+</text><text class="terminal-3465962952-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-28)">│</text><text class="terminal-3465962952-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-28)">run-shellcheck&#160;|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-file&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="ur [...]
+</text><text class="terminal-3465962952-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-29)">│</text><text class="terminal-3465962952-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-29)">update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#termina [...]
+</text><text class="terminal-3465962952-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3465962952-line-30)">│</text><text class="terminal-3465962952-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-3465962952-line-30)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-3465962952-line-30)">│</ [...]
+</text><text class="terminal-3465962952-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-31)">│</text><text class="terminal-3465962952-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-31)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#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-3465962952-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-32)">│</text><text class="terminal-3465962952-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-32)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-34 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-33)">│</text><text class="terminal-3465962952-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-33)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-34)">│</text><text class="terminal-3465962952-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-34)">-</text><text class="terminal-3465962952-r5" x="36.6" y="849.6" textLength="61" clip-path="url(#terminal-3465962952-line-34)">-file</text><text class="terminal-3465962952-r6" x="317.2" y="849.6" textLength="24.4" clip-path="url(#terminal-34 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3465962952-line-35)">│</text><text class="terminal-3465962952-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-3465962952-line-35)">-</text><text class="terminal-3465962952-r5" x="36.6" y="874" textLength="48.8" clip-path="url(#terminal-3465962952-line-35)">-all</text><text class="terminal-3465962952-r5" x="85.4" y="874" textLength="73.2" clip-path="url(#terminal-3465962952 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-36)">│</text><text class="terminal-3465962952-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-36)">-</text><text class="terminal-3465962952-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-3465962952-line-36)">-show</text><text class="terminal-3465962952-r5" x="97.6" y="898.4" textLength="195.2" clip-path="url(#terminal-34 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-37)">│</text><text class="terminal-3465962952-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-37)">-</text><text class="terminal-3465962952-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-3465962952-line-37)">-last</text><text class="terminal-3465962952-r5" x="97.6" y="922.8" textLength="85.4" clip-path="url(#terminal-346 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-3465962952-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3465962952-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-38)">
+</text><text class="terminal-3465962952-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-3465962952-line-39)">╭─</text><text class="terminal-3465962952-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-3465962952-line-39)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3465962952-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#terminal-346 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3465962952-line-40)">│</text><text class="terminal-3465962952-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3465962952-line-40)">-</text><text class="terminal-3465962952-r5" x="36.6" y="996" textLength="85.4" clip-path="url(#terminal-3465962952-line-40)">-commit</text><text class="terminal-3465962952-r5" x="122" y="996" textLength="48.8" clip-path="url(#terminal-34659629 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-41)">│</text><text class="terminal-3465962952-r2" x="329.4" y="1020.4" textLength="183" clip-path="url(#terminal-3465962952-line-41)">exclusive&#160;with&#160;</text><text class="terminal-3465962952-r5" x="512.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-41)">-</text><text class="terminal-3465962952-r5" x="524.6" y="1020.4" textLength="61" cl [...]
+</text><text class="terminal-3465962952-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-42)">│</text><text class="terminal-3465962952-r7" x="329.4" y="1044.8" textLength="1110.2" clip-path="url(#terminal-3465962952-line-42)">(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;& [...]
+</text><text class="terminal-3465962952-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-43)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-43)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-3465962952-line-43)">-verbose</text><text class="terminal-3465962952-r6" x="280.6" y="1069.2" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-3465962952-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-44)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-44)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-3465962952-line-44)">-dry</text><text class="terminal-3465962952-r5" x="85.4" y="1093.6" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-3465962952-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3465962952-line-45)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3465962952-line-45)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-3465962952-line-45)">-github</text><text class="terminal-3465962952-r5" x="122" y="1118" textLength="134.2" clip-path="url(#terminal-346 [...]
+</text><text class="terminal-3465962952-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-46)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-46)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1142.4" textLength="61" clip-path="url(#terminal-3465962952-line-46)">-help</text><text class="terminal-3465962952-r6" x="280.6" y="1142.4" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-3465962952-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-3465962952-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3465962952-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-47)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-stop.svg b/images/breeze/output-stop.svg
index 6f5a9ca2d8..5fc1819e95 100644
--- a/images/breeze/output-stop.svg
+++ b/images/breeze/output-stop.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 435.20000000000005" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 367.2" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,47 +19,93 @@
         font-weight: 700;
     }
 
-    .terminal-640511514-matrix {
+    .terminal-1568632346-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-640511514-title {
+    .terminal-1568632346-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-640511514-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-640511514-r2 { fill: #c5c8c6 }
-.terminal-640511514-r3 { fill: #d0b344;font-weight: bold }
-.terminal-640511514-r4 { fill: #868887 }
-.terminal-640511514-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-640511514-r6 { fill: #98a84b;font-weight: bold }
+    .terminal-1568632346-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1568632346-r2 { fill: #c5c8c6 }
+.terminal-1568632346-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1568632346-r4 { fill: #868887 }
+.terminal-1568632346-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1568632346-r6 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="395.2" rx="12"/><text class="terminal-640511514-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: stop</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-1568632346-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="316.2" />
+    </clipPath>
+    <clipPath id="terminal-1568632346-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1568632346-line-11">
+    <rect x="0" y="269.9" 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="365.2" rx="8"/><text class="terminal-1568632346-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;stop</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1568632346-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-640511514-matrix" font-variant="east-asian-width-values"><tspan class="terminal-640511514-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-640511514-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-640511514-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-640511514-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;stop&#160;[OPTIONS]&#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 [...]
-</tspan><tspan class="terminal-640511514-r1" x="0" y="72.8" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-640511514-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-640511514-r2" x="12.4" y="99.2" textLength="1463.2">Stop&#160;running&#160;breeze&#160;environment.&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-640511514-r2" x="0" y="125.6" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-640511514-r4" x="0" y="152" textLength="1488">╭─&#160;Stop&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-640511514-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-640511514-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-640511514-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-640511514-r5" x="37.2" y="178.4" textLength="223.2">--preserve-volumes</tspan><tspan class="terminal-640511514-r2" x="260.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-640511514-r6" x="285.2" y="178.4" textLength="24.8">-p</tspan><tspan class="terminal-640511 [...]
-</tspan><tspan class="terminal-640511514-r4" x="0" y="204.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-640511514-r2" x="1488" y="204.8" textLength="12.4">
-</tspan><tspan class="terminal-640511514-r4" x="0" y="231.2" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-640511514-r2" x="1488" y="231.2" textLength="12.4">
-</tspan><tspan class="terminal-640511514-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-640511514-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-640511514-r5" x="37.2" y="257.6" textLength="111.6">--verbose</tspan><tspan class="terminal-640511514-r2" x="148.8" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-640511514-r6" x="173.6" y="257.6" textLength="24.8">-v</tspan><tspan class="terminal-640511514-r2" x [...]
-</tspan><tspan class="terminal-640511514-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-640511514-r2" x="12.4" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-640511514-r5" x="37.2" y="284" textLength="111.6">--dry-run</tspan><tspan class="terminal-640511514-r2" x="148.8" y="284" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-640511514-r6" x="173.6" y="284" textLength="24.8">-D</tspan><tspan class="terminal-640511514-r2" x="198.4" y [...]
-</tspan><tspan class="terminal-640511514-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-640511514-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-640511514-r5" x="37.2" y="310.4" textLength="74.4">--help</tspan><tspan class="terminal-640511514-r2" x="111.6" y="310.4" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-640511514-r6" x="173.6" y="310.4" textLength="24.8">-h</tspan><tspan class="terminal-640 [...]
-</tspan><tspan class="terminal-640511514-r4" x="0" y="336.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-640511514-r2" x="1488" y="336.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-1568632346-matrix">
+    <text class="terminal-1568632346-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1568632346-line-0)">
+</text><text class="terminal-1568632346-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1568632346-line-1)">Usage:&#160;</text><text class="terminal-1568632346-r1" x="97.6" y="44.4" textLength="256.2" clip-path="url(#terminal-1568632346-line-1)">breeze&#160;stop&#160;[OPTIONS]</text><text class="terminal-1568632346-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1568632346-line-1)">
+</text><text class="terminal-1568632346-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1568632346-line-2)">
+</text><text class="terminal-1568632346-r2" x="12.2" y="93.2" textLength="390.4" clip-path="url(#terminal-1568632346-line-3)">Stop&#160;running&#160;breeze&#160;environment.</text><text class="terminal-1568632346-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1568632346-line-3)">
+</text><text class="terminal-1568632346-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1568632346-line-4)">
+</text><text class="terminal-1568632346-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1568632346-line-5)">╭─</text><text class="terminal-1568632346-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1568632346-line-5)">&#160;Stop&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1568632346-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-156863 [...]
+</text><text class="terminal-1568632346-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1568632346-line-6)">│</text><text class="terminal-1568632346-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1568632346-line-6)">-</text><text class="terminal-1568632346-r5" x="36.6" y="166.4" textLength="109.8" clip-path="url(#terminal-1568632346-line-6)">-preserve</text><text class="terminal-1568632346-r5" x="146.4" y="166.4" textLength="97.6" clip-path="url(#termina [...]
+</text><text class="terminal-1568632346-r4" x="0" y="190.8" textLength="1464" clip-path="url(#terminal-1568632346-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1568632346-r2" x="1464" y="190.8" textLength="12.2" clip-path="url(#terminal-1568632346-line-7)">
+</text><text class="terminal-1568632346-r4" x="0" y="215.2" textLength="24.4" clip-path="url(#terminal-1568632346-line-8)">╭─</text><text class="terminal-1568632346-r4" x="24.4" y="215.2" textLength="1415.2" clip-path="url(#terminal-1568632346-line-8)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1568632346-r4" x="1439.6" y="215.2" textLength="24.4" clip-path="url(#terminal-15686 [...]
+</text><text class="terminal-1568632346-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1568632346-line-9)">│</text><text class="terminal-1568632346-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1568632346-line-9)">-</text><text class="terminal-1568632346-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1568632346-line-9)">-verbose</text><text class="terminal-1568632346-r6" x="158.6" y="239.6" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1568632346-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1568632346-line-10)">│</text><text class="terminal-1568632346-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1568632346-line-10)">-</text><text class="terminal-1568632346-r5" x="36.6" y="264" textLength="48.8" clip-path="url(#terminal-1568632346-line-10)">-dry</text><text class="terminal-1568632346-r5" x="85.4" y="264" textLength="48.8" clip-path="url(#terminal-1568632346 [...]
+</text><text class="terminal-1568632346-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1568632346-line-11)">│</text><text class="terminal-1568632346-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1568632346-line-11)">-</text><text class="terminal-1568632346-r5" x="36.6" y="288.4" textLength="61" clip-path="url(#terminal-1568632346-line-11)">-help</text><text class="terminal-1568632346-r6" x="158.6" y="288.4" textLength="24.4" clip-path="url(#terminal-15 [...]
+</text><text class="terminal-1568632346-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-1568632346-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1568632346-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-1568632346-line-12)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-tests.svg b/images/breeze/output-tests.svg
index 0b344da888..7c02458342 100644
--- a/images/breeze/output-tests.svg
+++ b/images/breeze/output-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 567.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,53 +19,114 @@
         font-weight: 700;
     }
 
-    .terminal-2156331930-matrix {
+    .terminal-4193911706-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2156331930-title {
+    .terminal-4193911706-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2156331930-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2156331930-r2 { fill: #c5c8c6 }
-.terminal-2156331930-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2156331930-r4 { fill: #868887 }
-.terminal-2156331930-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2156331930-r6 { fill: #8d7b39 }
-.terminal-2156331930-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-4193911706-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4193911706-r2 { fill: #c5c8c6 }
+.terminal-4193911706-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4193911706-r4 { fill: #868887 }
+.terminal-4193911706-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4193911706-r6 { fill: #8d7b39 }
+.terminal-4193911706-r7 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="527.2" rx="12"/><text class="terminal-2156331930-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: tests</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-4193911706-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="438.2" />
+    </clipPath>
+    <clipPath id="terminal-4193911706-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4193911706-line-16">
+    <rect x="0" y="391.9" 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="487.2" rx="8"/><text class="terminal-4193911706-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4193911706-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2156331930-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2156331930-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2156331930-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2156331930-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2156331930-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...&#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;& [...]
-</tspan><tspan class="terminal-2156331930-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2156331930-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="99.2" textLength="1463.2">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.&#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;</tsp [...]
-</tspan><tspan class="terminal-2156331930-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="152" textLength="1488">╭─&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2156331930-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r5" x="37.2" y="178.4" textLength="161.2">--integration</tspan><tspan class="terminal-2156331930-r2" x="198.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r2" x="223.2" y="178.4" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class= [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="204.8" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2156331930-r6" x="285.2" y="204.8" textLength="1128.4">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="231.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r5" x="37.2" y="231.2" textLength="136.4">--test-type</tspan><tspan class="terminal-2156331930-r2" x="173.6" y="231.2" textLength="49.6">&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2156331930-r7" x="223.2" y="231.2" textLength="37.2">-tt</tspan><tspan class="term [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="257.6" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2156331930-r6" x="285.2" y="257.6" textLength="1165.6">(All&#160;|&#160;Always&#160;|&#160;Core&#160;|&#160;Providers&#160;|&#160;API&#160;|&#160;CLI&#160;|&#160;In [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="284" textLength="272.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2156331930-r6" x="285.2" y="284" textLength="1165.6">Helm&#160;|&#160;Quarantined)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r5" x="37.2" y="310.4" textLength="124">--db-reset</tspan><tspan class="terminal-2156331930-r2" x="161.2" y="310.4" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2156331930-r7" x="223.2" y="310.4" textLength="24.8">-d</tspan><tspan class="term [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="336.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2156331930-r2" x="1488" y="336.8" textLength="12.4">
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="363.2" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2156331930-r2" x="1488" y="363.2" textLength="12.4">
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r5" x="37.2" y="389.6" textLength="111.6">--dry-run</tspan><tspan class="terminal-2156331930-r2" x="148.8" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r7" x="173.6" y="389.6" textLength="24.8">-D</tspan><tspan class="terminal-2156331930 [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r5" x="37.2" y="416" textLength="111.6">--verbose</tspan><tspan class="terminal-2156331930-r2" x="148.8" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r7" x="173.6" y="416" textLength="24.8">-v</tspan><tspan class="terminal-2156331930-r2" x="19 [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-2156331930-r2" x="12.4" y="442.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2156331930-r5" x="37.2" y="442.4" textLength="74.4">--help</tspan><tspan class="terminal-2156331930-r2" x="111.6" y="442.4" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2156331930-r7" x="173.6" y="442.4" textLength="24.8">-h</tspan><tspan class="termina [...]
-</tspan><tspan class="terminal-2156331930-r4" x="0" y="468.8" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2156331930-r2" x="1488" y="468.8" textLength="12.4">
-</tspan></text>
+    <g class="terminal-4193911706-matrix">
+    <text class="terminal-4193911706-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4193911706-line-0)">
+</text><text class="terminal-4193911706-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4193911706-line-1)">Usage:&#160;</text><text class="terminal-4193911706-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-4193911706-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4193911706-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-1)">
+</text><text class="terminal-4193911706-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-2)">
+</text><text class="terminal-4193911706-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-4193911706-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-4193911706-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4193911706-line-3)">
+</text><text class="terminal-4193911706-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-4)">
+</text><text class="terminal-4193911706-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4193911706-line-5)">╭─</text><text class="terminal-4193911706-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4193911706-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4193911706-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-4193911706-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-6)">│</text><text class="terminal-4193911706-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-6)">-</text><text class="terminal-4193911706-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-4193911706-line-6)">-integration</text><text class="terminal-4193911706-r2" x="268.4" y="166.4" textLength="1110.2" clip-path="url(#te [...]
+</text><text class="terminal-4193911706-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-7)">│</text><text class="terminal-4193911706-r6" x="268.4" y="190.8" textLength="1110.2" clip-path="url(#terminal-4193911706-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-4193911706-r4" x="1451.8" y=" [...]
+</text><text class="terminal-4193911706-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4193911706-line-8)">│</text><text class="terminal-4193911706-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-4193911706-line-8)">-</text><text class="terminal-4193911706-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-4193911706-line-8)">-test</text><text class="terminal-4193911706-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-41939117 [...]
+</text><text class="terminal-4193911706-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-9)">│</text><text class="terminal-4193911706-r6" x="268.4" y="239.6" textLength="1171.2" clip-path="url(#terminal-4193911706-line-9)">(All&#160;|&#160;Always&#160;|&#160;Core&#160;|&#160;Providers&#160;|&#160;API&#160;|&#160;CLI&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;WWW&#160;|&#160;Postgres&#160;|&#160;MySQL&#160;|&#160;&#160;&#160;</text><text class="ter [...]
+</text><text class="terminal-4193911706-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4193911706-line-10)">│</text><text class="terminal-4193911706-r6" x="268.4" y="264" textLength="1171.2" clip-path="url(#terminal-4193911706-line-10)">Helm&#160;|&#160;Quarantined)&#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-4193911706-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-11)">│</text><text class="terminal-4193911706-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-11)">-</text><text class="terminal-4193911706-r5" x="36.6" y="288.4" textLength="36.6" clip-path="url(#terminal-4193911706-line-11)">-db</text><text class="terminal-4193911706-r5" x="73.2" y="288.4" textLength="73.2" clip-path="url(#terminal-419 [...]
+</text><text class="terminal-4193911706-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-4193911706-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4193911706-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-12)">
+</text><text class="terminal-4193911706-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-4193911706-line-13)">╭─</text><text class="terminal-4193911706-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-4193911706-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4193911706-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-419 [...]
+</text><text class="terminal-4193911706-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-14)">│</text><text class="terminal-4193911706-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4193911706-line-14)">-</text><text class="terminal-4193911706-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-4193911706-line-14)">-dry</text><text class="terminal-4193911706-r5" x="85.4" y="361.6" textLength="48.8" clip-path="url(#terminal-41 [...]
+</text><text class="terminal-4193911706-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4193911706-line-15)">│</text><text class="terminal-4193911706-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4193911706-line-15)">-</text><text class="terminal-4193911706-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-4193911706-line-15)">-verbose</text><text class="terminal-4193911706-r7" x="158.6" y="386" textLength="24.4" clip-path="url(#terminal-41939 [...]
+</text><text class="terminal-4193911706-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-16)">│</text><text class="terminal-4193911706-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-4193911706-line-16)">-</text><text class="terminal-4193911706-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-4193911706-line-16)">-help</text><text class="terminal-4193911706-r7" x="158.6" y="410.4" textLength="24.4" clip-path="url(#terminal-41 [...]
+</text><text class="terminal-4193911706-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-4193911706-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4193911706-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-4193911706-line-17)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-verify-image.svg b/images/breeze/output-verify-image.svg
index e35e11819f..b79efb93f2 100644
--- a/images/breeze/output-verify-image.svg
+++ b/images/breeze/output-verify-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 540.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,52 +19,110 @@
         font-weight: 700;
     }
 
-    .terminal-2093741156-matrix {
+    .terminal-4166710372-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2093741156-title {
+    .terminal-4166710372-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2093741156-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2093741156-r2 { fill: #c5c8c6 }
-.terminal-2093741156-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2093741156-r4 { fill: #868887 }
-.terminal-2093741156-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2093741156-r6 { fill: #98a84b;font-weight: bold }
-.terminal-2093741156-r7 { fill: #8d7b39 }
+    .terminal-4166710372-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-4166710372-r2 { fill: #c5c8c6 }
+.terminal-4166710372-r3 { fill: #d0b344;font-weight: bold }
+.terminal-4166710372-r4 { fill: #868887 }
+.terminal-4166710372-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-4166710372-r6 { fill: #98a84b;font-weight: bold }
+.terminal-4166710372-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="500.8" rx="12"/><text class="terminal-2093741156-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: verify-image</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-4166710372-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+    </clipPath>
+    <clipPath id="terminal-4166710372-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-4166710372-line-15">
+    <rect x="0" y="367.5" 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="462.8" rx="8"/><text class="terminal-4166710372-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-4166710372-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-2093741156-matrix" font-variant="east-asian-width-values"><tspan class="terminal-2093741156-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2093741156-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-2093741156-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-2093741156-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...&#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; [...]
-</tspan><tspan class="terminal-2093741156-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-2093741156-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="99.2" textLength="1463.2">Verify&#160;CI&#160;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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-2093741156-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="152" textLength="1488">╭─&#160;Verify&#160;image&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2093741156-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r5" x="37.2" y="178.4" textLength="148.8">--image-name</tspan><tspan class="terminal-2093741156-r2" x="186" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r6" x="210.8" y="178.4" textLength="24.8">-n</tspan><tspan class="terminal-209374115 [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r5" x="37.2" y="204.8" textLength="99.2">--python</tspan><tspan class="terminal-2093741156-r2" x="136.4" y="204.8" textLength="74.4">&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2093741156-r6" x="210.8" y="204.8" textLength="24.8">-p</tspan><tspan clas [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="231.2" textLength="248">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2093741156-r4" x="260.4" y="231.2" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r5" x="37.2" y="257.6" textLength="136.4">--image-tag</tspan><tspan class="terminal-2093741156-r2" x="173.6" y="257.6" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-2093741156-r6" x="210.8" y="257.6" textLength="24.8">-t</tspan><tspan class="terminal-20 [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="284" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2093741156-r2" x="1488" y="284" textLength="12.4">
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="310.4" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-2093741156-r2" x="1488" y="310.4" textLength="12.4">
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r5" x="37.2" y="336.8" textLength="111.6">--verbose</tspan><tspan class="terminal-2093741156-r2" x="148.8" y="336.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2093741156-r6" x="297.6" y="336.8"  [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r5" x="37.2" y="363.2" textLength="111.6">--dry-run</tspan><tspan class="terminal-2093741156-r2" x="148.8" y="363.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2093741156-r6" x="297.6" y="363.2"  [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r5" x="37.2" y="389.6" textLength="235.6">--github-repository</tspan><tspan class="terminal-2093741156-r2" x="272.8" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r6" x="297.6" y="389.6" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-2093741156-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-2093741156-r5" x="37.2" y="416" textLength="74.4">--help</tspan><tspan class="terminal-2093741156-r2" x="111.6" y="416" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-2093741156-r6" x="297.6" y="416 [...]
-</tspan><tspan class="terminal-2093741156-r4" x="0" y="442.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-2093741156-r2" x="1488" y="442.4" textLength="12.4">
-</tspan></text>
+    <g class="terminal-4166710372-matrix">
+    <text class="terminal-4166710372-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4166710372-line-0)">
+</text><text class="terminal-4166710372-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4166710372-line-1)">Usage:&#160;</text><text class="terminal-4166710372-r1" x="97.6" y="44.4" textLength="634.4" clip-path="url(#terminal-4166710372-line-1)">breeze&#160;verify-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-4166710372-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-1)">
+</text><text class="terminal-4166710372-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-2)">
+</text><text class="terminal-4166710372-r2" x="12.2" y="93.2" textLength="195.2" clip-path="url(#terminal-4166710372-line-3)">Verify&#160;CI&#160;image.</text><text class="terminal-4166710372-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-3)">
+</text><text class="terminal-4166710372-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-4)">
+</text><text class="terminal-4166710372-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4166710372-line-5)">╭─</text><text class="terminal-4166710372-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4166710372-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4166710372-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-6)">│</text><text class="terminal-4166710372-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-6)">-</text><text class="terminal-4166710372-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-4166710372-line-6)">-image</text><text class="terminal-4166710372-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-4166 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-7)">│</text><text class="terminal-4166710372-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-7)">-</text><text class="terminal-4166710372-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-4166710372-line-7)">-python</text><text class="terminal-4166710372-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-8)">│</text><text class="terminal-4166710372-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-4166710372-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;&#1 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-9)">│</text><text class="terminal-4166710372-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-9)">-</text><text class="terminal-4166710372-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-4166710372-line-9)">-image</text><text class="terminal-4166710372-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-41 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-4166710372-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4166710372-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-4166710372-line-10)">
+</text><text class="terminal-4166710372-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-4166710372-line-11)">╭─</text><text class="terminal-4166710372-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-4166710372-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4166710372-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-416 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-12)">│</text><text class="terminal-4166710372-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-4166710372-line-12)">-</text><text class="terminal-4166710372-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-4166710372-line-12)">-verbose</text><text class="terminal-4166710372-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-4166710372-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-13)">│</text><text class="terminal-4166710372-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-4166710372-line-13)">-</text><text class="terminal-4166710372-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-4166710372-line-13)">-dry</text><text class="terminal-4166710372-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-41 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-14)">│</text><text class="terminal-4166710372-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4166710372-line-14)">-</text><text class="terminal-4166710372-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-4166710372-line-14)">-github</text><text class="terminal-4166710372-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-4166710372-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4166710372-line-15)">│</text><text class="terminal-4166710372-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-4166710372-line-15)">-</text><text class="terminal-4166710372-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-4166710372-line-15)">-help</text><text class="terminal-4166710372-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-4166710372 [...]
+</text><text class="terminal-4166710372-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-4166710372-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4166710372-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-4166710372-line-16)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-verify-prod-image.svg b/images/breeze/output-verify-prod-image.svg
index 3dab7852ea..4bc7a36527 100644
--- a/images/breeze/output-verify-prod-image.svg
+++ b/images/breeze/output-verify-prod-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 540.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,52 +19,110 @@
         font-weight: 700;
     }
 
-    .terminal-439155235-matrix {
+    .terminal-2512124451-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-439155235-title {
+    .terminal-2512124451-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-439155235-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-439155235-r2 { fill: #c5c8c6 }
-.terminal-439155235-r3 { fill: #d0b344;font-weight: bold }
-.terminal-439155235-r4 { fill: #868887 }
-.terminal-439155235-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-439155235-r6 { fill: #98a84b;font-weight: bold }
-.terminal-439155235-r7 { fill: #8d7b39 }
+    .terminal-2512124451-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2512124451-r2 { fill: #c5c8c6 }
+.terminal-2512124451-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2512124451-r4 { fill: #868887 }
+.terminal-2512124451-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2512124451-r6 { fill: #98a84b;font-weight: bold }
+.terminal-2512124451-r7 { fill: #8d7b39 }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="500.8" rx="12"/><text class="terminal-439155235-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: verify-prod-image</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-2512124451-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+    </clipPath>
+    <clipPath id="terminal-2512124451-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-2512124451-line-15">
+    <rect x="0" y="367.5" 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="462.8" rx="8"/><text class="terminal-2512124451-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2512124451-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-439155235-matrix" font-variant="east-asian-width-values"><tspan class="terminal-439155235-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-439155235-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-439155235-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-439155235-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...&#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;&#16 [...]
-</tspan><tspan class="terminal-439155235-r1" x="0" y="72.8" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-439155235-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-439155235-r2" x="12.4" y="99.2" textLength="1463.2">Verify&#160;Production&#160;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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-439155235-r2" x="0" y="125.6" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="152" textLength="1488">╭─&#160;Verify&#160;image&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-439155235-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-439155235-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r5" x="37.2" y="178.4" textLength="148.8">--image-name</tspan><tspan class="terminal-439155235-r2" x="186" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r6" x="210.8" y="178.4" textLength="24.8">-n</tspan><tspan class="terminal-439155235-r2"  [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r5" x="37.2" y="204.8" textLength="99.2">--python</tspan><tspan class="terminal-439155235-r2" x="136.4" y="204.8" textLength="74.4">&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-439155235-r6" x="210.8" y="204.8" textLength="24.8">-p</tspan><tspan class="te [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="231.2" textLength="248">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-439155235-r4" x="260.4" y="231.2" textLength="744">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="257.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r5" x="37.2" y="257.6" textLength="136.4">--image-tag</tspan><tspan class="terminal-439155235-r2" x="173.6" y="257.6" textLength="37.2">&#160;&#160;&#160;</tspan><tspan class="terminal-439155235-r6" x="210.8" y="257.6" textLength="24.8">-t</tspan><tspan class="terminal-4391552 [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="284" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-439155235-r2" x="1488" y="284" textLength="12.4">
-</tspan><tspan class="terminal-439155235-r4" x="0" y="310.4" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-439155235-r2" x="1488" y="310.4" textLength="12.4">
-</tspan><tspan class="terminal-439155235-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="336.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r5" x="37.2" y="336.8" textLength="111.6">--verbose</tspan><tspan class="terminal-439155235-r2" x="148.8" y="336.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-439155235-r6" x="297.6" y="336.8" textL [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="363.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r5" x="37.2" y="363.2" textLength="111.6">--dry-run</tspan><tspan class="terminal-439155235-r2" x="148.8" y="363.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-439155235-r6" x="297.6" y="363.2" textL [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r5" x="37.2" y="389.6" textLength="235.6">--github-repository</tspan><tspan class="terminal-439155235-r2" x="272.8" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r6" x="297.6" y="389.6" textLength="24.8">-g</tspan><tspan class="terminal-43915 [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-439155235-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-439155235-r5" x="37.2" y="416" textLength="74.4">--help</tspan><tspan class="terminal-439155235-r2" x="111.6" y="416" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-439155235-r6" x="297.6" y="416" tex [...]
-</tspan><tspan class="terminal-439155235-r4" x="0" y="442.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-439155235-r2" x="1488" y="442.4" textLength="12.4">
-</tspan></text>
+    <g class="terminal-2512124451-matrix">
+    <text class="terminal-2512124451-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2512124451-line-0)">
+</text><text class="terminal-2512124451-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2512124451-line-1)">Usage:&#160;</text><text class="terminal-2512124451-r1" x="97.6" y="44.4" textLength="695.4" clip-path="url(#terminal-2512124451-line-1)">breeze&#160;verify-prod-image&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2512124451-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-1)">
+</text><text class="terminal-2512124451-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-2)">
+</text><text class="terminal-2512124451-r2" x="12.2" y="93.2" textLength="292.8" clip-path="url(#terminal-2512124451-line-3)">Verify&#160;Production&#160;image.</text><text class="terminal-2512124451-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-3)">
+</text><text class="terminal-2512124451-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-4)">
+</text><text class="terminal-2512124451-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2512124451-line-5)">╭─</text><text class="terminal-2512124451-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2512124451-line-5)">&#160;Verify&#160;image&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2512124451-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-6)">│</text><text class="terminal-2512124451-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-6)">-</text><text class="terminal-2512124451-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-2512124451-line-6)">-image</text><text class="terminal-2512124451-r5" x="109.8" y="166.4" textLength="61" clip-path="url(#terminal-2512 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-7)">│</text><text class="terminal-2512124451-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-7)">-</text><text class="terminal-2512124451-r5" x="36.6" y="190.8" textLength="85.4" clip-path="url(#terminal-2512124451-line-7)">-python</text><text class="terminal-2512124451-r6" x="195.2" y="190.8" textLength="24.4" clip-path="url(#terminal-2 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-8)">│</text><text class="terminal-2512124451-r4" x="244" y="215.2" textLength="732" clip-path="url(#terminal-2512124451-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;&#1 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-9)">│</text><text class="terminal-2512124451-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-9)">-</text><text class="terminal-2512124451-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-2512124451-line-9)">-image</text><text class="terminal-2512124451-r5" x="109.8" y="239.6" textLength="48.8" clip-path="url(#terminal-25 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="264" textLength="1464" clip-path="url(#terminal-2512124451-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2512124451-r2" x="1464" y="264" textLength="12.2" clip-path="url(#terminal-2512124451-line-10)">
+</text><text class="terminal-2512124451-r4" x="0" y="288.4" textLength="24.4" clip-path="url(#terminal-2512124451-line-11)">╭─</text><text class="terminal-2512124451-r4" x="24.4" y="288.4" textLength="1415.2" clip-path="url(#terminal-2512124451-line-11)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2512124451-r4" x="1439.6" y="288.4" textLength="24.4" clip-path="url(#terminal-251 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-12)">│</text><text class="terminal-2512124451-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2512124451-line-12)">-</text><text class="terminal-2512124451-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-2512124451-line-12)">-verbose</text><text class="terminal-2512124451-r6" x="280.6" y="312.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2512124451-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-13)">│</text><text class="terminal-2512124451-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2512124451-line-13)">-</text><text class="terminal-2512124451-r5" x="36.6" y="337.2" textLength="48.8" clip-path="url(#terminal-2512124451-line-13)">-dry</text><text class="terminal-2512124451-r5" x="85.4" y="337.2" textLength="48.8" clip-path="url(#terminal-25 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-14)">│</text><text class="terminal-2512124451-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2512124451-line-14)">-</text><text class="terminal-2512124451-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-2512124451-line-14)">-github</text><text class="terminal-2512124451-r5" x="122" y="361.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-2512124451-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2512124451-line-15)">│</text><text class="terminal-2512124451-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2512124451-line-15)">-</text><text class="terminal-2512124451-r5" x="36.6" y="386" textLength="61" clip-path="url(#terminal-2512124451-line-15)">-help</text><text class="terminal-2512124451-r6" x="280.6" y="386" textLength="24.4" clip-path="url(#terminal-2512124451 [...]
+</text><text class="terminal-2512124451-r4" x="0" y="410.4" textLength="1464" clip-path="url(#terminal-2512124451-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2512124451-r2" x="1464" y="410.4" textLength="12.2" clip-path="url(#terminal-2512124451-line-16)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-verify-provider-packages.svg b/images/breeze/output-verify-provider-packages.svg
index 061622d353..cfb88fbcc4 100644
--- a/images/breeze/output-verify-provider-packages.svg
+++ b/images/breeze/output-verify-provider-packages.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 804.8000000000001" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 708.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,62 +19,150 @@
         font-weight: 700;
     }
 
-    .terminal-3092598158-matrix {
+    .terminal-1322667406-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3092598158-title {
+    .terminal-1322667406-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3092598158-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3092598158-r2 { fill: #c5c8c6 }
-.terminal-3092598158-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3092598158-r4 { fill: #868887 }
-.terminal-3092598158-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3092598158-r6 { fill: #8d7b39 }
-.terminal-3092598158-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-1322667406-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1322667406-r2 { fill: #c5c8c6 }
+.terminal-1322667406-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1322667406-r4 { fill: #868887 }
+.terminal-1322667406-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1322667406-r6 { fill: #8d7b39 }
+.terminal-1322667406-r7 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="764.8" rx="12"/><text class="terminal-3092598158-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: verify-provider-packages</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-1322667406-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="657.8" />
+    </clipPath>
+    <clipPath id="terminal-1322667406-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-18">
+    <rect x="0" y="440.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-19">
+    <rect x="0" y="465.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-20">
+    <rect x="0" y="489.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-21">
+    <rect x="0" y="513.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-22">
+    <rect x="0" y="538.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-23">
+    <rect x="0" y="562.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1322667406-line-25">
+    <rect x="0" y="611.5" 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="706.8" rx="8"/><text class="terminal-1322667406-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;verify-provider-packages</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1322667406-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-3092598158-matrix" font-variant="east-asian-width-values"><tspan class="terminal-3092598158-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</tspan><tspan class="terminal-3092598158-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-3092598158-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-3092598158-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;verify-provider-packages&#160;[OPTIONS]&#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;&#16 [...]
-</tspan><tspan class="terminal-3092598158-r1" x="0" y="72.8" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-3092598158-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="99.2" textLength="1463.2">Verifies&#160;if&#160;all&#160;provider&#160;code&#160;is&#160;following&#160;expectations&#160;for&#160;providers.&#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;&#16 [...]
-</tspan><tspan class="terminal-3092598158-r2" x="0" y="125.6" textLength="1488">&#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;&#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;&#16 [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="152" textLength="1488">╭─&#160;Provider&#160;verification&#160;flags&#160;────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-3092598158-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="178.4" textLength="260.4">--use-airflow-version</tspan><tspan class="terminal-3092598158-r2" x="297.6" y="178.4" textLength="1178">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Use&#160;(reinstall&#160;at&#160;entry)&#16 [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="204.8" textLength="1463.2">&#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;`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160 [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="231.2" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="231.2" textLength="1463.2">&#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;or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="257.6" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="257.6" textLength="458.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;&#160;&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="471.2" y="257.6" textLength="186">--mount-sources</tspan [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="284" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="284" textLength="458.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;&#160;&#160;&#160;</tspan><tspan class="terminal-3092598158-r6" x="471.2" y="284" textLength="979.6">(none&#160;|&#160;wheel&#1 [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="310.4" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="310.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="310.4" textLength="384.4">--airflow-constraints-reference</tspan><tspan class="terminal-3092598158-r2" x="421.6" y="310.4" textLength="558">&#160;&#160;&#160;&#160;Constraint&#160;reference&#160;to&#160;use.&#160;Useful&#160;with&#160;</tspan><tspan class="t [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="336.8" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="336.8" textLength="1463.2">&#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;specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;n [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="363.2" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="363.2" textLength="458.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;&#160;&#160;&#160;</tspan><tspan class="terminal-3092598158-r6" x="471.2" y="363.2" textLength="979.6">(TEXT)&#160;&#160;&# [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="389.6" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="389.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="389.6" textLength="198.4">--airflow-extras</tspan><tspan class="terminal-3092598158-r2" x="235.6" y="389.6" textLength="620">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Airflow&#160;extras [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="416" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="416" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="416" textLength="297.6">--use-packages-from-dist</tspan><tspan class="terminal-3092598158-r2" x="334.8" y="416" textLength="483.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Install&#160;all&#160;found&#160;packages&#160;(</tspan><tspan cl [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="442.4" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="442.4" textLength="1463.2">&#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;folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="468.8" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="468.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="468.8" textLength="198.4">--package-format</tspan><tspan class="terminal-3092598158-r2" x="235.6" y="468.8" textLength="235.6">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan cl [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="495.2" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="495.2" textLength="458.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;&#160;&#160;&#160;</tspan><tspan class="terminal-3092598158-r4" x="471.2" y="495.2" textLength="669.6">[default:&#160;wheel [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="521.6" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="521.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="521.6" textLength="86.8">--debug</tspan><tspan class="terminal-3092598158-r2" x="124" y="521.6" textLength="347.2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="548" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-3092598158-r2" x="1488" y="548" textLength="12.4">
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="574.4" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-3092598158-r2" x="1488" y="574.4" textLength="12.4">
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="600.8" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="600.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="600.8" textLength="111.6">--verbose</tspan><tspan class="terminal-3092598158-r2" x="148.8" y="600.8" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-3092598158-r7" x="297.6" y="600.8"  [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="627.2" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="627.2" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="627.2" textLength="111.6">--dry-run</tspan><tspan class="terminal-3092598158-r2" x="148.8" y="627.2" textLength="148.8">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-3092598158-r7" x="297.6" y="627.2"  [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="653.6" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="653.6" textLength="235.6">--github-repository</tspan><tspan class="terminal-3092598158-r2" x="272.8" y="653.6" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r7" x="297.6" y="653.6" textLength="24.8">-g</tspan><tspan class="terminal- [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="680" textLength="12.4">│</tspan><tspan class="terminal-3092598158-r2" x="12.4" y="680" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-3092598158-r5" x="37.2" y="680" textLength="74.4">--help</tspan><tspan class="terminal-3092598158-r2" x="111.6" y="680" textLength="186">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-3092598158-r7" x="297.6" y="680 [...]
-</tspan><tspan class="terminal-3092598158-r4" x="0" y="706.4" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-3092598158-r2" x="1488" y="706.4" textLength="12.4">
-</tspan></text>
+    <g class="terminal-1322667406-matrix">
+    <text class="terminal-1322667406-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1322667406-line-0)">
+</text><text class="terminal-1322667406-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1322667406-line-1)">Usage:&#160;</text><text class="terminal-1322667406-r1" x="97.6" y="44.4" textLength="500.2" clip-path="url(#terminal-1322667406-line-1)">breeze&#160;verify-provider-packages&#160;[OPTIONS]</text><text class="terminal-1322667406-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-1)">
+</text><text class="terminal-1322667406-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-2)">
+</text><text class="terminal-1322667406-r2" x="12.2" y="93.2" textLength="854" clip-path="url(#terminal-1322667406-line-3)">Verifies&#160;if&#160;all&#160;provider&#160;code&#160;is&#160;following&#160;expectations&#160;for&#160;providers.</text><text class="terminal-1322667406-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-3)">
+</text><text class="terminal-1322667406-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-4)">
+</text><text class="terminal-1322667406-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1322667406-line-5)">╭─</text><text class="terminal-1322667406-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1322667406-line-5)">&#160;Provider&#160;verification&#160;flags&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1322667406-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1322667406-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-6)">│</text><text class="terminal-1322667406-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-6)">-</text><text class="terminal-1322667406-r5" x="36.6" y="166.4" textLength="48.8" clip-path="url(#terminal-1322667406-line-6)">-use</text><text class="terminal-1322667406-r5" x="85.4" y="166.4" textLength="195.2" clip-path="url(#terminal-1322 [...]
+</text><text class="terminal-1322667406-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-7)">│</text><text class="terminal-1322667406-r2" x="451.4" y="190.8" textLength="988.2" clip-path="url(#terminal-1322667406-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;&#160;</text><text class="terminal-1322667406-r4" x="1451.8" y="190.8" textLength="12.2" clip-path=" [...]
+</text><text class="terminal-1322667406-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-8)">│</text><text class="terminal-1322667406-r2" x="451.4" y="215.2" textLength="793" clip-path="url(#terminal-1322667406-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1322667406-r5" x="1244.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-8)">-</t [...]
+</text><text class="terminal-1322667406-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-9)">│</text><text class="terminal-1322667406-r2" x="451.4" y="239.6" textLength="988.2" clip-path="url(#terminal-1322667406-line-9)">`none`.&#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-1322667406-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1322667406-line-10)">│</text><text class="terminal-1322667406-r6" x="451.4" y="264" textLength="988.2" clip-path="url(#terminal-1322667406-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1322667406-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-11)">│</text><text class="terminal-1322667406-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-11)">-</text><text class="terminal-1322667406-r5" x="36.6" y="288.4" textLength="97.6" clip-path="url(#terminal-1322667406-line-11)">-airflow</text><text class="terminal-1322667406-r5" x="134.2" y="288.4" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-1322667406-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-12)">│</text><text class="terminal-1322667406-r2" x="451.4" y="312.8" textLength="988.2" clip-path="url(#terminal-1322667406-line-12)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;dependencies&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1322667406-r4" x="1451.8" y="312.8" textLength="12.2" [...]
+</text><text class="terminal-1322667406-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-13)">│</text><text class="terminal-1322667406-r6" x="451.4" y="337.2" textLength="988.2" clip-path="url(#terminal-1322667406-line-13)">(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;&#16 [...]
+</text><text class="terminal-1322667406-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-14)">│</text><text class="terminal-1322667406-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-14)">-</text><text class="terminal-1322667406-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-1322667406-line-14)">-airflow</text><text class="terminal-1322667406-r5" x="134.2" y="361.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1322667406-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1322667406-line-15)">│</text><text class="terminal-1322667406-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1322667406-line-15)">-</text><text class="terminal-1322667406-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1322667406-line-15)">-use</text><text class="terminal-1322667406-r5" x="85.4" y="386" textLength="231.8" clip-path="url(#terminal-132266740 [...]
+</text><text class="terminal-1322667406-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-16)">│</text><text class="terminal-1322667406-r2" x="451.4" y="410.4" textLength="988.2" clip-path="url(#terminal-1322667406-line-16)">when&#160;entering&#160;breeze.&#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-1322667406-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-17)">│</text><text class="terminal-1322667406-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-17)">-</text><text class="terminal-1322667406-r5" x="36.6" y="434.8" textLength="97.6" clip-path="url(#terminal-1322667406-line-17)">-package</text><text class="terminal-1322667406-r5" x="134.2" y="434.8" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1322667406-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-18)">│</text><text class="terminal-1322667406-r4" x="451.4" y="459.2" textLength="658.8" clip-path="url(#terminal-1322667406-line-18)">[default:&#160;wheel]&#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-1322667406-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-19)">│</text><text class="terminal-1322667406-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-19)">-</text><text class="terminal-1322667406-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-1322667406-line-19)">-debug</text><text class="terminal-1322667406-r2" x="451.4" y="483.6" textLength="878.4" clip-path="url(#termina [...]
+</text><text class="terminal-1322667406-r4" x="0" y="508" textLength="1464" clip-path="url(#terminal-1322667406-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1322667406-r2" x="1464" y="508" textLength="12.2" clip-path="url(#terminal-1322667406-line-20)">
+</text><text class="terminal-1322667406-r4" x="0" y="532.4" textLength="24.4" clip-path="url(#terminal-1322667406-line-21)">╭─</text><text class="terminal-1322667406-r4" x="24.4" y="532.4" textLength="1415.2" clip-path="url(#terminal-1322667406-line-21)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1322667406-r4" x="1439.6" y="532.4" textLength="24.4" clip-path="url(#terminal-132 [...]
+</text><text class="terminal-1322667406-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-22)">│</text><text class="terminal-1322667406-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1322667406-line-22)">-</text><text class="terminal-1322667406-r5" x="36.6" y="556.8" textLength="97.6" clip-path="url(#terminal-1322667406-line-22)">-verbose</text><text class="terminal-1322667406-r7" x="280.6" y="556.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-1322667406-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-23)">│</text><text class="terminal-1322667406-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-1322667406-line-23)">-</text><text class="terminal-1322667406-r5" x="36.6" y="581.2" textLength="48.8" clip-path="url(#terminal-1322667406-line-23)">-dry</text><text class="terminal-1322667406-r5" x="85.4" y="581.2" textLength="48.8" clip-path="url(#terminal-13 [...]
+</text><text class="terminal-1322667406-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-24)">│</text><text class="terminal-1322667406-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1322667406-line-24)">-</text><text class="terminal-1322667406-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-1322667406-line-24)">-github</text><text class="terminal-1322667406-r5" x="122" y="605.6" textLength="134.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1322667406-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1322667406-line-25)">│</text><text class="terminal-1322667406-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1322667406-line-25)">-</text><text class="terminal-1322667406-r5" x="36.6" y="630" textLength="61" clip-path="url(#terminal-1322667406-line-25)">-help</text><text class="terminal-1322667406-r7" x="280.6" y="630" textLength="24.4" clip-path="url(#terminal-1322667406 [...]
+</text><text class="terminal-1322667406-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-1322667406-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1322667406-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-1322667406-line-26)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/images/breeze/output-version.svg b/images/breeze/output-version.svg
index d136f09594..9d37a0a7ac 100644
--- a/images/breeze/output-version.svg
+++ b/images/breeze/output-version.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1544 329.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 269.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,43 +19,77 @@
         font-weight: 700;
     }
 
-    .terminal-589851807-matrix {
+    .terminal-978414751-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
-        line-height: 26.400000000000002px;
+        line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-589851807-title {
+    .terminal-978414751-title {
         font-size: 18px;
-
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-589851807-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-589851807-r2 { fill: #c5c8c6 }
-.terminal-589851807-r3 { fill: #d0b344;font-weight: bold }
-.terminal-589851807-r4 { fill: #868887 }
-.terminal-589851807-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-589851807-r6 { fill: #98a84b;font-weight: bold }
+    .terminal-978414751-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-978414751-r2 { fill: #c5c8c6 }
+.terminal-978414751-r3 { fill: #d0b344;font-weight: bold }
+.terminal-978414751-r4 { fill: #868887 }
+.terminal-978414751-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-978414751-r6 { fill: #98a84b;font-weight: bold }
     </style>
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="16" y="20" width="1512" height="289.6" rx="12"/><text class="terminal-589851807-title" fill="#c5c8c6" text-anchor="middle" x="756" y="46">Command: version</text>
-            <circle cx="40" cy="40" r="7" fill="#ff5f57"/>
-            <circle cx="62" cy="40" r="7" fill="#febc2e"/>
-            <circle cx="84" cy="40" r="7" fill="#28c840"/>
+
+    <defs>
+    <clipPath id="terminal-978414751-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="218.6" />
+    </clipPath>
+    <clipPath id="terminal-978414751-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-978414751-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-978414751-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-978414751-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-978414751-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-978414751-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-978414751-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-978414751-line-7">
+    <rect x="0" y="172.3" 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="267.6" rx="8"/><text class="terminal-978414751-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;version</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(28, 60)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-978414751-clip-terminal)">
     
-    <text alignment-baseline="baseline" class="terminal-589851807-matrix" font-variant="east-asian-width-values"><tspan class="terminal-589851807-r1" x="0" y="20" textLength="1488">&#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;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</tspan><tspan class="terminal-589851807-r1" x="0" y="46.4" textLength="12.4">&#160;</tspan><tspan class="terminal-589851807-r3" x="12.4" y="46.4" textLength="86.8">Usage:&#160;</tspan><tspan class="terminal-589851807-r1" x="99.2" y="46.4" textLength="1388.8">breeze&#160;version&#160;[OPTIONS]&#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; [...]
-</tspan><tspan class="terminal-589851807-r1" x="0" y="72.8" textLength="1488">&#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;&#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; [...]
-</tspan><tspan class="terminal-589851807-r2" x="0" y="99.2" textLength="12.4">&#160;</tspan><tspan class="terminal-589851807-r2" x="12.4" y="99.2" textLength="1463.2">Print&#160;information&#160;about&#160;version&#160;of&#160;apache-airflow-breeze.&#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;&#160;&#1 [...]
-</tspan><tspan class="terminal-589851807-r2" x="0" y="125.6" textLength="1488">&#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;&#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 [...]
-</tspan><tspan class="terminal-589851807-r4" x="0" y="152" textLength="1488">╭─&#160;Options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────────────╮</tspan><tspan class="terminal-589851807-r2" x="1488" y="152" textLength="12.4">
-</tspan><tspan class="terminal-589851807-r4" x="0" y="178.4" textLength="12.4">│</tspan><tspan class="terminal-589851807-r2" x="12.4" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-589851807-r5" x="37.2" y="178.4" textLength="111.6">--verbose</tspan><tspan class="terminal-589851807-r2" x="148.8" y="178.4" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-589851807-r6" x="173.6" y="178.4" textLength="24.8">-v</tspan><tspan class="terminal-589851807-r2" x [...]
-</tspan><tspan class="terminal-589851807-r4" x="0" y="204.8" textLength="12.4">│</tspan><tspan class="terminal-589851807-r2" x="12.4" y="204.8" textLength="24.8">&#160;&#160;</tspan><tspan class="terminal-589851807-r5" x="37.2" y="204.8" textLength="74.4">--help</tspan><tspan class="terminal-589851807-r2" x="111.6" y="204.8" textLength="62">&#160;&#160;&#160;&#160;&#160;</tspan><tspan class="terminal-589851807-r6" x="173.6" y="204.8" textLength="24.8">-h</tspan><tspan class="terminal-589 [...]
-</tspan><tspan class="terminal-589851807-r4" x="0" y="231.2" textLength="1488">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</tspan><tspan class="terminal-589851807-r2" x="1488" y="231.2" textLength="12.4">
-</tspan></text>
+    <g class="terminal-978414751-matrix">
+    <text class="terminal-978414751-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-978414751-line-0)">
+</text><text class="terminal-978414751-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-978414751-line-1)">Usage:&#160;</text><text class="terminal-978414751-r1" x="97.6" y="44.4" textLength="292.8" clip-path="url(#terminal-978414751-line-1)">breeze&#160;version&#160;[OPTIONS]</text><text class="terminal-978414751-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-978414751-line-1)">
+</text><text class="terminal-978414751-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-978414751-line-2)">
+</text><text class="terminal-978414751-r2" x="12.2" y="93.2" textLength="695.4" clip-path="url(#terminal-978414751-line-3)">Print&#160;information&#160;about&#160;version&#160;of&#160;apache-airflow-breeze.</text><text class="terminal-978414751-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-978414751-line-3)">
+</text><text class="terminal-978414751-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-978414751-line-4)">
+</text><text class="terminal-978414751-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-978414751-line-5)">╭─</text><text class="terminal-978414751-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-978414751-line-5)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-978414751-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-978414751-line-5 [...]
+</text><text class="terminal-978414751-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-978414751-line-6)">│</text><text class="terminal-978414751-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-978414751-line-6)">-</text><text class="terminal-978414751-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-978414751-line-6)">-verbose</text><text class="terminal-978414751-r6" x="158.6" y="166.4" textLength="24.4" clip-path="url(#terminal-9784147 [...]
+</text><text class="terminal-978414751-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-978414751-line-7)">│</text><text class="terminal-978414751-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-978414751-line-7)">-</text><text class="terminal-978414751-r5" x="36.6" y="190.8" textLength="61" clip-path="url(#terminal-978414751-line-7)">-help</text><text class="terminal-978414751-r6" x="158.6" y="190.8" textLength="24.4" clip-path="url(#terminal-978414751-li [...]
+</text><text class="terminal-978414751-r4" x="0" y="215.2" textLength="1464" clip-path="url(#terminal-978414751-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-978414751-r2" x="1464" y="215.2" textLength="12.2" clip-path="url(#terminal-978414751-line-8)">
+</text>
+    </g>
     </g>
 </svg>
diff --git a/setup.cfg b/setup.cfg
index 6311319feb..bd73104996 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -156,7 +156,7 @@ install_requires =
     python-dateutil>=2.3
     python-nvd3>=0.15.0
     python-slugify>=5.0
-    rich>=12.4.1
+    rich>=12.4.4
     setproctitle>=1.1.8
     # SQL Alchemy 1.4.10 introduces a bug where for PyODBC driver UTCDateTime fields get wrongly converted
     # as string and fail to be converted back to datetime. It was supposed to be fixed in


[airflow] 09/39: Better diagnostics for ARM for MySQL and MSSQL (#24185)

Posted by po...@apache.org.
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 b5cbad4d3c8c0bc8c3fd40b9993fc26c4fcec3de
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sun Jun 12 17:14:09 2022 +0200

    Better diagnostics for ARM for MySQL and MSSQL (#24185)
    
    Until we have debian suppor tof MySQL and MSSQL ARM, runnign
    those on ARM platform is not supported. However error about it
    was not clear (pulling docker image failed).
    
    This PR adds platform checking also in breeze and fails fast
    without even attempting to enter breeze shell when you are on
    ARM and wants to run MsSQL or MySQL breeze shell.
    
    Also some errors with running different backend versions via
    breeze have been removed.
    
    (cherry picked from commit 00d2a3c9319af6e145b8e03f5ac33a95fa8acd66)
---
 dev/breeze/src/airflow_breeze/commands/developer_commands.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index e10e79d0a8..a8ad686c70 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -25,6 +25,7 @@ from airflow_breeze.commands.ci_image_commands import rebuild_ci_image_if_needed
 from airflow_breeze.commands.main_command import main
 from airflow_breeze.global_constants import (
     DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+    DOCKER_DEFAULT_PLATFORM,
     MOUNT_SELECTED,
     get_available_packages,
 )
@@ -601,7 +602,13 @@ def run_shell(verbose: bool, dry_run: bool, shell_params: ShellParams) -> RunCom
     env_variables = get_env_variables_for_docker_commands(shell_params)
     if cmd_added is not None:
         cmd.extend(['-c', cmd_added])
-
+    if "arm64" in DOCKER_DEFAULT_PLATFORM:
+        if shell_params.backend == "mysql":
+            get_console().print('\n[error]MySQL is not supported on ARM architecture.[/]\n')
+            sys.exit(1)
+        if shell_params.backend == "mssql":
+            get_console().print('\n[error]MSSQL is not supported on ARM architecture[/]\n')
+            sys.exit(1)
     command_result = run_command(
         cmd, verbose=verbose, dry_run=dry_run, env=env_variables, text=True, check=False
     )


[airflow] 17/39: Added instructions on what to do if your command images are regenerated (#24581)

Posted by po...@apache.org.
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 01eae0e0f0e0b11a8358c26f0769e44d44804c2b
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 21 15:59:43 2022 +0200

    Added instructions on what to do if your command images are regenerated (#24581)
    
    In case there are conflicting changes to breeze command in several
    PRs, you might get conflicting images printed. in such case you
    should run `breeze regenerate-command-images`
    
    (cherry picked from commit 864cbc9cd843db94ca8bab2187b50de714fdb070)
---
 .pre-commit-config.yaml                            |   2 +-
 STATIC_CODE_CHECKS.rst                             |   6 +-
 .../configuration_and_maintenance_commands.py      |   9 +-
 dev/breeze/src/airflow_breeze/pre_commit_ids.py    |   4 +-
 images/breeze/output-commands-hash.txt             |   6 +-
 images/breeze/output-static-checks.svg             | 224 ++++++++++-----------
 .../ci/pre_commit/pre_commit_breeze_cmd_line.py    |  16 +-
 7 files changed, 140 insertions(+), 127 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 15d18dd1b0..99db085714 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -341,7 +341,7 @@ repos:
         pass_filenames: true
         files: ^airflow/providers/.*\.py$
         additional_dependencies: ['rich>=12.4.4']
-      - id: update-breeze-file
+      - id: update-breeze-cmd-output
         name: Update output of breeze commands in BREEZE.rst
         entry: ./scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
         language: python
diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst
index 5b7fa05908..00d533250b 100644
--- a/STATIC_CODE_CHECKS.rst
+++ b/STATIC_CODE_CHECKS.rst
@@ -205,14 +205,10 @@ require Breeze Docker image to be build locally.
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | check-system-tests-present                             | Check if system tests have required segments of code             |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
-| check-system-tests-tocs                                | Check that system tests is properly added                        |         |
-+--------------------------------------------------------+------------------------------------------------------------------+---------+
 | check-xml                                              | Check XML files with xmllint                                     |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | codespell                                              | Run codespell to check for common misspellings in files          |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
-| create-missing-init-py-files-tests                     | Create missing init.py files in tests                            |         |
-+--------------------------------------------------------+------------------------------------------------------------------+---------+
 | debug-statements                                       | Detect accidentally committed debug statements                   |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | detect-private-key                                     | Detect if private key is added to the repository                 |         |
@@ -290,7 +286,7 @@ require Breeze Docker image to be build locally.
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | trailing-whitespace                                    | Remove trailing whitespace at end of line                        |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
-| update-breeze-file                                     | Update output of breeze commands in BREEZE.rst                   |         |
+| update-breeze-cmd-output                               | Update output of breeze commands in BREEZE.rst                   |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | update-breeze-readme-config-hash                       | Update Breeze README.md with config files hash                   |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
diff --git a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
index 116319a2ef..490a43c5f5 100644
--- a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
@@ -547,7 +547,14 @@ def regenerate_command_images(verbose: bool, dry_run: bool):
     except FileNotFoundError:
         # when we go to Python 3.8+ we can add missing_ok = True instead of try/except
         pass
-    command_to_execute = [sys.executable, "-m", "pre_commit", 'run', 'update-breeze-file', '--all-files']
+    command_to_execute = [
+        sys.executable,
+        "-m",
+        "pre_commit",
+        'run',
+        'update-breeze-cmd-output',
+        '--all-files',
+    ]
     env = os.environ.copy()
     run_command(
         command_to_execute,
diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
index 2f8366b01f..bcddfa0ec9 100644
--- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
+++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
@@ -59,10 +59,8 @@ PRE_COMMIT_LIST = [
     'check-setup-order',
     'check-start-date-not-used-in-defaults',
     'check-system-tests-present',
-    'check-system-tests-tocs',
     'check-xml',
     'codespell',
-    'create-missing-init-py-files-tests',
     'debug-statements',
     'detect-private-key',
     'doctoc',
@@ -92,7 +90,7 @@ PRE_COMMIT_LIST = [
     'run-shellcheck',
     'static-check-autoflake',
     'trailing-whitespace',
-    'update-breeze-file',
+    'update-breeze-cmd-output',
     'update-breeze-readme-config-hash',
     'update-extras',
     'update-in-the-wild-to-be-sorted',
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 58b9c9981f..d27f8a1a7e 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1,5 @@
-a5442e2ce4b79e862afacff8e79e43bd
+
+# This file is automatically generated by pre-commit. If you have a conflict with this file
+# Please do not solve it but run `breeze regenerate-command-images`.
+# This command should fix the conflict and regenerate help images that you have conflict with.
+09687e7e07a9c1d62fa6c34201532113
diff --git a/images/breeze/output-static-checks.svg b/images/breeze/output-static-checks.svg
index 1e8d54ca8e..5bd4b35dab 100644
--- a/images/breeze/output-static-checks.svg
+++ b/images/breeze/output-static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1245.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,237 +19,233 @@
         font-weight: 700;
     }
 
-    .terminal-1202620514-matrix {
+    .terminal-373974906-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1202620514-title {
+    .terminal-373974906-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1202620514-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1202620514-r2 { fill: #c5c8c6 }
-.terminal-1202620514-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1202620514-r4 { fill: #868887 }
-.terminal-1202620514-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1202620514-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1202620514-r7 { fill: #8d7b39 }
+    .terminal-373974906-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-373974906-r2 { fill: #c5c8c6 }
+.terminal-373974906-r3 { fill: #d0b344;font-weight: bold }
+.terminal-373974906-r4 { fill: #868887 }
+.terminal-373974906-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-373974906-r6 { fill: #98a84b;font-weight: bold }
+.terminal-373974906-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1202620514-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1194.6" />
+    <clipPath id="terminal-373974906-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
     </clipPath>
-    <clipPath id="terminal-1202620514-line-0">
+    <clipPath id="terminal-373974906-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-1">
+<clipPath id="terminal-373974906-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-2">
+<clipPath id="terminal-373974906-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-3">
+<clipPath id="terminal-373974906-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-4">
+<clipPath id="terminal-373974906-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-5">
+<clipPath id="terminal-373974906-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-6">
+<clipPath id="terminal-373974906-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-7">
+<clipPath id="terminal-373974906-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-8">
+<clipPath id="terminal-373974906-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-9">
+<clipPath id="terminal-373974906-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-10">
+<clipPath id="terminal-373974906-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-11">
+<clipPath id="terminal-373974906-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-12">
+<clipPath id="terminal-373974906-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-13">
+<clipPath id="terminal-373974906-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-14">
+<clipPath id="terminal-373974906-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-15">
+<clipPath id="terminal-373974906-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-16">
+<clipPath id="terminal-373974906-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-17">
+<clipPath id="terminal-373974906-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-18">
+<clipPath id="terminal-373974906-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-19">
+<clipPath id="terminal-373974906-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-20">
+<clipPath id="terminal-373974906-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-21">
+<clipPath id="terminal-373974906-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-22">
+<clipPath id="terminal-373974906-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-23">
+<clipPath id="terminal-373974906-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-24">
+<clipPath id="terminal-373974906-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-25">
+<clipPath id="terminal-373974906-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-26">
+<clipPath id="terminal-373974906-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-27">
+<clipPath id="terminal-373974906-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-28">
+<clipPath id="terminal-373974906-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-29">
+<clipPath id="terminal-373974906-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-30">
+<clipPath id="terminal-373974906-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-31">
+<clipPath id="terminal-373974906-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-32">
+<clipPath id="terminal-373974906-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-33">
+<clipPath id="terminal-373974906-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-34">
+<clipPath id="terminal-373974906-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-35">
+<clipPath id="terminal-373974906-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-36">
+<clipPath id="terminal-373974906-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-37">
+<clipPath id="terminal-373974906-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-38">
+<clipPath id="terminal-373974906-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-39">
+<clipPath id="terminal-373974906-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-40">
+<clipPath id="terminal-373974906-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-41">
+<clipPath id="terminal-373974906-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-42">
+<clipPath id="terminal-373974906-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-43">
+<clipPath id="terminal-373974906-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-44">
+<clipPath id="terminal-373974906-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-45">
+<clipPath id="terminal-373974906-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-46">
+<clipPath id="terminal-373974906-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1202620514-line-47">
-    <rect x="0" y="1148.3" 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="1243.6" rx="8"/><text class="terminal-1202620514-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1219.2" rx="8"/><text class="terminal-373974906-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</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-1202620514-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-373974906-clip-terminal)">
     
-    <g class="terminal-1202620514-matrix">
-    <text class="terminal-1202620514-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1202620514-line-0)">
-</text><text class="terminal-1202620514-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1202620514-line-1)">Usage:&#160;</text><text class="terminal-1202620514-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-1202620514-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-1202620514-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-1)">
-</text><text class="terminal-1202620514-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-2)">
-</text><text class="terminal-1202620514-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-1202620514-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-1202620514-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-3)">
-</text><text class="terminal-1202620514-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-4)">
-</text><text class="terminal-1202620514-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1202620514-line-5)">╭─</text><text class="terminal-1202620514-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1202620514-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1202620514-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-120262 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-6)">│</text><text class="terminal-1202620514-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-6)">-</text><text class="terminal-1202620514-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-1202620514-line-6)">-type</text><text class="terminal-1202620514-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-12026 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-7)">│</text><text class="terminal-1202620514-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-1-compatibility&#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-1202620514-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-8)">│</text><text class="terminal-1202620514-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-providers-have-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="215.2" textLength="1 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-9)">│</text><text class="terminal-1202620514-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-9)">check-apache-license-rat&#160;|&#160;check-base-operator-usage&#160;|&#160;check-boring-cyborg-configuration</text><text class="terminal-1202620514-r4" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-9)">│</te [...]
-</text><text class="terminal-1202620514-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1202620514-line-10)">│</text><text class="terminal-1202620514-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-1202620514-line-10)">|&#160;check-breeze-top-dependencies-limited&#160;|&#160;check-builtin-literals&#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="termi [...]
-</text><text class="terminal-1202620514-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-11)">│</text><text class="terminal-1202620514-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-11)">check-changelog-has-no-duplicates&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r [...]
-</text><text class="terminal-1202620514-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-12)">│</text><text class="terminal-1202620514-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-12)">check-docstring-param-types&#160;|&#160;check-executables-have-shebangs&#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><tex [...]
-</text><text class="terminal-1202620514-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-13)">│</text><text class="terminal-1202620514-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-13)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-120 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-14)">│</text><text class="terminal-1202620514-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-14)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#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-1202620514-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1202620514-line-15)">│</text><text class="terminal-1202620514-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-1202620514-line-15)">check-integrations-are-consistent&#160;|&#160;check-merge-conflict&#160;|&#160;check-newsfragments-are-valid</text><text class="terminal-1202620514-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-1202620514-line-15)">│</text> [...]
-</text><text class="terminal-1202620514-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-16)">│</text><text class="terminal-1202620514-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-16)">|&#160;check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#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="termin [...]
-</text><text class="terminal-1202620514-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-17)">│</text><text class="terminal-1202620514-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-17)">check-persist-credentials-disabled-in-github-workflows&#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;&#16 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-18)">│</text><text class="terminal-1202620514-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...]
-</text><text class="terminal-1202620514-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-19)">│</text><text class="terminal-1202620514-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#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><tex [...]
-</text><text class="terminal-1202620514-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1202620514-line-20)">│</text><text class="terminal-1202620514-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-1202620514-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="508" te [...]
-</text><text class="terminal-1202620514-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-21)">│</text><text class="terminal-1202620514-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="532.4" textLength="12.2" cli [...]
-</text><text class="terminal-1202620514-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-22)">│</text><text class="terminal-1202620514-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#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-1202620 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-23)">│</text><text class="terminal-1202620514-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-23)">check-system-tests-tocs&#160;|&#160;check-xml&#160;|&#160;codespell&#160;|&#160;create-missing-init-py-files-tests&#160;|&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="581.2" textLength="12.2" clip-path="url(#termina [...]
-</text><text class="terminal-1202620514-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-24)">│</text><text class="terminal-1202620514-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-24)">debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;fix-encoding-pragma</text><text class="terminal-1202620514-r4" x="1451.8" y="605.6" textLength="12.2" clip-path="url(#terminal-120 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1202620514-line-25)">│</text><text class="terminal-1202620514-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-1202620514-line-25)">|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;lint-chart-schema&#160;|&#160;lint-css</text><text class="terminal-1202620514-r4" x="1451.8" y="630" textLength="12.2" clip-path [...]
-</text><text class="terminal-1202620514-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-26)">│</text><text class="terminal-1202620514-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-26)">|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;lint-json-schema&#160;|&#160;lint-markdown</text><text class="terminal-1202620514-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#termina [...]
-</text><text class="terminal-1202620514-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-27)">│</text><text class="terminal-1202620514-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-27)">|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json&#160;|&#160;pydocstyle&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="t [...]
-</text><text class="terminal-1202620514-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-28)">│</text><text class="terminal-1202620514-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-28)">python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;run-shellcheck&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="ur [...]
-</text><text class="terminal-1202620514-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-29)">│</text><text class="terminal-1202620514-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-29)">|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-file&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="termin [...]
-</text><text class="terminal-1202620514-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1202620514-line-30)">│</text><text class="terminal-1202620514-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-1202620514-line-30)">update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-1202 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-31)">│</text><text class="terminal-1202620514-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-31)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="776.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-31 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-32)">│</text><text class="terminal-1202620514-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-32)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#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-1202620514-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-33)">│</text><text class="terminal-1202620514-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-33)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-12 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-34)">│</text><text class="terminal-1202620514-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-34)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1202620514-line-35)">│</text><text class="terminal-1202620514-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1202620514-line-35)">-</text><text class="terminal-1202620514-r5" x="36.6" y="874" textLength="61" clip-path="url(#terminal-1202620514-line-35)">-file</text><text class="terminal-1202620514-r6" x="317.2" y="874" textLength="24.4" clip-path="url(#terminal-1202620514 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-36)">│</text><text class="terminal-1202620514-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-36)">-</text><text class="terminal-1202620514-r5" x="36.6" y="898.4" textLength="48.8" clip-path="url(#terminal-1202620514-line-36)">-all</text><text class="terminal-1202620514-r5" x="85.4" y="898.4" textLength="73.2" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-37)">│</text><text class="terminal-1202620514-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-37)">-</text><text class="terminal-1202620514-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-1202620514-line-37)">-show</text><text class="terminal-1202620514-r5" x="97.6" y="922.8" textLength="195.2" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-38)">│</text><text class="terminal-1202620514-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-38)">-</text><text class="terminal-1202620514-r5" x="36.6" y="947.2" textLength="61" clip-path="url(#terminal-1202620514-line-38)">-last</text><text class="terminal-1202620514-r5" x="97.6" y="947.2" textLength="85.4" clip-path="url(#terminal-120 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="971.6" textLength="1464" clip-path="url(#terminal-1202620514-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1202620514-r2" x="1464" y="971.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-39)">
-</text><text class="terminal-1202620514-r4" x="0" y="996" textLength="24.4" clip-path="url(#terminal-1202620514-line-40)">╭─</text><text class="terminal-1202620514-r4" x="24.4" y="996" textLength="1415.2" clip-path="url(#terminal-1202620514-line-40)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1202620514-r4" x="1439.6" y="996" textLength="24.4" clip-path="url(#terminal-120262051 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-41)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-41)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-1202620514-line-41)">-commit</text><text class="terminal-1202620514-r5" x="122" y="1020.4" textLength="48.8" clip-path="url(#termi [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-42)">│</text><text class="terminal-1202620514-r2" x="329.4" y="1044.8" textLength="183" clip-path="url(#terminal-1202620514-line-42)">exclusive&#160;with&#160;</text><text class="terminal-1202620514-r5" x="512.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-42)">-</text><text class="terminal-1202620514-r5" x="524.6" y="1044.8" textLength="61" cl [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-43)">│</text><text class="terminal-1202620514-r7" x="329.4" y="1069.2" textLength="1110.2" clip-path="url(#terminal-1202620514-line-43)">(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;& [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-44)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-44)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#terminal-1202620514-line-44)">-verbose</text><text class="terminal-1202620514-r6" x="280.6" y="1093.6" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1202620514-line-45)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1202620514-line-45)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-1202620514-line-45)">-dry</text><text class="terminal-1202620514-r5" x="85.4" y="1118" textLength="48.8" clip-path="url(#terminal-120262 [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-46)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-46)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-1202620514-line-46)">-github</text><text class="terminal-1202620514-r5" x="122" y="1142.4" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-47)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-47)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1166.8" textLength="61" clip-path="url(#terminal-1202620514-line-47)">-help</text><text class="terminal-1202620514-r6" x="280.6" y="1166.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1202620514-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-1202620514-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1202620514-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-48)">
+    <g class="terminal-373974906-matrix">
+    <text class="terminal-373974906-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-373974906-line-0)">
+</text><text class="terminal-373974906-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-373974906-line-1)">Usage:&#160;</text><text class="terminal-373974906-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-373974906-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-373974906-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-373974906-line-1)">
+</text><text class="terminal-373974906-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-373974906-line-2)">
+</text><text class="terminal-373974906-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-373974906-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-373974906-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-373974906-line-3)">
+</text><text class="terminal-373974906-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-373974906-line-4)">
+</text><text class="terminal-373974906-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-373974906-line-5)">╭─</text><text class="terminal-373974906-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-373974906-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-373974906-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-373974906-l [...]
+</text><text class="terminal-373974906-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-373974906-line-6)">│</text><text class="terminal-373974906-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-373974906-line-6)">-</text><text class="terminal-373974906-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-373974906-line-6)">-type</text><text class="terminal-373974906-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-373974906-li [...]
+</text><text class="terminal-373974906-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-373974906-line-7)">│</text><text class="terminal-373974906-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-1-compatibility&#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-373974906-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-373974906-line-8)">│</text><text class="terminal-373974906-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-providers-have-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="215.2" textLength="12.2"  [...]
+</text><text class="terminal-373974906-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-373974906-line-9)">│</text><text class="terminal-373974906-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-9)">check-apache-license-rat&#160;|&#160;check-base-operator-usage&#160;|&#160;check-boring-cyborg-configuration</text><text class="terminal-373974906-r4" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#terminal-373974906-line-9)">│</text><te [...]
+</text><text class="terminal-373974906-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-373974906-line-10)">│</text><text class="terminal-373974906-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-373974906-line-10)">|&#160;check-breeze-top-dependencies-limited&#160;|&#160;check-builtin-literals&#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- [...]
+</text><text class="terminal-373974906-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-373974906-line-11)">│</text><text class="terminal-373974906-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-11)">check-changelog-has-no-duplicates&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x= [...]
+</text><text class="terminal-373974906-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-373974906-line-12)">│</text><text class="terminal-373974906-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-12)">check-docstring-param-types&#160;|&#160;check-executables-have-shebangs&#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 cl [...]
+</text><text class="terminal-373974906-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-373974906-line-13)">│</text><text class="terminal-373974906-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-13)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-37397490 [...]
+</text><text class="terminal-373974906-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-373974906-line-14)">│</text><text class="terminal-373974906-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-14)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#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-373974906-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-373974906-line-15)">│</text><text class="terminal-373974906-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-373974906-line-15)">check-integrations-are-consistent&#160;|&#160;check-merge-conflict&#160;|&#160;check-newsfragments-are-valid</text><text class="terminal-373974906-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-373974906-line-15)">│</text><text  [...]
+</text><text class="terminal-373974906-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-373974906-line-16)">│</text><text class="terminal-373974906-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-16)">|&#160;check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#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-3 [...]
+</text><text class="terminal-373974906-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-373974906-line-17)">│</text><text class="terminal-373974906-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-17)">check-persist-credentials-disabled-in-github-workflows&#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-373974906-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-373974906-line-18)">│</text><text class="terminal-373974906-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#termina [...]
+</text><text class="terminal-373974906-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-373974906-line-19)">│</text><text class="terminal-373974906-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#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 cl [...]
+</text><text class="terminal-373974906-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-373974906-line-20)">│</text><text class="terminal-373974906-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-373974906-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="508" textLen [...]
+</text><text class="terminal-373974906-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-373974906-line-21)">│</text><text class="terminal-373974906-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="532.4" textLength="12.2" clip-pat [...]
+</text><text class="terminal-373974906-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-373974906-line-22)">│</text><text class="terminal-373974906-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#160;|&#160;check-xml&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="556.8" textLength="12.2" clip-pat [...]
+</text><text class="terminal-373974906-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-373974906-line-23)">│</text><text class="terminal-373974906-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-23)">codespell&#160;|&#160;debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="581.2" textLe [...]
+</text><text class="terminal-373974906-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-373974906-line-24)">│</text><text class="terminal-373974906-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-24)">fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y [...]
+</text><text class="terminal-373974906-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-373974906-line-25)">│</text><text class="terminal-373974906-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-373974906-line-25)">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="630" textLength="12.2" clip-path="url [...]
+</text><text class="terminal-373974906-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-373974906-line-26)">│</text><text class="terminal-373974906-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-26)">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json</text><text class="terminal-373974906-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#terminal-37397490 [...]
+</text><text class="terminal-373974906-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-373974906-line-27)">│</text><text class="terminal-373974906-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-27)">|&#160;pydocstyle&#160;|&#160;python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="678.8" textLength="12.2" clip-pat [...]
+</text><text class="terminal-373974906-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-373974906-line-28)">│</text><text class="terminal-373974906-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-28)">run-shellcheck&#160;|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-cmd-output</text><text class="terminal-373974906-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#terminal-373974906-line-28) [...]
+</text><text class="terminal-373974906-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-373974906-line-29)">│</text><text class="terminal-373974906-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-373974906-line-29)">|&#160;update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#terminal-37397490 [...]
+</text><text class="terminal-373974906-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-373974906-line-30)">│</text><text class="terminal-373974906-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-373974906-line-30)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-373974906-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-373974906-line-30)">│</text>< [...]
+</text><text class="terminal-373974906-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-373974906-line-31)">│</text><text class="terminal-373974906-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-373974906-line-31)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#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;&#16 [...]
+</text><text class="terminal-373974906-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-373974906-line-32)">│</text><text class="terminal-373974906-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-373974906-line-32)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-373974 [...]
+</text><text class="terminal-373974906-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-373974906-line-33)">│</text><text class="terminal-373974906-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-373974906-line-33)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-373974906-r [...]
+</text><text class="terminal-373974906-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-373974906-line-34)">│</text><text class="terminal-373974906-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-373974906-line-34)">-</text><text class="terminal-373974906-r5" x="36.6" y="849.6" textLength="61" clip-path="url(#terminal-373974906-line-34)">-file</text><text class="terminal-373974906-r6" x="317.2" y="849.6" textLength="24.4" clip-path="url(#terminal-373974906 [...]
+</text><text class="terminal-373974906-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-373974906-line-35)">│</text><text class="terminal-373974906-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-373974906-line-35)">-</text><text class="terminal-373974906-r5" x="36.6" y="874" textLength="48.8" clip-path="url(#terminal-373974906-line-35)">-all</text><text class="terminal-373974906-r5" x="85.4" y="874" textLength="73.2" clip-path="url(#terminal-373974906-line-35 [...]
+</text><text class="terminal-373974906-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-373974906-line-36)">│</text><text class="terminal-373974906-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-373974906-line-36)">-</text><text class="terminal-373974906-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-373974906-line-36)">-show</text><text class="terminal-373974906-r5" x="97.6" y="898.4" textLength="195.2" clip-path="url(#terminal-373974906 [...]
+</text><text class="terminal-373974906-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-373974906-line-37)">│</text><text class="terminal-373974906-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-373974906-line-37)">-</text><text class="terminal-373974906-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-373974906-line-37)">-last</text><text class="terminal-373974906-r5" x="97.6" y="922.8" textLength="85.4" clip-path="url(#terminal-373974906- [...]
+</text><text class="terminal-373974906-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-373974906-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-373974906-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-373974906-line-38)">
+</text><text class="terminal-373974906-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-373974906-line-39)">╭─</text><text class="terminal-373974906-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-373974906-line-39)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-373974906-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#terminal-37397490 [...]
+</text><text class="terminal-373974906-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-373974906-line-40)">│</text><text class="terminal-373974906-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-373974906-line-40)">-</text><text class="terminal-373974906-r5" x="36.6" y="996" textLength="85.4" clip-path="url(#terminal-373974906-line-40)">-commit</text><text class="terminal-373974906-r5" x="122" y="996" textLength="48.8" clip-path="url(#terminal-373974906-line- [...]
+</text><text class="terminal-373974906-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-373974906-line-41)">│</text><text class="terminal-373974906-r2" x="329.4" y="1020.4" textLength="183" clip-path="url(#terminal-373974906-line-41)">exclusive&#160;with&#160;</text><text class="terminal-373974906-r5" x="512.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-373974906-line-41)">-</text><text class="terminal-373974906-r5" x="524.6" y="1020.4" textLength="61" clip-path [...]
+</text><text class="terminal-373974906-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-373974906-line-42)">│</text><text class="terminal-373974906-r7" x="329.4" y="1044.8" textLength="1110.2" clip-path="url(#terminal-373974906-line-42)">(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-373974906-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-373974906-line-43)">│</text><text class="terminal-373974906-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-373974906-line-43)">-</text><text class="terminal-373974906-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-373974906-line-43)">-verbose</text><text class="terminal-373974906-r6" x="280.6" y="1069.2" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-373974906-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-373974906-line-44)">│</text><text class="terminal-373974906-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-373974906-line-44)">-</text><text class="terminal-373974906-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-373974906-line-44)">-dry</text><text class="terminal-373974906-r5" x="85.4" y="1093.6" textLength="48.8" clip-path="url(#terminal-37397 [...]
+</text><text class="terminal-373974906-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-373974906-line-45)">│</text><text class="terminal-373974906-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-373974906-line-45)">-</text><text class="terminal-373974906-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-373974906-line-45)">-github</text><text class="terminal-373974906-r5" x="122" y="1118" textLength="134.2" clip-path="url(#terminal-373974906- [...]
+</text><text class="terminal-373974906-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-373974906-line-46)">│</text><text class="terminal-373974906-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-373974906-line-46)">-</text><text class="terminal-373974906-r5" x="36.6" y="1142.4" textLength="61" clip-path="url(#terminal-373974906-line-46)">-help</text><text class="terminal-373974906-r6" x="280.6" y="1142.4" textLength="24.4" clip-path="url(#terminal-37397 [...]
+</text><text class="terminal-373974906-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-373974906-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-373974906-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-373974906-line-47)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py b/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
index c01c6bfbf6..81b9fedf52 100755
--- a/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
+++ b/scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py
@@ -30,6 +30,12 @@ BREEZE_SOURCES_DIR = BREEZE_INSTALL_DIR / "src"
 
 SCREENSHOT_WIDTH = "120"
 
+PREAMBLE = """
+# This file is automatically generated by pre-commit. If you have a conflict with this file
+# Please do not solve it but run `breeze regenerate-command-images`.
+# This command should fix the conflict and regenerate help images that you have conflict with.
+"""
+
 
 def get_command_list():
     comp_env = os.environ.copy()
@@ -61,7 +67,7 @@ def print_help_for_all_commands():
     )
     hash_file_path = BREEZE_IMAGES_DIR / "output-commands-hash.txt"
     try:
-        old_hash = hash_file_path.read_text()
+        old_hash = hash_file_path.read_text()[len(PREAMBLE) :]
     except FileNotFoundError:
         old_hash = ""
     if old_hash == new_hash:
@@ -83,7 +89,7 @@ def print_help_for_all_commands():
         env['RECORD_BREEZE_OUTPUT_FILE'] = str(BREEZE_IMAGES_DIR / f"output-{command}.svg")
         env['TERM'] = "xterm-256color"
         check_call(["breeze", command, "--help"], env=env)
-    hash_file_path.write_text(new_hash)
+    hash_file_path.write_text(PREAMBLE + new_hash)
 
 
 def verify_all_commands_described_in_docs():
@@ -114,3 +120,9 @@ def verify_all_commands_described_in_docs():
 if __name__ == '__main__':
     print_help_for_all_commands()
     verify_all_commands_described_in_docs()
+    console = Console(width=int(SCREENSHOT_WIDTH), color_system="standard")
+    if os.environ.get('CI'):
+        console.print(
+            "\n\n[yellow] If you see that  images got re-generatead in CI, please run:[/]"
+            "\n\n    breeze regenerate-command-images\n\n\n"
+        )


[airflow] 33/39: Handle "workflow_run" event properly in selective-check (#24656)

Posted by po...@apache.org.
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 4baf1d569a62d43386a260e47ae222543b6c9553
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sun Jun 26 11:07:49 2022 +0200

    Handle "workflow_run" event properly in selective-check (#24656)
    
    Unfortunately testing workflow_run is a bit difficult because
    the changes are only effective after merging them.
    
    Fixing (hopefully) yet another mistake in the workflow run where
    commit hash was passed as event name (?)
    
    We are going to handle "workflow_run" as valid event type so this
    should now work without passing any event.
    
    (cherry picked from commit e83e7c85c1bc3e634ad8a97224090028c0fd81b9)
---
 .../workflows/label_when_reviewed_workflow_run.yml |  2 +-
 dev/breeze/src/airflow_breeze/global_constants.py  |  1 +
 images/breeze/output-commands-hash.txt             |  2 +-
 images/breeze/output-selective-check.svg           | 96 +++++++++++-----------
 4 files changed, 51 insertions(+), 50 deletions(-)

diff --git a/.github/workflows/label_when_reviewed_workflow_run.yml b/.github/workflows/label_when_reviewed_workflow_run.yml
index e818e8411a..b84ab34a79 100644
--- a/.github/workflows/label_when_reviewed_workflow_run.yml
+++ b/.github/workflows/label_when_reviewed_workflow_run.yml
@@ -96,7 +96,7 @@ jobs:
         env:
           PR_LABELS: "${{ steps.source-run-info.outputs.pullRequestLabels }}"
           COMMIT_REF: "${{ steps.source-run-info.outputs.targetCommitSha }}"
-        run: breeze selective-check --github-event-name "${{ steps.source-run-info.outputs.targetCommitSha }}"
+        run: breeze selective-check
       - name: "Label when approved by committers for PRs that require full tests"
         uses: ./.github/actions/label-when-approved-action
         id: label-full-test-prs-when-approved-by-commiters
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 41acd12e45..8dedc191f7 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -298,6 +298,7 @@ class GithubEvents(Enum):
     PULL_REQUEST_TARGET = "pull_request_target"
     PUSH = "push"
     SCHEDULE = "schedule"
+    WORKFLOW_RUN = "workflow_run"
 
 
 @lru_cache(maxsize=None)
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 194d9690d8..e7e333b83e 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,4 +2,4 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-b5c4ae62f5ac472a83af3a8eca75ed9b
+60ea24df0a84c6739fc5f06197cdd201
diff --git a/images/breeze/output-selective-check.svg b/images/breeze/output-selective-check.svg
index 3ea08a5bf7..67bc6c5253 100644
--- a/images/breeze/output-selective-check.svg
+++ b/images/breeze/output-selective-check.svg
@@ -19,113 +19,113 @@
         font-weight: 700;
     }
 
-    .terminal-3258521135-matrix {
+    .terminal-417995322-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3258521135-title {
+    .terminal-417995322-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3258521135-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3258521135-r2 { fill: #c5c8c6 }
-.terminal-3258521135-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3258521135-r4 { fill: #868887 }
-.terminal-3258521135-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3258521135-r6 { fill: #8d7b39 }
-.terminal-3258521135-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-417995322-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-417995322-r2 { fill: #c5c8c6 }
+.terminal-417995322-r3 { fill: #d0b344;font-weight: bold }
+.terminal-417995322-r4 { fill: #868887 }
+.terminal-417995322-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-417995322-r6 { fill: #8d7b39 }
+.terminal-417995322-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-3258521135-clip-terminal">
+    <clipPath id="terminal-417995322-clip-terminal">
       <rect x="0" y="0" width="1463.0" height="438.2" />
     </clipPath>
-    <clipPath id="terminal-3258521135-line-0">
+    <clipPath id="terminal-417995322-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-1">
+<clipPath id="terminal-417995322-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-2">
+<clipPath id="terminal-417995322-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-3">
+<clipPath id="terminal-417995322-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-4">
+<clipPath id="terminal-417995322-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-5">
+<clipPath id="terminal-417995322-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-6">
+<clipPath id="terminal-417995322-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-7">
+<clipPath id="terminal-417995322-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-8">
+<clipPath id="terminal-417995322-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-9">
+<clipPath id="terminal-417995322-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-10">
+<clipPath id="terminal-417995322-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-11">
+<clipPath id="terminal-417995322-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-12">
+<clipPath id="terminal-417995322-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-13">
+<clipPath id="terminal-417995322-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-14">
+<clipPath id="terminal-417995322-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-15">
+<clipPath id="terminal-417995322-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3258521135-line-16">
+<clipPath id="terminal-417995322-line-16">
     <rect x="0" y="391.9" 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="487.2" rx="8"/><text class="terminal-3258521135-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;selective-check</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="487.2" rx="8"/><text class="terminal-417995322-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;selective-check</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-3258521135-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-417995322-clip-terminal)">
     
-    <g class="terminal-3258521135-matrix">
-    <text class="terminal-3258521135-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3258521135-line-0)">
-</text><text class="terminal-3258521135-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3258521135-line-1)">Usage:&#160;</text><text class="terminal-3258521135-r1" x="97.6" y="44.4" textLength="390.4" clip-path="url(#terminal-3258521135-line-1)">breeze&#160;selective-check&#160;[OPTIONS]</text><text class="terminal-3258521135-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-1)">
-</text><text class="terminal-3258521135-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-2)">
-</text><text class="terminal-3258521135-r2" x="12.2" y="93.2" textLength="768.6" clip-path="url(#terminal-3258521135-line-3)">Checks&#160;what&#160;kind&#160;of&#160;tests&#160;should&#160;be&#160;run&#160;for&#160;an&#160;incoming&#160;commit.</text><text class="terminal-3258521135-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3258521135-line-3)">
-</text><text class="terminal-3258521135-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-4)">
-</text><text class="terminal-3258521135-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3258521135-line-5)">╭─</text><text class="terminal-3258521135-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3258521135-line-5)">&#160;Selective&#160;check&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3258521135-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3258521135-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-6)">│</text><text class="terminal-3258521135-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-6)">-</text><text class="terminal-3258521135-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3258521135-line-6)">-commit</text><text class="terminal-3258521135-r5" x="122" y="166.4" textLength="48.8" clip-path="url(#terminal-325 [...]
-</text><text class="terminal-3258521135-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-7)">│</text><text class="terminal-3258521135-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-7)">-</text><text class="terminal-3258521135-r5" x="36.6" y="190.8" textLength="36.6" clip-path="url(#terminal-3258521135-line-7)">-pr</text><text class="terminal-3258521135-r5" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-325852 [...]
-</text><text class="terminal-3258521135-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3258521135-line-8)">│</text><text class="terminal-3258521135-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3258521135-line-8)">-</text><text class="terminal-3258521135-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-3258521135-line-8)">-default</text><text class="terminal-3258521135-r5" x="134.2" y="215.2" textLength="85.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3258521135-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-9)">│</text><text class="terminal-3258521135-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-9)">-</text><text class="terminal-3258521135-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-3258521135-line-9)">-github</text><text class="terminal-3258521135-r5" x="122" y="239.6" textLength="134.2" clip-path="url(#terminal-32 [...]
-</text><text class="terminal-3258521135-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3258521135-line-10)">│</text><text class="terminal-3258521135-r6" x="305" y="264" textLength="927.2" clip-path="url(#terminal-3258521135-line-10)">(pull_request&#160;|&#160;pull_request_review&#160;|&#160;pull_request_target&#160;|&#160;push&#160;|&#160;schedule)</text><text class="terminal-3258521135-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-3258521135-line-10)">│ [...]
-</text><text class="terminal-3258521135-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-11)">│</text><text class="terminal-3258521135-r4" x="305" y="288.4" textLength="927.2" clip-path="url(#terminal-3258521135-line-11)">[default:&#160;pull_request]&#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-3258521135-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-3258521135-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3258521135-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-12)">
-</text><text class="terminal-3258521135-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-3258521135-line-13)">╭─</text><text class="terminal-3258521135-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-3258521135-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3258521135-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-325 [...]
-</text><text class="terminal-3258521135-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-14)">│</text><text class="terminal-3258521135-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-14)">-</text><text class="terminal-3258521135-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-3258521135-line-14)">-verbose</text><text class="terminal-3258521135-r7" x="158.6" y="361.6" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-3258521135-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3258521135-line-15)">│</text><text class="terminal-3258521135-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3258521135-line-15)">-</text><text class="terminal-3258521135-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-3258521135-line-15)">-dry</text><text class="terminal-3258521135-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-3258521135 [...]
-</text><text class="terminal-3258521135-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-16)">│</text><text class="terminal-3258521135-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-16)">-</text><text class="terminal-3258521135-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-3258521135-line-16)">-help</text><text class="terminal-3258521135-r7" x="158.6" y="410.4" textLength="24.4" clip-path="url(#terminal-32 [...]
-</text><text class="terminal-3258521135-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3258521135-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3258521135-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-17)">
+    <g class="terminal-417995322-matrix">
+    <text class="terminal-417995322-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-417995322-line-0)">
+</text><text class="terminal-417995322-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-417995322-line-1)">Usage:&#160;</text><text class="terminal-417995322-r1" x="97.6" y="44.4" textLength="390.4" clip-path="url(#terminal-417995322-line-1)">breeze&#160;selective-check&#160;[OPTIONS]</text><text class="terminal-417995322-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-417995322-line-1)">
+</text><text class="terminal-417995322-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-417995322-line-2)">
+</text><text class="terminal-417995322-r2" x="12.2" y="93.2" textLength="768.6" clip-path="url(#terminal-417995322-line-3)">Checks&#160;what&#160;kind&#160;of&#160;tests&#160;should&#160;be&#160;run&#160;for&#160;an&#160;incoming&#160;commit.</text><text class="terminal-417995322-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-417995322-line-3)">
+</text><text class="terminal-417995322-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-417995322-line-4)">
+</text><text class="terminal-417995322-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-417995322-line-5)">╭─</text><text class="terminal-417995322-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-417995322-line-5)">&#160;Selective&#160;check&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-417995322-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-417995 [...]
+</text><text class="terminal-417995322-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-417995322-line-6)">│</text><text class="terminal-417995322-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-417995322-line-6)">-</text><text class="terminal-417995322-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-417995322-line-6)">-commit</text><text class="terminal-417995322-r5" x="122" y="166.4" textLength="48.8" clip-path="url(#terminal-417995322- [...]
+</text><text class="terminal-417995322-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-417995322-line-7)">│</text><text class="terminal-417995322-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-417995322-line-7)">-</text><text class="terminal-417995322-r5" x="36.6" y="190.8" textLength="36.6" clip-path="url(#terminal-417995322-line-7)">-pr</text><text class="terminal-417995322-r5" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-417995322-lin [...]
+</text><text class="terminal-417995322-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-417995322-line-8)">│</text><text class="terminal-417995322-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-417995322-line-8)">-</text><text class="terminal-417995322-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-417995322-line-8)">-default</text><text class="terminal-417995322-r5" x="134.2" y="215.2" textLength="85.4" clip-path="url(#terminal-4179953 [...]
+</text><text class="terminal-417995322-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-417995322-line-9)">│</text><text class="terminal-417995322-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-417995322-line-9)">-</text><text class="terminal-417995322-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-417995322-line-9)">-github</text><text class="terminal-417995322-r5" x="122" y="239.6" textLength="134.2" clip-path="url(#terminal-417995322 [...]
+</text><text class="terminal-417995322-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-417995322-line-10)">│</text><text class="terminal-417995322-r6" x="305" y="264" textLength="1110.2" clip-path="url(#terminal-417995322-line-10)">(pull_request&#160;|&#160;pull_request_review&#160;|&#160;pull_request_target&#160;|&#160;push&#160;|&#160;schedule&#160;|&#160;workflow_run)</text><text class="terminal-417995322-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-4 [...]
+</text><text class="terminal-417995322-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-417995322-line-11)">│</text><text class="terminal-417995322-r4" x="305" y="288.4" textLength="1110.2" clip-path="url(#terminal-417995322-line-11)">[default:&#160;pull_request]&#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-417995322-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-417995322-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-417995322-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-417995322-line-12)">
+</text><text class="terminal-417995322-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-417995322-line-13)">╭─</text><text class="terminal-417995322-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-417995322-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-417995322-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-41799532 [...]
+</text><text class="terminal-417995322-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-417995322-line-14)">│</text><text class="terminal-417995322-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-417995322-line-14)">-</text><text class="terminal-417995322-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-417995322-line-14)">-verbose</text><text class="terminal-417995322-r7" x="158.6" y="361.6" textLength="24.4" clip-path="url(#terminal-4179 [...]
+</text><text class="terminal-417995322-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-417995322-line-15)">│</text><text class="terminal-417995322-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-417995322-line-15)">-</text><text class="terminal-417995322-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-417995322-line-15)">-dry</text><text class="terminal-417995322-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-417995322-line-15 [...]
+</text><text class="terminal-417995322-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-417995322-line-16)">│</text><text class="terminal-417995322-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-417995322-line-16)">-</text><text class="terminal-417995322-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-417995322-line-16)">-help</text><text class="terminal-417995322-r7" x="158.6" y="410.4" textLength="24.4" clip-path="url(#terminal-417995322 [...]
+</text><text class="terminal-417995322-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-417995322-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-417995322-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-417995322-line-17)">
 </text>
     </g>
     </g>


[airflow] 38/39: Script to filter candidates for PR of the month based on heuristics (#24654)

Posted by po...@apache.org.
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 2905ede084229c4b8675cfcd5d11a82cad1d2739
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 28 23:30:59 2022 +0200

    Script to filter candidates for PR of the month based on heuristics (#24654)
    
    This scripts proposes top candidates for PR of the month
    based on simple heuristics as discussed in the document
    
    https://docs.google.com/document/d/1qO5FztgzJLccfvbagX8DLh1EwhFVD2nUqbw96fRJmQQ/edit?disco=AAAAZ-Ct0Bs&usp_dm=true
    (cherry picked from commit 0e1a6b98079814747205e3320e43e11f8e2ef3d4)
---
 dev/requirements.txt                     |   2 +
 dev/stats/get_important_pr_candidates.py | 180 +++++++++++++++++++++++++++++++
 2 files changed, 182 insertions(+)

diff --git a/dev/requirements.txt b/dev/requirements.txt
index e83bdbe216..31a4ad8405 100644
--- a/dev/requirements.txt
+++ b/dev/requirements.txt
@@ -1,9 +1,11 @@
 click>=8.0
+cached_property;python_version<"3.8"
 jinja2>=2.10
 keyring==10.1
 PyGithub
 jsonpath_ng
 jsonschema
+pendulum
 pyyaml
 packaging
 rich
diff --git a/dev/stats/get_important_pr_candidates.py b/dev/stats/get_important_pr_candidates.py
new file mode 100755
index 0000000000..059742fc19
--- /dev/null
+++ b/dev/stats/get_important_pr_candidates.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python3
+# 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.
+import logging
+import math
+import sys
+import textwrap
+from datetime import datetime
+from typing import List, Set
+
+import pendulum
+import rich_click as click
+from github import Github
+from github.PullRequest import PullRequest
+from rich.console import Console
+
+if sys.version_info >= (3, 8):
+    from functools import cached_property
+else:
+    from cached_property import cached_property
+
+PROVIDER_LABEL = "area:providers"
+
+logger = logging.getLogger(__name__)
+
+console = Console(width=400, color_system="standard")
+
+option_github_token = click.option(
+    "--github-token",
+    type=str,
+    required=True,
+    help=textwrap.dedent(
+        """
+        GitHub token used to authenticate.
+        You can set omit it if you have GITHUB_TOKEN env variable set
+        Can be generated with:
+        https://github.com/settings/tokens/new?description=Read%20issues&scopes=repo:status"""
+    ),
+    envvar='GITHUB_TOKEN',
+)
+
+PROVIDER_SCORE = 0.5
+REGULAR_SCORE = 1.0
+
+REVIEW_INTERACTION_VALUE = 1.0
+COMMENT_INTERACTION_VALUE = 1.0
+REACTION_INTERACTION_VALUE = 0.1
+
+
+class PrStat:
+    def __init__(self, pull_request: PullRequest):
+        self.pull_request = pull_request
+        self._users: Set[str] = set()
+
+    @cached_property
+    def label_score(self) -> float:
+        for label in self.pull_request.labels:
+            if "provider" in label.name:
+                return PROVIDER_SCORE
+        return REGULAR_SCORE
+
+    @cached_property
+    def num_interactions(self) -> float:
+        interactions = 0.0
+        for comment in self.pull_request.get_comments():
+            interactions += COMMENT_INTERACTION_VALUE
+            self._users.add(comment.user.login)
+            for _ in comment.get_reactions():
+                interactions += REACTION_INTERACTION_VALUE
+        for review in self.pull_request.get_reviews():
+            interactions += REVIEW_INTERACTION_VALUE
+            self._users.add(review.user.login)
+        return interactions
+
+    @cached_property
+    def num_interacting_users(self) -> int:
+        _ = self.num_interactions  # make sure the _users set is populated
+        return len(self._users)
+
+    @cached_property
+    def num_changed_files(self) -> float:
+        return self.pull_request.changed_files
+
+    @cached_property
+    def score(self):
+        return (
+            1.0
+            * self.num_interactions
+            * self.label_score
+            * self.num_interacting_users
+            / (math.log10(self.num_changed_files) if self.num_changed_files > 10 else 1.0)
+        )
+
+    def __str__(self) -> str:
+        return (
+            f"Score: {self.score:.2f}: PR{self.pull_request.number} by @{self.pull_request.user.login}: "
+            f"`{self.pull_request.title}. "
+            f"Merged at {self.pull_request.merged_at}: {self.pull_request.html_url}"
+        )
+
+
+DAYS_BACK = 5
+# Current (or previous during first few days of the next month)
+DEFAULT_BEGINNING_OF_MONTH = pendulum.now().subtract(days=DAYS_BACK).start_of('month')
+DEFAULT_END_OF_MONTH = DEFAULT_BEGINNING_OF_MONTH.end_of('month').add(days=1)
+
+MAX_PR_CANDIDATES = 500
+DEFAULT_TOP_PRS = 10
+
+
+@click.command()
+@click.option(
+    '--date-start', type=click.DateTime(formats=["%Y-%m-%d"]), default=str(DEFAULT_BEGINNING_OF_MONTH.date())
+)
+@click.option(
+    '--date-end', type=click.DateTime(formats=["%Y-%m-%d"]), default=str(DEFAULT_END_OF_MONTH.date())
+)
+@click.option('--top-number', type=int, default=DEFAULT_TOP_PRS)
+@click.option('--verbose', is_flag="True", help="Print scoring details")
+@option_github_token
+def main(github_token: str, date_start: datetime, date_end: datetime, top_number: int, verbose: bool):
+    console.print(f"Finding best candidate PRs between {date_start} and {date_end}")
+    g = Github(github_token)
+    repo = g.get_repo("apache/airflow")
+    pulls = repo.get_pulls(state="closed", sort="created", direction='desc')
+    issue_num = 0
+    selected_prs: List[PrStat] = []
+    for pr in pulls:
+        issue_num += 1
+        if not pr.merged:
+            continue
+        if not (date_start < pr.merged_at < date_end):
+            console.print(
+                f"[bright_blue]Skipping {pr.number} {pr.title} as it was not "
+                f"merged between {date_start} and {date_end}]"
+            )
+            continue
+        if pr.created_at < date_start:
+            console.print("[bright_blue]Completed selecting candidates")
+            break
+        pr_stat = PrStat(pull_request=pr)  # type: ignore
+        console.print(
+            f"[green]Selecting PR: #{pr.number} `{pr.title}` as candidate."
+            f"Score: {pr_stat.score}[/]."
+            f" Url: {pr.html_url}"
+        )
+        if verbose:
+            console.print(
+                f'[bright_blue]Created at: {pr.created_at}, Merged at: {pr.merged_at}, '
+                f'Overall score: {pr_stat.score:.2f}, '
+                f'Label score: {pr_stat.label_score}, '
+                f'Interactions: {pr_stat.num_interactions}, '
+                f'Users interacting: {pr_stat.num_interacting_users}, '
+                f'Changed files: {pr_stat.num_changed_files}\n'
+            )
+        selected_prs.append(pr_stat)
+        if issue_num == MAX_PR_CANDIDATES:
+            console.print(f'[red]Reached {MAX_PR_CANDIDATES}. Stopping')
+            break
+    console.print(f"Top {top_number} PRs:")
+    for pr_stat in sorted(selected_prs, key=lambda s: -s.score)[:top_number]:
+        console.print(f" * {pr_stat}")
+
+
+if __name__ == "__main__":
+    main()


[airflow] 01/39: Update flask-appbuilder authlib/oauth dependency (#24516)

Posted by po...@apache.org.
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 2a7c1f842407f815d8abe0d2239e64f317307439
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sun Jun 19 21:28:19 2022 +0200

    Update flask-appbuilder authlib/oauth dependency (#24516)
    
    The dependency we have for flask-appbuilder oauth authentication
    (for github/google authentication) should follow the limits
    that flask-appbuilder current version has. We added authlib there
    but apparently FAB currently limits authlib to <= 1.0 - we should
    follow fab rather than have our own dependency here.
    
    This has been pointed out in
    https://github.com/dpgaspar/Flask-AppBuilder/issues/1861
    
    (cherry picked from commit 5674491dc8e8ed1685cdb4c04922cb72ad8ba9b4)
---
 setup.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/setup.py b/setup.py
index 713fda3c11..f2cce10ed1 100644
--- a/setup.py
+++ b/setup.py
@@ -309,8 +309,8 @@ exasol = ['pyexasol>=0.5.1', pandas_requirement]
 facebook = [
     'facebook-business>=6.0.2',
 ]
-flask_appbuilder_authlib = [
-    'authlib',
+flask_appbuilder_oauth = [
+    'flask-appbuilder[oauth]',
 ]
 github = [
     'pygithub',
@@ -768,8 +768,8 @@ CORE_EXTRAS_REQUIREMENTS: Dict[str, List[str]] = {
     'cncf.kubernetes': kubernetes,  # also has provider, but it extends the core with the KubernetesExecutor
     'dask': dask,
     'deprecated_api': deprecated_api,
-    'github_enterprise': flask_appbuilder_authlib,
-    'google_auth': flask_appbuilder_authlib,
+    'github_enterprise': flask_appbuilder_oauth,
+    'google_auth': flask_appbuilder_oauth,
     'kerberos': kerberos,
     'ldap': ldap,
     'leveldb': leveldb,


[airflow] 10/39: Fix links to sources for examples (#24386)

Posted by po...@apache.org.
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 0d0f57f3bd9e8022c71fb957bfdb60cd052d5cec
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Mon Jun 13 19:38:20 2022 +0200

    Fix links to sources for examples (#24386)
    
    The links to example sources in exampleinclude have been broken in a
    number of providers and they were additionally broken by AIP-47.
    
    This PR fixes it.
    
    Fixes: #23632
    Fixes: https://github.com/apache/airflow-site/issues/536
    (cherry picked from commit 08b675cf6642171cb1c5ddfb09607b541db70b29)
---
 .pre-commit-config.yaml                            |  13 +-
 RELEASE_NOTES.rst                                  |   1 +
 STATIC_CODE_CHECKS.rst                             |   4 +
 .../example_branch_datetime_operator.py            |  20 +-
 .../example_external_task_marker_dag.py            |  26 +--
 .../example_google_api_youtube_to_s3.py            |   3 +-
 .../amazon/aws/example_dags/example_s3.py          |   5 +-
 .../arangodb/example_dags/example_arangodb.py      |   4 +-
 .../cloud/example_dags/example_automl_tables.py    |   4 +-
 .../example_cloud_storage_transfer_service_aws.py  |  10 +-
 .../google/cloud/example_dags/example_pubsub.py    |   8 +-
 .../google/cloud/example_dags/example_vertex_ai.py |   5 +-
 airflow/providers/mongo/hooks/mongo.py             |   2 +-
 dev/breeze/src/airflow_breeze/pre_commit_ids.py    |   2 +
 .../run_docs_build.sh => docs/__init__.py          |  11 -
 docs/apache-airflow-providers-alibaba/index.rst    |   6 +
 docs/apache-airflow-providers-amazon/index.rst     |   6 +
 .../apache-airflow-providers-apache-beam/index.rst |  11 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |  12 ++
 .../apache-airflow-providers-apache-hive/index.rst |   6 +
 .../index.rst                                      |   6 +
 .../apache-airflow-providers-apache-livy/index.rst |   6 +
 docs/apache-airflow-providers-apache-pig/index.rst |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 docs/apache-airflow-providers-databricks/index.rst |   6 +
 docs/apache-airflow-providers-dbt-cloud/index.rst  |   6 +
 docs/apache-airflow-providers-dingding/index.rst   |   6 +
 docs/apache-airflow-providers-docker/index.rst     |   6 +
 docs/apache-airflow-providers-google/index.rst     |   6 +
 .../operators/cloud/bigquery.rst                   |  50 ++---
 .../operators/cloud/datastore.rst                  |  26 +--
 .../operators/cloud/kubernetes_engine.rst          |  10 +-
 docs/apache-airflow-providers-http/index.rst       |   6 +
 docs/apache-airflow-providers-jdbc/index.rst       |   6 +
 docs/apache-airflow-providers-jenkins/index.rst    |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 .../index.rst                                      |   6 +
 docs/apache-airflow-providers-mysql/index.rst      |   6 +
 docs/apache-airflow-providers-opsgenie/index.rst   |   6 +
 docs/apache-airflow-providers-papermill/index.rst  |   6 +
 docs/apache-airflow-providers-presto/index.rst     |   6 +
 docs/apache-airflow-providers-qubole/index.rst     |   6 +
 docs/apache-airflow-providers-salesforce/index.rst |   6 +
 .../apache-airflow-providers-singularity/index.rst |   6 +
 docs/apache-airflow-providers-snowflake/index.rst  |   6 +
 docs/apache-airflow-providers-tableau/index.rst    |   6 +
 docs/apache-airflow-providers-telegram/index.rst   |   6 +
 docs/apache-airflow-providers-trino/index.rst      |   6 +
 docs/apache-airflow-providers-yandex/index.rst     |   6 +
 docs/apache-airflow/python-api-ref.rst             |   9 +
 docs/build_docs.py                                 |  14 +-
 docs/conf.py                                       |  37 ++--
 docs/exts/docs_build/docs_builder.py               |   8 +-
 docs/exts/provider_yaml_utils.py                   |  32 +--
 docs/publish_docs.py                               |   2 +
 docs/spelling_wordlist.txt                         |   9 +
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output-static-checks.svg             | 224 +++++++++++----------
 .../pre_commit/pre_commit_check_init_in_tests.py   |  50 +++++
 .../pre_commit_check_setup_extra_packages_ref.py   |   4 +-
 ...re_commit_check_system_tests_hidden_in_index.py |  72 +++++++
 scripts/in_container/run_docs_build.sh             |   3 +-
 setup.cfg                                          |   2 +-
 .../config_templates/__init__.py                   |  11 -
 .../run_docs_build.sh => tests/core/__init__.py    |  11 -
 .../run_docs_build.sh => tests/dags/__init__.py    |  11 -
 .../dags/subdir1/__init__.py                       |  11 -
 .../dags/subdir2/__init__.py                       |  11 -
 .../dags/subdir2/subdir3/__init__.py               |  11 -
 .../dags_corrupted/__init__.py                     |  11 -
 .../dags_with_system_exit/__init__.py              |  11 -
 .../kubernetes_executor_template_files/__init__.py |  11 -
 tests/jobs/test_scheduler_job.py                   |   1 +
 .../run_docs_build.sh => tests/secrets/__init__.py |  11 -
 tests/system/README.md                             |   2 +-
 .../system/providers/amazon/__init__.py            |  11 -
 .../system/providers/amazon/aws/__init__.py        |  11 -
 .../system/providers/apache/kylin/__init__.py      |  11 -
 .../system/providers/cncf/__init__.py              |  11 -
 .../system/providers/elasticsearch/__init__.py     |  11 -
 .../system/providers/github/__init__.py            |  11 -
 tests/system/providers/google/README.md            |   2 +-
 .../system/providers/google/cloud/__init__.py      |  11 -
 .../providers/google/cloud/azure/__init__.py       |  11 -
 .../providers/google/cloud/bigquery/__init__.py    |  11 -
 .../bigquery/example_bigquery_dataset.py           |   0
 .../bigquery/example_bigquery_operations.py        |   0
 .../example_bigquery_operations_location.py        |   0
 .../bigquery/example_bigquery_queries.py           |   0
 .../bigquery/example_bigquery_sensors.py           |   0
 .../bigquery/example_bigquery_tables.py            |   0
 .../bigquery/example_bigquery_to_bigquery.py       |   0
 .../bigquery/example_bigquery_to_gcs.py            |   0
 .../google/cloud/bigquery/resources/__init__.py    |  11 -
 .../bigquery/resources/example_bigquery_query.sql  |   0
 .../bigquery/resources/update_table_schema.json    |   0
 .../{ => cloud}/bigquery/resources/us-states.csv   |   0
 .../providers/google/cloud/cloud_sql/__init__.py   |  11 -
 .../providers/google/cloud/dataproc/__init__.py    |  11 -
 .../{ => cloud}/dataproc/example_dataproc_gke.py   |   0
 .../google/cloud/dataproc/resources/__init__.py    |  11 -
 .../providers/google/cloud/datastore/__init__.py   |  11 -
 .../datastore/example_datastore_commit.py          |   0
 .../datastore/example_datastore_export_import.py   |   0
 .../datastore/example_datastore_query.py           |   0
 .../datastore/example_datastore_rollback.py        |   0
 .../system/providers/google/cloud/gcs/__init__.py  |  11 -
 .../{ => cloud}/gcs/example_gcs_to_bigquery.py     |   0
 .../google/cloud/gcs/resources/__init__.py         |  11 -
 .../google/cloud/kubernetes_engine/__init__.py     |  11 -
 .../kubernetes_engine/example_kubernetes_engine.py |   0
 .../providers/google/cloud/spanner/__init__.py     |  11 -
 .../google/cloud/speech_to_text/__init__.py        |  11 -
 .../providers/google/cloud/stackdriver/__init__.py |  11 -
 .../providers/google/cloud/tasks/__init__.py       |  11 -
 .../google/cloud/text_to_speech/__init__.py        |  11 -
 .../providers/google/cloud/workflows/__init__.py   |  11 -
 .../system/providers/google/workplace/__init__.py  |  11 -
 .../system/providers/presto/__init__.py            |  11 -
 .../test_utils/operators/__init__.py               |  11 -
 .../test_utils/perf/__init__.py                    |  11 -
 .../test_utils/perf/dags/__init__.py               |  11 -
 .../testconfig/__init__.py                         |  11 -
 .../testconfig/conf/__init__.py                    |  11 -
 .../triggers/__init__.py                           |  11 -
 .../www/test_logs/__init__.py                      |  11 -
 .../www/views/__init__.py                          |  11 -
 131 files changed, 645 insertions(+), 726 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 22d9712590..15d18dd1b0 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -28,7 +28,7 @@ repos:
       - id: check-hooks-apply
         name: Check if all hooks apply to the repository
   - repo: https://github.com/thlorenz/doctoc.git
-    rev: v2.1.0
+    rev: v2.2.0
     hooks:
       - id: doctoc
         name: Add TOC for md and rst files
@@ -39,7 +39,7 @@ repos:
           - "--maxlevel"
           - "2"
   - repo: https://github.com/Lucas-C/pre-commit-hooks
-    rev: v1.1.13
+    rev: v1.2.0
     hooks:
       - id: forbid-tabs
         name: Fail if tabs are used in the project
@@ -204,7 +204,7 @@ repos:
         pass_filenames: true
   # TODO: Bump to Python 3.8 when support for Python 3.7 is dropped in Airflow.
   - repo: https://github.com/asottile/pyupgrade
-    rev: v2.32.0
+    rev: v2.32.1
     hooks:
       - id: pyupgrade
         name: Upgrade Python code automatically
@@ -242,7 +242,7 @@ repos:
         name: Run pydocstyle
         args:
           - --convention=pep257
-          - --add-ignore=D100,D102,D103,D104,D105,D107,D202,D205,D400,D401
+          - --add-ignore=D100,D102,D103,D104,D105,D107,D205,D400,D401
         exclude: |
           (?x)
           ^tests/.*\.py$|
@@ -422,11 +422,11 @@ repos:
       - id: check-no-relative-imports
         language: pygrep
         name: No relative imports
-        description: Airflow style is to use absolute imports only
+        description: Airflow style is to use absolute imports only (except docs building)
         entry: "^\\s*from\\s+\\."
         pass_filenames: true
         files: \.py$
-        exclude: ^tests/|^airflow/_vendor/
+        exclude: ^tests/|^airflow/_vendor/|^docs/
       - id: check-for-inclusive-language
         language: pygrep
         name: Check for language that we do not accept as community
@@ -449,6 +449,7 @@ repos:
           ^airflow/www/static/|
           ^airflow/providers/|
           ^tests/providers/apache/cassandra/hooks/test_cassandra.py$|
+          ^tests/system/providers/apache/spark/example_spark_dag.py$|
           ^docs/apache-airflow-providers-apache-cassandra/connections/cassandra.rst$|
           ^docs/apache-airflow-providers-apache-hive/commits.rst$|
           ^airflow/api_connexion/openapi/v1.yaml$|
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index edc7de3df9..66edcf9c90 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -704,6 +704,7 @@ Misc/Internal
 - Remove deprecated usage of ``init_role()`` from API (#18820)
 - Remove duplicate code on dbapi hook (#18821)
 
+
 Airflow 2.2.5, (2022-04-04)
 ---------------------------
 
diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst
index e2b57eae6c..5b7fa05908 100644
--- a/STATIC_CODE_CHECKS.rst
+++ b/STATIC_CODE_CHECKS.rst
@@ -205,10 +205,14 @@ require Breeze Docker image to be build locally.
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | check-system-tests-present                             | Check if system tests have required segments of code             |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
+| check-system-tests-tocs                                | Check that system tests is properly added                        |         |
++--------------------------------------------------------+------------------------------------------------------------------+---------+
 | check-xml                                              | Check XML files with xmllint                                     |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | codespell                                              | Run codespell to check for common misspellings in files          |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
+| create-missing-init-py-files-tests                     | Create missing init.py files in tests                            |         |
++--------------------------------------------------------+------------------------------------------------------------------+---------+
 | debug-statements                                       | Detect accidentally committed debug statements                   |         |
 +--------------------------------------------------------+------------------------------------------------------------------+---------+
 | detect-private-key                                     | Detect if private key is added to the repository                 |         |
diff --git a/airflow/example_dags/example_branch_datetime_operator.py b/airflow/example_dags/example_branch_datetime_operator.py
index 3c86e40402..e707514c86 100644
--- a/airflow/example_dags/example_branch_datetime_operator.py
+++ b/airflow/example_dags/example_branch_datetime_operator.py
@@ -26,7 +26,7 @@ from airflow import DAG
 from airflow.operators.datetime import BranchDateTimeOperator
 from airflow.operators.empty import EmptyOperator
 
-dag = DAG(
+dag1 = DAG(
     dag_id="example_branch_datetime_operator",
     start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
     catchup=False,
@@ -35,8 +35,8 @@ dag = DAG(
 )
 
 # [START howto_branch_datetime_operator]
-empty_task_1 = EmptyOperator(task_id='date_in_range', dag=dag)
-empty_task_2 = EmptyOperator(task_id='date_outside_range', dag=dag)
+empty_task_11 = EmptyOperator(task_id='date_in_range', dag=dag1)
+empty_task_21 = EmptyOperator(task_id='date_outside_range', dag=dag1)
 
 cond1 = BranchDateTimeOperator(
     task_id='datetime_branch',
@@ -44,15 +44,15 @@ cond1 = BranchDateTimeOperator(
     follow_task_ids_if_false=['date_outside_range'],
     target_upper=pendulum.datetime(2020, 10, 10, 15, 0, 0),
     target_lower=pendulum.datetime(2020, 10, 10, 14, 0, 0),
-    dag=dag,
+    dag=dag1,
 )
 
 # Run empty_task_1 if cond1 executes between 2020-10-10 14:00:00 and 2020-10-10 15:00:00
-cond1 >> [empty_task_1, empty_task_2]
+cond1 >> [empty_task_11, empty_task_21]
 # [END howto_branch_datetime_operator]
 
 
-dag = DAG(
+dag2 = DAG(
     dag_id="example_branch_datetime_operator_2",
     start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
     catchup=False,
@@ -60,8 +60,8 @@ dag = DAG(
     schedule_interval="@daily",
 )
 # [START howto_branch_datetime_operator_next_day]
-empty_task_1 = EmptyOperator(task_id='date_in_range', dag=dag)
-empty_task_2 = EmptyOperator(task_id='date_outside_range', dag=dag)
+empty_task_12 = EmptyOperator(task_id='date_in_range', dag=dag2)
+empty_task_22 = EmptyOperator(task_id='date_outside_range', dag=dag2)
 
 cond2 = BranchDateTimeOperator(
     task_id='datetime_branch',
@@ -69,10 +69,10 @@ cond2 = BranchDateTimeOperator(
     follow_task_ids_if_false=['date_outside_range'],
     target_upper=pendulum.time(0, 0, 0),
     target_lower=pendulum.time(15, 0, 0),
-    dag=dag,
+    dag=dag2,
 )
 
 # Since target_lower happens after target_upper, target_upper will be moved to the following day
 # Run empty_task_1 if cond2 executes between 15:00:00, and 00:00:00 of the following day
-cond2 >> [empty_task_1, empty_task_2]
+cond2 >> [empty_task_12, empty_task_22]
 # [END howto_branch_datetime_operator_next_day]
diff --git a/airflow/example_dags/example_external_task_marker_dag.py b/airflow/example_dags/example_external_task_marker_dag.py
index 0c4479a0d6..733b732756 100644
--- a/airflow/example_dags/example_external_task_marker_dag.py
+++ b/airflow/example_dags/example_external_task_marker_dag.py
@@ -18,23 +18,25 @@
 
 """
 Example DAG demonstrating setting up inter-DAG dependencies using ExternalTaskSensor and
-ExternalTaskMarker
+ExternalTaskMarker.
 
 In this example, child_task1 in example_external_task_marker_child depends on parent_task in
-example_external_task_marker_parent. When parent_task is cleared with "Recursive" selected,
-the presence of ExternalTaskMarker tells Airflow to clear child_task1 and its
-downstream tasks.
+example_external_task_marker_parent. When parent_task is cleared with 'Recursive' selected,
+the presence of ExternalTaskMarker tells Airflow to clear child_task1 and its downstream tasks.
 
 ExternalTaskSensor will keep poking for the status of remote ExternalTaskMarker task at a regular
 interval till one of the following will happen:
-1. ExternalTaskMarker reaches the states mentioned in the allowed_states list
-    In this case, ExternalTaskSensor will exit with a success status code
-2. ExternalTaskMarker reaches the states mentioned in the failed_states list
-    In this case, ExternalTaskSensor will raise an AirflowException and user need to handle this
-    with multiple downstream tasks
-3. ExternalTaskSensor times out
-    In this case, ExternalTaskSensor will raise AirflowSkipException or AirflowSensorTimeout
-    exception
+
+ExternalTaskMarker reaches the states mentioned in the allowed_states list.
+In this case, ExternalTaskSensor will exit with a success status code
+
+ExternalTaskMarker reaches the states mentioned in the failed_states list
+In this case, ExternalTaskSensor will raise an AirflowException and user need to handle this
+with multiple downstream tasks
+
+ExternalTaskSensor times out. In this case, ExternalTaskSensor will raise AirflowSkipException
+or AirflowSensorTimeout exception
+
 """
 
 import pendulum
diff --git a/airflow/providers/amazon/aws/example_dags/example_google_api_youtube_to_s3.py b/airflow/providers/amazon/aws/example_dags/example_google_api_youtube_to_s3.py
index 241a551320..2bbe4fac58 100644
--- a/airflow/providers/amazon/aws/example_dags/example_google_api_youtube_to_s3.py
+++ b/airflow/providers/amazon/aws/example_dags/example_google_api_youtube_to_s3.py
@@ -26,7 +26,8 @@ saves the response in S3 + passes over the YouTube IDs to the next request which
 Further information:
 
 YOUTUBE_VIDEO_PUBLISHED_AFTER and YOUTUBE_VIDEO_PUBLISHED_BEFORE needs to be formatted
-"YYYY-MM-DDThh:mm:ss.sZ". See https://developers.google.com/youtube/v3/docs/search/list for more information.
+``YYYY-MM-DDThh:mm:ss.sZ``.
+See https://developers.google.com/youtube/v3/docs/search/list for more information.
 YOUTUBE_VIDEO_PARTS depends on the fields you pass via YOUTUBE_VIDEO_FIELDS. See
 https://developers.google.com/youtube/v3/docs/videos/list#parameters for more information.
 YOUTUBE_CONN_ID is optional for public videos. It does only need to authenticate when there are private videos
diff --git a/airflow/providers/amazon/aws/example_dags/example_s3.py b/airflow/providers/amazon/aws/example_dags/example_s3.py
index ecd9d374cf..83a6825d72 100644
--- a/airflow/providers/amazon/aws/example_dags/example_s3.py
+++ b/airflow/providers/amazon/aws/example_dags/example_s3.py
@@ -62,12 +62,9 @@ with DAG(
     # [START howto_sensor_s3_key_function_definition]
     def check_fn(files: List) -> bool:
         """
-        Example of custom check: check if all files are bigger than 1kB
+        Example of custom check: check if all files are bigger than ``1kB``
 
         :param files: List of S3 object attributes.
-        Format: [{
-            'Size': int
-        }]
         :return: true if the criteria is met
         :rtype: bool
         """
diff --git a/airflow/providers/arangodb/example_dags/example_arangodb.py b/airflow/providers/arangodb/example_dags/example_arangodb.py
index f9da187cfb..37a8250dfd 100644
--- a/airflow/providers/arangodb/example_dags/example_arangodb.py
+++ b/airflow/providers/arangodb/example_dags/example_arangodb.py
@@ -41,7 +41,7 @@ sensor = AQLSensor(
 
 # [START howto_aql_sensor_template_file_arangodb]
 
-sensor = AQLSensor(
+sensor2 = AQLSensor(
     task_id="aql_sensor_template_file",
     query="search_judy.sql",
     timeout=60,
@@ -65,7 +65,7 @@ operator = AQLOperator(
 
 # [START howto_aql_operator_template_file_arangodb]
 
-operator = AQLOperator(
+operator2 = AQLOperator(
     task_id='aql_operator_template_file',
     dag=dag,
     result_processor=lambda cursor: print([document["name"] for document in cursor]),
diff --git a/airflow/providers/google/cloud/example_dags/example_automl_tables.py b/airflow/providers/google/cloud/example_dags/example_automl_tables.py
index 9ba0314dae..c13de99fa8 100644
--- a/airflow/providers/google/cloud/example_dags/example_automl_tables.py
+++ b/airflow/providers/google/cloud/example_dags/example_automl_tables.py
@@ -204,14 +204,14 @@ with models.DAG(
     catchup=False,
     user_defined_macros={"extract_object_id": extract_object_id},
 ) as example_dag:
-    create_dataset_task = AutoMLCreateDatasetOperator(
+    create_dataset_task2 = AutoMLCreateDatasetOperator(
         task_id="create_dataset_task",
         dataset=DATASET,
         location=GCP_AUTOML_LOCATION,
         project_id=GCP_PROJECT_ID,
     )
 
-    dataset_id = create_dataset_task.output['dataset_id']
+    dataset_id = create_dataset_task2.output['dataset_id']
 
     import_dataset_task = AutoMLImportDataOperator(
         task_id="import_dataset_task",
diff --git a/airflow/providers/google/cloud/example_dags/example_cloud_storage_transfer_service_aws.py b/airflow/providers/google/cloud/example_dags/example_cloud_storage_transfer_service_aws.py
index be858c4018..bf73959d4f 100644
--- a/airflow/providers/google/cloud/example_dags/example_cloud_storage_transfer_service_aws.py
+++ b/airflow/providers/google/cloud/example_dags/example_cloud_storage_transfer_service_aws.py
@@ -17,17 +17,15 @@
 # under the License.
 
 """
-Example Airflow DAG that demonstrates interactions with Google Cloud Transfer.
+Example Airflow DAG that demonstrates interactions with Google Cloud Transfer. This DAG relies on
+the following OS environment variables
 
-
-This DAG relies on the following OS environment variables
+Note that you need to provide a large enough set of data so that operations do not execute too quickly.
+Otherwise, DAG will fail.
 
 * GCP_PROJECT_ID - Google Cloud Project to use for the Google Cloud Transfer Service.
 * GCP_DESCRIPTION - Description of transfer job
 * GCP_TRANSFER_SOURCE_AWS_BUCKET - Amazon Web Services Storage bucket from which files are copied.
-  .. warning::
-    You need to provide a large enough set of data so that operations do not execute too quickly.
-    Otherwise, DAG will fail.
 * GCP_TRANSFER_SECOND_TARGET_BUCKET - Google Cloud Storage bucket to which files are copied
 * WAIT_FOR_OPERATION_POKE_INTERVAL - interval of what to check the status of the operation
   A smaller value than the default value accelerates the system test and ensures its correct execution with
diff --git a/airflow/providers/google/cloud/example_dags/example_pubsub.py b/airflow/providers/google/cloud/example_dags/example_pubsub.py
index 8e3dd1fe8f..05ae16bd68 100644
--- a/airflow/providers/google/cloud/example_dags/example_pubsub.py
+++ b/airflow/providers/google/cloud/example_dags/example_pubsub.py
@@ -56,7 +56,7 @@ with models.DAG(
     catchup=False,
 ) as example_sensor_dag:
     # [START howto_operator_gcp_pubsub_create_topic]
-    create_topic = PubSubCreateTopicOperator(
+    create_topic1 = PubSubCreateTopicOperator(
         task_id="create_topic", topic=TOPIC_FOR_SENSOR_DAG, project_id=GCP_PROJECT_ID, fail_if_exists=False
     )
     # [END howto_operator_gcp_pubsub_create_topic]
@@ -105,7 +105,7 @@ with models.DAG(
     )
     # [END howto_operator_gcp_pubsub_delete_topic]
 
-    create_topic >> subscribe_task >> publish_task
+    create_topic1 >> subscribe_task >> publish_task
     pull_messages >> pull_messages_result >> unsubscribe_task >> delete_topic
 
     # Task dependencies created via `XComArgs`:
@@ -120,7 +120,7 @@ with models.DAG(
     catchup=False,
 ) as example_operator_dag:
     # [START howto_operator_gcp_pubsub_create_topic]
-    create_topic = PubSubCreateTopicOperator(
+    create_topic2 = PubSubCreateTopicOperator(
         task_id="create_topic", topic=TOPIC_FOR_OPERATOR_DAG, project_id=GCP_PROJECT_ID
     )
     # [END howto_operator_gcp_pubsub_create_topic]
@@ -170,7 +170,7 @@ with models.DAG(
     # [END howto_operator_gcp_pubsub_delete_topic]
 
     (
-        create_topic
+        create_topic2
         >> subscribe_task
         >> publish_task
         >> pull_messages_operator
diff --git a/airflow/providers/google/cloud/example_dags/example_vertex_ai.py b/airflow/providers/google/cloud/example_dags/example_vertex_ai.py
index cded48ae9b..a421c31a7e 100644
--- a/airflow/providers/google/cloud/example_dags/example_vertex_ai.py
+++ b/airflow/providers/google/cloud/example_dags/example_vertex_ai.py
@@ -26,15 +26,16 @@ Cloud Platform.
 This DAG relies on the following OS environment variables:
 
 * GCP_VERTEX_AI_BUCKET - Google Cloud Storage bucket where the model will be saved
-after training process was finished.
+  after training process was finished.
 * CUSTOM_CONTAINER_URI - path to container with model.
 * PYTHON_PACKAGE_GSC_URI - path to test model in archive.
 * LOCAL_TRAINING_SCRIPT_PATH - path to local training script.
 * DATASET_ID - ID of dataset which will be used in training process.
 * MODEL_ID - ID of model which will be used in predict process.
 * MODEL_ARTIFACT_URI - The artifact_uri should be the path to a GCS directory containing saved model
-artifacts.
+  artifacts.
 """
+
 import os
 from datetime import datetime
 from uuid import uuid4
diff --git a/airflow/providers/mongo/hooks/mongo.py b/airflow/providers/mongo/hooks/mongo.py
index 96a5ec8003..c022ec4135 100644
--- a/airflow/providers/mongo/hooks/mongo.py
+++ b/airflow/providers/mongo/hooks/mongo.py
@@ -266,7 +266,7 @@ class MongoHook(BaseHook):
         :param mongo_collection: The name of the collection to update.
         :param docs: The new documents.
         :param filter_docs: A list of queries that match the documents to replace.
-            Can be omitted; then the _id fields from docs will be used.
+            Can be omitted; then the _id fields from airflow.docs will be used.
         :param mongo_db: The name of the database to use.
             Can be omitted; then the database from the connection string is used.
         :param upsert: If ``True``, perform an insert if no documents
diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
index 40ff16a7a0..2f8366b01f 100644
--- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
+++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
@@ -59,8 +59,10 @@ PRE_COMMIT_LIST = [
     'check-setup-order',
     'check-start-date-not-used-in-defaults',
     'check-system-tests-present',
+    'check-system-tests-tocs',
     'check-xml',
     'codespell',
+    'create-missing-init-py-files-tests',
     'debug-statements',
     'detect-private-key',
     'doctoc',
diff --git a/scripts/in_container/run_docs_build.sh b/docs/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to docs/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/docs/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/docs/apache-airflow-providers-alibaba/index.rst b/docs/apache-airflow-providers-alibaba/index.rst
index fca2d993f3..d5a1292090 100644
--- a/docs/apache-airflow-providers-alibaba/index.rst
+++ b/docs/apache-airflow-providers-alibaba/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/alibaba/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/alibaba/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-amazon/index.rst b/docs/apache-airflow-providers-amazon/index.rst
index 477b6f6a75..d1fd9c6300 100644
--- a/docs/apache-airflow-providers-amazon/index.rst
+++ b/docs/apache-airflow-providers-amazon/index.rst
@@ -36,6 +36,12 @@ Content
 
     Python API <_api/airflow/providers/amazon/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/amazon/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-apache-beam/index.rst b/docs/apache-airflow-providers-apache-beam/index.rst
index f9a7159ccb..dc26b8c708 100644
--- a/docs/apache-airflow-providers-apache-beam/index.rst
+++ b/docs/apache-airflow-providers-apache-beam/index.rst
@@ -26,6 +26,17 @@ Content
     :caption: References
 
     Python API <_api/airflow/providers/apache/beam/index>
+
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/beam/index>
+
+.. toctree::
+    :maxdepth: 1
+    :caption: Resources
+
     PyPI Repository <https://pypi.org/project/apache-airflow-providers-apache-beam/>
     Example DAGs <https://github.com/apache/airflow/tree/main/airflow/providers/apache/beam/example_dags>
 
diff --git a/docs/apache-airflow-providers-apache-cassandra/index.rst b/docs/apache-airflow-providers-apache-cassandra/index.rst
index 4f207a2e3f..6fcf012613 100644
--- a/docs/apache-airflow-providers-apache-cassandra/index.rst
+++ b/docs/apache-airflow-providers-apache-cassandra/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/apache/cassandra/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/cassandra/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-apache-drill/index.rst b/docs/apache-airflow-providers-apache-drill/index.rst
index d3d85f780f..bc8b7aa111 100644
--- a/docs/apache-airflow-providers-apache-drill/index.rst
+++ b/docs/apache-airflow-providers-apache-drill/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/apache/drill/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/drill/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-apache-druid/index.rst b/docs/apache-airflow-providers-apache-druid/index.rst
index 4946cc1fd1..d8558d0b49 100644
--- a/docs/apache-airflow-providers-apache-druid/index.rst
+++ b/docs/apache-airflow-providers-apache-druid/index.rst
@@ -32,6 +32,18 @@ Content
     :caption: References
 
     Python API <_api/airflow/providers/apache/druid/index>
+
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/druid/index>
+
+
+.. toctree::
+    :maxdepth: 1
+    :caption: Resources
+
     PyPI Repository <https://pypi.org/project/apache-airflow-providers-apache-druid/>
     Installing from sources <installing-providers-from-sources>
     Example DAGs <https://github.com/apache/airflow/tree/main/airflow/providers/apache/druid/example_dags>
diff --git a/docs/apache-airflow-providers-apache-hive/index.rst b/docs/apache-airflow-providers-apache-hive/index.rst
index 0ca5ac916b..de8124e80c 100644
--- a/docs/apache-airflow-providers-apache-hive/index.rst
+++ b/docs/apache-airflow-providers-apache-hive/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/apache/hive/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/hive/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-apache-kylin/index.rst b/docs/apache-airflow-providers-apache-kylin/index.rst
index 02fb13b255..faf390c0b3 100644
--- a/docs/apache-airflow-providers-apache-kylin/index.rst
+++ b/docs/apache-airflow-providers-apache-kylin/index.rst
@@ -28,6 +28,12 @@ Content
 
     Python API <_api/airflow/providers/apache/kylin/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/kylin/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-apache-livy/index.rst b/docs/apache-airflow-providers-apache-livy/index.rst
index cd2f5058c6..5b27808aaa 100644
--- a/docs/apache-airflow-providers-apache-livy/index.rst
+++ b/docs/apache-airflow-providers-apache-livy/index.rst
@@ -33,6 +33,12 @@ Content
 
     Python API <_api/airflow/providers/apache/livy/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/livy/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-apache-pig/index.rst b/docs/apache-airflow-providers-apache-pig/index.rst
index 4fd1ffee28..33dd0a1f09 100644
--- a/docs/apache-airflow-providers-apache-pig/index.rst
+++ b/docs/apache-airflow-providers-apache-pig/index.rst
@@ -33,6 +33,12 @@ Content
 
     Python API <_api/airflow/providers/apache/pig/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/pig/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-apache-spark/index.rst b/docs/apache-airflow-providers-apache-spark/index.rst
index 03f1449cb3..7bfecdc428 100644
--- a/docs/apache-airflow-providers-apache-spark/index.rst
+++ b/docs/apache-airflow-providers-apache-spark/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/apache/spark/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/apache/spark/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-cncf-kubernetes/index.rst b/docs/apache-airflow-providers-cncf-kubernetes/index.rst
index bc5b6b7d16..4ead6580fb 100644
--- a/docs/apache-airflow-providers-cncf-kubernetes/index.rst
+++ b/docs/apache-airflow-providers-cncf-kubernetes/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/cncf/kubernetes/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/cncf/kubernetes/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-databricks/index.rst b/docs/apache-airflow-providers-databricks/index.rst
index 1a6d32cab3..712eee960b 100644
--- a/docs/apache-airflow-providers-databricks/index.rst
+++ b/docs/apache-airflow-providers-databricks/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/databricks/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/databricks/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-dbt-cloud/index.rst b/docs/apache-airflow-providers-dbt-cloud/index.rst
index ecfa51fc0a..2a1a9cf199 100644
--- a/docs/apache-airflow-providers-dbt-cloud/index.rst
+++ b/docs/apache-airflow-providers-dbt-cloud/index.rst
@@ -39,6 +39,12 @@ Content
 
     Python API <_api/airflow/providers/dbt/cloud/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/dbt/cloud/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-dingding/index.rst b/docs/apache-airflow-providers-dingding/index.rst
index ba3be60884..4966b0a174 100644
--- a/docs/apache-airflow-providers-dingding/index.rst
+++ b/docs/apache-airflow-providers-dingding/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/dingding/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/dingding/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-docker/index.rst b/docs/apache-airflow-providers-docker/index.rst
index 218968f18e..3fa5c2b9c0 100644
--- a/docs/apache-airflow-providers-docker/index.rst
+++ b/docs/apache-airflow-providers-docker/index.rst
@@ -29,6 +29,12 @@ Content
     Connection types <connections/docker>
     Python API <_api/airflow/providers/docker/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/docker/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-google/index.rst b/docs/apache-airflow-providers-google/index.rst
index f7ea7fae31..c22fa4bf57 100644
--- a/docs/apache-airflow-providers-google/index.rst
+++ b/docs/apache-airflow-providers-google/index.rst
@@ -38,6 +38,12 @@ Content
     Python API <_api/airflow/providers/google/index>
     Configuration <configurations-ref>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/google/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-google/operators/cloud/bigquery.rst b/docs/apache-airflow-providers-google/operators/cloud/bigquery.rst
index 96038ce8c1..57e4d87ff8 100644
--- a/docs/apache-airflow-providers-google/operators/cloud/bigquery.rst
+++ b/docs/apache-airflow-providers-google/operators/cloud/bigquery.rst
@@ -42,7 +42,7 @@ Create dataset
 To create an empty dataset in a BigQuery database you can use
 :class:`~airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyDatasetOperator`.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_dataset.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_dataset.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_create_dataset]
@@ -58,7 +58,7 @@ To get the details of an existing dataset you can use
 
 This operator returns a `Dataset Resource <https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets#resource>`__.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_dataset.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_dataset.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_get_dataset]
@@ -72,7 +72,7 @@ List tables in dataset
 To retrieve the list of tables in a given dataset use
 :class:`~airflow.providers.google.cloud.operators.bigquery.BigQueryGetDatasetTablesOperator`.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_get_dataset_tables]
@@ -89,7 +89,7 @@ To update a table in BigQuery you can use
 The update method replaces the entire Table resource, whereas the patch
 method only replaces fields that are provided in the submitted Table resource.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_update_table]
@@ -106,7 +106,7 @@ To update a dataset in BigQuery you can use
 The update method replaces the entire dataset resource, whereas the patch
 method only replaces fields that are provided in the submitted dataset resource.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_dataset.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_dataset.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_update_dataset]
@@ -120,7 +120,7 @@ Delete dataset
 To delete an existing dataset from a BigQuery database you can use
 :class:`~airflow.providers.google.cloud.operators.bigquery.BigQueryDeleteDatasetOperator`.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_dataset.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_dataset.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_delete_dataset]
@@ -143,7 +143,7 @@ ways. You may either directly pass the schema fields in, or you may point the
 operator to a Google Cloud Storage object name. The object in Google Cloud
 Storage must be a JSON file with the schema fields in it.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_create_table]
@@ -151,7 +151,7 @@ Storage must be a JSON file with the schema fields in it.
 
 You can use this operator to create a view on top of an existing table.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_create_view]
@@ -160,7 +160,7 @@ You can use this operator to create a view on top of an existing table.
 You can also use this operator to create a materialized view that periodically
 cache results of a query for increased performance and efficiency.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_create_materialized_view]
@@ -179,7 +179,7 @@ Similarly to
 :class:`~airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyTableOperator`
 you can directly pass the schema fields in.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_operations.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_operations.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_create_external_table]
@@ -187,7 +187,7 @@ you can directly pass the schema fields in.
 
 Or you may point the operator to a Google Cloud Storage object name where the schema is stored.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_create_table_schema_json]
@@ -211,7 +211,7 @@ returned list will be equal to the number of rows fetched. Each element in the
 list will again be a list where elements would represent the column values for
 that row.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_queries.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
     :language: python
     :dedent: 8
     :start-after: [START howto_operator_bigquery_get_data]
@@ -228,7 +228,7 @@ To upsert a table you can use
 This operator either updates the existing table or creates a new, empty table
 in the given dataset.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_upsert_table]
@@ -245,7 +245,7 @@ To update the schema of a table you can use
 This operator updates the schema field values supplied, while leaving the rest unchanged. This is useful
 for instance to set new field descriptions on an existing table schema.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_update_table_schema]
@@ -259,7 +259,7 @@ Delete table
 To delete an existing table you can use
 :class:`~airflow.providers.google.cloud.operators.bigquery.BigQueryDeleteTableOperator`.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_delete_table]
@@ -267,7 +267,7 @@ To delete an existing table you can use
 
 You can also use this operator to delete a view.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_delete_view]
@@ -275,7 +275,7 @@ You can also use this operator to delete a view.
 
 You can also use this operator to delete a materialized view.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_tables.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_bigquery_delete_materialized_view]
@@ -288,7 +288,7 @@ Execute BigQuery jobs
 
 Let's say you would like to execute the following query.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_queries.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
     :language: python
     :dedent: 0
     :start-after: [START howto_operator_bigquery_query]
@@ -298,7 +298,7 @@ To execute the SQL query in a specific BigQuery database you can use
 :class:`~airflow.providers.google.cloud.operators.bigquery.BigQueryInsertJobOperator` with
 proper query job configuration that can be Jinja templated.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_queries.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
     :language: python
     :dedent: 8
     :start-after: [START howto_operator_bigquery_insert_job]
@@ -310,7 +310,7 @@ For more information on types of BigQuery job please check
 If you want to include some files in your configuration you can use ``include`` clause of Jinja template
 language as follow:
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_queries.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
     :language: python
     :dedent: 8
     :start-after: [START howto_operator_bigquery_select_job]
@@ -339,7 +339,7 @@ This operator expects a sql query that will return a single row. Each value on
 that first row is evaluated using python ``bool`` casting. If any of the values
 return ``False`` the check is failed and errors out.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_queries.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
     :language: python
     :dedent: 8
     :start-after: [START howto_operator_bigquery_check]
@@ -357,7 +357,7 @@ This operator expects a sql query that will return a single row. Each value on
 that first row is evaluated against ``pass_value`` which can be either a string
 or numeric value. If numeric, you can also specify ``tolerance``.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_queries.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
     :language: python
     :dedent: 8
     :start-after: [START howto_operator_bigquery_value_check]
@@ -372,7 +372,7 @@ To check that the values of metrics given as SQL expressions are within a certai
 tolerance of the ones from ``days_back`` before you can use
 :class:`~airflow.providers.google.cloud.operators.bigquery.BigQueryIntervalCheckOperator`.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_queries.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
     :language: python
     :dedent: 8
     :start-after: [START howto_operator_bigquery_interval_check]
@@ -390,7 +390,7 @@ use the ``{{ ds_nodash }}`` macro as the table name suffix.
 
 :class:`~airflow.providers.google.cloud.sensors.bigquery.BigQueryTableExistenceSensor`.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_sensors.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_sensors.py
     :language: python
     :dedent: 4
     :start-after: [START howto_sensor_bigquery_table]
@@ -402,7 +402,7 @@ Check that a Table Partition exists
 To check that a table exists and has a partition you can use.
 :class:`~airflow.providers.google.cloud.sensors.bigquery.BigQueryTablePartitionExistenceSensor`.
 
-.. exampleinclude:: /../../tests/system/providers/google/bigquery/example_bigquery_sensors.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/bigquery/example_bigquery_sensors.py
     :language: python
     :dedent: 4
     :start-after: [START howto_sensor_bigquery_table_partition]
diff --git a/docs/apache-airflow-providers-google/operators/cloud/datastore.rst b/docs/apache-airflow-providers-google/operators/cloud/datastore.rst
index 4a8e623d6e..05da36a3f8 100644
--- a/docs/apache-airflow-providers-google/operators/cloud/datastore.rst
+++ b/docs/apache-airflow-providers-google/operators/cloud/datastore.rst
@@ -38,7 +38,7 @@ Export Entities
 To export entities from Google Cloud Datastore to Cloud Storage use
 :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreExportEntitiesOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_export_import.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_export_import.py
     :language: python
     :dedent: 4
     :start-after: [START how_to_export_task]
@@ -52,7 +52,7 @@ Import Entities
 To import entities from Cloud Storage to Google Cloud Datastore use
 :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreImportEntitiesOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_export_import.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_export_import.py
     :language: python
     :dedent: 4
     :start-after: [START how_to_import_task]
@@ -66,7 +66,7 @@ Allocate Ids
 To allocate IDs for incomplete keys use
 :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreAllocateIdsOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_commit.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_commit.py
     :language: python
     :dedent: 4
     :start-after: [START how_to_allocate_ids]
@@ -74,7 +74,7 @@ To allocate IDs for incomplete keys use
 
 An example of a partial keys required by the operator:
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_commit.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_commit.py
     :language: python
     :dedent: 0
     :start-after: [START how_to_keys_def]
@@ -88,7 +88,7 @@ Begin transaction
 To begin a new transaction use
 :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreBeginTransactionOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_commit.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_commit.py
     :language: python
     :dedent: 4
     :start-after: [START how_to_begin_transaction]
@@ -96,7 +96,7 @@ To begin a new transaction use
 
 An example of a transaction options required by the operator:
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_commit.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_commit.py
     :language: python
     :dedent: 0
     :start-after: [START how_to_transaction_def]
@@ -110,7 +110,7 @@ Commit transaction
 To commit a transaction, optionally creating, deleting or modifying some entities
 use :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreCommitOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_commit.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_commit.py
     :language: python
     :dedent: 4
     :start-after: [START how_to_commit_task]
@@ -118,7 +118,7 @@ use :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreCo
 
 An example of a commit information required by the operator:
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_commit.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_commit.py
     :language: python
     :dedent: 0
     :start-after: [START how_to_commit_def]
@@ -132,7 +132,7 @@ Run query
 To run a query for entities use
 :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreRunQueryOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_query.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_query.py
     :language: python
     :dedent: 4
     :start-after: [START how_to_run_query]
@@ -140,7 +140,7 @@ To run a query for entities use
 
 An example of a query required by the operator:
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_query.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_query.py
     :language: python
     :dedent: 0
     :start-after: [START how_to_query_def]
@@ -154,7 +154,7 @@ Roll back transaction
 To roll back a transaction
 use :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreRollbackOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_rollback.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_rollback.py
     :language: python
     :dedent: 4
     :start-after: [START how_to_rollback_transaction]
@@ -168,7 +168,7 @@ Get operation state
 To get the current state of a long-running operation use
 :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreGetOperationOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_export_import.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_export_import.py
     :language: python
     :dedent: 4
     :start-after: [START get_operation_state]
@@ -182,7 +182,7 @@ Delete operation
 To delete an operation use
 :class:`~airflow.providers.google.cloud.operators.datastore.CloudDatastoreDeleteOperationOperator`
 
-.. exampleinclude:: /../../tests/system/providers/google/datastore/example_datastore_export_import.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/datastore/example_datastore_export_import.py
     :language: python
     :dedent: 4
     :start-after: [START delete_operation]
diff --git a/docs/apache-airflow-providers-google/operators/cloud/kubernetes_engine.rst b/docs/apache-airflow-providers-google/operators/cloud/kubernetes_engine.rst
index 39da66207a..23ed67d8aa 100644
--- a/docs/apache-airflow-providers-google/operators/cloud/kubernetes_engine.rst
+++ b/docs/apache-airflow-providers-google/operators/cloud/kubernetes_engine.rst
@@ -43,7 +43,7 @@ Create GKE cluster
 
 Here is an example of a cluster definition:
 
-.. exampleinclude:: /../../tests/system/providers/google/kubernetes_engine/example_kubernetes_engine.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/kubernetes_engine/example_kubernetes_engine.py
     :language: python
     :start-after: [START howto_operator_gcp_gke_create_cluster_definition]
     :end-before: [END howto_operator_gcp_gke_create_cluster_definition]
@@ -53,7 +53,7 @@ A dict object like this, or a
 definition, is required when creating a cluster with
 :class:`~airflow.providers.google.cloud.operators.kubernetes_engine.GKECreateClusterOperator`.
 
-.. exampleinclude:: /../../tests/system/providers/google/kubernetes_engine/example_kubernetes_engine.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/kubernetes_engine/example_kubernetes_engine.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_gke_create_cluster]
@@ -68,7 +68,7 @@ To delete a cluster, use
 :class:`~airflow.providers.google.cloud.operators.kubernetes_engine.GKEDeleteClusterOperator`.
 This would also delete all the nodes allocated to the cluster.
 
-.. exampleinclude:: /../../tests/system/providers/google/kubernetes_engine/example_kubernetes_engine.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/kubernetes_engine/example_kubernetes_engine.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_gke_delete_cluster]
@@ -117,7 +117,7 @@ is the path ``/airflow/xcom``. To provide values to the XCom, ensure your Pod wr
 ``return.json`` in the sidecar. The contents of this can then be used downstream in your DAG.
 Here is an example of it being used:
 
-.. exampleinclude:: /../../tests/system/providers/google/kubernetes_engine/example_kubernetes_engine.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/kubernetes_engine/example_kubernetes_engine.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_gke_start_pod_xcom]
@@ -125,7 +125,7 @@ Here is an example of it being used:
 
 And then use it in other operators:
 
-.. exampleinclude:: /../../tests/system/providers/google/kubernetes_engine/example_kubernetes_engine.py
+.. exampleinclude:: /../../tests/system/providers/google/cloud/kubernetes_engine/example_kubernetes_engine.py
     :language: python
     :dedent: 4
     :start-after: [START howto_operator_gke_xcom_result]
diff --git a/docs/apache-airflow-providers-http/index.rst b/docs/apache-airflow-providers-http/index.rst
index 2b7ff3930d..e9bf6af311 100644
--- a/docs/apache-airflow-providers-http/index.rst
+++ b/docs/apache-airflow-providers-http/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/http/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/http/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-jdbc/index.rst b/docs/apache-airflow-providers-jdbc/index.rst
index c46fc1e43a..9cc096df79 100644
--- a/docs/apache-airflow-providers-jdbc/index.rst
+++ b/docs/apache-airflow-providers-jdbc/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/jdbc/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/jdbc/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-jenkins/index.rst b/docs/apache-airflow-providers-jenkins/index.rst
index 9a23555000..92107cd33d 100644
--- a/docs/apache-airflow-providers-jenkins/index.rst
+++ b/docs/apache-airflow-providers-jenkins/index.rst
@@ -33,6 +33,12 @@ Content
 
     Python API <_api/airflow/providers/jenkins/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/jenkins/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-microsoft-azure/index.rst b/docs/apache-airflow-providers-microsoft-azure/index.rst
index ddbc51d490..681ee497f2 100644
--- a/docs/apache-airflow-providers-microsoft-azure/index.rst
+++ b/docs/apache-airflow-providers-microsoft-azure/index.rst
@@ -37,6 +37,12 @@ Content
 
     Python API <_api/airflow/providers/microsoft/azure/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/microsoft/azure/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-microsoft-mssql/index.rst b/docs/apache-airflow-providers-microsoft-mssql/index.rst
index ac42801752..bb3df09b2c 100644
--- a/docs/apache-airflow-providers-microsoft-mssql/index.rst
+++ b/docs/apache-airflow-providers-microsoft-mssql/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/microsoft/mssql/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/microsoft/mssql/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-microsoft-winrm/index.rst b/docs/apache-airflow-providers-microsoft-winrm/index.rst
index 5f3d5d148a..1c15797fa6 100644
--- a/docs/apache-airflow-providers-microsoft-winrm/index.rst
+++ b/docs/apache-airflow-providers-microsoft-winrm/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/microsoft/winrm/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/microsoft/winrm/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-mysql/index.rst b/docs/apache-airflow-providers-mysql/index.rst
index 6fb518d7e9..90cfe7b235 100644
--- a/docs/apache-airflow-providers-mysql/index.rst
+++ b/docs/apache-airflow-providers-mysql/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/mysql/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/mysql/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-opsgenie/index.rst b/docs/apache-airflow-providers-opsgenie/index.rst
index 3197d6d77f..776d096bdd 100644
--- a/docs/apache-airflow-providers-opsgenie/index.rst
+++ b/docs/apache-airflow-providers-opsgenie/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/opsgenie/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/opsgenie/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-papermill/index.rst b/docs/apache-airflow-providers-papermill/index.rst
index 7effd4b35c..424ecb6739 100644
--- a/docs/apache-airflow-providers-papermill/index.rst
+++ b/docs/apache-airflow-providers-papermill/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/papermill/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/papermill/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-presto/index.rst b/docs/apache-airflow-providers-presto/index.rst
index b3c4b6f09f..6c066e3602 100644
--- a/docs/apache-airflow-providers-presto/index.rst
+++ b/docs/apache-airflow-providers-presto/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/presto/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/presto/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-qubole/index.rst b/docs/apache-airflow-providers-qubole/index.rst
index 1e5b673d2c..aa68724225 100644
--- a/docs/apache-airflow-providers-qubole/index.rst
+++ b/docs/apache-airflow-providers-qubole/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/qubole/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/qubole/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-salesforce/index.rst b/docs/apache-airflow-providers-salesforce/index.rst
index 2da4b06569..37d7956ea4 100644
--- a/docs/apache-airflow-providers-salesforce/index.rst
+++ b/docs/apache-airflow-providers-salesforce/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/salesforce/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/salesforce/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-singularity/index.rst b/docs/apache-airflow-providers-singularity/index.rst
index 32acfebd72..75b63f96eb 100644
--- a/docs/apache-airflow-providers-singularity/index.rst
+++ b/docs/apache-airflow-providers-singularity/index.rst
@@ -28,6 +28,12 @@ Content
 
     Python API <_api/airflow/providers/singularity/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/singularity/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-snowflake/index.rst b/docs/apache-airflow-providers-snowflake/index.rst
index 5d0a6b317c..2ff510af12 100644
--- a/docs/apache-airflow-providers-snowflake/index.rst
+++ b/docs/apache-airflow-providers-snowflake/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/snowflake/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/snowflake/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-tableau/index.rst b/docs/apache-airflow-providers-tableau/index.rst
index 41abe988f1..27d08fe67a 100644
--- a/docs/apache-airflow-providers-tableau/index.rst
+++ b/docs/apache-airflow-providers-tableau/index.rst
@@ -30,6 +30,12 @@ Content
     Operators <operators>
     Python API <_api/airflow/providers/tableau/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/tableau/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-telegram/index.rst b/docs/apache-airflow-providers-telegram/index.rst
index 782de1e712..f3a9a3fd87 100644
--- a/docs/apache-airflow-providers-telegram/index.rst
+++ b/docs/apache-airflow-providers-telegram/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/telegram/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/telegram/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-trino/index.rst b/docs/apache-airflow-providers-trino/index.rst
index 239ec03cd8..c56a9b8589 100644
--- a/docs/apache-airflow-providers-trino/index.rst
+++ b/docs/apache-airflow-providers-trino/index.rst
@@ -34,6 +34,12 @@ Content
 
     Python API <_api/airflow/providers/trino/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/trino/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow-providers-yandex/index.rst b/docs/apache-airflow-providers-yandex/index.rst
index 7ad2303510..7699d53bd2 100644
--- a/docs/apache-airflow-providers-yandex/index.rst
+++ b/docs/apache-airflow-providers-yandex/index.rst
@@ -35,6 +35,12 @@ Content
 
     Python API <_api/airflow/providers/yandex/index>
 
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/yandex/index>
+
 .. toctree::
     :maxdepth: 1
     :caption: Resources
diff --git a/docs/apache-airflow/python-api-ref.rst b/docs/apache-airflow/python-api-ref.rst
index e8c4dff3c4..28a4545859 100644
--- a/docs/apache-airflow/python-api-ref.rst
+++ b/docs/apache-airflow/python-api-ref.rst
@@ -154,3 +154,12 @@ schedule DAG runs in ways not possible with built-in schedule expressions.
   :maxdepth: 1
 
   _api/airflow/timetables/index
+
+Example DAGs
+------------
+
+.. toctree::
+  :includehidden:
+  :maxdepth: 1
+
+  _api/airflow/example_dags/index
diff --git a/docs/build_docs.py b/docs/build_docs.py
index d7edad1cad..9f4217bd10 100755
--- a/docs/build_docs.py
+++ b/docs/build_docs.py
@@ -15,17 +15,19 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+
+
 import argparse
 import multiprocessing
 import os
 import sys
 from collections import defaultdict
-from typing import Dict, List, NamedTuple, Optional, Tuple
+from itertools import filterfalse, tee
+from typing import Callable, Dict, Iterable, List, NamedTuple, Optional, Tuple, TypeVar
 
 from rich.console import Console
 from tabulate import tabulate
 
-from airflow.utils.helpers import partition
 from docs.exts.docs_build import dev_index_generator, lint_checks
 from docs.exts.docs_build.code_utils import CONSOLE_WIDTH, PROVIDER_INIT_FILE
 from docs.exts.docs_build.docs_builder import DOCS_DIR, AirflowDocsBuilder, get_available_packages
@@ -62,6 +64,14 @@ ON_GITHUB_ACTIONS = os.environ.get('GITHUB_ACTIONS', 'false') == "true"
 
 console = Console(force_terminal=True, color_system="standard", width=CONSOLE_WIDTH)
 
+T = TypeVar('T')
+
+
+def partition(pred: Callable[[T], bool], iterable: Iterable[T]) -> Tuple[Iterable[T], Iterable[T]]:
+    """Use a predicate to partition entries into false entries and true entries"""
+    iter_1, iter_2 = tee(iterable)
+    return filterfalse(pred, iter_1), filter(pred, iter_2)
+
 
 def _promote_new_flags():
     console.print()
diff --git a/docs/conf.py b/docs/conf.py
index b1742f0c00..47334381fc 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -35,20 +35,17 @@ import json
 import os
 import sys
 from collections import defaultdict
+from pathlib import Path
 from typing import Any, Dict, List, Optional, Tuple
 
 import yaml
 
-try:
-    from yaml import CSafeLoader as SafeLoader
-except ImportError:
-    from yaml import SafeLoader  # type: ignore[misc]
-
 import airflow
 from airflow.configuration import AirflowConfigParser, default_config_yaml
-from docs.exts.docs_build.third_party_inventories import THIRD_PARTY_INDEXES
 
-sys.path.append(os.path.join(os.path.dirname(__file__), 'exts'))
+sys.path.append(str(Path(__file__).parent / 'exts'))
+
+from docs_build.third_party_inventories import THIRD_PARTY_INDEXES  # noqa: E402
 
 CONF_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__)))
 INVENTORY_CACHE_DIR = os.path.join(CONF_DIR, '_inventory_cache')
@@ -61,6 +58,7 @@ PACKAGE_DIR: Optional[str]
 if PACKAGE_NAME == 'apache-airflow':
     PACKAGE_DIR = os.path.join(ROOT_DIR, 'airflow')
     PACKAGE_VERSION = airflow.__version__
+    SYSTEM_TESTS_DIR = None
 elif PACKAGE_NAME.startswith('apache-airflow-providers-'):
     from provider_yaml_utils import load_package_data
 
@@ -75,23 +73,27 @@ elif PACKAGE_NAME.startswith('apache-airflow-providers-'):
         raise Exception(f"Could not find provider.yaml file for package: {PACKAGE_NAME}")
     PACKAGE_DIR = CURRENT_PROVIDER['package-dir']
     PACKAGE_VERSION = CURRENT_PROVIDER['versions'][0]
+    SYSTEM_TESTS_DIR = CURRENT_PROVIDER['system-tests-dir']
 elif PACKAGE_NAME == 'apache-airflow-providers':
     from provider_yaml_utils import load_package_data
 
     PACKAGE_DIR = os.path.join(ROOT_DIR, 'airflow', 'providers')
     PACKAGE_VERSION = 'devel'
     ALL_PROVIDER_YAMLS = load_package_data()
+    SYSTEM_TESTS_DIR = None
 elif PACKAGE_NAME == 'helm-chart':
     PACKAGE_DIR = os.path.join(ROOT_DIR, 'chart')
     CHART_YAML_FILE = os.path.join(PACKAGE_DIR, 'Chart.yaml')
 
     with open(CHART_YAML_FILE) as chart_file:
-        chart_yaml_contents = yaml.load(chart_file, SafeLoader)
+        chart_yaml_contents = yaml.safe_load(chart_file)
 
     PACKAGE_VERSION = chart_yaml_contents['version']
+    SYSTEM_TESTS_DIR = None
 else:
     PACKAGE_DIR = None
     PACKAGE_VERSION = 'devel'
+    SYSTEM_TESTS_DIR = None
 # Adds to environment variables for easy access from other plugins like airflow_intersphinx.
 os.environ['AIRFLOW_PACKAGE_NAME'] = PACKAGE_NAME
 if PACKAGE_DIR:
@@ -220,6 +222,7 @@ if PACKAGE_NAME == 'apache-airflow':
             exclude_patterns.append(f"_api/airflow/{name.rpartition('.')[0]}")
         browsable_packages = [
             "hooks",
+            "example_dags",
             "executors",
             "models",
             "operators",
@@ -318,9 +321,12 @@ html_use_index = True
 html_show_copyright = False
 
 # Theme configuration
-html_theme_options: Dict[str, Any] = {
-    'hide_website_buttons': True,
-}
+if PACKAGE_NAME.startswith('apache-airflow-providers-'):
+    # Only hide hidden items for providers. For Chart and Airflow we are using the approach where
+    # TOC is hidden but sidebar still shows the content (but we are not doing it for providers).
+    html_theme_options: Dict[str, Any] = {'hide_website_buttons': True, 'sidebar_includehidden': False}
+else:
+    html_theme_options = {'hide_website_buttons': True, 'sidebar_includehidden': True}
 if FOR_PRODUCTION:
     html_theme_options['navbar_links'] = [
         {'href': '/community/', 'text': 'Community'},
@@ -415,7 +421,7 @@ elif PACKAGE_NAME.startswith('apache-airflow-providers-'):
             return {}
 
         with open(file_path) as f:
-            return yaml.load(f, SafeLoader)
+            return yaml.safe_load(f)
 
     config = _load_config()
     jinja_contexts = {
@@ -668,6 +674,9 @@ autoapi_dirs = [
     PACKAGE_DIR,
 ]
 
+if SYSTEM_TESTS_DIR and os.path.exists(SYSTEM_TESTS_DIR):
+    autoapi_dirs.append(SYSTEM_TESTS_DIR)
+
 # A directory that has user-defined templates to override our default templates.
 if PACKAGE_NAME == 'apache-airflow':
     autoapi_template_dir = 'autoapi_templates'
@@ -675,11 +684,13 @@ if PACKAGE_NAME == 'apache-airflow':
 # A list of patterns to ignore when finding files
 autoapi_ignore = [
     '*/airflow/_vendor/*',
-    '*/example_dags/*',
     '*/_internal*',
     '*/node_modules/*',
     '*/migrations/*',
     '*/contrib/*',
+    '**/example_sla_dag.py',
+    '**/example_taskflow_api_etl_docker_virtualenv.py',
+    '**/example_dag_decorator.py',
 ]
 if PACKAGE_NAME == 'apache-airflow':
     autoapi_ignore.append('*/airflow/providers/*')
diff --git a/docs/exts/docs_build/docs_builder.py b/docs/exts/docs_build/docs_builder.py
index cc65f3f170..b8fcf6fd64 100644
--- a/docs/exts/docs_build/docs_builder.py
+++ b/docs/exts/docs_build/docs_builder.py
@@ -24,7 +24,7 @@ from typing import List
 
 from rich.console import Console
 
-from docs.exts.docs_build.code_utils import (
+from .code_utils import (
     AIRFLOW_SITE_DIR,
     ALL_PROVIDER_YAMLS,
     CONSOLE_WIDTH,
@@ -32,9 +32,9 @@ from docs.exts.docs_build.code_utils import (
     PROCESS_TIMEOUT,
     pretty_format_path,
 )
-from docs.exts.docs_build.errors import DocBuildError, parse_sphinx_warnings
-from docs.exts.docs_build.helm_chart_utils import chart_version
-from docs.exts.docs_build.spelling_checks import SpellingError, parse_spelling_warnings
+from .errors import DocBuildError, parse_sphinx_warnings
+from .helm_chart_utils import chart_version
+from .spelling_checks import SpellingError, parse_spelling_warnings
 
 console = Console(force_terminal=True, color_system="standard", width=CONSOLE_WIDTH)
 
diff --git a/docs/exts/provider_yaml_utils.py b/docs/exts/provider_yaml_utils.py
index a6d1ee297d..085cd480c7 100644
--- a/docs/exts/provider_yaml_utils.py
+++ b/docs/exts/provider_yaml_utils.py
@@ -18,19 +18,14 @@
 import json
 import os
 from glob import glob
+from pathlib import Path
 from typing import Any, Dict, List
 
 import jsonschema
 import yaml
 
-try:
-    from yaml import CSafeLoader as SafeLoader
-except ImportError:
-    from yaml import SafeLoader  # type: ignore[misc]
-
-
-ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
-PROVIDER_DATA_SCHEMA_PATH = os.path.join(ROOT_DIR, "airflow", "provider.yaml.schema.json")
+ROOT_DIR = Path(__file__).parents[2].resolve()
+PROVIDER_DATA_SCHEMA_PATH = ROOT_DIR / "airflow" / "provider.yaml.schema.json"
 
 
 def _load_schema() -> Dict[str, Any]:
@@ -40,8 +35,17 @@ def _load_schema() -> Dict[str, Any]:
 
 
 def _filepath_to_module(filepath: str):
-    filepath = os.path.relpath(os.path.abspath(filepath), ROOT_DIR)
-    return filepath.replace("/", ".")
+    return str(Path(filepath).relative_to(ROOT_DIR)).replace("/", ".")
+
+
+def _filepath_to_system_tests(filepath: str):
+    return str(
+        ROOT_DIR
+        / "tests"
+        / "system"
+        / "providers"
+        / Path(filepath).relative_to(ROOT_DIR / "airflow" / "providers")
+    )
 
 
 def get_provider_yaml_paths():
@@ -59,12 +63,14 @@ def load_package_data() -> List[Dict[str, Any]]:
     result = []
     for provider_yaml_path in get_provider_yaml_paths():
         with open(provider_yaml_path) as yaml_file:
-            provider = yaml.load(yaml_file, SafeLoader)
+            provider = yaml.safe_load(yaml_file)
         try:
             jsonschema.validate(provider, schema=schema)
         except jsonschema.ValidationError:
             raise Exception(f"Unable to parse: {provider_yaml_path}.")
-        provider['python-module'] = _filepath_to_module(os.path.dirname(provider_yaml_path))
-        provider['package-dir'] = os.path.dirname(provider_yaml_path)
+        provider_yaml_dir = os.path.dirname(provider_yaml_path)
+        provider['python-module'] = _filepath_to_module(provider_yaml_dir)
+        provider['package-dir'] = provider_yaml_dir
+        provider['system-tests-dir'] = _filepath_to_system_tests(provider_yaml_dir)
         result.append(provider)
     return result
diff --git a/docs/publish_docs.py b/docs/publish_docs.py
index 60c89d10e4..7451033f16 100755
--- a/docs/publish_docs.py
+++ b/docs/publish_docs.py
@@ -17,6 +17,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
+
 import argparse
 import os
 
@@ -26,6 +27,7 @@ from docs.exts.provider_yaml_utils import load_package_data
 
 AIRFLOW_SITE_DIR = os.environ.get('AIRFLOW_SITE_DIRECTORY')
 
+
 if __name__ != "__main__":
     raise SystemExit(
         "This file is intended to be executed as an executable program. You cannot use it as a module."
diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt
index b9f2aad173..69130e7d05 100644
--- a/docs/spelling_wordlist.txt
+++ b/docs/spelling_wordlist.txt
@@ -193,6 +193,7 @@ Hou
 Http
 HttpError
 HttpRequest
+IGM
 IdP
 ImageAnnotatorClient
 Imap
@@ -281,6 +282,7 @@ OSS
 Oauth
 Oauthlib
 Okta
+OnFailure
 Oozie
 Opsgenie
 Optimise
@@ -794,6 +796,7 @@ evals
 eventlet
 evo
 exasol
+executables
 execvp
 exitcode
 explicit
@@ -819,12 +822,14 @@ filehandle
 fileloc
 filelocs
 filepath
+fileshare
 filesize
 filesystem
 filesystems
 filetype
 finalizers
 findall
+firestore
 firstname
 fluentd
 fmt
@@ -873,6 +878,7 @@ greenlet
 groupId
 grpc
 gz
+gzipped
 hadoop
 hadoopcmd
 hardcoded
@@ -1184,6 +1190,7 @@ preloading
 prepend
 prepended
 preprocess
+preprocessing
 presign
 presigned
 prestocmd
@@ -1339,6 +1346,7 @@ sourceRepository
 sourceUploadUrl
 sparkApplication
 sparkcmd
+sparkr
 sparksql
 spegno
 spotahome
@@ -1469,6 +1477,7 @@ tsql
 tsv
 ttl
 tunables
+twitterHandle
 txt
 typeahead
 tz
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index c6b12db9fa..96155ac41a 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1 @@
-ed70b784364f0b604176ea142305906b
+2f24dd5bade0ac4b635ef6ada358590b
diff --git a/images/breeze/output-static-checks.svg b/images/breeze/output-static-checks.svg
index edbc2fee71..1e8d54ca8e 100644
--- a/images/breeze/output-static-checks.svg
+++ b/images/breeze/output-static-checks.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1245.6" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,233 +19,237 @@
         font-weight: 700;
     }
 
-    .terminal-3465962952-matrix {
+    .terminal-1202620514-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3465962952-title {
+    .terminal-1202620514-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3465962952-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3465962952-r2 { fill: #c5c8c6 }
-.terminal-3465962952-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3465962952-r4 { fill: #868887 }
-.terminal-3465962952-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3465962952-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3465962952-r7 { fill: #8d7b39 }
+    .terminal-1202620514-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1202620514-r2 { fill: #c5c8c6 }
+.terminal-1202620514-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1202620514-r4 { fill: #868887 }
+.terminal-1202620514-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1202620514-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1202620514-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-3465962952-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
+    <clipPath id="terminal-1202620514-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1194.6" />
     </clipPath>
-    <clipPath id="terminal-3465962952-line-0">
+    <clipPath id="terminal-1202620514-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-1">
+<clipPath id="terminal-1202620514-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-2">
+<clipPath id="terminal-1202620514-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-3">
+<clipPath id="terminal-1202620514-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-4">
+<clipPath id="terminal-1202620514-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-5">
+<clipPath id="terminal-1202620514-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-6">
+<clipPath id="terminal-1202620514-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-7">
+<clipPath id="terminal-1202620514-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-8">
+<clipPath id="terminal-1202620514-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-9">
+<clipPath id="terminal-1202620514-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-10">
+<clipPath id="terminal-1202620514-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-11">
+<clipPath id="terminal-1202620514-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-12">
+<clipPath id="terminal-1202620514-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-13">
+<clipPath id="terminal-1202620514-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-14">
+<clipPath id="terminal-1202620514-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-15">
+<clipPath id="terminal-1202620514-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-16">
+<clipPath id="terminal-1202620514-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-17">
+<clipPath id="terminal-1202620514-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-18">
+<clipPath id="terminal-1202620514-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-19">
+<clipPath id="terminal-1202620514-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-20">
+<clipPath id="terminal-1202620514-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-21">
+<clipPath id="terminal-1202620514-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-22">
+<clipPath id="terminal-1202620514-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-23">
+<clipPath id="terminal-1202620514-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-24">
+<clipPath id="terminal-1202620514-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-25">
+<clipPath id="terminal-1202620514-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-26">
+<clipPath id="terminal-1202620514-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-27">
+<clipPath id="terminal-1202620514-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-28">
+<clipPath id="terminal-1202620514-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-29">
+<clipPath id="terminal-1202620514-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-30">
+<clipPath id="terminal-1202620514-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-31">
+<clipPath id="terminal-1202620514-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-32">
+<clipPath id="terminal-1202620514-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-33">
+<clipPath id="terminal-1202620514-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-34">
+<clipPath id="terminal-1202620514-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-35">
+<clipPath id="terminal-1202620514-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-36">
+<clipPath id="terminal-1202620514-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-37">
+<clipPath id="terminal-1202620514-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-38">
+<clipPath id="terminal-1202620514-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-39">
+<clipPath id="terminal-1202620514-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-40">
+<clipPath id="terminal-1202620514-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-41">
+<clipPath id="terminal-1202620514-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-42">
+<clipPath id="terminal-1202620514-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-43">
+<clipPath id="terminal-1202620514-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-44">
+<clipPath id="terminal-1202620514-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-45">
+<clipPath id="terminal-1202620514-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3465962952-line-46">
+<clipPath id="terminal-1202620514-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1202620514-line-47">
+    <rect x="0" y="1148.3" 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="1219.2" rx="8"/><text class="terminal-3465962952-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1243.6" rx="8"/><text class="terminal-1202620514-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;static-checks</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-3465962952-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1202620514-clip-terminal)">
     
-    <g class="terminal-3465962952-matrix">
-    <text class="terminal-3465962952-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3465962952-line-0)">
-</text><text class="terminal-3465962952-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3465962952-line-1)">Usage:&#160;</text><text class="terminal-3465962952-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-3465962952-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-3465962952-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-1)">
-</text><text class="terminal-3465962952-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-2)">
-</text><text class="terminal-3465962952-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-3465962952-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-3465962952-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-3)">
-</text><text class="terminal-3465962952-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-4)">
-</text><text class="terminal-3465962952-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3465962952-line-5)">╭─</text><text class="terminal-3465962952-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3465962952-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3465962952-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-346596 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-6)">│</text><text class="terminal-3465962952-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-6)">-</text><text class="terminal-3465962952-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-3465962952-line-6)">-type</text><text class="terminal-3465962952-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-34659 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-7)">│</text><text class="terminal-3465962952-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-1-compatibility&#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-3465962952-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-8)">│</text><text class="terminal-3465962952-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-providers-have-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="215.2" textLength="1 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-9)">│</text><text class="terminal-3465962952-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-9)">check-apache-license-rat&#160;|&#160;check-base-operator-usage&#160;|&#160;check-boring-cyborg-configuration</text><text class="terminal-3465962952-r4" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-9)">│</te [...]
-</text><text class="terminal-3465962952-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3465962952-line-10)">│</text><text class="terminal-3465962952-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-3465962952-line-10)">|&#160;check-breeze-top-dependencies-limited&#160;|&#160;check-builtin-literals&#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="termi [...]
-</text><text class="terminal-3465962952-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-11)">│</text><text class="terminal-3465962952-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-11)">check-changelog-has-no-duplicates&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r [...]
-</text><text class="terminal-3465962952-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-12)">│</text><text class="terminal-3465962952-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-12)">check-docstring-param-types&#160;|&#160;check-executables-have-shebangs&#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><tex [...]
-</text><text class="terminal-3465962952-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-13)">│</text><text class="terminal-3465962952-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-13)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-346 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-14)">│</text><text class="terminal-3465962952-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-14)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#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-3465962952-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3465962952-line-15)">│</text><text class="terminal-3465962952-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-3465962952-line-15)">check-integrations-are-consistent&#160;|&#160;check-merge-conflict&#160;|&#160;check-newsfragments-are-valid</text><text class="terminal-3465962952-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-3465962952-line-15)">│</text> [...]
-</text><text class="terminal-3465962952-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-16)">│</text><text class="terminal-3465962952-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-16)">|&#160;check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#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="termin [...]
-</text><text class="terminal-3465962952-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-17)">│</text><text class="terminal-3465962952-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-17)">check-persist-credentials-disabled-in-github-workflows&#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;&#16 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-18)">│</text><text class="terminal-3465962952-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...]
-</text><text class="terminal-3465962952-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-19)">│</text><text class="terminal-3465962952-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#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><tex [...]
-</text><text class="terminal-3465962952-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3465962952-line-20)">│</text><text class="terminal-3465962952-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-3465962952-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="508" te [...]
-</text><text class="terminal-3465962952-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-21)">│</text><text class="terminal-3465962952-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="532.4" textLength="12.2" cli [...]
-</text><text class="terminal-3465962952-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-22)">│</text><text class="terminal-3465962952-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#160;|&#160;check-xml&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="556.8" textLength="12.2" cli [...]
-</text><text class="terminal-3465962952-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-23)">│</text><text class="terminal-3465962952-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-23)">codespell&#160;|&#160;debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="581.2" t [...]
-</text><text class="terminal-3465962952-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-24)">│</text><text class="terminal-3465962952-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-24)">fix-encoding-pragma&#160;|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3465962952-line-25)">│</text><text class="terminal-3465962952-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-3465962952-line-25)">lint-chart-schema&#160;|&#160;lint-css&#160;|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="630" textLength="12.2" clip-path [...]
-</text><text class="terminal-3465962952-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-26)">│</text><text class="terminal-3465962952-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-26)">lint-json-schema&#160;|&#160;lint-markdown&#160;|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json</text><text class="terminal-3465962952-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#terminal-346 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-27)">│</text><text class="terminal-3465962952-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-27)">|&#160;pydocstyle&#160;|&#160;python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="678.8" textLength="12.2" cli [...]
-</text><text class="terminal-3465962952-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-28)">│</text><text class="terminal-3465962952-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-28)">run-shellcheck&#160;|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-file&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="ur [...]
-</text><text class="terminal-3465962952-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-29)">│</text><text class="terminal-3465962952-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-3465962952-line-29)">update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="727.6" textLength="12.2" clip-path="url(#termina [...]
-</text><text class="terminal-3465962952-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3465962952-line-30)">│</text><text class="terminal-3465962952-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-3465962952-line-30)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-3465962952-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-3465962952-line-30)">│</ [...]
-</text><text class="terminal-3465962952-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-31)">│</text><text class="terminal-3465962952-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-3465962952-line-31)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#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-3465962952-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-32)">│</text><text class="terminal-3465962952-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-3465962952-line-32)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-34 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-33)">│</text><text class="terminal-3465962952-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-3465962952-line-33)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-3465962 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-34)">│</text><text class="terminal-3465962952-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-34)">-</text><text class="terminal-3465962952-r5" x="36.6" y="849.6" textLength="61" clip-path="url(#terminal-3465962952-line-34)">-file</text><text class="terminal-3465962952-r6" x="317.2" y="849.6" textLength="24.4" clip-path="url(#terminal-34 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3465962952-line-35)">│</text><text class="terminal-3465962952-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-3465962952-line-35)">-</text><text class="terminal-3465962952-r5" x="36.6" y="874" textLength="48.8" clip-path="url(#terminal-3465962952-line-35)">-all</text><text class="terminal-3465962952-r5" x="85.4" y="874" textLength="73.2" clip-path="url(#terminal-3465962952 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-36)">│</text><text class="terminal-3465962952-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-36)">-</text><text class="terminal-3465962952-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-3465962952-line-36)">-show</text><text class="terminal-3465962952-r5" x="97.6" y="898.4" textLength="195.2" clip-path="url(#terminal-34 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-37)">│</text><text class="terminal-3465962952-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-37)">-</text><text class="terminal-3465962952-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-3465962952-line-37)">-last</text><text class="terminal-3465962952-r5" x="97.6" y="922.8" textLength="85.4" clip-path="url(#terminal-346 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-3465962952-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3465962952-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-38)">
-</text><text class="terminal-3465962952-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-3465962952-line-39)">╭─</text><text class="terminal-3465962952-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-3465962952-line-39)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3465962952-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#terminal-346 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3465962952-line-40)">│</text><text class="terminal-3465962952-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3465962952-line-40)">-</text><text class="terminal-3465962952-r5" x="36.6" y="996" textLength="85.4" clip-path="url(#terminal-3465962952-line-40)">-commit</text><text class="terminal-3465962952-r5" x="122" y="996" textLength="48.8" clip-path="url(#terminal-34659629 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-41)">│</text><text class="terminal-3465962952-r2" x="329.4" y="1020.4" textLength="183" clip-path="url(#terminal-3465962952-line-41)">exclusive&#160;with&#160;</text><text class="terminal-3465962952-r5" x="512.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-41)">-</text><text class="terminal-3465962952-r5" x="524.6" y="1020.4" textLength="61" cl [...]
-</text><text class="terminal-3465962952-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-42)">│</text><text class="terminal-3465962952-r7" x="329.4" y="1044.8" textLength="1110.2" clip-path="url(#terminal-3465962952-line-42)">(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;& [...]
-</text><text class="terminal-3465962952-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-43)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3465962952-line-43)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#terminal-3465962952-line-43)">-verbose</text><text class="terminal-3465962952-r6" x="280.6" y="1069.2" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-3465962952-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-44)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3465962952-line-44)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-3465962952-line-44)">-dry</text><text class="terminal-3465962952-r5" x="85.4" y="1093.6" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-3465962952-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3465962952-line-45)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3465962952-line-45)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1118" textLength="85.4" clip-path="url(#terminal-3465962952-line-45)">-github</text><text class="terminal-3465962952-r5" x="122" y="1118" textLength="134.2" clip-path="url(#terminal-346 [...]
-</text><text class="terminal-3465962952-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-46)">│</text><text class="terminal-3465962952-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3465962952-line-46)">-</text><text class="terminal-3465962952-r5" x="36.6" y="1142.4" textLength="61" clip-path="url(#terminal-3465962952-line-46)">-help</text><text class="terminal-3465962952-r6" x="280.6" y="1142.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3465962952-r4" x="0" y="1166.8" textLength="1464" clip-path="url(#terminal-3465962952-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3465962952-r2" x="1464" y="1166.8" textLength="12.2" clip-path="url(#terminal-3465962952-line-47)">
+    <g class="terminal-1202620514-matrix">
+    <text class="terminal-1202620514-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1202620514-line-0)">
+</text><text class="terminal-1202620514-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1202620514-line-1)">Usage:&#160;</text><text class="terminal-1202620514-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-1202620514-line-1)">breeze&#160;static-checks&#160;[OPTIONS]&#160;[PRECOMMIT_ARGS]...</text><text class="terminal-1202620514-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-1)">
+</text><text class="terminal-1202620514-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-2)">
+</text><text class="terminal-1202620514-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-1202620514-line-3)">Run&#160;static&#160;checks.</text><text class="terminal-1202620514-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-3)">
+</text><text class="terminal-1202620514-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-4)">
+</text><text class="terminal-1202620514-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1202620514-line-5)">╭─</text><text class="terminal-1202620514-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1202620514-line-5)">&#160;Pre-commit&#160;flags&#160;──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1202620514-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-120262 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-6)">│</text><text class="terminal-1202620514-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-6)">-</text><text class="terminal-1202620514-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-1202620514-line-6)">-type</text><text class="terminal-1202620514-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-12026 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-7)">│</text><text class="terminal-1202620514-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-7)">(all&#160;|&#160;black&#160;|&#160;blacken-docs&#160;|&#160;check-airflow-2-1-compatibility&#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-1202620514-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-8)">│</text><text class="terminal-1202620514-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-8)">check-airflow-config-yaml-consistent&#160;|&#160;check-airflow-providers-have-extras&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="215.2" textLength="1 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-9)">│</text><text class="terminal-1202620514-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-9)">check-apache-license-rat&#160;|&#160;check-base-operator-usage&#160;|&#160;check-boring-cyborg-configuration</text><text class="terminal-1202620514-r4" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-9)">│</te [...]
+</text><text class="terminal-1202620514-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1202620514-line-10)">│</text><text class="terminal-1202620514-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-1202620514-line-10)">|&#160;check-breeze-top-dependencies-limited&#160;|&#160;check-builtin-literals&#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="termi [...]
+</text><text class="terminal-1202620514-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-11)">│</text><text class="terminal-1202620514-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-11)">check-changelog-has-no-duplicates&#160;|&#160;check-daysago-import-from-utils&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r [...]
+</text><text class="terminal-1202620514-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-12)">│</text><text class="terminal-1202620514-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-12)">check-docstring-param-types&#160;|&#160;check-executables-have-shebangs&#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><tex [...]
+</text><text class="terminal-1202620514-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-13)">│</text><text class="terminal-1202620514-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-13)">check-extra-packages-references&#160;|&#160;check-extras-order&#160;|&#160;check-for-inclusive-language&#160;|&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-120 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-14)">│</text><text class="terminal-1202620514-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-14)">check-hooks-apply&#160;|&#160;check-incorrect-use-of-LoggingMixin&#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-1202620514-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1202620514-line-15)">│</text><text class="terminal-1202620514-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-1202620514-line-15)">check-integrations-are-consistent&#160;|&#160;check-merge-conflict&#160;|&#160;check-newsfragments-are-valid</text><text class="terminal-1202620514-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-1202620514-line-15)">│</text> [...]
+</text><text class="terminal-1202620514-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-16)">│</text><text class="terminal-1202620514-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-16)">|&#160;check-no-providers-in-core-examples&#160;|&#160;check-no-relative-imports&#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="termin [...]
+</text><text class="terminal-1202620514-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-17)">│</text><text class="terminal-1202620514-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-17)">check-persist-credentials-disabled-in-github-workflows&#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;&#16 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-18)">│</text><text class="terminal-1202620514-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-18)">check-pre-commit-information-consistent&#160;|&#160;check-provide-create-sessions-imports&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...]
+</text><text class="terminal-1202620514-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-19)">│</text><text class="terminal-1202620514-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-19)">check-provider-yaml-valid&#160;|&#160;check-providers-init-file-missing&#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><tex [...]
+</text><text class="terminal-1202620514-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1202620514-line-20)">│</text><text class="terminal-1202620514-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-1202620514-line-20)">check-providers-subpackages-init-file-exist&#160;|&#160;check-pydevd-left-in-code&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="508" te [...]
+</text><text class="terminal-1202620514-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-21)">│</text><text class="terminal-1202620514-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-21)">check-revision-heads-map&#160;|&#160;check-safe-filter-usage-in-html&#160;|&#160;check-setup-order&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="532.4" textLength="12.2" cli [...]
+</text><text class="terminal-1202620514-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-22)">│</text><text class="terminal-1202620514-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-22)">check-start-date-not-used-in-defaults&#160;|&#160;check-system-tests-present&#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-1202620 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-23)">│</text><text class="terminal-1202620514-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-23)">check-system-tests-tocs&#160;|&#160;check-xml&#160;|&#160;codespell&#160;|&#160;create-missing-init-py-files-tests&#160;|&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="581.2" textLength="12.2" clip-path="url(#termina [...]
+</text><text class="terminal-1202620514-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-24)">│</text><text class="terminal-1202620514-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-24)">debug-statements&#160;|&#160;detect-private-key&#160;|&#160;doctoc&#160;|&#160;end-of-file-fixer&#160;|&#160;fix-encoding-pragma</text><text class="terminal-1202620514-r4" x="1451.8" y="605.6" textLength="12.2" clip-path="url(#terminal-120 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1202620514-line-25)">│</text><text class="terminal-1202620514-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-1202620514-line-25)">|&#160;flynt&#160;|&#160;forbid-tabs&#160;|&#160;identity&#160;|&#160;insert-license&#160;|&#160;isort&#160;|&#160;lint-chart-schema&#160;|&#160;lint-css</text><text class="terminal-1202620514-r4" x="1451.8" y="630" textLength="12.2" clip-path [...]
+</text><text class="terminal-1202620514-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-26)">│</text><text class="terminal-1202620514-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-26)">|&#160;lint-dockerfile&#160;|&#160;lint-helm-chart&#160;|&#160;lint-javascript&#160;|&#160;lint-json-schema&#160;|&#160;lint-markdown</text><text class="terminal-1202620514-r4" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#termina [...]
+</text><text class="terminal-1202620514-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-27)">│</text><text class="terminal-1202620514-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-27)">|&#160;lint-openapi&#160;|&#160;mixed-line-ending&#160;|&#160;pretty-format-json&#160;|&#160;pydocstyle&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="t [...]
+</text><text class="terminal-1202620514-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-28)">│</text><text class="terminal-1202620514-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-28)">python-no-log-warn&#160;|&#160;pyupgrade&#160;|&#160;rst-backticks&#160;|&#160;run-flake8&#160;|&#160;run-mypy&#160;|&#160;run-shellcheck&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="ur [...]
+</text><text class="terminal-1202620514-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-29)">│</text><text class="terminal-1202620514-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-29)">|&#160;static-check-autoflake&#160;|&#160;trailing-whitespace&#160;|&#160;update-breeze-file&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="termin [...]
+</text><text class="terminal-1202620514-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1202620514-line-30)">│</text><text class="terminal-1202620514-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-1202620514-line-30)">update-breeze-readme-config-hash&#160;|&#160;update-extras&#160;|&#160;update-in-the-wild-to-be-sorted&#160;|&#160;&#160;&#160;&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-1202 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-31)">│</text><text class="terminal-1202620514-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-1202620514-line-31)">update-inlined-dockerfile-scripts&#160;|&#160;update-local-yml-file&#160;|&#160;update-migration-references&#160;</text><text class="terminal-1202620514-r4" x="1451.8" y="776.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-31 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-32)">│</text><text class="terminal-1202620514-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-1202620514-line-32)">|&#160;update-providers-dependencies&#160;|&#160;update-setup-cfg-file&#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-1202620514-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-33)">│</text><text class="terminal-1202620514-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-1202620514-line-33)">update-spelling-wordlist-to-be-sorted&#160;|&#160;update-supported-versions&#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-12 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-34)">│</text><text class="terminal-1202620514-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#terminal-1202620514-line-34)">update-vendored-in-k8s-json-schema&#160;|&#160;update-version&#160;|&#160;yamllint&#160;|&#160;yesqa)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1202620 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1202620514-line-35)">│</text><text class="terminal-1202620514-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1202620514-line-35)">-</text><text class="terminal-1202620514-r5" x="36.6" y="874" textLength="61" clip-path="url(#terminal-1202620514-line-35)">-file</text><text class="terminal-1202620514-r6" x="317.2" y="874" textLength="24.4" clip-path="url(#terminal-1202620514 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-36)">│</text><text class="terminal-1202620514-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-36)">-</text><text class="terminal-1202620514-r5" x="36.6" y="898.4" textLength="48.8" clip-path="url(#terminal-1202620514-line-36)">-all</text><text class="terminal-1202620514-r5" x="85.4" y="898.4" textLength="73.2" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-37)">│</text><text class="terminal-1202620514-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-37)">-</text><text class="terminal-1202620514-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-1202620514-line-37)">-show</text><text class="terminal-1202620514-r5" x="97.6" y="922.8" textLength="195.2" clip-path="url(#terminal-12 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-38)">│</text><text class="terminal-1202620514-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-38)">-</text><text class="terminal-1202620514-r5" x="36.6" y="947.2" textLength="61" clip-path="url(#terminal-1202620514-line-38)">-last</text><text class="terminal-1202620514-r5" x="97.6" y="947.2" textLength="85.4" clip-path="url(#terminal-120 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="971.6" textLength="1464" clip-path="url(#terminal-1202620514-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1202620514-r2" x="1464" y="971.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-39)">
+</text><text class="terminal-1202620514-r4" x="0" y="996" textLength="24.4" clip-path="url(#terminal-1202620514-line-40)">╭─</text><text class="terminal-1202620514-r4" x="24.4" y="996" textLength="1415.2" clip-path="url(#terminal-1202620514-line-40)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1202620514-r4" x="1439.6" y="996" textLength="24.4" clip-path="url(#terminal-120262051 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-41)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-41)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1020.4" textLength="85.4" clip-path="url(#terminal-1202620514-line-41)">-commit</text><text class="terminal-1202620514-r5" x="122" y="1020.4" textLength="48.8" clip-path="url(#termi [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-42)">│</text><text class="terminal-1202620514-r2" x="329.4" y="1044.8" textLength="183" clip-path="url(#terminal-1202620514-line-42)">exclusive&#160;with&#160;</text><text class="terminal-1202620514-r5" x="512.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-42)">-</text><text class="terminal-1202620514-r5" x="524.6" y="1044.8" textLength="61" cl [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-43)">│</text><text class="terminal-1202620514-r7" x="329.4" y="1069.2" textLength="1110.2" clip-path="url(#terminal-1202620514-line-43)">(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;& [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-44)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1202620514-line-44)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1093.6" textLength="97.6" clip-path="url(#terminal-1202620514-line-44)">-verbose</text><text class="terminal-1202620514-r6" x="280.6" y="1093.6" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1202620514-line-45)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1202620514-line-45)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1118" textLength="48.8" clip-path="url(#terminal-1202620514-line-45)">-dry</text><text class="terminal-1202620514-r5" x="85.4" y="1118" textLength="48.8" clip-path="url(#terminal-120262 [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-46)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1202620514-line-46)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#terminal-1202620514-line-46)">-github</text><text class="terminal-1202620514-r5" x="122" y="1142.4" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-47)">│</text><text class="terminal-1202620514-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1202620514-line-47)">-</text><text class="terminal-1202620514-r5" x="36.6" y="1166.8" textLength="61" clip-path="url(#terminal-1202620514-line-47)">-help</text><text class="terminal-1202620514-r6" x="280.6" y="1166.8" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1202620514-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-1202620514-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1202620514-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-1202620514-line-48)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/pre_commit/pre_commit_check_init_in_tests.py b/scripts/ci/pre_commit/pre_commit_check_init_in_tests.py
new file mode 100755
index 0000000000..947f284e16
--- /dev/null
+++ b/scripts/ci/pre_commit/pre_commit_check_init_in_tests.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# 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.
+import os
+import pathlib
+import sys
+from pathlib import Path
+from typing import List
+
+from rich.console import Console
+
+if __name__ not in ("__main__", "__mp_main__"):
+    raise SystemExit(
+        "This file is intended to be executed as an executable program. You cannot use it as a module."
+        f"To execute this script, run ./{__file__} [FILE] ..."
+    )
+
+ROOT_DIR = pathlib.Path(__file__).resolve().parents[3]
+
+
+console = Console(color_system="standard", width=200)
+
+errors: List[str] = []
+
+added = False
+
+if __name__ == '__main__':
+    for dir, sub_dirs, files in os.walk(str(ROOT_DIR / "tests")):
+        for sub_dir in sub_dirs:
+            dir_to_check = dir + os.sep + sub_dir
+            init_py_path = Path(dir_to_check) / "__init__.py"
+            if not init_py_path.exists() and "/test_logs/" not in str(init_py_path):
+                init_py_path.touch()
+                console.print(f"[yellow] Created {init_py_path}[/]")
+                added = True
+    sys.exit(1 if added else 0)
diff --git a/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py b/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py
index 6097ac2251..28d2bbc7c9 100755
--- a/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py
+++ b/scripts/ci/pre_commit/pre_commit_check_setup_extra_packages_ref.py
@@ -59,7 +59,7 @@ def get_extras_from_setup() -> Set[str]:
 
 def get_extras_from_docs() -> Set[str]:
     """
-    Returns a list of extras from docs.
+    Returns a list of extras from airflow.docs.
     """
     docs_content = get_file_content(DOCS_FILE)
     extras_section_regex = re.compile(
@@ -86,7 +86,7 @@ def get_preinstalled_providers_from_docs() -> List[str]:
 
 def get_deprecated_extras_from_docs() -> Dict[str, str]:
     """
-    Returns dict of deprecated extras from docs (alias -> target extra)
+    Returns dict of deprecated extras from airflow.docs (alias -> target extra)
     """
     deprecated_extras = {}
     docs_content = get_file_content(DOCS_FILE)
diff --git a/scripts/ci/pre_commit/pre_commit_check_system_tests_hidden_in_index.py b/scripts/ci/pre_commit/pre_commit_check_system_tests_hidden_in_index.py
new file mode 100755
index 0000000000..72f8b4fe78
--- /dev/null
+++ b/scripts/ci/pre_commit/pre_commit_check_system_tests_hidden_in_index.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+# 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.
+import sys
+from pathlib import Path
+
+from rich.console import Console
+
+if __name__ not in ("__main__", "__mp_main__"):
+    raise SystemExit(
+        "This file is intended to be executed as an executable program. You cannot use it as a module."
+        f"To run this script, run the ./{__file__} command [FILE] ..."
+    )
+
+
+console = Console(color_system="standard", width=200)
+
+AIRFLOW_SOURCES_ROOT = Path(__file__).parents[3].resolve()
+DOCS_ROOT = AIRFLOW_SOURCES_ROOT / "docs"
+
+PREFIX = "apache-airflow-providers-"
+
+
+errors = []
+
+
+def check_system_test_entry_hidden(provider_index: Path):
+    console.print(f"[bright_blue]Checking {provider_index}")
+    provider_folder = provider_index.parent.name
+    if not provider_folder.startswith(PREFIX):
+        console.print(f"[red]Bad provider index passed: {provider_index}")
+        errors.append(provider_index)
+    provider_path = provider_folder[len(PREFIX) :].replace("-", "/")
+    expected_text = f"""
+.. toctree::
+    :hidden:
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/{provider_path}/index>
+"""
+    index_text = provider_index.read_text()
+    system_tests_path = AIRFLOW_SOURCES_ROOT / "tests" / "system" / "providers" / provider_path
+    if system_tests_path.exists():
+        if expected_text not in index_text:
+            console.print(f"[red]The {provider_index} does not contain System Tests TOC.\n")
+            console.print(f"[yellow]Make sure to add those lines to {provider_index}:\n")
+            console.print(expected_text, markup=False)
+            errors.append(provider_index)
+        else:
+            console.print(f"[green]All ok. The {provider_index} contains hidden index.\n")
+    else:
+        console.print(f"[yellow]All ok. The {provider_index} does not contain system tests.\n")
+
+
+if __name__ == '__main__':
+    for file in sys.argv[1:]:
+        check_system_test_entry_hidden(Path(file))
+    sys.exit(0 if len(errors) == 0 else 1)
diff --git a/scripts/in_container/run_docs_build.sh b/scripts/in_container/run_docs_build.sh
index b96be02304..85e7c85daf 100755
--- a/scripts/in_container/run_docs_build.sh
+++ b/scripts/in_container/run_docs_build.sh
@@ -18,7 +18,8 @@
 # shellcheck source=scripts/in_container/_in_container_script_init.sh
 . "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
 
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
+cd "${AIRFLOW_SOURCES}" || exit 1
+python -m docs.build_docs "${@}"
 
 
 if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
diff --git a/setup.cfg b/setup.cfg
index 8d996337eb..1512a6201c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -229,7 +229,7 @@ no_implicit_optional = False
 line_length=110
 combine_as_imports = true
 default_section = THIRDPARTY
-known_first_party=airflow,airflow_breeze,tests
+known_first_party=airflow,airflow_breeze,tests,docs
 # Need to be consistent with the exclude config defined in pre-commit-config.yaml
 skip=build,.tox,venv
 profile = black
diff --git a/scripts/in_container/run_docs_build.sh b/tests/config_templates/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/config_templates/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/config_templates/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/core/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/core/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/core/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/dags/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/dags/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/dags/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/dags/subdir1/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/dags/subdir1/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/dags/subdir1/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/dags/subdir2/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/dags/subdir2/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/dags/subdir2/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/dags/subdir2/subdir3/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/dags/subdir2/subdir3/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/dags/subdir2/subdir3/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/dags_corrupted/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/dags_corrupted/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/dags_corrupted/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/dags_with_system_exit/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/dags_with_system_exit/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/dags_with_system_exit/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/executors/kubernetes_executor_template_files/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/executors/kubernetes_executor_template_files/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/executors/kubernetes_executor_template_files/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/jobs/test_scheduler_job.py b/tests/jobs/test_scheduler_job.py
index 29642e493b..6f50b1c759 100644
--- a/tests/jobs/test_scheduler_job.py
+++ b/tests/jobs/test_scheduler_job.py
@@ -2665,6 +2665,7 @@ class TestSchedulerJob:
             'test_ignore_this.py',
             'test_invalid_param.py',
             'test_nested_dag.py',
+            '__init__.py',
         }
         for root, _, files in os.walk(TEST_DAG_FOLDER):
             for file_name in files:
diff --git a/scripts/in_container/run_docs_build.sh b/tests/secrets/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/secrets/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/secrets/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/README.md b/tests/system/README.md
index 912bfc248c..c1452bfe6e 100644
--- a/tests/system/README.md
+++ b/tests/system/README.md
@@ -67,7 +67,7 @@ example of command:
 
 ```commandline
 # pytest --system [provider_name] [path_to_test(s)]
-pytest --system google tests/system/providers/google/bigquery/example_bigquery_queries.py
+pytest --system google tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
 ```
 
 You can specify several `--system` flags if you want to execute tests for several providers:
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/amazon/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/amazon/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/amazon/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/amazon/aws/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/amazon/aws/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/amazon/aws/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/apache/kylin/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/apache/kylin/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/apache/kylin/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/cncf/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/cncf/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/cncf/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/elasticsearch/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/elasticsearch/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/elasticsearch/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/github/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/github/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/github/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/providers/google/README.md b/tests/system/providers/google/README.md
index 35d07c8e1e..da8709cb90 100644
--- a/tests/system/providers/google/README.md
+++ b/tests/system/providers/google/README.md
@@ -23,7 +23,7 @@
 
 All Google-related system tests are located inside this subdirectory of system tests which is
 `tests/system/providers/google/`. They are grouped in directories by the related service name, e.g. all BigQuery
-tests are stored inside `tests/system/providers/google/bigquery/` directory. In each directory you will find test files
+tests are stored inside `tests/system/providers/google/cloud/bigquery/` directory. In each directory you will find test files
 as self-contained DAGs (one DAG per file). Each test may require some additional resources which should be placed in
 `resources` directory found on the same level as tests. Each test file should start with prefix `example_*`. If there
 is anything more needed for the test to be executed, it should be documented in the docstrings.
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/azure/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/azure/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/azure/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/bigquery/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/bigquery/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/bigquery/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/providers/google/bigquery/example_bigquery_dataset.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_dataset.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_dataset.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_dataset.py
diff --git a/tests/system/providers/google/bigquery/example_bigquery_operations.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_operations.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_operations.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_operations.py
diff --git a/tests/system/providers/google/bigquery/example_bigquery_operations_location.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_operations_location.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_operations_location.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_operations_location.py
diff --git a/tests/system/providers/google/bigquery/example_bigquery_queries.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_queries.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_queries.py
diff --git a/tests/system/providers/google/bigquery/example_bigquery_sensors.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_sensors.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_sensors.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_sensors.py
diff --git a/tests/system/providers/google/bigquery/example_bigquery_tables.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_tables.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_tables.py
diff --git a/tests/system/providers/google/bigquery/example_bigquery_to_bigquery.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_to_bigquery.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_to_bigquery.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_to_bigquery.py
diff --git a/tests/system/providers/google/bigquery/example_bigquery_to_gcs.py b/tests/system/providers/google/cloud/bigquery/example_bigquery_to_gcs.py
similarity index 100%
rename from tests/system/providers/google/bigquery/example_bigquery_to_gcs.py
rename to tests/system/providers/google/cloud/bigquery/example_bigquery_to_gcs.py
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/bigquery/resources/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/bigquery/resources/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/bigquery/resources/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/providers/google/bigquery/resources/example_bigquery_query.sql b/tests/system/providers/google/cloud/bigquery/resources/example_bigquery_query.sql
similarity index 100%
rename from tests/system/providers/google/bigquery/resources/example_bigquery_query.sql
rename to tests/system/providers/google/cloud/bigquery/resources/example_bigquery_query.sql
diff --git a/tests/system/providers/google/bigquery/resources/update_table_schema.json b/tests/system/providers/google/cloud/bigquery/resources/update_table_schema.json
similarity index 100%
rename from tests/system/providers/google/bigquery/resources/update_table_schema.json
rename to tests/system/providers/google/cloud/bigquery/resources/update_table_schema.json
diff --git a/tests/system/providers/google/bigquery/resources/us-states.csv b/tests/system/providers/google/cloud/bigquery/resources/us-states.csv
similarity index 100%
rename from tests/system/providers/google/bigquery/resources/us-states.csv
rename to tests/system/providers/google/cloud/bigquery/resources/us-states.csv
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/cloud_sql/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/cloud_sql/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/cloud_sql/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/dataproc/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/dataproc/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/dataproc/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/providers/google/dataproc/example_dataproc_gke.py b/tests/system/providers/google/cloud/dataproc/example_dataproc_gke.py
similarity index 100%
rename from tests/system/providers/google/dataproc/example_dataproc_gke.py
rename to tests/system/providers/google/cloud/dataproc/example_dataproc_gke.py
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/dataproc/resources/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/dataproc/resources/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/dataproc/resources/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/datastore/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/datastore/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/datastore/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/providers/google/datastore/example_datastore_commit.py b/tests/system/providers/google/cloud/datastore/example_datastore_commit.py
similarity index 100%
rename from tests/system/providers/google/datastore/example_datastore_commit.py
rename to tests/system/providers/google/cloud/datastore/example_datastore_commit.py
diff --git a/tests/system/providers/google/datastore/example_datastore_export_import.py b/tests/system/providers/google/cloud/datastore/example_datastore_export_import.py
similarity index 100%
rename from tests/system/providers/google/datastore/example_datastore_export_import.py
rename to tests/system/providers/google/cloud/datastore/example_datastore_export_import.py
diff --git a/tests/system/providers/google/datastore/example_datastore_query.py b/tests/system/providers/google/cloud/datastore/example_datastore_query.py
similarity index 100%
rename from tests/system/providers/google/datastore/example_datastore_query.py
rename to tests/system/providers/google/cloud/datastore/example_datastore_query.py
diff --git a/tests/system/providers/google/datastore/example_datastore_rollback.py b/tests/system/providers/google/cloud/datastore/example_datastore_rollback.py
similarity index 100%
rename from tests/system/providers/google/datastore/example_datastore_rollback.py
rename to tests/system/providers/google/cloud/datastore/example_datastore_rollback.py
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/gcs/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/gcs/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/gcs/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/providers/google/gcs/example_gcs_to_bigquery.py b/tests/system/providers/google/cloud/gcs/example_gcs_to_bigquery.py
similarity index 100%
rename from tests/system/providers/google/gcs/example_gcs_to_bigquery.py
rename to tests/system/providers/google/cloud/gcs/example_gcs_to_bigquery.py
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/gcs/resources/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/gcs/resources/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/gcs/resources/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/kubernetes_engine/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/kubernetes_engine/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/kubernetes_engine/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/tests/system/providers/google/kubernetes_engine/example_kubernetes_engine.py b/tests/system/providers/google/cloud/kubernetes_engine/example_kubernetes_engine.py
similarity index 100%
rename from tests/system/providers/google/kubernetes_engine/example_kubernetes_engine.py
rename to tests/system/providers/google/cloud/kubernetes_engine/example_kubernetes_engine.py
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/spanner/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/spanner/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/spanner/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/speech_to_text/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/speech_to_text/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/speech_to_text/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/stackdriver/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/stackdriver/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/stackdriver/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/tasks/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/tasks/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/tasks/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/text_to_speech/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/text_to_speech/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/text_to_speech/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/cloud/workflows/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/cloud/workflows/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/cloud/workflows/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/google/workplace/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/google/workplace/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/google/workplace/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/system/providers/presto/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/system/providers/presto/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/system/providers/presto/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/test_utils/operators/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/test_utils/operators/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/test_utils/operators/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/test_utils/perf/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/test_utils/perf/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/test_utils/perf/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/test_utils/perf/dags/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/test_utils/perf/dags/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/test_utils/perf/dags/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/testconfig/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/testconfig/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/testconfig/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/testconfig/conf/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/testconfig/conf/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/testconfig/conf/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/triggers/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/triggers/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/triggers/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/www/test_logs/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/www/test_logs/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/www/test_logs/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi
diff --git a/scripts/in_container/run_docs_build.sh b/tests/www/views/__init__.py
old mode 100755
new mode 100644
similarity index 64%
copy from scripts/in_container/run_docs_build.sh
copy to tests/www/views/__init__.py
index b96be02304..13a83393a9
--- a/scripts/in_container/run_docs_build.sh
+++ b/tests/www/views/__init__.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 # 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
@@ -15,13 +14,3 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-# shellcheck source=scripts/in_container/_in_container_script_init.sh
-. "$( dirname "${BASH_SOURCE[0]}" )/_in_container_script_init.sh"
-
-sudo -E "${AIRFLOW_SOURCES}/docs/build_docs.py" "${@}"
-
-
-if [[ ( ${CI:="false"} == "true" || ${CI} == "True" ) && -d "${AIRFLOW_SOURCES}/docs/_build/docs/" ]]; then
-    rm -rf "/files/documentation"
-    cp -r "${AIRFLOW_SOURCES}/docs/_build" "/files/documentation"
-fi


[airflow] 06/39: Remove warnings when starting breeze (#24183)

Posted by po...@apache.org.
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 86c4540dedef05f0fd751f79feac5efd86cfbec3
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sun Jun 5 11:51:04 2022 +0200

    Remove warnings when starting breeze (#24183)
    
    Breeze when started produced three warnings that were harmless,
    but we should fix them to remove "false positives".
    
    (cherry picked from commit ac8a790ab9dabfa747964b65aa9b93451b735ede)
---
 dev/breeze/src/airflow_breeze/breeze.py              |  6 +++++-
 .../airflow_breeze/commands/developer_commands.py    |  3 ++-
 .../src/airflow_breeze/commands/main_command.py      |  2 --
 .../src/airflow_breeze/params/build_ci_params.py     |  1 +
 .../src/airflow_breeze/params/build_prod_params.py   |  3 ++-
 dev/breeze/src/airflow_breeze/params/shell_params.py |  5 +++++
 .../src/airflow_breeze/utils/docker_command_utils.py | 16 ++++------------
 dev/breeze/src/airflow_breeze/utils/path_utils.py    | 14 ++++++++++++++
 scripts/ci/docker-compose/local.yml                  |  7 +------
 .../breeze.py => scripts/ci/docker-compose/mypy.yml  | 20 +++++++++++---------
 scripts/ci/pre_commit/pre_commit_flake8.py           |  3 ++-
 .../ci/pre_commit/pre_commit_migration_reference.py  |  3 ++-
 scripts/ci/pre_commit/pre_commit_mypy.py             |  3 ++-
 scripts/ci/pre_commit/pre_commit_ui_lint.py          |  3 ++-
 scripts/ci/pre_commit/pre_commit_www_lint.py         |  3 ++-
 15 files changed, 55 insertions(+), 37 deletions(-)

diff --git a/dev/breeze/src/airflow_breeze/breeze.py b/dev/breeze/src/airflow_breeze/breeze.py
index a596c2be49..608619ae8e 100755
--- a/dev/breeze/src/airflow_breeze/breeze.py
+++ b/dev/breeze/src/airflow_breeze/breeze.py
@@ -17,9 +17,13 @@
 # under the License.
 from airflow_breeze.configure_rich_click import click  # isort: skip # noqa
 from airflow_breeze.commands.main_command import main
-from airflow_breeze.utils.path_utils import find_airflow_sources_root_to_operate_on
+from airflow_breeze.utils.path_utils import (
+    create_directories_and_files,
+    find_airflow_sources_root_to_operate_on,
+)
 
 find_airflow_sources_root_to_operate_on()
+create_directories_and_files()
 
 if __name__ == '__main__':
     main()
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 1719bab5fc..e10e79d0a8 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -524,7 +524,7 @@ def stop(verbose: bool, dry_run: bool, preserve_volumes: bool):
     command_to_execute = ['docker-compose', 'down', "--remove-orphans"]
     if not preserve_volumes:
         command_to_execute.append("--volumes")
-    shell_params = ShellParams(verbose=verbose, backend="all")
+    shell_params = ShellParams(verbose=verbose, backend="all", include_mypy_volume=True)
     env_variables = get_env_variables_for_docker_commands(shell_params)
     run_command(command_to_execute, verbose=verbose, dry_run=dry_run, env=env_variables)
 
@@ -579,6 +579,7 @@ def enter_shell(**kwargs) -> RunCommandResult:
     if read_from_cache_file('suppress_cheatsheet') is None:
         get_console().print(CHEATSHEET, style=CHEATSHEET_STYLE)
     enter_shell_params = ShellParams(**filter_out_none(**kwargs))
+    enter_shell_params.include_mypy_volume = True
     rebuild_ci_image_if_needed(build_params=enter_shell_params, dry_run=dry_run, verbose=verbose)
     return run_shell(verbose, dry_run, enter_shell_params)
 
diff --git a/dev/breeze/src/airflow_breeze/commands/main_command.py b/dev/breeze/src/airflow_breeze/commands/main_command.py
index 8ed451b0e5..c62101a44f 100644
--- a/dev/breeze/src/airflow_breeze/commands/main_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/main_command.py
@@ -37,7 +37,6 @@ from airflow_breeze.utils.common_options import (
     option_use_packages_from_dist,
     option_verbose,
 )
-from airflow_breeze.utils.path_utils import create_directories_and_files
 
 
 @click.group(invoke_without_command=True, context_settings={'help_option_names': ['-h', '--help']})
@@ -64,6 +63,5 @@ from airflow_breeze.utils.path_utils import create_directories_and_files
 def main(ctx: click.Context, **kwargs):
     from airflow_breeze.commands.developer_commands import shell
 
-    create_directories_and_files()
     if not ctx.invoked_subcommand:
         ctx.forward(shell, extra_args={})
diff --git a/dev/breeze/src/airflow_breeze/params/build_ci_params.py b/dev/breeze/src/airflow_breeze/params/build_ci_params.py
index aa9681fc95..52c242b65a 100644
--- a/dev/breeze/src/airflow_breeze/params/build_ci_params.py
+++ b/dev/breeze/src/airflow_breeze/params/build_ci_params.py
@@ -31,6 +31,7 @@ class BuildCiParams(CommonBuildParams):
     """
 
     airflow_constraints_mode: str = "constraints-source-providers"
+    default_constraints_branch: str = DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
     airflow_constraints_reference: str = DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
     airflow_extras: str = "devel_ci"
     airflow_pre_cached_pip_packages: bool = True
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 e81a5d6739..c37569f85f 100644
--- a/dev/breeze/src/airflow_breeze/params/build_prod_params.py
+++ b/dev/breeze/src/airflow_breeze/params/build_prod_params.py
@@ -21,7 +21,7 @@ import sys
 from dataclasses import dataclass
 from typing import List
 
-from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
+from airflow_breeze.branch_defaults import AIRFLOW_BRANCH, DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
 from airflow_breeze.global_constants import (
     AIRFLOW_SOURCES_FROM,
     AIRFLOW_SOURCES_TO,
@@ -41,6 +41,7 @@ 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
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py b/dev/breeze/src/airflow_breeze/params/shell_params.py
index 58107b9e27..4ba4022651 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -48,6 +48,7 @@ class ShellParams:
     """
 
     airflow_branch: str = AIRFLOW_BRANCH
+    default_constraints_branch: str = DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
     airflow_constraints_reference: str = DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
     airflow_extras: str = ""
     answer: Optional[str] = None
@@ -64,6 +65,7 @@ class ShellParams:
     github_repository: str = "apache/airflow"
     github_token: str = os.environ.get('GITHUB_TOKEN', "")
     image_tag: str = "latest"
+    include_mypy_volume: bool = False
     install_airflow_version: str = ""
     install_providers_from_sources: bool = True
     integration: Tuple[str, ...] = ()
@@ -189,6 +191,7 @@ class ShellParams:
         local_all_sources_docker_compose_file = f"{str(SCRIPTS_CI_DIR)}/docker-compose/local-all-sources.yml"
         files_docker_compose_file = f"{str(SCRIPTS_CI_DIR)}/docker-compose/files.yml"
         remove_sources_docker_compose_file = f"{str(SCRIPTS_CI_DIR)}/docker-compose/remove-sources.yml"
+        mypy_docker_compose_file = f"{str(SCRIPTS_CI_DIR)}/docker-compose/mypy.yml"
         forward_credentials_docker_compose_file = (
             f"{str(SCRIPTS_CI_DIR)}/docker-compose/forward-credentials.yml"
         )
@@ -213,6 +216,8 @@ class ShellParams:
             compose_ci_file.append(forward_credentials_docker_compose_file)
         if self.use_airflow_version is not None:
             compose_ci_file.append(remove_sources_docker_compose_file)
+        if self.include_mypy_volume:
+            compose_ci_file.append(mypy_docker_compose_file)
         if "all" in self.integration:
             integrations = AVAILABLE_INTEGRATIONS
         else:
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 05bcc11d6c..1f30642edd 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -17,7 +17,6 @@
 """Various utils to prepare docker and docker compose commands."""
 import os
 import re
-import subprocess
 import sys
 from copy import deepcopy
 from random import randint
@@ -97,16 +96,6 @@ NECESSARY_HOST_VOLUMES = [
 ]
 
 
-def create_volume_if_missing(volume_name: str):
-    res_inspect = run_command(cmd=["docker", "inspect", volume_name], stdout=subprocess.DEVNULL, check=False)
-    if res_inspect.returncode != 0:
-        run_command(cmd=["docker", "volume", "create", volume_name], check=True)
-
-
-def create_static_check_volumes():
-    create_volume_if_missing("docker-compose_mypy-cache-volume")
-
-
 def get_extra_docker_flags(mount_sources: str) -> List[str]:
     """
     Returns extra docker flags based on the type of mounting we want to do for sources.
@@ -124,7 +113,7 @@ def get_extra_docker_flags(mount_sources: str) -> List[str]:
                     ["--mount", f'type=bind,src={AIRFLOW_SOURCES_ROOT / src},dst={dst}']
                 )
         extra_docker_flags.extend(
-            ['--mount', "type=volume,src=docker-compose_mypy-cache-volume,dst=/opt/airflow/.mypy_cache"]
+            ['--mount', "type=volume,src=mypy-cache-volume,dst=/opt/airflow/.mypy_cache"]
         )
     else:  # none
         extra_docker_flags.extend(
@@ -512,6 +501,7 @@ def update_expected_environment_variables(env: Dict[str, str]) -> None:
     :param env: environment variables to update with missing values if not set.
     """
     set_value_to_default_if_not_set(env, 'AIRFLOW_CONSTRAINTS_MODE', "constraints-source-providers")
+    set_value_to_default_if_not_set(env, 'AIRFLOW_CONSTRAINTS_REFERENCE', "constraints-source-providers")
     set_value_to_default_if_not_set(env, 'AIRFLOW_EXTRAS', "")
     set_value_to_default_if_not_set(env, 'ANSWER', "")
     set_value_to_default_if_not_set(env, 'BREEZE', "true")
@@ -557,7 +547,9 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
     "AIRFLOW_CI_IMAGE": "airflow_image_name",
     "AIRFLOW_CI_IMAGE_WITH_TAG": "airflow_image_name_with_tag",
     "AIRFLOW_EXTRAS": "airflow_extras",
+    "DEFAULT_CONSTRAINTS_BRANCH": "default-constraints-branch",
     "AIRFLOW_CONSTRAINTS_MODE": "airflow_constraints_mode",
+    "AIRFLOW_CONSTRAINTS_REFERENCE": "airflow_constraints_reference",
     "AIRFLOW_IMAGE_KUBERNETES": "airflow_image_kubernetes",
     "AIRFLOW_PROD_IMAGE": "airflow_image_name",
     "AIRFLOW_SOURCES": "airflow_sources",
diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index 759c3e09a7..e4e79d5520 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -19,6 +19,7 @@ Useful tools for various Paths used inside Airflow Sources.
 """
 import hashlib
 import os
+import subprocess
 import sys
 import tempfile
 from functools import lru_cache
@@ -249,6 +250,18 @@ OUTPUT_LOG = Path(CACHE_TMP_FILE_DIR.name, 'out.log')
 BREEZE_SOURCES_ROOT = AIRFLOW_SOURCES_ROOT / "dev" / "breeze"
 
 
+def create_volume_if_missing(volume_name: str):
+    from airflow_breeze.utils.run_utils import run_command
+
+    res_inspect = run_command(cmd=["docker", "inspect", volume_name], stdout=subprocess.DEVNULL, check=False)
+    if res_inspect.returncode != 0:
+        run_command(cmd=["docker", "volume", "create", volume_name], check=True)
+
+
+def create_static_check_volumes():
+    create_volume_if_missing("mypy-cache-volume")
+
+
 def create_directories_and_files() -> None:
     """
     Creates all directories and files that are needed for Breeze to work via docker-compose.
@@ -264,3 +277,4 @@ def create_directories_and_files() -> None:
     (AIRFLOW_SOURCES_ROOT / ".bash_aliases").touch()
     (AIRFLOW_SOURCES_ROOT / ".bash_history").touch()
     (AIRFLOW_SOURCES_ROOT / ".inputrc").touch()
+    create_static_check_volumes()
diff --git a/scripts/ci/docker-compose/local.yml b/scripts/ci/docker-compose/local.yml
index e356cb8736..9e63ffa467 100644
--- a/scripts/ci/docker-compose/local.yml
+++ b/scripts/ci/docker-compose/local.yml
@@ -26,10 +26,7 @@ services:
     # or those that might be useful to see in the host as output of the
     # tests (such as logs)
     volumes:
-      - type: volume
-        source: mypy-cache-volume
-        target: /opt/airflow/.mypy_cache/
-        # START automatically generated volumes from NECESSARY_HOST_VOLUMES in docker_command_utils.py
+      # START automatically generated volumes from NECESSARY_HOST_VOLUMES in docker_command_utils.py
       - type: bind
         source: ../../../.bash_aliases
         target: /root/.bash_aliases
@@ -121,5 +118,3 @@ services:
         source: ../../../metastore_browser
         target: /opt/airflow/metastore_browser
         # END automatically generated volumes from NECESSARY_HOST_VOLUMES in docker_command_utils.py
-volumes:
-  mypy-cache-volume:
diff --git a/dev/breeze/src/airflow_breeze/breeze.py b/scripts/ci/docker-compose/mypy.yml
old mode 100755
new mode 100644
similarity index 71%
copy from dev/breeze/src/airflow_breeze/breeze.py
copy to scripts/ci/docker-compose/mypy.yml
index a596c2be49..7287738690
--- a/dev/breeze/src/airflow_breeze/breeze.py
+++ b/scripts/ci/docker-compose/mypy.yml
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
 # 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
@@ -15,11 +14,14 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-from airflow_breeze.configure_rich_click import click  # isort: skip # noqa
-from airflow_breeze.commands.main_command import main
-from airflow_breeze.utils.path_utils import find_airflow_sources_root_to_operate_on
-
-find_airflow_sources_root_to_operate_on()
-
-if __name__ == '__main__':
-    main()
+---
+version: "3.7"
+services:
+  airflow:
+    volumes:
+      - type: volume
+        source: mypy-cache-volume
+        target: /opt/airflow/.mypy_cache/
+volumes:
+  mypy-cache-volume:
+    external: true
diff --git a/scripts/ci/pre_commit/pre_commit_flake8.py b/scripts/ci/pre_commit/pre_commit_flake8.py
index 59bd356d24..22b0997893 100755
--- a/scripts/ci/pre_commit/pre_commit_flake8.py
+++ b/scripts/ci/pre_commit/pre_commit_flake8.py
@@ -34,7 +34,8 @@ DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
 if __name__ == '__main__':
     sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
     from airflow_breeze.global_constants import MOUNT_SELECTED
-    from airflow_breeze.utils.docker_command_utils import create_static_check_volumes, get_extra_docker_flags
+    from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
+    from airflow_breeze.utils.path_utils import create_static_check_volumes
     from airflow_breeze.utils.run_utils import get_runnable_ci_image, run_command
 
     airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
diff --git a/scripts/ci/pre_commit/pre_commit_migration_reference.py b/scripts/ci/pre_commit/pre_commit_migration_reference.py
index 154a795f3e..25ac796fdf 100755
--- a/scripts/ci/pre_commit/pre_commit_migration_reference.py
+++ b/scripts/ci/pre_commit/pre_commit_migration_reference.py
@@ -34,7 +34,8 @@ DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
 if __name__ == '__main__':
     sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
     from airflow_breeze.global_constants import MOUNT_SELECTED
-    from airflow_breeze.utils.docker_command_utils import create_static_check_volumes, get_extra_docker_flags
+    from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
+    from airflow_breeze.utils.path_utils import create_static_check_volumes
     from airflow_breeze.utils.run_utils import get_runnable_ci_image, run_command
 
     airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
diff --git a/scripts/ci/pre_commit/pre_commit_mypy.py b/scripts/ci/pre_commit/pre_commit_mypy.py
index 74d511a65b..965bed9a74 100755
--- a/scripts/ci/pre_commit/pre_commit_mypy.py
+++ b/scripts/ci/pre_commit/pre_commit_mypy.py
@@ -35,7 +35,8 @@ DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
 if __name__ == '__main__':
     sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
     from airflow_breeze.global_constants import MOUNT_SELECTED
-    from airflow_breeze.utils.docker_command_utils import create_static_check_volumes, get_extra_docker_flags
+    from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
+    from airflow_breeze.utils.path_utils import create_static_check_volumes
     from airflow_breeze.utils.run_utils import get_runnable_ci_image, run_command
 
     airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
diff --git a/scripts/ci/pre_commit/pre_commit_ui_lint.py b/scripts/ci/pre_commit/pre_commit_ui_lint.py
index 7755e3d204..5812344a45 100755
--- a/scripts/ci/pre_commit/pre_commit_ui_lint.py
+++ b/scripts/ci/pre_commit/pre_commit_ui_lint.py
@@ -33,7 +33,8 @@ DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
 if __name__ == '__main__':
     sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
     from airflow_breeze.global_constants import MOUNT_SELECTED
-    from airflow_breeze.utils.docker_command_utils import create_static_check_volumes, get_extra_docker_flags
+    from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
+    from airflow_breeze.utils.path_utils import create_static_check_volumes
     from airflow_breeze.utils.run_utils import get_runnable_ci_image, run_command
 
     airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)
diff --git a/scripts/ci/pre_commit/pre_commit_www_lint.py b/scripts/ci/pre_commit/pre_commit_www_lint.py
index 65553c3d81..b22750c56d 100755
--- a/scripts/ci/pre_commit/pre_commit_www_lint.py
+++ b/scripts/ci/pre_commit/pre_commit_www_lint.py
@@ -34,7 +34,8 @@ DRY_RUN = os.environ.get('DRY_RUN', "false")[0].lower() == "t"
 if __name__ == '__main__':
     sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src"))
     from airflow_breeze.global_constants import MOUNT_SELECTED
-    from airflow_breeze.utils.docker_command_utils import create_static_check_volumes, get_extra_docker_flags
+    from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags
+    from airflow_breeze.utils.path_utils import create_static_check_volumes
     from airflow_breeze.utils.run_utils import get_runnable_ci_image, run_command
 
     airflow_image = get_runnable_ci_image(verbose=VERBOSE, dry_run=DRY_RUN)


[airflow] 22/39: Fix usage of `click.get_terminal_size()` (#24616)

Posted by po...@apache.org.
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 4e43f976a3a007c9d167352b726191478d91edcd
Author: Kaxil Naik <ka...@apache.org>
AuthorDate: Thu Jun 23 13:57:36 2022 +0100

    Fix usage of `click.get_terminal_size()` (#24616)
    
    We were ignoring mypy error instead of fixing it.
    
    click had removed `get_terminal_size` and recommend using `shutil.get_terminal_size`
    
    (cherry picked from commit 5f67cc0747ea661b703e4c44c77e7cd005cb9588)
---
 dev/send_email.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/dev/send_email.py b/dev/send_email.py
index 2d796eb800..1ec2199a9c 100755
--- a/dev/send_email.py
+++ b/dev/send_email.py
@@ -20,6 +20,7 @@
 # This tool is based on the Superset send_email script:
 # https://github.com/apache/incubator-superset/blob/master/RELEASING/send_email.py
 import os
+import shutil
 import smtplib
 import ssl
 import sys
@@ -83,7 +84,7 @@ def show_message(entity: str, message: str):
     """
     Show message on the Command Line
     """
-    width, _ = click.get_terminal_size()  # type: ignore[attr-defined]
+    width, _ = shutil.get_terminal_size()
     click.secho("-" * width, fg="blue")
     click.secho(f"{entity} Message:", fg="bright_red", bold=True)
     click.secho("-" * width, fg="blue")


[airflow] 27/39: Convert selective checks to Breeze Python (#24610)

Posted by po...@apache.org.
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 d52eeaf022033b3e8e38238342c466fd6d29999c
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 25 09:46:13 2022 +0200

    Convert selective checks to Breeze Python (#24610)
    
    Instead of bash-based, complex logic script to perform PR selective
    checks we now integrated the whole logic into Breeze Python code.
    
    It is now much simplified, when it comes to algorithm. We've
    implemented simple rule-based decision tree. The rules describing
    the decision tree are now are now much easier
    to reason about and they correspond one-to-one with the rules
    that are implemented in the code in rather straightforward way.
    
    The code is much simpler and diagnostics of the selective checks
    has also been vastly improved:
    
    * The rule engine displays status of applying each rule and
      explains (with yellow warning message what decision was made
      and why. Informative messages are printed showing the resulting
      output
    
    * List of files impacting the decision are also displayed
    
    * The names of "ci file group" and "test type" were aligned
    
    * Unit tests covering wide range of cases are added. Each test
      describes what is the case they demonstrate
    
    * `breeze selective-checks` command that is used in CI can also
      be used locally by just providing commit-ish reference of the
      commit to check. This way you can very easily debug problems and
      fix them
    
    Fixes: #19971
    (cherry picked from commit d7bd72f494e7debec11672eeddf2e6ba5ef75fac)
---
 .github/workflows/build-images.yml                 |  20 +-
 .github/workflows/ci.yml                           |  18 +-
 .github/workflows/codeql-analysis.yml              |  20 +-
 BREEZE.rst                                         |  36 +-
 SELECTIVE_CHECKS.md                                | 144 ----
 dev/breeze/README.md                               |   2 +-
 dev/breeze/SELECTIVE_CHECKS.md                     |  98 +++
 dev/breeze/setup.cfg                               |   1 +
 .../src/airflow_breeze/commands/ci_commands.py     | 237 +++++++
 .../configuration_and_maintenance_commands.py      |  64 +-
 .../commands/release_management_commands.py        |  35 -
 .../airflow_breeze/commands/testing_commands.py    |   4 +-
 .../src/airflow_breeze/configure_rich_click.py     |   5 +-
 dev/breeze/src/airflow_breeze/global_constants.py  |  75 +-
 .../src/airflow_breeze/utils/selective_checks.py   | 480 +++++++++++++
 dev/breeze/tests/test_selective_checks.py          | 464 +++++++++++++
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output-commands.svg                  | 380 +++++-----
 images/breeze/output-selective-check.svg           | 132 ++++
 images/breeze/output-tests.svg                     | 160 ++---
 scripts/ci/selective_ci_checks.sh                  | 768 ---------------------
 .../ci_run_single_airflow_test_in_docker.sh        |   6 +-
 22 files changed, 1814 insertions(+), 1337 deletions(-)

diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml
index 541c721659..e28a9d7619 100644
--- a/.github/workflows/build-images.yml
+++ b/.github/workflows/build-images.yml
@@ -109,18 +109,20 @@ jobs:
         with:
           persist-credentials: false
           submodules: recursive
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          # We do not have output from selective checks yet, so we need to hardcode python
+          python-version: 3.7
+          cache: 'pip'
+          cache-dependency-path: ./dev/breeze/setup*
+      - run: ./scripts/ci/install_breeze.sh
       - name: Selective checks
         id: selective-checks
         env:
-          PR_LABELS: ${{ steps.get-latest-pr-labels.outputs.pullRequestLabels }}
-        run: |
-          if [[ ${GITHUB_EVENT_NAME} == "pull_request_target" ]]; then
-            # Run selective checks
-            ./scripts/ci/selective_ci_checks.sh "${TARGET_COMMIT_SHA}"
-          else
-            # Run all checks
-            ./scripts/ci/selective_ci_checks.sh
-          fi
+          PR_LABELS: "$${{ steps.get-latest-pr-labels.outputs.pullRequestLabels }}"
+          COMMIT_REF: "${{ github.sha }}"
+        run: breeze selective-check
       - name: Compute dynamic outputs
         id: dynamic-outputs
         run: |
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 57b396f6ac..3606036f5a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -192,18 +192,20 @@ jobs:
           fetch-depth: 2
           persist-credentials: false
         if: github.event_name  == 'pull_request'
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          # We do not have output from selective checks yet, so we need to hardcode python
+          python-version: 3.7
+          cache: 'pip'
+          cache-dependency-path: ./dev/breeze/setup*
+      - run: ./scripts/ci/install_breeze.sh
       - name: Selective checks
         id: selective-checks
         env:
           PR_LABELS: "${{ steps.source-run-info.outputs.pullRequestLabels }}"
-        run: |
-          if [[ ${GITHUB_EVENT_NAME} == "pull_request" ]]; then
-            # Run selective checks
-            ./scripts/ci/selective_ci_checks.sh "${GITHUB_SHA}"
-          else
-            # Run all checks
-            ./scripts/ci/selective_ci_checks.sh
-          fi
+          COMMIT_REF: "${{ github.sha }}"
+        run: breeze selective-check
       # Avoid having to specify the runs-on logic every time. We use the custom
       # env var AIRFLOW_SELF_HOSTED_RUNNER set only on our runners, but never
       # on the public runners
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 6d6f4d0256..4e6c7c83f4 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -43,19 +43,19 @@ jobs:
         with:
           fetch-depth: 2
           persist-credentials: false
+      - name: "Setup python"
+        uses: actions/setup-python@v2
+        with:
+          # We do not have output from selective checks yet, so we need to hardcode python
+          python-version: 3.7
+          cache: 'pip'
+          cache-dependency-path: ./dev/breeze/setup*
+      - run: ./scripts/ci/install_breeze.sh
       - name: Selective checks
         id: selective-checks
         env:
-          EVENT_NAME: ${{ github.event_name }}
-          TARGET_COMMIT_SHA: ${{ github.sha }}
-        run: |
-          if [[ ${EVENT_NAME} == "pull_request" ]]; then
-            # Run selective checks
-            ./scripts/ci/selective_ci_checks.sh "${TARGET_COMMIT_SHA}"
-          else
-            # Run all checks
-            ./scripts/ci/selective_ci_checks.sh
-          fi
+          COMMIT_REF: "${{ github.sha }}"
+        run: breeze selective-check
 
   analyze:
     name: Analyze
diff --git a/BREEZE.rst b/BREEZE.rst
index 36b10759d3..78dfd74621 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -556,13 +556,17 @@ Configuration and maintenance
 * Cleanup breeze with ``breeze cleanup`` command
 * Self-upgrade breeze with ``breeze self-upgrade`` command
 * Setup autocomplete for Breeze with ``breeze setup-autocomplete`` command
-* Checking available resources for docker with ``breeze resource-check`` command
-* Freeing space needed to run CI tests with ``breeze free-space`` command
-* Fixing ownership of files in your repository with ``breeze fix-ownership`` command
 * Print Breeze version with ``breeze version`` command
 * Outputs hash of commands defined by ``breeze`` with ``command-hash-export`` (useful to avoid needless
   regeneration of Breeze images)
 
+CI tasks
+--------
+* Freeing space needed to run CI tests with ``breeze free-space`` command
+* Fixing ownership of files in your repository with ``breeze fix-ownership`` command
+* Checking available resources for docker with ``breeze resource-check`` command
+* Deciding which tests should be run with ``breeze selective-check`` command
+
 Release tasks
 -------------
 
@@ -1286,8 +1290,8 @@ command but it is very similar to current ``breeze`` command):
       </a>
     </div>
 
-Resource check
-==============
+Running resource check
+----------------------
 
 Breeze requires certain resources to be available - disk, memory, CPU. When you enter Breeze's shell,
 the resources are checked and information if there is enough resources is displayed. However you can
@@ -1301,7 +1305,7 @@ Those are all available flags of ``resource-check`` command:
 
 
 Freeing the space
-=================
+-----------------
 
 When our CI runs a job, it needs all memory and disk it can have. We have a Breeze command that frees
 the memory and disk space used. You can also use it clear space locally but it performs a few operations
@@ -1314,8 +1318,26 @@ Those are all available flags of ``free-space`` command:
   :alt: Breeze free-space
 
 
+Selective check
+---------------
+
+When our CI runs a job, it needs to decide which tests to run, whether to build images and how much the test
+should be run on multiple combinations of Python, Kubernetes, Backend versions. In order to optimize time
+needed to run the CI Builds. You can also use the tool to test what tests will be run when you provide
+a specific commit that Breeze should run the tests on.
+
+More details about the algorithm used to pick the right tests can be
+found in `Selective Checks <SELECTIVE_CHECKS.md>`_.
+
+Those are all available flags of ``selective-check`` command:
+
+.. image:: ./images/breeze/output-selective-check.svg
+  :width: 100%
+  :alt: Breeze selective-check
+
+
 Tracking backtracking issues for CI builds
-==========================================
+------------------------------------------
 
 When our CI runs a job, we automatically upgrade our dependencies in the ``main`` build. However, this might
 lead to conflicts and ``pip`` backtracking for a long time (possibly forever) for dependency resolution.
diff --git a/SELECTIVE_CHECKS.md b/SELECTIVE_CHECKS.md
deleted file mode 100644
index 3a92d9c817..0000000000
--- a/SELECTIVE_CHECKS.md
+++ /dev/null
@@ -1,144 +0,0 @@
-<!--
- 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.
- -->
-
-# Selective CI Checks
-
-In order to optimise our CI jobs, we've implemented optimisations to only run selected checks for some
-kind of changes. The logic implemented reflects the internal architecture of Airflow 2.0 packages
-and it helps to keep down both the usage of jobs in GitHub Actions as well as CI feedback time to
-contributors in case of simpler changes.
-
-We have the following test types (separated by packages in which they are):
-
-* Always - those are tests that should be always executed (always folder)
-* Core - for the core Airflow functionality (core folder)
-* API - Tests for the Airflow API (api and api_connexion folders)
-* CLI - Tests for the Airflow CLI (cli folder)
-* WWW - Tests for the Airflow webserver (www folder)
-* Providers - Tests for all Providers of Airflow (providers folder)
-* Other - all other tests (all other folders that are not part of any of the above)
-
-We also have several special kinds of tests that are not separated by packages but they are marked with
-pytest markers. They can be found in any of those packages and they can be selected by the appropriate
-pytest custom command line options. See `TESTING.rst <TESTING.rst>`_ for details but those are:
-
-* Integration - tests that require external integration images running in docker-compose
-* Quarantined - tests that are flaky and need to be fixed
-* Postgres - tests that require Postgres database. They are only run when backend is Postgres
-* MySQL - tests that require MySQL database. They are only run when backend is MySQL
-
-Even if the types are separated, In case they share the same backend version/python version, they are
-run sequentially in the same job, on the same CI machine. Each of them in a separate `docker run` command
-and with additional docker cleaning between the steps to not fall into the trap of exceeding resource
-usage in one big test run, but also not to increase the number of jobs per each Pull Request.
-
-The logic implemented for the changes works as follows:
-
-1) In case of direct push (so when PR gets merged) or scheduled run, we always run all tests and checks.
-   This is in order to make sure that the merge did not miss anything important. The remainder of the logic
-   is executed only in case of Pull Requests. We do not add providers tests in case DEFAULT_BRANCH is
-   different than main, because providers are only important in main branch and PRs to main branch.
-
-2) We retrieve which files have changed in the incoming Merge Commit (github.sha is a merge commit
-   automatically prepared by GitHub in case of Pull Request, so we can retrieve the list of changed
-   files from that commit directly).
-
-3) If any of the important, environment files changed (Dockerfile, ci scripts, setup.py, GitHub workflow
-   files), then we again run all tests and checks. Those are cases where the logic of the checks changed
-   or the environment for the checks changed so we want to make sure to check everything. We do not add
-   providers tests in case DEFAULT_BRANCH is different than main, because providers are only
-   important in main branch and PRs to main branch.
-
-4) If any of py files changed: we need to have CI image and run full static checks so we enable image building
-
-5) If any of docs changed: we need to have CI image so we enable image building
-
-6) If any of chart files changed, we need to run helm tests so we enable helm unit tests
-
-7) If any of API files changed, we need to run API tests so we enable them
-
-8) If any of the relevant source files that trigger the tests have changed at all. Those are airflow
-   sources, chart, tests and kubernetes_tests. If any of those files changed, we enable tests and we
-   enable image building, because the CI images are needed to run tests.
-
-9) Then we determine which types of the tests should be run. We count all the changed files in the
-   relevant airflow sources (airflow, chart, tests, kubernetes_tests) first and then we count how many
-   files changed in different packages:
-
-    * in any case tests in `Always` folder are run. Those are special tests that should be run any time
-       modifications to any Python code occurs. Example test of this type is verifying proper structure of
-       the project including proper naming of all files.
-    * if any of the Airflow API files changed we enable `API` test type
-    * if any of the Airflow CLI files changed we enable `CLI` test type and Kubernetes tests (the
-        K8S tests depend on CLI changes as helm chart uses CLI to run Airflow).
-    * if this is a main branch and if any of the Provider files changed we enable `Providers` test type
-    * if any of the WWW files changed we enable `WWW` test type
-    * if any of the Kubernetes files changed we enable `Kubernetes` test type
-    * Then we subtract count of all the `specific` above per-type changed files from the count of
-      all changed files. In case there are any files changed, then we assume that some unknown files
-      changed (likely from the core of airflow) and in this case we enable all test types above and the
-      Core test types - simply because we do not want to risk to miss anything.
-    * In all cases where tests are enabled we also add Integration and - depending on
-      the backend used = Postgres or MySQL types of tests.
-
-10) Quarantined tests are always run when tests are run - we need to run them often to observe how
-    often they fail so that we can decide to move them out of quarantine. Details about the
-    Quarantined tests are described in `TESTING.rst <TESTING.rst>`_
-
-11) There is a special case of static checks. In case the above logic determines that the CI image
-    needs to be built, we run long and more comprehensive version of static checks - including
-    Mypy, Flake8. And those tests are run on all files, no matter how many files changed.
-    In case the image is not built, we run only simpler set of changes - the longer static checks
-    that require CI image are skipped, and we only run the tests on the files that changed in the incoming
-    commit - unlike flake8/mypy, those static checks are per-file based and they should not miss any
-    important change.
-
-Similarly to selective tests we also run selective security scans. In Pull requests,
-the Python scan will only run when there is a python code change and JavaScript scan will only run if
-there is a JavaScript or `yarn.lock` file change. For main builds, all scans are always executed.
-
-The selective check algorithm is shown here:
-
-
-````mermaid
-flowchart TD
-A(PR arrives)-->B[Selective Check]
-B-->C{Direct push merge?}
-C-->|Yes| N[Enable images]
-N-->D(Run Full Test<br />+Quarantined<br />Run full static checks)
-C-->|No| E[Retrieve changed files]
-E-->F{Environment files changed?}
-F-->|Yes| N
-F-->|No| G{Docs changed}
-G-->|Yes| O[Enable images building]
-O-->I{Chart files changed?}
-G-->|No| I
-I-->|Yes| P[Enable helm tests]
-P-->J{API files changed}
-I-->|No| J
-J-->|Yes| Q[Enable API tests]
-Q-->H{Sources changed?}
-J-->|No| H
-H-->|Yes| R[Enable Pytests]
-R-->K[Determine test type]
-K-->S{Core files changed}
-S-->|Yes| N
-S-->|No| M(Run selected test+<br />Integration, Quarantined<br />Full static checks)
-H-->|No| L[Skip running test<br />Run subset of static checks]
-```
diff --git a/dev/breeze/README.md b/dev/breeze/README.md
index 14a9f089a4..380eb402b8 100644
--- a/dev/breeze/README.md
+++ b/dev/breeze/README.md
@@ -52,6 +52,6 @@ PLEASE DO NOT MODIFY THE HASH BELOW! IT IS AUTOMATICALLY UPDATED BY PRE-COMMIT.
 
 ---------------------------------------------------------------------------------------------------------
 
-Package config hash: a80a853b2c32c284a68ccd6d468804b892a69f14d2ad1886bdaa892755cf6262660e2b9fc582bcae27ae478910055267a76edea2df658196198a0365150e93e5
+Package config hash: 7279229e03b197f2bbd10ebb7b313f67bba3a704735d3688652efc5bdc1b3a60f2d1e0a144c89a2ecd11268b06888c5302a8774a8f392dc383bb940c99521db3
 
 ---------------------------------------------------------------------------------------------------------
diff --git a/dev/breeze/SELECTIVE_CHECKS.md b/dev/breeze/SELECTIVE_CHECKS.md
new file mode 100644
index 0000000000..4504f8d9cd
--- /dev/null
+++ b/dev/breeze/SELECTIVE_CHECKS.md
@@ -0,0 +1,98 @@
+<!--
+ 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.
+ -->
+
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*
+
+- [Selective CI Checks](#selective-ci-checks)
+
+# Selective CI Checks
+
+In order to optimise our CI jobs, we've implemented optimisations to only run selected checks for some
+kind of changes. The logic implemented reflects the internal architecture of Airflow 2.0 packages,
+and it helps to keep down both the usage of jobs in GitHub Actions and CI feedback time to
+contributors in case of simpler changes.
+
+We have the following Groups of files for CI that determine which tests are run:
+
+* `Environment files` - if any of those changes, that forces 'run everything' mode, because changes there might
+  simply change the whole environment of what is going on in CI (Container image, dependencies)
+* `Python and Javascript production files` - this area is useful in CodeQL Security scanning - if any of
+  the python or javascript files for airflow "production" changed, this means that the security scans should run
+* `API tests and codegen files` - those are OpenAPI definition files that impact Open API specification and
+  determine that we should run dedicated API tests.
+* `Helm files` - change in those files impacts helm "rendering" tests
+* `Setup files` - change in the setup files indicates that we should run  `upgrade to newer dependencies`
+* `DOCs files` - change in those files indicate that we should run documentation builds
+* `UI and WWW files` - those are files for the UI and WWW part of our UI (useful to determine if UI
+  tests should run)
+* `Kubernetes files` - determine if any of Kubernetes related tests should be run
+* `All Python files` - if none of the Python file changed, that indicates that we should not run unit tests
+* `All source files` - if none of the sources change, that indicates that we should probably not build
+  an image and run any image-based static checks
+
+We have the following unit test types that can be selectively disabled/enabled based on the
+content of the incoming PR:
+
+* Always - those are tests that should be always executed (always folder)
+* Core - for the core Airflow functionality (core folder)
+* API - Tests for the Airflow API (api and api_connexion folders)
+* CLI - Tests for the Airflow CLI (cli folder)
+* WWW - Tests for the Airflow webserver (www folder)
+* Providers - Tests for all Providers of Airflow (providers folder)
+
+We also have several special kinds of tests that are not separated by packages, but they are marked with
+pytest markers. They can be found in any of those packages and they can be selected by the appropriate
+pytest custom command line options. See `TESTING.rst <TESTING.rst>`_ for details but those are:
+
+* Integration - tests that require external integration images running in docker-compose
+* Quarantined - tests that are flaky and need to be fixed
+* Postgres - tests that require Postgres database. They are only run when backend is Postgres
+* MySQL - tests that require MySQL database. They are only run when backend is MySQL
+
+Even if the types are separated, In case they share the same backend version/python version, they are
+run sequentially in the same job, on the same CI machine. Each of them in a separate `docker run` command
+and with additional docker cleaning between the steps to not fall into the trap of exceeding resource
+usage in one big test run, but also not to increase the number of jobs per each Pull Request.
+
+The logic implements the following rules:
+
+* `Full tests` mode is enabled when the event is PUSH, or SCHEDULE or when "full tests needed" label is set.
+  That enables all matrix combinations of variables, and all possible tests
+* Python, Kubernetes, Backend, Kind, Helm versions are limited to "defaults" only unless `Full tests` mode
+  is enabled.
+* If "Commit" to work on cannot be determined, or `Full Test` mode is enabled or some of the important
+  environment files (setup.py, setup.cfg, Dockerfile, build scripts) changed - all unit tests are
+  executed - this is `run everything` mode. No further checks are performed.
+* `Python scans`, `Javascript scans`, `API tests/codegen`, `UI`, `WWW`, `Kubernetes` tests and `DOC builds`
+  are enabled if any of the relevant files have been changed.
+* `Helm` tests are run only if relevant files have been changed and if current branch is `main`.
+* If no Source files are changed - no tests are run and no further rules below are checked.
+* `Image building` is enabled if either test are run, docs are build or kubernetes tests are run. All those
+  need `CI` or `PROD` images to be built.
+* The specific unit test type is enabled only if changed files match the expected patterns for each type
+  (`API`, `CLI`, `WWW`, `Providers`). The `Always` test type is added always if any unit tests are run.
+  `Providers` tests are removed if current branch is different than `main`
+* If there are no files left in sources after matching the test types and Kubernetes files,
+  then apparently some Core/Other files have been changed. This automatically adds all test
+  types to execute. This is done because changes in core might impact all the other test types.
+* if `Image building` is disabled, only basic pre-commits are enabled - no 'image-depending` pre-commits
+  are enabled.
+* If there are some setup files changed, `upgrade to newer dependencies` is enabled.
diff --git a/dev/breeze/setup.cfg b/dev/breeze/setup.cfg
index c974560561..7db0782695 100644
--- a/dev/breeze/setup.cfg
+++ b/dev/breeze/setup.cfg
@@ -53,6 +53,7 @@ package_dir=
     =src
 packages = find:
 install_requires =
+    cached_property>=1.5.0;python_version<="3.7"
     click
     inputimeout
     importlib-metadata>=4.4; python_version < "3.8"
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
new file mode 100644
index 0000000000..c8260698d7
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -0,0 +1,237 @@
+# 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.
+import sys
+from typing import Optional, Tuple
+
+import click
+
+from airflow_breeze.commands.main_command import main
+from airflow_breeze.global_constants import (
+    DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+    MOUNT_ALL,
+    GithubEvents,
+    github_events,
+)
+from airflow_breeze.params.shell_params import ShellParams
+from airflow_breeze.utils.common_options import (
+    option_airflow_constraints_reference,
+    option_answer,
+    option_dry_run,
+    option_github_repository,
+    option_max_age,
+    option_python,
+    option_timezone,
+    option_updated_on_or_after,
+    option_verbose,
+)
+from airflow_breeze.utils.confirm import Answer, user_confirm
+from airflow_breeze.utils.console import get_console
+from airflow_breeze.utils.custom_param_types import BetterChoice
+from airflow_breeze.utils.docker_command_utils import (
+    check_docker_resources,
+    get_env_variables_for_docker_commands,
+    get_extra_docker_flags,
+    perform_environment_checks,
+)
+from airflow_breeze.utils.find_newer_dependencies import find_newer_dependencies
+from airflow_breeze.utils.image import find_available_ci_image
+from airflow_breeze.utils.run_utils import run_command
+
+CI_COMMANDS = {
+    "name": "CI commands",
+    "commands": [
+        "fix-ownership",
+        "free-space",
+        "resource-check",
+        "selective-check",
+        "find-newer-dependencies",
+    ],
+}
+
+CI_PARAMETERS = {
+    "breeze selective-check": [
+        {
+            "name": "Selective check flags",
+            "options": [
+                "--commit-ref",
+                "--pr-labels",
+                "--default-branch",
+                "--github-event-name",
+            ],
+        }
+    ],
+    "breeze find-newer-dependencies": [
+        {
+            "name": "Find newer dependencies flags",
+            "options": [
+                "--python",
+                "--timezone",
+                "--constraints-branch",
+                "--updated-on-or-after",
+                "--max-age",
+            ],
+        }
+    ],
+}
+
+
+@main.command(name="free-space", help="Free space for jobs run in CI.")
+@option_verbose
+@option_dry_run
+@option_answer
+def free_space(verbose: bool, dry_run: bool, answer: str):
+    if user_confirm("Are you sure to run free-space and perform cleanup?") == Answer.YES:
+        run_command(["sudo", "swapoff", "-a"], verbose=verbose, dry_run=dry_run)
+        run_command(["sudo", "rm", "-f", "/swapfile"], verbose=verbose, dry_run=dry_run)
+        run_command(["sudo", "apt-get", "clean"], verbose=verbose, dry_run=dry_run, check=False)
+        run_command(
+            ["docker", "system", "prune", "--all", "--force", "--volumes"], verbose=verbose, dry_run=dry_run
+        )
+        run_command(["df", "-h"], verbose=verbose, dry_run=dry_run)
+        run_command(["docker", "logout", "ghcr.io"], verbose=verbose, dry_run=dry_run, check=False)
+
+
+@main.command(name="resource-check", help="Check if available docker resources are enough.")
+@option_verbose
+@option_dry_run
+def resource_check(verbose: bool, dry_run: bool):
+    perform_environment_checks(verbose=verbose)
+    shell_params = ShellParams(verbose=verbose, python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION)
+    check_docker_resources(shell_params.airflow_image_name, verbose=verbose, dry_run=dry_run)
+
+
+@main.command(name="fix-ownership", help="Fix ownership of source files to be same as host user.")
+@option_github_repository
+@option_verbose
+@option_dry_run
+def fix_ownership(github_repository: str, verbose: bool, dry_run: bool):
+    perform_environment_checks(verbose=verbose)
+    shell_params = find_available_ci_image(github_repository, dry_run, verbose)
+    extra_docker_flags = get_extra_docker_flags(MOUNT_ALL)
+    env = get_env_variables_for_docker_commands(shell_params)
+    cmd = [
+        "docker",
+        "run",
+        "-t",
+        *extra_docker_flags,
+        "--pull",
+        "never",
+        shell_params.airflow_image_name_with_tag,
+        "/opt/airflow/scripts/in_container/run_fix_ownership.sh",
+    ]
+    run_command(
+        cmd, verbose=verbose, dry_run=dry_run, text=True, env=env, check=False, enabled_output_group=True
+    )
+    # Always succeed
+    sys.exit(0)
+
+
+def get_changed_files(commit_ref: Optional[str], dry_run: bool, verbose: bool) -> Tuple[str, ...]:
+    if commit_ref is None:
+        return ()
+    cmd = [
+        "git",
+        "diff-tree",
+        "--no-commit-id",
+        "--name-only",
+        "-r",
+        commit_ref + "^",
+        commit_ref,
+    ]
+    result = run_command(cmd, dry_run=dry_run, verbose=verbose, check=False, capture_output=True, text=True)
+    if result.returncode != 0:
+        get_console().print(
+            f"[warning] Error when running diff-tree command [/]\n{result.stdout}\n{result.stderr}"
+        )
+        return ()
+    changed_files = tuple(result.stdout.splitlines()) if result.stdout else ()
+    get_console().print("\n[info]Changed files:[/]\n")
+    get_console().print(changed_files)
+    get_console().print()
+    return changed_files
+
+
+@main.command(name="selective-check", help="Checks what kind of tests should be run for an incoming commit.")
+@click.option(
+    '--commit-ref',
+    help="Commit-ish reference to the commit that should be checked",
+    envvar='COMMIT_REF',
+)
+@click.option(
+    '--pr-labels',
+    help="Space-separate list of labels which are valid for the PR",
+    default="",
+    envvar="PR_LABELS",
+)
+@click.option(
+    '--default-branch',
+    help="Branch against which the PR should be run",
+    default="main",
+    envvar="DEFAULT_BRANCH",
+    show_default=True,
+)
+@click.option(
+    '--github-event-name',
+    type=BetterChoice(github_events()),
+    default=github_events()[0],
+    help="Name of the GitHub event that triggered the check",
+    envvar="GITHUB_EVENT_NAME",
+    show_default=True,
+)
+@option_verbose
+@option_dry_run
+def selective_check(
+    commit_ref: Optional[str],
+    pr_labels: str,
+    default_branch: str,
+    github_event_name: str,
+    verbose: bool,
+    dry_run: bool,
+):
+    from airflow_breeze.utils.selective_checks import SelectiveChecks
+
+    github_event = GithubEvents(github_event_name)
+    if github_event == GithubEvents.PULL_REQUEST:
+        changed_files = get_changed_files(commit_ref=commit_ref, dry_run=dry_run, verbose=verbose)
+    else:
+        changed_files = ()
+    sc = SelectiveChecks(
+        commit_ref=commit_ref,
+        files=changed_files,
+        default_branch=default_branch,
+        pr_labels=tuple(" ".split(pr_labels)) if pr_labels else (),
+        github_event=github_event,
+    )
+    print(str(sc))
+
+
+@main.command(name="find-newer-dependencies", help="Finds which dependencies are being upgraded.")
+@option_timezone
+@option_airflow_constraints_reference
+@option_python
+@option_updated_on_or_after
+@option_max_age
+def breeze_find_newer_dependencies(
+    airflow_constraints_reference: str, python: str, timezone: str, updated_on_or_after: str, max_age: int
+):
+    return find_newer_dependencies(
+        constraints_branch=airflow_constraints_reference,
+        python=python,
+        timezone=timezone,
+        updated_on_or_after=updated_on_or_after,
+        max_age=max_age,
+    )
diff --git a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
index 490a43c5f5..546f52ba5a 100644
--- a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
@@ -28,8 +28,6 @@ from click import Context
 
 from airflow_breeze import NAME, VERSION
 from airflow_breeze.commands.main_command import main
-from airflow_breeze.global_constants import DEFAULT_PYTHON_MAJOR_MINOR_VERSION, MOUNT_ALL
-from airflow_breeze.params.shell_params import ShellParams
 from airflow_breeze.utils.cache import check_if_cache_exists, delete_cache, touch_cache_file
 from airflow_breeze.utils.common_options import (
     option_answer,
@@ -44,13 +42,7 @@ from airflow_breeze.utils.common_options import (
 )
 from airflow_breeze.utils.confirm import STANDARD_TIMEOUT, Answer, user_confirm
 from airflow_breeze.utils.console import get_console
-from airflow_breeze.utils.docker_command_utils import (
-    check_docker_resources,
-    get_env_variables_for_docker_commands,
-    get_extra_docker_flags,
-    perform_environment_checks,
-)
-from airflow_breeze.utils.image import find_available_ci_image
+from airflow_breeze.utils.docker_command_utils import perform_environment_checks
 from airflow_breeze.utils.path_utils import (
     AIRFLOW_SOURCES_ROOT,
     BUILD_CACHE_DIR,
@@ -72,9 +64,6 @@ CONFIGURATION_AND_MAINTENANCE_COMMANDS = {
         "self-upgrade",
         "setup-autocomplete",
         "config",
-        "resource-check",
-        "free-space",
-        "fix-ownership",
         "regenerate-command-images",
         "command-hash-export",
         "version",
@@ -395,31 +384,6 @@ def change_config(
     get_console().print()
 
 
-@main.command(name="free-space", help="Free space for jobs run in CI.")
-@option_verbose
-@option_dry_run
-@option_answer
-def free_space(verbose: bool, dry_run: bool, answer: str):
-    if user_confirm("Are you sure to run free-space and perform cleanup?") == Answer.YES:
-        run_command(["sudo", "swapoff", "-a"], verbose=verbose, dry_run=dry_run)
-        run_command(["sudo", "rm", "-f", "/swapfile"], verbose=verbose, dry_run=dry_run)
-        run_command(["sudo", "apt-get", "clean"], verbose=verbose, dry_run=dry_run, check=False)
-        run_command(
-            ["docker", "system", "prune", "--all", "--force", "--volumes"], verbose=verbose, dry_run=dry_run
-        )
-        run_command(["df", "-h"], verbose=verbose, dry_run=dry_run)
-        run_command(["docker", "logout", "ghcr.io"], verbose=verbose, dry_run=dry_run, check=False)
-
-
-@main.command(name="resource-check", help="Check if available docker resources are enough.")
-@option_verbose
-@option_dry_run
-def resource_check(verbose: bool, dry_run: bool):
-    perform_environment_checks(verbose=verbose)
-    shell_params = ShellParams(verbose=verbose, python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION)
-    check_docker_resources(shell_params.airflow_image_name, verbose=verbose, dry_run=dry_run)
-
-
 def dict_hash(dictionary: Dict[str, Any]) -> str:
     """MD5 hash of a dictionary. Sorted and dumped via json to account for random sequence)"""
     dhash = hashlib.md5()
@@ -443,32 +407,6 @@ def command_hash_export(verbose: bool, output: IO):
         output.write(dict_hash(the_context_dict) + "\n")
 
 
-@main.command(name="fix-ownership", help="Fix ownership of source files to be same as host user.")
-@option_github_repository
-@option_verbose
-@option_dry_run
-def fix_ownership(github_repository: str, verbose: bool, dry_run: bool):
-    perform_environment_checks(verbose=verbose)
-    shell_params = find_available_ci_image(github_repository, dry_run, verbose)
-    extra_docker_flags = get_extra_docker_flags(MOUNT_ALL)
-    env = get_env_variables_for_docker_commands(shell_params)
-    cmd = [
-        "docker",
-        "run",
-        "-t",
-        *extra_docker_flags,
-        "--pull",
-        "never",
-        shell_params.airflow_image_name_with_tag,
-        "/opt/airflow/scripts/in_container/run_fix_ownership.sh",
-    ]
-    run_command(
-        cmd, verbose=verbose, dry_run=dry_run, text=True, env=env, check=False, enabled_output_group=True
-    )
-    # Always succeed
-    sys.exit(0)
-
-
 def write_to_shell(command_to_execute: str, dry_run: bool, script_path: str, force_setup: bool) -> bool:
     skip_check = False
     script_path_file = Path(script_path)
diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index caf43d47a4..17bf70b3af 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -45,14 +45,11 @@ from airflow_breeze.utils.common_options import (
     option_github_repository,
     option_image_tag,
     option_installation_package_format,
-    option_max_age,
     option_package_format,
     option_parallelism,
     option_python,
     option_python_versions,
     option_run_in_parallel,
-    option_timezone,
-    option_updated_on_or_after,
     option_use_airflow_version,
     option_use_packages_from_dist,
     option_verbose,
@@ -66,7 +63,6 @@ from airflow_breeze.utils.docker_command_utils import (
     get_extra_docker_flags,
     perform_environment_checks,
 )
-from airflow_breeze.utils.find_newer_dependencies import find_newer_dependencies
 from airflow_breeze.utils.parallel import check_async_run_results
 from airflow_breeze.utils.python_versions import get_python_version_list
 from airflow_breeze.utils.run_utils import RunCommandResult, run_command
@@ -140,18 +136,6 @@ RELEASE_MANAGEMENT_PARAMETERS = {
             ],
         }
     ],
-    "breeze find-newer-dependencies": [
-        {
-            "name": "Find newer dependencies flags",
-            "options": [
-                "--python",
-                "--timezone",
-                "--constraints-branch",
-                "--updated-on-or-after",
-                "--max-age",
-            ],
-        }
-    ],
 }
 
 RELEASE_MANAGEMENT_COMMANDS = {
@@ -163,7 +147,6 @@ RELEASE_MANAGEMENT_COMMANDS = {
         "prepare-airflow-package",
         "release-prod-images",
         "generate-constraints",
-        "find-newer-dependencies",
     ],
 }
 
@@ -767,21 +750,3 @@ def release_prod_images(
                 verbose=verbose,
                 dry_run=dry_run,
             )
-
-
-@main.command(name="find-newer-dependencies", help="Finds which dependencies are being upgraded.")
-@option_timezone
-@option_airflow_constraints_reference
-@option_python
-@option_updated_on_or_after
-@option_max_age
-def breeze_find_newer_dependencies(
-    airflow_constraints_reference: str, python: str, timezone: str, updated_on_or_after: str, max_age: int
-):
-    return find_newer_dependencies(
-        constraints_branch=airflow_constraints_reference,
-        python=python,
-        timezone=timezone,
-        updated_on_or_after=updated_on_or_after,
-        max_age=max_age,
-    )
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 3946acd2ab..45df368afa 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -28,7 +28,7 @@ from typing import Dict, List, Optional, Tuple
 import click
 
 from airflow_breeze.commands.main_command import main
-from airflow_breeze.global_constants import ALLOWED_TEST_TYPES
+from airflow_breeze.global_constants import ALLOWED_TEST_TYPE_CHOICES
 from airflow_breeze.params.build_prod_params import BuildProdParams
 from airflow_breeze.params.shell_params import ShellParams
 from airflow_breeze.utils.ci_group import ci_group
@@ -249,7 +249,7 @@ def run_with_progress(
     "--test-type",
     help="Type of test to run.",
     default="All",
-    type=BetterChoice(ALLOWED_TEST_TYPES),
+    type=BetterChoice(ALLOWED_TEST_TYPE_CHOICES),
 )
 @option_db_reset
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
diff --git a/dev/breeze/src/airflow_breeze/configure_rich_click.py b/dev/breeze/src/airflow_breeze/configure_rich_click.py
index bc1963684a..8933d57dbe 100644
--- a/dev/breeze/src/airflow_breeze/configure_rich_click.py
+++ b/dev/breeze/src/airflow_breeze/configure_rich_click.py
@@ -14,14 +14,13 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-
-
 from airflow_breeze.utils import recording  # isort:skip # noqa
 
 try:
     # We handle ImportError so that click autocomplete works
     import rich_click as click
 
+    from airflow_breeze.commands.ci_commands import CI_COMMANDS, CI_PARAMETERS
     from airflow_breeze.commands.ci_image_commands import CI_IMAGE_TOOLS_COMMANDS, CI_IMAGE_TOOLS_PARAMETERS
     from airflow_breeze.commands.configuration_and_maintenance_commands import (
         CONFIGURATION_AND_MAINTENANCE_COMMANDS,
@@ -52,6 +51,7 @@ try:
         **CONFIGURATION_AND_MAINTENANCE_PARAMETERS,
         **CI_IMAGE_TOOLS_PARAMETERS,
         **PRODUCTION_IMAGE_TOOLS_PARAMETERS,
+        **CI_PARAMETERS,
         **RELEASE_MANAGEMENT_PARAMETERS,
     }
     click.rich_click.COMMAND_GROUPS = {
@@ -61,6 +61,7 @@ try:
             CONFIGURATION_AND_MAINTENANCE_COMMANDS,
             CI_IMAGE_TOOLS_COMMANDS,
             PRODUCTION_IMAGE_TOOLS_COMMANDS,
+            CI_COMMANDS,
             RELEASE_MANAGEMENT_COMMANDS,
         ]
     }
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 0b8b220987..41acd12e45 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -17,8 +17,11 @@
 """
 Global constants that are used by all other Breeze components.
 """
+from __future__ import annotations
+
 import os
-from typing import List
+from enum import Enum
+from functools import lru_cache
 
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
 
@@ -67,21 +70,36 @@ ALLOWED_MOUNT_OPTIONS = [MOUNT_SELECTED, MOUNT_ALL, MOUNT_SKIP, MOUNT_REMOVE]
 ALLOWED_POSTGRES_VERSIONS = ['10', '11', '12', '13', '14']
 ALLOWED_MYSQL_VERSIONS = ['5.7', '8']
 ALLOWED_MSSQL_VERSIONS = ['2017-latest', '2019-latest']
-ALLOWED_TEST_TYPES = [
-    'All',
-    'Always',
-    'Core',
-    'Providers',
-    'API',
-    'CLI',
-    'Integration',
-    'Other',
-    'WWW',
-    'Postgres',
-    'MySQL',
-    'Helm',
-    'Quarantined',
+
+
+@lru_cache(maxsize=None)
+def all_selective_test_types() -> tuple[str, ...]:
+    return tuple(sorted(e.value for e in SelectiveUnitTestTypes))
+
+
+class SelectiveUnitTestTypes(Enum):
+    ALWAYS = 'Always'
+    API = 'API'
+    CLI = 'CLI'
+    CORE = 'Core'
+    OTHER = 'Other'
+    INTEGRATION = 'Integration'
+    PROVIDERS = 'Providers'
+    WWW = 'WWW'
+
+
+ALLOWED_TEST_TYPE_CHOICES = [
+    "All",
+    "Always",
+    *all_selective_test_types(),
+    "Helm",
+    "Postgres",
+    "MySQL",
+    "Integration",
+    "Other",
+    "Quarantine",
 ]
+
 ALLOWED_PACKAGE_FORMATS = ['wheel', 'sdist', 'both']
 ALLOWED_INSTALLATION_PACKAGE_FORMATS = ['wheel', 'sdist']
 ALLOWED_INSTALLATION_METHODS = ['.', 'apache-airflow']
@@ -113,7 +131,7 @@ EXCLUDE_DOCS_PACKAGE_FOLDER = [
 ]
 
 
-def get_available_packages(short_version=False) -> List[str]:
+def get_available_packages(short_version=False) -> list[str]:
     docs_path_content = (AIRFLOW_SOURCES_ROOT / 'docs').glob('*/')
     available_packages = [x.name for x in docs_path_content if x.is_dir()]
     package_list = list(set(available_packages) - set(EXCLUDE_DOCS_PACKAGE_FOLDER))
@@ -145,8 +163,12 @@ PRODUCTION_IMAGE = False
 ALL_PYTHON_MAJOR_MINOR_VERSIONS = ['3.7', '3.8', '3.9', '3.10']
 CURRENT_PYTHON_MAJOR_MINOR_VERSIONS = ['3.7', '3.8', '3.9', '3.10']
 CURRENT_POSTGRES_VERSIONS = ['10', '11', '12', '13', '14']
+DEFAULT_POSTGRES_VERSION = CURRENT_POSTGRES_VERSIONS[0]
 CURRENT_MYSQL_VERSIONS = ['5.7', '8']
+DEFAULT_MYSQL_VERSION = CURRENT_MYSQL_VERSIONS[0]
 CURRENT_MSSQL_VERSIONS = ['2017-latest', '2019-latest']
+DEFAULT_MSSQL_VERSION = CURRENT_MSSQL_VERSIONS[0]
+
 DB_RESET = False
 START_AIRFLOW = "false"
 LOAD_EXAMPLES = False
@@ -217,10 +239,10 @@ CURRENT_KIND_VERSIONS = ['v0.14.0']
 CURRENT_HELM_VERSIONS = ['v3.6.3']
 CURRENT_EXECUTORS = ['KubernetesExecutor']
 
-DEFAULT_KUBERNETES_MODES = CURRENT_KUBERNETES_MODES[0]
-DEFAULT_KUBERNETES_VERSIONS = CURRENT_KUBERNETES_VERSIONS[0]
-DEFAULT_KIND_VERSIONS = CURRENT_KIND_VERSIONS[0]
-DEFAULT_HELM_VERSIONS = CURRENT_HELM_VERSIONS[0]
+DEFAULT_KUBERNETES_MODE = CURRENT_KUBERNETES_MODES[0]
+DEFAULT_KUBERNETES_VERSION = CURRENT_KUBERNETES_VERSIONS[0]
+DEFAULT_KIND_VERSION = CURRENT_KIND_VERSIONS[0]
+DEFAULT_HELM_VERSION = CURRENT_HELM_VERSIONS[0]
 DEFAULT_EXECUTOR = CURRENT_EXECUTORS[0]
 
 # Initialize image build variables - Have to check if this has to go to ci dataclass
@@ -268,3 +290,16 @@ DEFAULT_EXTRAS = [
     "virtualenv",
     # END OF EXTRAS LIST UPDATED BY PRE COMMIT
 ]
+
+
+class GithubEvents(Enum):
+    PULL_REQUEST = "pull_request"
+    PULL_REQUEST_REVIEW = "pull_request_review"
+    PULL_REQUEST_TARGET = "pull_request_target"
+    PUSH = "push"
+    SCHEDULE = "schedule"
+
+
+@lru_cache(maxsize=None)
+def github_events() -> list[str]:
+    return [e.value for e in GithubEvents]
diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
new file mode 100644
index 0000000000..22e74f4553
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
@@ -0,0 +1,480 @@
+# 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.
+
+from __future__ import annotations
+
+import sys
+from enum import Enum
+
+if sys.version_info >= (3, 8):
+    from functools import cached_property
+else:
+    from cached_property import cached_property
+
+from functools import lru_cache
+from re import match
+from typing import Any, Dict, List, TypeVar
+
+from airflow_breeze.global_constants import (
+    ALL_PYTHON_MAJOR_MINOR_VERSIONS,
+    CURRENT_HELM_VERSIONS,
+    CURRENT_KIND_VERSIONS,
+    CURRENT_KUBERNETES_MODES,
+    CURRENT_KUBERNETES_VERSIONS,
+    CURRENT_MSSQL_VERSIONS,
+    CURRENT_MYSQL_VERSIONS,
+    CURRENT_POSTGRES_VERSIONS,
+    CURRENT_PYTHON_MAJOR_MINOR_VERSIONS,
+    DEFAULT_HELM_VERSION,
+    DEFAULT_KIND_VERSION,
+    DEFAULT_KUBERNETES_MODE,
+    DEFAULT_KUBERNETES_VERSION,
+    DEFAULT_MSSQL_VERSION,
+    DEFAULT_MYSQL_VERSION,
+    DEFAULT_POSTGRES_VERSION,
+    DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+    GithubEvents,
+    SelectiveUnitTestTypes,
+    all_selective_test_types,
+)
+from airflow_breeze.utils.console import get_console
+
+FULL_TESTS_NEEDED_LABEL = "full tests needed"
+
+
+def get_ga_output(name: str, value: Any) -> str:
+    output_name = name.replace('_', '-')
+    printed_value = str(value).lower() if isinstance(value, bool) else value
+    get_console().print(f"[info]{output_name}[/] = [green]{printed_value}[/]")
+    return f"::set-output name={output_name}::{printed_value}"
+
+
+class FileGroupForCi(Enum):
+    ENVIRONMENT_FILES = "environment_files"
+    PYTHON_PRODUCTION_FILES = "python_scans"
+    JAVASCRIPT_PRODUCTION_FILES = "javascript_scans"
+    API_TEST_FILES = "api_test_files"
+    API_CODEGEN_FILES = "api_codegen_files"
+    HELM_FILES = "helm_files"
+    SETUP_FILES = "setup_files"
+    DOC_FILES = "doc_files"
+    UI_FILES = "ui_files"
+    WWW_FILES = "www_files"
+    KUBERNETES_FILES = "kubernetes_files"
+    ALL_PYTHON_FILES = "all_python_files"
+    ALL_SOURCE_FILES = "all_sources_for_tests"
+
+
+T = TypeVar('T', FileGroupForCi, SelectiveUnitTestTypes)
+
+
+class HashableDict(Dict[T, List[str]]):
+    def __hash__(self):
+        return hash(frozenset(self))
+
+
+CI_FILE_GROUP_MATCHES = HashableDict(
+    {
+        FileGroupForCi.ENVIRONMENT_FILES: [
+            r"^.github/workflows",
+            r"^dev/breeze",
+            r"^Dockerfile",
+            r"^scripts",
+            r"^setup.py",
+            r"^setup.cfg",
+        ],
+        FileGroupForCi.PYTHON_PRODUCTION_FILES: [
+            r"^airflow/.*\.py",
+            r"^setup.py",
+        ],
+        FileGroupForCi.JAVASCRIPT_PRODUCTION_FILES: [
+            r"^airflow/.*\.[jt]sx?",
+            r"^airflow/.*\.lock",
+        ],
+        FileGroupForCi.API_TEST_FILES: [
+            r"^airflow/api",
+        ],
+        FileGroupForCi.API_CODEGEN_FILES: [
+            "^airflow/api_connexion/openapi/v1.yaml",
+            "^clients/gen",
+        ],
+        FileGroupForCi.HELM_FILES: [
+            "^chart",
+        ],
+        FileGroupForCi.SETUP_FILES: [
+            r"^pyproject.toml",
+            r"^setup.cfg",
+            r"^setup.py",
+        ],
+        FileGroupForCi.DOC_FILES: [
+            r"^docs",
+            r"^airflow/.*\.py$",
+            r"^chart",
+            r"^providers",
+            r"^CHANGELOG\.txt",
+            r"^airflow/config_templates/config\.yml",
+            r"^chart/RELEASE_NOTES\.txt",
+            r"^chart/values\.schema\.json",
+            r"^chart/values\.json",
+        ],
+        FileGroupForCi.UI_FILES: [
+            r"^airflow/ui/.*\.[tj]sx?$",
+            r"^airflow/ui/[^/]+\.json$",
+            r"^airflow/ui/.*\.lock$",
+        ],
+        FileGroupForCi.WWW_FILES: [
+            r"^airflow/www/.*\.js[x]?$",
+            r"^airflow/www/[^/]+\.json$",
+            r"^airflow/www/.*\.lock$",
+        ],
+        FileGroupForCi.KUBERNETES_FILES: [
+            r"^chart",
+            r"^kubernetes_tests",
+            r"^airflow/providers/cncf/kubernetes/",
+            r"^tests/providers/cncf/kubernetes/",
+        ],
+        FileGroupForCi.ALL_PYTHON_FILES: [
+            r"\.py$",
+        ],
+        FileGroupForCi.ALL_SOURCE_FILES: [
+            "^.pre-commit-config.yaml$",
+            "^airflow",
+            "^chart",
+            "^tests",
+            "^kubernetes_tests",
+        ],
+    }
+)
+
+
+TEST_TYPE_MATCHES = HashableDict(
+    {
+        SelectiveUnitTestTypes.API: [
+            r"^airflow/api",
+            r"^airflow/api_connexion",
+            r"^tests/api",
+            r"^tests/api_connexion",
+        ],
+        SelectiveUnitTestTypes.CLI: [
+            r"^airflow/cli",
+            r"^tests/cli",
+        ],
+        SelectiveUnitTestTypes.PROVIDERS: [
+            "^airflow/providers/",
+            "^tests/providers/",
+        ],
+        SelectiveUnitTestTypes.WWW: ["^airflow/www", "^tests/www", "^airflow/ui"],
+    }
+)
+
+
+class SelectiveChecks:
+    __HASHABLE_FIELDS = {'_files', '_default_branch', '_commit_ref', "_pr_labels", "_github_event"}
+
+    def __init__(
+        self,
+        files: tuple[str, ...] = (),
+        default_branch="main",
+        commit_ref: str | None = None,
+        pr_labels: tuple[str, ...] = (),
+        github_event: GithubEvents = GithubEvents.PULL_REQUEST,
+    ):
+        self._files = files
+        self._default_branch = default_branch
+        self._commit_ref = commit_ref
+        self._pr_labels = pr_labels
+        self._github_event = github_event
+
+    def __important_attributes(self) -> tuple[Any, ...]:
+        return tuple(getattr(self, f) for f in self.__HASHABLE_FIELDS)
+
+    def __hash__(self):
+        return hash(self.__important_attributes())
+
+    def __eq__(self, other):
+        return isinstance(other, SelectiveChecks) and all(
+            [getattr(other, f) == getattr(self, f) for f in self.__HASHABLE_FIELDS]
+        )
+
+    def __str__(self) -> str:
+        output = []
+        for field_name in dir(self):
+            if not field_name.startswith('_'):
+                output.append(get_ga_output(field_name, getattr(self, field_name)))
+        return "\n".join(output)
+
+    default_python_version = DEFAULT_PYTHON_MAJOR_MINOR_VERSION
+    default_postgres_version = DEFAULT_POSTGRES_VERSION
+    default_mysql_version = DEFAULT_MYSQL_VERSION
+    default_mssql_version = DEFAULT_MSSQL_VERSION
+
+    default_kubernetes_version = DEFAULT_KUBERNETES_VERSION
+    default_kind_version = DEFAULT_KIND_VERSION
+    default_helm_version = DEFAULT_HELM_VERSION
+
+    @cached_property
+    def default_branch(self) -> str:
+        return self._default_branch
+
+    @cached_property
+    def _full_tests_needed(self) -> bool:
+        if self._github_event in [GithubEvents.PUSH, GithubEvents.SCHEDULE]:
+            get_console().print(f"[warning]Full tests needed because event is {self._github_event}[/]")
+            return True
+        if FULL_TESTS_NEEDED_LABEL in self._pr_labels:
+            get_console().print(f"[warning]Full tests needed because labels are {self._pr_labels}[/]")
+            return True
+        return False
+
+    @cached_property
+    def python_versions(self) -> list[str]:
+        return (
+            CURRENT_PYTHON_MAJOR_MINOR_VERSIONS
+            if self._full_tests_needed
+            else [DEFAULT_PYTHON_MAJOR_MINOR_VERSION]
+        )
+
+    @cached_property
+    def python_versions_list_as_string(self) -> str:
+        return " ".join(self.python_versions)
+
+    @cached_property
+    def all_python_versions(self) -> list[str]:
+        return (
+            ALL_PYTHON_MAJOR_MINOR_VERSIONS
+            if self._run_everything or self._full_tests_needed
+            else [DEFAULT_PYTHON_MAJOR_MINOR_VERSION]
+        )
+
+    @cached_property
+    def all_python_versions_list_as_string(self) -> str:
+        return " ".join(self.all_python_versions)
+
+    @cached_property
+    def kubernetes_modes(self):
+        return CURRENT_KUBERNETES_MODES if self._full_tests_needed else [DEFAULT_KUBERNETES_MODE]
+
+    @cached_property
+    def postgres_versions(self) -> list[str]:
+        return CURRENT_POSTGRES_VERSIONS if self._full_tests_needed else [DEFAULT_POSTGRES_VERSION]
+
+    @cached_property
+    def mysql_versions(self) -> list[str]:
+        return CURRENT_MYSQL_VERSIONS if self._full_tests_needed else [DEFAULT_MYSQL_VERSION]
+
+    @cached_property
+    def mssql_versions(self) -> list[str]:
+        return CURRENT_MSSQL_VERSIONS if self._full_tests_needed else [DEFAULT_MSSQL_VERSION]
+
+    @cached_property
+    def kind_versions(self) -> list[str]:
+        return CURRENT_KIND_VERSIONS
+
+    @cached_property
+    def helm_versions(self) -> list[str]:
+        return CURRENT_HELM_VERSIONS
+
+    @cached_property
+    def postgres_exclude(self) -> list[dict[str, str]]:
+        return [{"python-version": "3.7"}] if self._full_tests_needed else []
+
+    @cached_property
+    def mssql_exclude(self) -> list[dict[str, str]]:
+        return [{"python-version": "3.8"}] if self._full_tests_needed else []
+
+    @cached_property
+    def mysql_exclude(self) -> list[dict[str, str]]:
+        return [{"python-version": "3.10"}] if self._full_tests_needed else []
+
+    @cached_property
+    def sqlite_exclude(self) -> list[dict[str, str]]:
+        return [{"python-version": "3.9"}] if self._full_tests_needed else []
+
+    @cached_property
+    def kubernetes_versions(self) -> list[str]:
+        return CURRENT_KUBERNETES_VERSIONS if self._full_tests_needed else [DEFAULT_KUBERNETES_VERSION]
+
+    @cached_property
+    def kubernetes_versions_list_as_string(self) -> str:
+        return " ".join(self.kubernetes_versions)
+
+    def _match_files_with_regexps(self, matched_files, regexps):
+        for file in self._files:
+            for regexp in regexps:
+                if match(regexp, file):
+                    matched_files.append(file)
+                    break
+
+    @lru_cache(maxsize=None)
+    def _matching_files(self, match_group: T, match_dict: dict[T, list[str]]) -> list[str]:
+        matched_files: list[str] = []
+        regexps = match_dict[match_group]
+        self._match_files_with_regexps(matched_files, regexps)
+        count = len(matched_files)
+        if count > 0:
+            get_console().print(f"[warning]{match_group} matched {count} files.[/]")
+            get_console().print(matched_files)
+        else:
+            get_console().print(f"[warning]{match_group} did not match any file.[/]")
+        return matched_files
+
+    @cached_property
+    def _run_everything(self) -> bool:
+        if not self._commit_ref:
+            get_console().print("[warning]Running everything as commit is missing[/]")
+            return True
+        if self._full_tests_needed:
+            get_console().print("[warning]Running everything as full tests are needed[/]")
+            return True
+        if len(self._matching_files(FileGroupForCi.ENVIRONMENT_FILES, CI_FILE_GROUP_MATCHES)) > 0:
+            get_console().print("[warning]Running everything because env files changed[/]")
+            return True
+        return False
+
+    def _should_be_run(self, source_area: FileGroupForCi) -> bool:
+        if self._run_everything:
+            get_console().print(f"[warning]{source_area} enabled because we are running everything[/]")
+            return True
+        matched_files = self._matching_files(source_area, CI_FILE_GROUP_MATCHES)
+        if len(matched_files) > 0:
+            get_console().print(
+                f"[warning]{source_area} enabled because it matched {len(matched_files)} changed files[/]"
+            )
+            return True
+        else:
+            get_console().print(
+                f"[warning]{source_area} disabled because it did not match any changed files[/]"
+            )
+            return False
+
+    @cached_property
+    def needs_python_scans(self) -> bool:
+        return self._should_be_run(FileGroupForCi.PYTHON_PRODUCTION_FILES)
+
+    @cached_property
+    def needs_javascript_scans(self) -> bool:
+        return self._should_be_run(FileGroupForCi.JAVASCRIPT_PRODUCTION_FILES)
+
+    @cached_property
+    def needs_api_tests(self) -> bool:
+        return self._should_be_run(FileGroupForCi.API_TEST_FILES)
+
+    @cached_property
+    def needs_api_codegen(self) -> bool:
+        return self._should_be_run(FileGroupForCi.API_CODEGEN_FILES)
+
+    @cached_property
+    def run_ui_tests(self) -> bool:
+        return self._should_be_run(FileGroupForCi.UI_FILES)
+
+    @cached_property
+    def run_www_tests(self) -> bool:
+        return self._should_be_run(FileGroupForCi.WWW_FILES)
+
+    @cached_property
+    def run_kubernetes_tests(self) -> bool:
+        return self._should_be_run(FileGroupForCi.KUBERNETES_FILES)
+
+    @cached_property
+    def docs_build(self) -> bool:
+        return self._should_be_run(FileGroupForCi.DOC_FILES)
+
+    @cached_property
+    def needs_helm_tests(self) -> bool:
+        return self._should_be_run(FileGroupForCi.HELM_FILES) and self._default_branch == "main"
+
+    @cached_property
+    def run_tests(self) -> bool:
+        return self._should_be_run(FileGroupForCi.ALL_SOURCE_FILES)
+
+    @cached_property
+    def image_build(self) -> bool:
+        return self.run_tests or self.docs_build or self.run_kubernetes_tests
+
+    def _select_test_type_if_matching(
+        self, test_types: set[str], test_type: SelectiveUnitTestTypes
+    ) -> list[str]:
+        matched_files = self._matching_files(test_type, TEST_TYPE_MATCHES)
+        count = len(matched_files)
+        if count > 0:
+            test_types.add(test_type.value)
+            get_console().print(f"[warning]{test_type} added because it matched {count} files[/]")
+        return matched_files
+
+    def _get_test_types_to_run(self) -> list[str]:
+        candidate_test_types: set[str] = {"Always"}
+        matched_files: set[str] = set()
+        matched_files.update(
+            self._select_test_type_if_matching(candidate_test_types, SelectiveUnitTestTypes.WWW)
+        )
+        matched_files.update(
+            self._select_test_type_if_matching(candidate_test_types, SelectiveUnitTestTypes.PROVIDERS)
+        )
+        matched_files.update(
+            self._select_test_type_if_matching(candidate_test_types, SelectiveUnitTestTypes.CLI)
+        )
+        matched_files.update(
+            self._select_test_type_if_matching(candidate_test_types, SelectiveUnitTestTypes.API)
+        )
+
+        kubernetes_files = self._matching_files(FileGroupForCi.KUBERNETES_FILES, CI_FILE_GROUP_MATCHES)
+        all_source_files = self._matching_files(FileGroupForCi.ALL_SOURCE_FILES, CI_FILE_GROUP_MATCHES)
+
+        remaining_files = set(all_source_files) - set(matched_files) - set(kubernetes_files)
+        count_remaining_files = len(remaining_files)
+        if count_remaining_files > 0:
+            get_console().print(
+                f"[warning]We should run all tests. There are {count_remaining_files} changed "
+                "files that seems to fall into Core/Other category[/]"
+            )
+            get_console().print(remaining_files)
+            candidate_test_types.update(all_selective_test_types())
+        else:
+            get_console().print(
+                "[warning]There are no core/other files. Only tests relevant to the changed files are run.[/]"
+            )
+        sorted_candidate_test_types = list(sorted(candidate_test_types))
+        get_console().print("[warning]Selected test type candidates to run:[/]")
+        get_console().print(sorted_candidate_test_types)
+        return sorted_candidate_test_types
+
+    @cached_property
+    def test_types(self) -> str:
+        if not self.run_tests:
+            return ""
+        if self._run_everything:
+            current_test_types = list(all_selective_test_types())
+        else:
+            current_test_types = self._get_test_types_to_run()
+        if self._default_branch != "main":
+            if "Providers" in current_test_types:
+                get_console().print(
+                    "[warning]Removing 'Providers' because the target branch "
+                    f"is {self._default_branch} and not main[/]"
+                )
+                current_test_types.remove("Providers")
+        return " ".join(sorted(current_test_types))
+
+    @cached_property
+    def basic_checks_only(self) -> bool:
+        return not self.image_build
+
+    @cached_property
+    def upgrade_to_newer_dependencies(self) -> bool:
+        return len(
+            self._matching_files(FileGroupForCi.SETUP_FILES, CI_FILE_GROUP_MATCHES)
+        ) > 0 or self._github_event in [GithubEvents.PUSH, GithubEvents.SCHEDULE]
diff --git a/dev/breeze/tests/test_selective_checks.py b/dev/breeze/tests/test_selective_checks.py
new file mode 100644
index 0000000000..492135ebd3
--- /dev/null
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -0,0 +1,464 @@
+# 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.
+
+from typing import Dict, Tuple
+
+import pytest
+
+from airflow_breeze.global_constants import GithubEvents
+from airflow_breeze.utils.selective_checks import SelectiveChecks
+
+
+def assert_outputs_are_printed(expected_outputs: Dict[str, str], output: str):
+    for name, value in expected_outputs.items():
+        assert f"::set-output name={name}::{value}" in output
+
+
+@pytest.mark.parametrize(
+    "files, expected_outputs,",
+    [
+        (
+            pytest.param(
+                ("INTHEWILD.md",),
+                {
+                    "all-python-versions": "['3.7']",
+                    "all-python-versions-list-as-string": "3.7",
+                    "image-build": "false",
+                    "needs-helm-tests": "false",
+                    "run-tests": "false",
+                    "docs-build": "false",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "",
+                },
+                id="No tests on simple change",
+            )
+        ),
+        (
+            pytest.param(
+                ("airflow/api/file.py",),
+                {
+                    "all-python-versions": "['3.7']",
+                    "all-python-versions-list-as-string": "3.7",
+                    "image-build": "true",
+                    "needs-helm-tests": "false",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "API Always",
+                },
+                id="Only API tests and DOCS should run",
+            )
+        ),
+        (
+            pytest.param(
+                (
+                    "airflow/api/file.py",
+                    "tests/providers/google/file.py",
+                ),
+                {
+                    "all-python-versions": "['3.7']",
+                    "all-python-versions-list-as-string": "3.7",
+                    "image-build": "true",
+                    "needs-helm-tests": "false",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "API Always Providers",
+                },
+                id="API and providers tests and docs should run",
+            )
+        ),
+        (
+            pytest.param(
+                ("tests/providers/google/file.py",),
+                {
+                    "all-python-versions": "['3.7']",
+                    "all-python-versions-list-as-string": "3.7",
+                    "image-build": "true",
+                    "needs-helm-tests": "false",
+                    "run-tests": "true",
+                    "docs-build": "false",
+                    "run-kubernetes-tests": "false",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "Always Providers",
+                },
+                id="Providers and docs should run",
+            )
+        ),
+        (
+            pytest.param(
+                ("docs/file.rst",),
+                {
+                    "all-python-versions": "['3.7']",
+                    "all-python-versions-list-as-string": "3.7",
+                    "image-build": "true",
+                    "needs-helm-tests": "false",
+                    "run-tests": "false",
+                    "docs-build": "true",
+                    "run-kubernetes-tests": "false",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "",
+                },
+                id="Only docs builds should run - no tests needed",
+            )
+        ),
+        (
+            pytest.param(
+                (
+                    "chart/aaaa.txt",
+                    "tests/providers/google/file.py",
+                ),
+                {
+                    "all-python-versions": "['3.7']",
+                    "all-python-versions-list-as-string": "3.7",
+                    "image-build": "true",
+                    "needs-helm-tests": "true",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "run-kubernetes-tests": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "Always Providers",
+                },
+                id="Helm tests, providers, kubernetes tests and docs should run",
+            )
+        ),
+        (
+            pytest.param(
+                (
+                    "INTHEWILD.md",
+                    "chart/aaaa.txt",
+                    "tests/providers/google/file.py",
+                ),
+                {
+                    "all-python-versions": "['3.7']",
+                    "all-python-versions-list-as-string": "3.7",
+                    "image-build": "true",
+                    "needs-helm-tests": "true",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "run-kubernetes-tests": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "Always Providers",
+                },
+                id="Helm tests, providers, kubernetes tests and docs should run even if "
+                "unimportant files were added",
+            )
+        ),
+        (
+            pytest.param(
+                ("setup.py",),
+                {
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "image-build": "true",
+                    "needs-helm-tests": "true",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "upgrade-to-newer-dependencies": "true",
+                    "test-types": "API Always CLI Core Integration Other Providers WWW",
+                },
+                id="Everything should run and upgrading to newer requirements as setup.py changed",
+            )
+        ),
+    ],
+)
+def test_expected_output_pull_request_main(
+    files: Tuple[str, ...],
+    expected_outputs: Dict[str, str],
+):
+    sc = SelectiveChecks(
+        files=files,
+        commit_ref="HEAD",
+        github_event=GithubEvents.PULL_REQUEST,
+        pr_labels=(),
+        default_branch="main",
+    )
+    assert_outputs_are_printed(expected_outputs, str(sc))
+
+
+@pytest.mark.parametrize(
+    "files, pr_labels, default_branch, expected_outputs,",
+    [
+        (
+            pytest.param(
+                ("INTHEWILD.md",),
+                ("full tests needed",),
+                "main",
+                {
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "image-build": "true",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "API Always CLI Core Integration Other Providers WWW",
+                },
+                id="Everything should run when full tests are needed",
+            )
+        ),
+        (
+            pytest.param(
+                ("INTHEWILD.md",),
+                (
+                    "another label",
+                    "full tests needed",
+                ),
+                "main",
+                {
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "image-build": "true",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "API Always CLI Core Integration Other Providers WWW",
+                },
+                id="Everything should run when full tests are needed even with different label set as well",
+            )
+        ),
+        (
+            pytest.param(
+                (),
+                ("full tests needed",),
+                "main",
+                {
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "image-build": "true",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "API Always CLI Core Integration Other Providers WWW",
+                },
+                id="Everything should run when full tests are needed even if no files are changed",
+            )
+        ),
+        (
+            pytest.param(
+                ("INTHEWILD.md",),
+                ("full tests needed",),
+                "v2-3-stable",
+                {
+                    "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                    "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                    "image-build": "true",
+                    "run-tests": "true",
+                    "docs-build": "true",
+                    "upgrade-to-newer-dependencies": "false",
+                    "test-types": "API Always CLI Core Integration Other WWW",
+                },
+                id="Everything should run except Providers when full tests are needed for non-main branch",
+            )
+        ),
+    ],
+)
+def test_expected_output_full_tests_needed(
+    files: Tuple[str, ...],
+    pr_labels: Tuple[str, ...],
+    default_branch: str,
+    expected_outputs: Dict[str, str],
+):
+    sc = SelectiveChecks(
+        files=files,
+        commit_ref="HEAD",
+        github_event=GithubEvents.PULL_REQUEST,
+        pr_labels=pr_labels,
+        default_branch=default_branch,
+    )
+    output = str(sc)
+    assert_outputs_are_printed(expected_outputs, output)
+
+
+@pytest.mark.parametrize(
+    "files, expected_outputs,",
+    [
+        pytest.param(
+            ("INTHEWILD.md",),
+            {
+                "all-python-versions": "['3.7']",
+                "all-python-versions-list-as-string": "3.7",
+                "image-build": "false",
+                "needs-helm-tests": "false",
+                "run-tests": "false",
+                "docs-build": "false",
+                "upgrade-to-newer-dependencies": "false",
+                "test-types": "",
+            },
+            id="Everything should run when full tests are needed even if no files are changed",
+        ),
+        pytest.param(
+            (
+                "chart/aaaa.txt",
+                "tests/providers/google/file.py",
+            ),
+            {
+                "all-python-versions": "['3.7']",
+                "all-python-versions-list-as-string": "3.7",
+                "needs-helm-tests": "false",
+                "image-build": "true",
+                "run-tests": "true",
+                "docs-build": "true",
+                "run-kubernetes-tests": "true",
+                "upgrade-to-newer-dependencies": "false",
+                "test-types": "Always",
+            },
+            id="No Helm tests, No providers should run if only chart/providers changed in non-main",
+        ),
+        pytest.param(
+            (
+                "airflow/cli/test.py",
+                "chart/aaaa.txt",
+                "tests/providers/google/file.py",
+            ),
+            {
+                "all-python-versions": "['3.7']",
+                "all-python-versions-list-as-string": "3.7",
+                "image-build": "true",
+                "needs-helm-tests": "false",
+                "run-tests": "true",
+                "docs-build": "true",
+                "run-kubernetes-tests": "true",
+                "upgrade-to-newer-dependencies": "false",
+                "test-types": "Always CLI",
+            },
+            id="Only CLI tests and Kubernetes tests should run if cli/chart files changed in non-main branch",
+        ),
+        pytest.param(
+            (
+                "airflow/file.py",
+                "tests/providers/google/file.py",
+            ),
+            {
+                "all-python-versions": "['3.7']",
+                "all-python-versions-list-as-string": "3.7",
+                "image-build": "true",
+                "needs-helm-tests": "false",
+                "run-tests": "true",
+                "docs-build": "true",
+                "run-kubernetes-tests": "false",
+                "upgrade-to-newer-dependencies": "false",
+                "test-types": "API Always CLI Core Integration Other WWW",
+            },
+            id="All tests except providers should run if core file changed in non-main branch",
+        ),
+    ],
+)
+def test_expected_output_pull_request_v2_3(
+    files: Tuple[str, ...],
+    expected_outputs: Dict[str, str],
+):
+    sc = SelectiveChecks(
+        files=files,
+        commit_ref="HEAD",
+        github_event=GithubEvents.PULL_REQUEST,
+        pr_labels=(),
+        default_branch="v2-3-stable",
+    )
+    assert_outputs_are_printed(expected_outputs, str(sc))
+
+
+@pytest.mark.parametrize(
+    "files, pr_labels, default_branch, expected_outputs,",
+    [
+        pytest.param(
+            ("INTHEWILD.md",),
+            (),
+            "main",
+            {
+                "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                "image-build": "true",
+                "needs-helm-tests": "true",
+                "run-tests": "true",
+                "docs-build": "true",
+                "upgrade-to-newer-dependencies": "true",
+                "test-types": "API Always CLI Core Integration Other Providers WWW",
+            },
+            id="All tests run on push even if unimportant file changed",
+        ),
+        pytest.param(
+            ("INTHEWILD.md",),
+            (),
+            "v2-3-stable",
+            {
+                "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                "image-build": "true",
+                "needs-helm-tests": "false",
+                "run-tests": "true",
+                "docs-build": "true",
+                "upgrade-to-newer-dependencies": "true",
+                "test-types": "API Always CLI Core Integration Other WWW",
+            },
+            id="All tests except Providers and Helm run on push"
+            " even if unimportant file changed in non-main branch",
+        ),
+        pytest.param(
+            ("airflow/api.py",),
+            (),
+            "main",
+            {
+                "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+                "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+                "image-build": "true",
+                "needs-helm-tests": "true",
+                "run-tests": "true",
+                "docs-build": "true",
+                "upgrade-to-newer-dependencies": "true",
+                "test-types": "API Always CLI Core Integration Other Providers WWW",
+            },
+            id="All tests run on push if core file changed",
+        ),
+    ],
+)
+def test_expected_output_push(
+    files: Tuple[str, ...],
+    pr_labels: Tuple[str, ...],
+    default_branch: str,
+    expected_outputs: Dict[str, str],
+):
+    sc = SelectiveChecks(
+        files=files,
+        commit_ref="HEAD",
+        github_event=GithubEvents.PUSH,
+        pr_labels=pr_labels,
+        default_branch=default_branch,
+    )
+    assert_outputs_are_printed(expected_outputs, str(sc))
+
+
+def test_no_commit_provided():
+    sc = SelectiveChecks(
+        files=(),
+        commit_ref="",
+        github_event=GithubEvents.PULL_REQUEST,
+        pr_labels=(),
+        default_branch="main",
+    )
+    assert_outputs_are_printed(
+        {
+            "all-python-versions": "['3.7', '3.8', '3.9', '3.10']",
+            "all-python-versions-list-as-string": "3.7 3.8 3.9 3.10",
+            "image-build": "true",
+            "needs-helm-tests": "true",
+            "run-tests": "true",
+            "docs-build": "true",
+            "upgrade-to-newer-dependencies": "false",
+            "test-types": "API Always CLI Core Integration Other Providers WWW",
+        },
+        str(sc),
+    )
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 5ddc9626a3..194d9690d8 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,4 +2,4 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-b48267467e8d9a9a4af99df180177b43
+b5c4ae62f5ac472a83af3a8eca75ed9b
diff --git a/images/breeze/output-commands.svg b/images/breeze/output-commands.svg
index e9dd89b22e..2e21ac9804 100644
--- a/images/breeze/output-commands.svg
+++ b/images/breeze/output-commands.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2124.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2197.2" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,381 +19,393 @@
         font-weight: 700;
     }
 
-    .terminal-1207574554-matrix {
+    .terminal-460130354-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1207574554-title {
+    .terminal-460130354-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1207574554-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1207574554-r2 { fill: #c5c8c6 }
-.terminal-1207574554-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1207574554-r4 { fill: #868887 }
-.terminal-1207574554-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1207574554-r6 { fill: #98a84b;font-weight: bold }
-.terminal-1207574554-r7 { fill: #8d7b39 }
+    .terminal-460130354-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-460130354-r2 { fill: #c5c8c6 }
+.terminal-460130354-r3 { fill: #d0b344;font-weight: bold }
+.terminal-460130354-r4 { fill: #868887 }
+.terminal-460130354-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-460130354-r6 { fill: #98a84b;font-weight: bold }
+.terminal-460130354-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-1207574554-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2073.0" />
+    <clipPath id="terminal-460130354-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="2146.2" />
     </clipPath>
-    <clipPath id="terminal-1207574554-line-0">
+    <clipPath id="terminal-460130354-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-1">
+<clipPath id="terminal-460130354-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-2">
+<clipPath id="terminal-460130354-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-3">
+<clipPath id="terminal-460130354-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-4">
+<clipPath id="terminal-460130354-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-5">
+<clipPath id="terminal-460130354-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-6">
+<clipPath id="terminal-460130354-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-7">
+<clipPath id="terminal-460130354-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-8">
+<clipPath id="terminal-460130354-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-9">
+<clipPath id="terminal-460130354-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-10">
+<clipPath id="terminal-460130354-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-11">
+<clipPath id="terminal-460130354-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-12">
+<clipPath id="terminal-460130354-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-13">
+<clipPath id="terminal-460130354-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-14">
+<clipPath id="terminal-460130354-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-15">
+<clipPath id="terminal-460130354-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-16">
+<clipPath id="terminal-460130354-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-17">
+<clipPath id="terminal-460130354-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-18">
+<clipPath id="terminal-460130354-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-19">
+<clipPath id="terminal-460130354-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-20">
+<clipPath id="terminal-460130354-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-21">
+<clipPath id="terminal-460130354-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-22">
+<clipPath id="terminal-460130354-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-23">
+<clipPath id="terminal-460130354-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-24">
+<clipPath id="terminal-460130354-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-25">
+<clipPath id="terminal-460130354-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-26">
+<clipPath id="terminal-460130354-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-27">
+<clipPath id="terminal-460130354-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-28">
+<clipPath id="terminal-460130354-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-29">
+<clipPath id="terminal-460130354-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-30">
+<clipPath id="terminal-460130354-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-31">
+<clipPath id="terminal-460130354-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-32">
+<clipPath id="terminal-460130354-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-33">
+<clipPath id="terminal-460130354-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-34">
+<clipPath id="terminal-460130354-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-35">
+<clipPath id="terminal-460130354-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-36">
+<clipPath id="terminal-460130354-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-37">
+<clipPath id="terminal-460130354-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-38">
+<clipPath id="terminal-460130354-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-39">
+<clipPath id="terminal-460130354-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-40">
+<clipPath id="terminal-460130354-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-41">
+<clipPath id="terminal-460130354-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-42">
+<clipPath id="terminal-460130354-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-43">
+<clipPath id="terminal-460130354-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-44">
+<clipPath id="terminal-460130354-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-45">
+<clipPath id="terminal-460130354-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-46">
+<clipPath id="terminal-460130354-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-47">
+<clipPath id="terminal-460130354-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-48">
+<clipPath id="terminal-460130354-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-49">
+<clipPath id="terminal-460130354-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-50">
+<clipPath id="terminal-460130354-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-51">
+<clipPath id="terminal-460130354-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-52">
+<clipPath id="terminal-460130354-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-53">
+<clipPath id="terminal-460130354-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-54">
+<clipPath id="terminal-460130354-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-55">
+<clipPath id="terminal-460130354-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-56">
+<clipPath id="terminal-460130354-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-57">
+<clipPath id="terminal-460130354-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-58">
+<clipPath id="terminal-460130354-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-59">
+<clipPath id="terminal-460130354-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-60">
+<clipPath id="terminal-460130354-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-61">
+<clipPath id="terminal-460130354-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-62">
+<clipPath id="terminal-460130354-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-63">
+<clipPath id="terminal-460130354-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-64">
+<clipPath id="terminal-460130354-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-65">
+<clipPath id="terminal-460130354-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-66">
+<clipPath id="terminal-460130354-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-67">
+<clipPath id="terminal-460130354-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-68">
+<clipPath id="terminal-460130354-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-69">
+<clipPath id="terminal-460130354-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-70">
+<clipPath id="terminal-460130354-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-71">
+<clipPath id="terminal-460130354-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-72">
+<clipPath id="terminal-460130354-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-73">
+<clipPath id="terminal-460130354-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-74">
+<clipPath id="terminal-460130354-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-75">
+<clipPath id="terminal-460130354-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-76">
+<clipPath id="terminal-460130354-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-77">
+<clipPath id="terminal-460130354-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-78">
+<clipPath id="terminal-460130354-line-78">
     <rect x="0" y="1904.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-79">
+<clipPath id="terminal-460130354-line-79">
     <rect x="0" y="1929.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-80">
+<clipPath id="terminal-460130354-line-80">
     <rect x="0" y="1953.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-81">
+<clipPath id="terminal-460130354-line-81">
     <rect x="0" y="1977.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-82">
+<clipPath id="terminal-460130354-line-82">
     <rect x="0" y="2002.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1207574554-line-83">
+<clipPath id="terminal-460130354-line-83">
     <rect x="0" y="2026.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-460130354-line-84">
+    <rect x="0" y="2051.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-460130354-line-85">
+    <rect x="0" y="2075.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-460130354-line-86">
+    <rect x="0" y="2099.9" 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="2122" rx="8"/><text class="terminal-1207574554-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2195.2" rx="8"/><text class="terminal-460130354-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Breeze&#160;commands</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-1207574554-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-460130354-clip-terminal)">
     
-    <g class="terminal-1207574554-matrix">
-    <text class="terminal-1207574554-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1207574554-line-0)">
-</text><text class="terminal-1207574554-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1207574554-line-1)">Usage:&#160;</text><text class="terminal-1207574554-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-1207574554-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-1207574554-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-1)">
-</text><text class="terminal-1207574554-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-2)">
-</text><text class="terminal-1207574554-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-1207574554-line-3)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-1207574554-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="93.2" textLength="24.4" cli [...]
-</text><text class="terminal-1207574554-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-4)">│</text><text class="terminal-1207574554-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-4)">-</text><text class="terminal-1207574554-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-1207574554-line-4)">-python</text><text class="terminal-1207574554-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-120 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-1207574554-line-5)">│</text><text class="terminal-1207574554-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-1207574554-line-5)">[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;&#160 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-6)">│</text><text class="terminal-1207574554-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-6)">-</text><text class="terminal-1207574554-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-1207574554-line-6)">-backend</text><text class="terminal-1207574554-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-7)">│</text><text class="terminal-1207574554-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-7)">-</text><text class="terminal-1207574554-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-1207574554-line-7)">-postgres</text><text class="terminal-1207574554-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#termina [...]
-</text><text class="terminal-1207574554-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-8)">│</text><text class="terminal-1207574554-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-8)">-</text><text class="terminal-1207574554-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-1207574554-line-8)">-mysql</text><text class="terminal-1207574554-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-9)">│</text><text class="terminal-1207574554-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-9)">-</text><text class="terminal-1207574554-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-1207574554-line-9)">-mssql</text><text class="terminal-1207574554-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1207574554-line-10)">│</text><text class="terminal-1207574554-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1207574554-line-10)">-</text><text class="terminal-1207574554-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-1207574554-line-10)">-integration</text><text class="terminal-1207574554-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#termina [...]
-</text><text class="terminal-1207574554-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-11)">│</text><text class="terminal-1207574554-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-1207574554-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-1207574554-r4" x="1 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-12)">│</text><text class="terminal-1207574554-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-1207574554-line-12)">all)&#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-1207574554-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-13)">│</text><text class="terminal-1207574554-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-13)">-</text><text class="terminal-1207574554-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-1207574554-line-13)">-forward</text><text class="terminal-1207574554-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#termi [...]
-</text><text class="terminal-1207574554-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-14)">│</text><text class="terminal-1207574554-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-14)">-</text><text class="terminal-1207574554-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-1207574554-line-14)">-db</text><text class="terminal-1207574554-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-120 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-1207574554-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-1207574554-line-15)">
-</text><text class="terminal-1207574554-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-1207574554-line-16)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-1207574554-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="410.4" textLength="24.4 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-17)">│</text><text class="terminal-1207574554-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-17)">-</text><text class="terminal-1207574554-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-1207574554-line-17)">-use</text><text class="terminal-1207574554-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-18)">│</text><text class="terminal-1207574554-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-1207574554-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-1207574554-r4" x="1451.8" y="459.2" textLength= [...]
-</text><text class="terminal-1207574554-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-19)">│</text><text class="terminal-1207574554-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-1207574554-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-1207574554-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-19)">-</text><text class="terminal-12075 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-1207574554-line-20)">│</text><text class="terminal-1207574554-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-1207574554-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-1207574554-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-21)">│</text><text class="terminal-1207574554-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-21)">-</text><text class="terminal-1207574554-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-1207574554-line-21)">-airflow</text><text class="terminal-1207574554-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1207574554-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-22)">│</text><text class="terminal-1207574554-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-22)">-</text><text class="terminal-1207574554-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-1207574554-line-22)">-use</text><text class="terminal-1207574554-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-1 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-23)">│</text><text class="terminal-1207574554-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-1207574554-line-23)">entering&#160;breeze.&#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-1207574554-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-24)">│</text><text class="terminal-1207574554-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-24)">-</text><text class="terminal-1207574554-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-1207574554-line-24)">-package</text><text class="terminal-1207574554-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-1207574554-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1207574554-line-25)">│</text><text class="terminal-1207574554-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-1207574554-line-25)">-</text><text class="terminal-1207574554-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-1207574554-line-25)">-force</text><text class="terminal-1207574554-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-1207574 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-26)">│</text><text class="terminal-1207574554-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-26)">-</text><text class="terminal-1207574554-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-1207574554-line-26)">-mount</text><text class="terminal-1207574554-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-1207574554-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-27)">│</text><text class="terminal-1207574554-r2" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-1207574554-line-27)">selected).&#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-1207574554-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-28)">│</text><text class="terminal-1207574554-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-1207574554-line-28)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-1207574554-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-29)">│</text><text class="terminal-1207574554-r4" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-1207574554-line-29)">[default:&#160;selected]&#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-1207574554-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1207574554-line-30)">│</text><text class="terminal-1207574554-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-1207574554-line-30)">-</text><text class="terminal-1207574554-r5" x="36.6" y="752" textLength="85.4" clip-path="url(#terminal-1207574554-line-30)">-debian</text><text class="terminal-1207574554-r5" x="122" y="752" textLength="97.6" clip-path="url(#terminal-12075745 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="776.4" textLength="1464" clip-path="url(#terminal-1207574554-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-31)">
-</text><text class="terminal-1207574554-r4" x="0" y="800.8" textLength="24.4" clip-path="url(#terminal-1207574554-line-32)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="800.8" textLength="1415.2" clip-path="url(#terminal-1207574554-line-32)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="800.8" textLength="24.4" clip-path="url(#terminal-120 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-33)">│</text><text class="terminal-1207574554-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-33)">-</text><text class="terminal-1207574554-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-1207574554-line-33)">-verbose</text><text class="terminal-1207574554-r6" x="280.6" y="825.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-1207574554-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-34)">│</text><text class="terminal-1207574554-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-34)">-</text><text class="terminal-1207574554-r5" x="36.6" y="849.6" textLength="48.8" clip-path="url(#terminal-1207574554-line-34)">-dry</text><text class="terminal-1207574554-r5" x="85.4" y="849.6" textLength="48.8" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1207574554-line-35)">│</text><text class="terminal-1207574554-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-1207574554-line-35)">-</text><text class="terminal-1207574554-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-1207574554-line-35)">-github</text><text class="terminal-1207574554-r5" x="122" y="874" textLength="134.2" clip-path="url(#terminal-1207574 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-36)">│</text><text class="terminal-1207574554-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-36)">-</text><text class="terminal-1207574554-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-1207574554-line-36)">-answer</text><text class="terminal-1207574554-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1207574554-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-37)">│</text><text class="terminal-1207574554-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-37)">-</text><text class="terminal-1207574554-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-1207574554-line-37)">-help</text><text class="terminal-1207574554-r6" x="280.6" y="922.8" textLength="24.4" clip-path="url(#terminal-12 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-1207574554-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-38)">
-</text><text class="terminal-1207574554-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-1207574554-line-39)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-1207574554-line-39)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-1207574554-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1207574554-line-40)">│</text><text class="terminal-1207574554-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-1207574554-line-40)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-1207574554-line-40)">Enter&#160;breeze.py&#160;environment.&#160;this&#16 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-41)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-1207574554-line-41)">start-airflow&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-1207574554-line-41)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#1 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-42)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-1207574554-line-42)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-1207574554-line-42)">Joins&#160;the&#160;interactive&#160;s [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-43)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-1207574554-line-43)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-1207574554-line-43)">Stop&#160;running&#160;breeze&#160;env [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-44)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-1207574554-line-44)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-1207574554-line-44)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1207574554-line-45)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1118" textLength="183" clip-path="url(#terminal-1207574554-line-45)">static-checks&#160;&#160;</text><text class="terminal-1207574554-r2" x="231.8" y="1118" textLength="1207.8" clip-path="url(#terminal-1207574554-line-45)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-1207574554-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-46)">
-</text><text class="terminal-1207574554-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-1207574554-line-47)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-1207574554-line-47)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1166.8" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-48)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-1207574554-line-48)">docker-compose-tests&#160;</text><text class="terminal-1207574554-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-1207574554-line-48)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-49)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1215.6" textLength="256.2" clip-path="url(#terminal-1207574554-line-49)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="305" y="1215.6" textLength="1134.6" clip-path="url(#terminal-1207574554-line-49)">Run&#16 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-1207574554-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-1207574554-line-50)">
-</text><text class="terminal-1207574554-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-1207574554-line-51)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-1207574554-line-51)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1264.4" textLength="24.4" clip-path=" [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-52)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1288.8" textLength="305" clip-path="url(#terminal-1207574554-line-52)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1288.8" textLength="1085.8" clip-path="url(#terminal-1207574554-lin [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-53)">│</text><text class="terminal-1207574554-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-1207574554-line-53)">images.&#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-1207574554-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-54)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1337.6" textLength="305" clip-path="url(#terminal-1207574554-line-54)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-1207574554-line-54)">Self&#160;upgrade& [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1207574554-line-55)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-1207574554-line-55)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-1207574554-line-55)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;c [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-56)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-1207574554-line-56)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-120757455 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-57)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-1207574554-line-57)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-1207574554-line-57)">Check&#160;if&#160;available [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-58)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-1207574554-line-58)">free-space&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-1207574554-line-58)">Free&#16 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-59)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1459.6" textLength="305" clip-path="url(#terminal-1207574554-line-59)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-1207574554-line-59)">Fix&#160;ownership&#160 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1207574554-line-60)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1484" textLength="305" clip-path="url(#terminal-1207574554-line-60)">regenerate-command-images</text><text class="terminal-1207574554-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-1207574554-line-60)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-61)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1508.4" textLength="305" clip-path="url(#terminal-1207574554-line-61)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1508.4" textLength="1085.8" clip-path="url(#terminal-1207574554-line-61)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;co [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-62)">│</text><text class="terminal-1207574554-r2" x="353.8" y="1532.8" textLength="1085.8" clip-path="url(#terminal-1207574554-line-62)">images&#160;should&#160;be&#160;regenerated).&#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;&#16 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-63)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1557.2" textLength="305" clip-path="url(#terminal-1207574554-line-63)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="353.8" y="1557.2" textLength="1085.8" clip-path="url(#terminal-1207574554-lin [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1581.6" textLength="1464" clip-path="url(#terminal-1207574554-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1581.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-64)">
-</text><text class="terminal-1207574554-r4" x="0" y="1606" textLength="24.4" clip-path="url(#terminal-1207574554-line-65)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1606" textLength="1415.2" clip-path="url(#terminal-1207574554-line-65)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1606" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-66)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1630.4" textLength="170.8" clip-path="url(#terminal-1207574554-line-66)">build-image&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="219.6" y="1630.4" textLength="1220" clip-path="url(#terminal-1207574554-line-66)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images& [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-67)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1654.8" textLength="170.8" clip-path="url(#terminal-1207574554-line-67)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="219.6" y="1654.8" textLength="1220" clip-path="url(#terminal-1207574554-line-67)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160; [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-68)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1679.2" textLength="170.8" clip-path="url(#terminal-1207574554-line-68)">verify-image&#160;&#160;</text><text class="terminal-1207574554-r2" x="219.6" y="1679.2" textLength="1220" clip-path="url(#terminal-1207574554-line-68)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1703.6" textLength="1464" clip-path="url(#terminal-1207574554-line-69)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1703.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-69)">
-</text><text class="terminal-1207574554-r4" x="0" y="1728" textLength="24.4" clip-path="url(#terminal-1207574554-line-70)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1728" textLength="1415.2" clip-path="url(#terminal-1207574554-line-70)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1728" textLength="24.4" clip-path="url(#termi [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-71)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-1207574554-line-71)">build-prod-image&#160;</text><text class="terminal-1207574554-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-1207574554-line-71)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;imag [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-72)">│</text><text class="terminal-1207574554-r2" x="256.2" y="1776.8" textLength="1183.4" clip-path="url(#terminal-1207574554-line-72)">sequentially.&#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-1207574554-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-73)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1801.2" textLength="207.4" clip-path="url(#terminal-1207574554-line-73)">pull-prod-image&#160;&#160;</text><text class="terminal-1207574554-r2" x="256.2" y="1801.2" textLength="1183.4" clip-path="url(#terminal-1207574554-line-73)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#1 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-74)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1825.6" textLength="207.4" clip-path="url(#terminal-1207574554-line-74)">verify-prod-image</text><text class="terminal-1207574554-r2" x="256.2" y="1825.6" textLength="1183.4" clip-path="url(#terminal-1207574554-line-74)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1850" textLength="1464" clip-path="url(#terminal-1207574554-line-75)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="1850" textLength="12.2" clip-path="url(#terminal-1207574554-line-75)">
-</text><text class="terminal-1207574554-r4" x="0" y="1874.4" textLength="24.4" clip-path="url(#terminal-1207574554-line-76)">╭─</text><text class="terminal-1207574554-r4" x="24.4" y="1874.4" textLength="1415.2" clip-path="url(#terminal-1207574554-line-76)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1207574554-r4" x="1439.6" y="1874.4" textLength="24.4" clip-path="url(#term [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-77)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1898.8" textLength="402.6" clip-path="url(#terminal-1207574554-line-77)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1898.8" textLength="988.2" clip-path="url(#terminal-1207574554-line-77)">Verifies&#160;if&#160;all&#16 [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-78)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1923.2" textLength="402.6" clip-path="url(#terminal-1207574554-line-78)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1923.2" textLength="988.2" clip-path="url(#terminal-1207574554-line-78)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&# [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-79)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1947.6" textLength="402.6" clip-path="url(#terminal-1207574554-line-79)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1947.6" textLength="988.2" clip-path="url(#terminal-1207574554-line-79)">Prepare&#160;sdist/whl&#160;packag [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-1207574554-line-80)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1972" textLength="402.6" clip-path="url(#terminal-1207574554-line-80)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1972" textLength="988.2" clip-path="url(#terminal-1207574554-line-80)">Prepare&#160;sdist/whl&#160;pa [...]
-</text><text class="terminal-1207574554-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-1207574554-line-81)">│</text><text class="terminal-1207574554-r5" x="24.4" y="1996.4" textLength="402.6" clip-path="url(#terminal-1207574554-line-81)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="1996.4" textLength="988.2" clip-path="url(#terminal-1207574554-line-81)">Rele [...]
-</text><text class="terminal-1207574554-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-1207574554-line-82)">│</text><text class="terminal-1207574554-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-1207574554-line-82)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-1207574554-line-82)">Generates [...]
-</text><text class="terminal-1207574554-r4" x="0" y="2045.2" textLength="12.2" clip-path="url(#terminal-1207574554-line-83)">│</text><text class="terminal-1207574554-r5" x="24.4" y="2045.2" textLength="402.6" clip-path="url(#terminal-1207574554-line-83)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1207574554-r2" x="451.4" y="2045.2" textLength="988.2" clip-path="url(#terminal-1207574554-line-83)">Finds&#160;which&#160;de [...]
-</text><text class="terminal-1207574554-r4" x="0" y="2069.6" textLength="1464" clip-path="url(#terminal-1207574554-line-84)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1207574554-r2" x="1464" y="2069.6" textLength="12.2" clip-path="url(#terminal-1207574554-line-84)">
+    <g class="terminal-460130354-matrix">
+    <text class="terminal-460130354-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-460130354-line-0)">
+</text><text class="terminal-460130354-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-460130354-line-1)">Usage:&#160;</text><text class="terminal-460130354-r1" x="97.6" y="44.4" textLength="414.8" clip-path="url(#terminal-460130354-line-1)">breeze&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-460130354-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-460130354-line-1)">
+</text><text class="terminal-460130354-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-460130354-line-2)">
+</text><text class="terminal-460130354-r4" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-460130354-line-3)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="93.2" textLength="1415.2" clip-path="url(#terminal-460130354-line-3)">&#160;Basic&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;───────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="93.2" textLength="24.4" clip-pat [...]
+</text><text class="terminal-460130354-r4" x="0" y="117.6" textLength="12.2" clip-path="url(#terminal-460130354-line-4)">│</text><text class="terminal-460130354-r5" x="24.4" y="117.6" textLength="12.2" clip-path="url(#terminal-460130354-line-4)">-</text><text class="terminal-460130354-r5" x="36.6" y="117.6" textLength="85.4" clip-path="url(#terminal-460130354-line-4)">-python</text><text class="terminal-460130354-r6" x="305" y="117.6" textLength="24.4" clip-path="url(#terminal-460130354- [...]
+</text><text class="terminal-460130354-r4" x="0" y="142" textLength="12.2" clip-path="url(#terminal-460130354-line-5)">│</text><text class="terminal-460130354-r4" x="353.8" y="142" textLength="732" clip-path="url(#terminal-460130354-line-5)">[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;&#160;&#1 [...]
+</text><text class="terminal-460130354-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-460130354-line-6)">│</text><text class="terminal-460130354-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-460130354-line-6)">-</text><text class="terminal-460130354-r5" x="36.6" y="166.4" textLength="97.6" clip-path="url(#terminal-460130354-line-6)">-backend</text><text class="terminal-460130354-r6" x="305" y="166.4" textLength="24.4" clip-path="url(#terminal-460130354 [...]
+</text><text class="terminal-460130354-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-460130354-line-7)">│</text><text class="terminal-460130354-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-460130354-line-7)">-</text><text class="terminal-460130354-r5" x="36.6" y="190.8" textLength="109.8" clip-path="url(#terminal-460130354-line-7)">-postgres</text><text class="terminal-460130354-r5" x="146.4" y="190.8" textLength="97.6" clip-path="url(#terminal-46013 [...]
+</text><text class="terminal-460130354-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-460130354-line-8)">│</text><text class="terminal-460130354-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-460130354-line-8)">-</text><text class="terminal-460130354-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-460130354-line-8)">-mysql</text><text class="terminal-460130354-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-460130354 [...]
+</text><text class="terminal-460130354-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-460130354-line-9)">│</text><text class="terminal-460130354-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-460130354-line-9)">-</text><text class="terminal-460130354-r5" x="36.6" y="239.6" textLength="73.2" clip-path="url(#terminal-460130354-line-9)">-mssql</text><text class="terminal-460130354-r5" x="109.8" y="239.6" textLength="97.6" clip-path="url(#terminal-460130354 [...]
+</text><text class="terminal-460130354-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-460130354-line-10)">│</text><text class="terminal-460130354-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-460130354-line-10)">-</text><text class="terminal-460130354-r5" x="36.6" y="264" textLength="146.4" clip-path="url(#terminal-460130354-line-10)">-integration</text><text class="terminal-460130354-r2" x="353.8" y="264" textLength="1085.8" clip-path="url(#terminal-46013 [...]
+</text><text class="terminal-460130354-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-460130354-line-11)">│</text><text class="terminal-460130354-r7" x="353.8" y="288.4" textLength="1085.8" clip-path="url(#terminal-460130354-line-11)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;&#160;&#160;</text><text class="terminal-460130354-r4" x="1451.8 [...]
+</text><text class="terminal-460130354-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-460130354-line-12)">│</text><text class="terminal-460130354-r7" x="353.8" y="312.8" textLength="1085.8" clip-path="url(#terminal-460130354-line-12)">all)&#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;&#1 [...]
+</text><text class="terminal-460130354-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-460130354-line-13)">│</text><text class="terminal-460130354-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-460130354-line-13)">-</text><text class="terminal-460130354-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-460130354-line-13)">-forward</text><text class="terminal-460130354-r5" x="134.2" y="337.2" textLength="146.4" clip-path="url(#terminal-460 [...]
+</text><text class="terminal-460130354-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-460130354-line-14)">│</text><text class="terminal-460130354-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-460130354-line-14)">-</text><text class="terminal-460130354-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-460130354-line-14)">-db</text><text class="terminal-460130354-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-460130354- [...]
+</text><text class="terminal-460130354-r4" x="0" y="386" textLength="1464" clip-path="url(#terminal-460130354-line-15)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="386" textLength="12.2" clip-path="url(#terminal-460130354-line-15)">
+</text><text class="terminal-460130354-r4" x="0" y="410.4" textLength="24.4" clip-path="url(#terminal-460130354-line-16)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="410.4" textLength="1415.2" clip-path="url(#terminal-460130354-line-16)">&#160;Advanced&#160;flags&#160;for&#160;the&#160;default&#160;(shell)&#160;command&#160;────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="410.4" textLength="24.4" cli [...]
+</text><text class="terminal-460130354-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-460130354-line-17)">│</text><text class="terminal-460130354-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-460130354-line-17)">-</text><text class="terminal-460130354-r5" x="36.6" y="434.8" textLength="48.8" clip-path="url(#terminal-460130354-line-17)">-use</text><text class="terminal-460130354-r5" x="85.4" y="434.8" textLength="195.2" clip-path="url(#terminal-46013035 [...]
+</text><text class="terminal-460130354-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-460130354-line-18)">│</text><text class="terminal-460130354-r2" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-460130354-line-18)">`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;wheel&#160;packages&#160;or&#160;sdist&#160;packages&#160;&#160;&#160;</text><text class="terminal-460130354-r4" x="1451.8" y="459.2" textLength="12.2 [...]
+</text><text class="terminal-460130354-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-460130354-line-19)">│</text><text class="terminal-460130354-r2" x="366" y="483.6" textLength="573.4" clip-path="url(#terminal-460130354-line-19)">available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;</text><text class="terminal-460130354-r5" x="939.4" y="483.6" textLength="12.2" clip-path="url(#terminal-460130354-line-19)">-</text><text class="terminal-460130354-r [...]
+</text><text class="terminal-460130354-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-460130354-line-20)">│</text><text class="terminal-460130354-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-460130354-line-20)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#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-460130354-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-460130354-line-21)">│</text><text class="terminal-460130354-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-460130354-line-21)">-</text><text class="terminal-460130354-r5" x="36.6" y="532.4" textLength="97.6" clip-path="url(#terminal-460130354-line-21)">-airflow</text><text class="terminal-460130354-r5" x="134.2" y="532.4" textLength="85.4" clip-path="url(#terminal-4601 [...]
+</text><text class="terminal-460130354-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-460130354-line-22)">│</text><text class="terminal-460130354-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-460130354-line-22)">-</text><text class="terminal-460130354-r5" x="36.6" y="556.8" textLength="48.8" clip-path="url(#terminal-460130354-line-22)">-use</text><text class="terminal-460130354-r5" x="85.4" y="556.8" textLength="231.8" clip-path="url(#terminal-46013035 [...]
+</text><text class="terminal-460130354-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-460130354-line-23)">│</text><text class="terminal-460130354-r2" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-460130354-line-23)">entering&#160;breeze.&#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-460130354-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-460130354-line-24)">│</text><text class="terminal-460130354-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-460130354-line-24)">-</text><text class="terminal-460130354-r5" x="36.6" y="605.6" textLength="97.6" clip-path="url(#terminal-460130354-line-24)">-package</text><text class="terminal-460130354-r5" x="134.2" y="605.6" textLength="85.4" clip-path="url(#terminal-4601 [...]
+</text><text class="terminal-460130354-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-460130354-line-25)">│</text><text class="terminal-460130354-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-460130354-line-25)">-</text><text class="terminal-460130354-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-460130354-line-25)">-force</text><text class="terminal-460130354-r5" x="109.8" y="630" textLength="73.2" clip-path="url(#terminal-460130354-line [...]
+</text><text class="terminal-460130354-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-460130354-line-26)">│</text><text class="terminal-460130354-r5" x="24.4" y="654.4" textLength="12.2" clip-path="url(#terminal-460130354-line-26)">-</text><text class="terminal-460130354-r5" x="36.6" y="654.4" textLength="73.2" clip-path="url(#terminal-460130354-line-26)">-mount</text><text class="terminal-460130354-r5" x="109.8" y="654.4" textLength="97.6" clip-path="url(#terminal-460130 [...]
+</text><text class="terminal-460130354-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-460130354-line-27)">│</text><text class="terminal-460130354-r2" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-460130354-line-27)">selected).&#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-460130354-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-460130354-line-28)">│</text><text class="terminal-460130354-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-460130354-line-28)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-460130354-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-460130354-line-29)">│</text><text class="terminal-460130354-r4" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-460130354-line-29)">[default:&#160;selected]&#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-460130354-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-460130354-line-30)">│</text><text class="terminal-460130354-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-460130354-line-30)">-</text><text class="terminal-460130354-r5" x="36.6" y="752" textLength="85.4" clip-path="url(#terminal-460130354-line-30)">-debian</text><text class="terminal-460130354-r5" x="122" y="752" textLength="97.6" clip-path="url(#terminal-460130354-line- [...]
+</text><text class="terminal-460130354-r4" x="0" y="776.4" textLength="1464" clip-path="url(#terminal-460130354-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#terminal-460130354-line-31)">
+</text><text class="terminal-460130354-r4" x="0" y="800.8" textLength="24.4" clip-path="url(#terminal-460130354-line-32)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="800.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-32)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="800.8" textLength="24.4" clip-path="url(#terminal-46013035 [...]
+</text><text class="terminal-460130354-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-460130354-line-33)">│</text><text class="terminal-460130354-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-460130354-line-33)">-</text><text class="terminal-460130354-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-460130354-line-33)">-verbose</text><text class="terminal-460130354-r6" x="280.6" y="825.2" textLength="24.4" clip-path="url(#terminal-4601 [...]
+</text><text class="terminal-460130354-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-460130354-line-34)">│</text><text class="terminal-460130354-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-460130354-line-34)">-</text><text class="terminal-460130354-r5" x="36.6" y="849.6" textLength="48.8" clip-path="url(#terminal-460130354-line-34)">-dry</text><text class="terminal-460130354-r5" x="85.4" y="849.6" textLength="48.8" clip-path="url(#terminal-460130354 [...]
+</text><text class="terminal-460130354-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-460130354-line-35)">│</text><text class="terminal-460130354-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-460130354-line-35)">-</text><text class="terminal-460130354-r5" x="36.6" y="874" textLength="85.4" clip-path="url(#terminal-460130354-line-35)">-github</text><text class="terminal-460130354-r5" x="122" y="874" textLength="134.2" clip-path="url(#terminal-460130354-line [...]
+</text><text class="terminal-460130354-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-460130354-line-36)">│</text><text class="terminal-460130354-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-460130354-line-36)">-</text><text class="terminal-460130354-r5" x="36.6" y="898.4" textLength="85.4" clip-path="url(#terminal-460130354-line-36)">-answer</text><text class="terminal-460130354-r6" x="280.6" y="898.4" textLength="24.4" clip-path="url(#terminal-46013 [...]
+</text><text class="terminal-460130354-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-460130354-line-37)">│</text><text class="terminal-460130354-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-460130354-line-37)">-</text><text class="terminal-460130354-r5" x="36.6" y="922.8" textLength="61" clip-path="url(#terminal-460130354-line-37)">-help</text><text class="terminal-460130354-r6" x="280.6" y="922.8" textLength="24.4" clip-path="url(#terminal-460130354 [...]
+</text><text class="terminal-460130354-r4" x="0" y="947.2" textLength="1464" clip-path="url(#terminal-460130354-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="947.2" textLength="12.2" clip-path="url(#terminal-460130354-line-38)">
+</text><text class="terminal-460130354-r4" x="0" y="971.6" textLength="24.4" clip-path="url(#terminal-460130354-line-39)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="971.6" textLength="1415.2" clip-path="url(#terminal-460130354-line-39)">&#160;Developer&#160;tools&#160;───────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="971.6" textLength="24.4" clip-path="url(#terminal-460 [...]
+</text><text class="terminal-460130354-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-460130354-line-40)">│</text><text class="terminal-460130354-r5" x="24.4" y="996" textLength="183" clip-path="url(#terminal-460130354-line-40)">shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="996" textLength="1207.8" clip-path="url(#terminal-460130354-line-40)">Enter&#160;breeze.py&#160;environment.&#160;this&#160;is&# [...]
+</text><text class="terminal-460130354-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-460130354-line-41)">│</text><text class="terminal-460130354-r5" x="24.4" y="1020.4" textLength="183" clip-path="url(#terminal-460130354-line-41)">start-airflow&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1020.4" textLength="1207.8" clip-path="url(#terminal-460130354-line-41)">Enter&#160;breeze.py&#160;environment&#160;and&#160;starts&#160;all&#160;Airflow&#160;com [...]
+</text><text class="terminal-460130354-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-460130354-line-42)">│</text><text class="terminal-460130354-r5" x="24.4" y="1044.8" textLength="183" clip-path="url(#terminal-460130354-line-42)">exec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1044.8" textLength="1207.8" clip-path="url(#terminal-460130354-line-42)">Joins&#160;the&#160;interactive&#160;shell&# [...]
+</text><text class="terminal-460130354-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-460130354-line-43)">│</text><text class="terminal-460130354-r5" x="24.4" y="1069.2" textLength="183" clip-path="url(#terminal-460130354-line-43)">stop&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1069.2" textLength="1207.8" clip-path="url(#terminal-460130354-line-43)">Stop&#160;running&#160;breeze&#160;environme [...]
+</text><text class="terminal-460130354-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-460130354-line-44)">│</text><text class="terminal-460130354-r5" x="24.4" y="1093.6" textLength="183" clip-path="url(#terminal-460130354-line-44)">build-docs&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1093.6" textLength="1207.8" clip-path="url(#terminal-460130354-line-44)">Build&#160;documentation&#160;in&#160;the&#160;container.&#160;&#160;&#160 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-460130354-line-45)">│</text><text class="terminal-460130354-r5" x="24.4" y="1118" textLength="183" clip-path="url(#terminal-460130354-line-45)">static-checks&#160;&#160;</text><text class="terminal-460130354-r2" x="231.8" y="1118" textLength="1207.8" clip-path="url(#terminal-460130354-line-45)">Run&#160;static&#160;checks.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-460130354-r4" x="0" y="1142.4" textLength="1464" clip-path="url(#terminal-460130354-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1142.4" textLength="12.2" clip-path="url(#terminal-460130354-line-46)">
+</text><text class="terminal-460130354-r4" x="0" y="1166.8" textLength="24.4" clip-path="url(#terminal-460130354-line-47)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1166.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-47)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1166.8" textLength="24.4" clip-path="url(#terminal-46013 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-460130354-line-48)">│</text><text class="terminal-460130354-r5" x="24.4" y="1191.2" textLength="256.2" clip-path="url(#terminal-460130354-line-48)">docker-compose-tests&#160;</text><text class="terminal-460130354-r2" x="305" y="1191.2" textLength="1134.6" clip-path="url(#terminal-460130354-line-48)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-460130354-line-49)">│</text><text class="terminal-460130354-r5" x="24.4" y="1215.6" textLength="256.2" clip-path="url(#terminal-460130354-line-49)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="305" y="1215.6" textLength="1134.6" clip-path="url(#terminal-460130354-line-49)">Run&#160;the& [...]
+</text><text class="terminal-460130354-r4" x="0" y="1240" textLength="1464" clip-path="url(#terminal-460130354-line-50)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1240" textLength="12.2" clip-path="url(#terminal-460130354-line-50)">
+</text><text class="terminal-460130354-r4" x="0" y="1264.4" textLength="24.4" clip-path="url(#terminal-460130354-line-51)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1264.4" textLength="1415.2" clip-path="url(#terminal-460130354-line-51)">&#160;Configuration&#160;&amp;&#160;maintenance&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1264.4" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-460130354-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-460130354-line-52)">│</text><text class="terminal-460130354-r5" x="24.4" y="1288.8" textLength="305" clip-path="url(#terminal-460130354-line-52)">cleanup&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1288.8" textLength="1085.8" clip-path="url(#terminal-460130354-line-52)" [...]
+</text><text class="terminal-460130354-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-460130354-line-53)">│</text><text class="terminal-460130354-r2" x="353.8" y="1313.2" textLength="1085.8" clip-path="url(#terminal-460130354-line-53)">images.&#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;&#16 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-460130354-line-54)">│</text><text class="terminal-460130354-r5" x="24.4" y="1337.6" textLength="305" clip-path="url(#terminal-460130354-line-54)">self-upgrade&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1337.6" textLength="1085.8" clip-path="url(#terminal-460130354-line-54)">Self&#160;upgrade&#160;B [...]
+</text><text class="terminal-460130354-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-460130354-line-55)">│</text><text class="terminal-460130354-r5" x="24.4" y="1362" textLength="305" clip-path="url(#terminal-460130354-line-55)">setup-autocomplete&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1362" textLength="1085.8" clip-path="url(#terminal-460130354-line-55)">Enables&#160;autocompletion&#160;of&#160;breeze&#160;command [...]
+</text><text class="terminal-460130354-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-460130354-line-56)">│</text><text class="terminal-460130354-r5" x="24.4" y="1386.4" textLength="305" clip-path="url(#terminal-460130354-line-56)">config&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1386.4" textLength="1085.8" clip-path="url(#terminal-460130354-line [...]
+</text><text class="terminal-460130354-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-460130354-line-57)">│</text><text class="terminal-460130354-r5" x="24.4" y="1410.8" textLength="305" clip-path="url(#terminal-460130354-line-57)">regenerate-command-images</text><text class="terminal-460130354-r2" x="353.8" y="1410.8" textLength="1085.8" clip-path="url(#terminal-460130354-line-57)">Regenerate&#160;breeze&#160;command&#160;images.&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-460130354-line-58)">│</text><text class="terminal-460130354-r5" x="24.4" y="1435.2" textLength="305" clip-path="url(#terminal-460130354-line-58)">command-hash-export&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1435.2" textLength="1085.8" clip-path="url(#terminal-460130354-line-58)">Outputs&#160;hash&#160;of&#160;all&#160;click&#160;commands [...]
+</text><text class="terminal-460130354-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-460130354-line-59)">│</text><text class="terminal-460130354-r2" x="353.8" y="1459.6" textLength="1085.8" clip-path="url(#terminal-460130354-line-59)">images&#160;should&#160;be&#160;regenerated).&#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-460130354-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-460130354-line-60)">│</text><text class="terminal-460130354-r5" x="24.4" y="1484" textLength="305" clip-path="url(#terminal-460130354-line-60)">version&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="353.8" y="1484" textLength="1085.8" clip-path="url(#terminal-460130354-line-60)">Print [...]
+</text><text class="terminal-460130354-r4" x="0" y="1508.4" textLength="1464" clip-path="url(#terminal-460130354-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1508.4" textLength="12.2" clip-path="url(#terminal-460130354-line-61)">
+</text><text class="terminal-460130354-r4" x="0" y="1532.8" textLength="24.4" clip-path="url(#terminal-460130354-line-62)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1532.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-62)">&#160;CI&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1532.8" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-460130354-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-460130354-line-63)">│</text><text class="terminal-460130354-r5" x="24.4" y="1557.2" textLength="170.8" clip-path="url(#terminal-460130354-line-63)">build-image&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="219.6" y="1557.2" textLength="1220" clip-path="url(#terminal-460130354-line-63)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;f [...]
+</text><text class="terminal-460130354-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-460130354-line-64)">│</text><text class="terminal-460130354-r5" x="24.4" y="1581.6" textLength="170.8" clip-path="url(#terminal-460130354-line-64)">pull-image&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="219.6" y="1581.6" textLength="1220" clip-path="url(#terminal-460130354-line-64)">Pull&#160;and&#160;optionally&#160;verify&#160;CI&#160;images&#160;-&#160;possib [...]
+</text><text class="terminal-460130354-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-460130354-line-65)">│</text><text class="terminal-460130354-r5" x="24.4" y="1606" textLength="170.8" clip-path="url(#terminal-460130354-line-65)">verify-image&#160;&#160;</text><text class="terminal-460130354-r2" x="219.6" y="1606" textLength="1220" clip-path="url(#terminal-460130354-line-65)">Verify&#160;CI&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1630.4" textLength="1464" clip-path="url(#terminal-460130354-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1630.4" textLength="12.2" clip-path="url(#terminal-460130354-line-66)">
+</text><text class="terminal-460130354-r4" x="0" y="1654.8" textLength="24.4" clip-path="url(#terminal-460130354-line-67)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1654.8" textLength="1415.2" clip-path="url(#terminal-460130354-line-67)">&#160;Production&#160;Image&#160;tools&#160;────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1654.8" textLength="24.4" clip-path="url(#term [...]
+</text><text class="terminal-460130354-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-460130354-line-68)">│</text><text class="terminal-460130354-r5" x="24.4" y="1679.2" textLength="207.4" clip-path="url(#terminal-460130354-line-68)">build-prod-image&#160;</text><text class="terminal-460130354-r2" x="256.2" y="1679.2" textLength="1183.4" clip-path="url(#terminal-460130354-line-68)">Build&#160;Production&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#16 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-460130354-line-69)">│</text><text class="terminal-460130354-r2" x="256.2" y="1703.6" textLength="1183.4" clip-path="url(#terminal-460130354-line-69)">sequentially.&#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;&#16 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-460130354-line-70)">│</text><text class="terminal-460130354-r5" x="24.4" y="1728" textLength="207.4" clip-path="url(#terminal-460130354-line-70)">pull-prod-image&#160;&#160;</text><text class="terminal-460130354-r2" x="256.2" y="1728" textLength="1183.4" clip-path="url(#terminal-460130354-line-70)">Pull&#160;and&#160;optionally&#160;verify&#160;Production&#160;images&#160;-&#160;possibly& [...]
+</text><text class="terminal-460130354-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-460130354-line-71)">│</text><text class="terminal-460130354-r5" x="24.4" y="1752.4" textLength="207.4" clip-path="url(#terminal-460130354-line-71)">verify-prod-image</text><text class="terminal-460130354-r2" x="256.2" y="1752.4" textLength="1183.4" clip-path="url(#terminal-460130354-line-71)">Verify&#160;Production&#160;image.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-460130354-r4" x="0" y="1776.8" textLength="1464" clip-path="url(#terminal-460130354-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1776.8" textLength="12.2" clip-path="url(#terminal-460130354-line-72)">
+</text><text class="terminal-460130354-r4" x="0" y="1801.2" textLength="24.4" clip-path="url(#terminal-460130354-line-73)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1801.2" textLength="1415.2" clip-path="url(#terminal-460130354-line-73)">&#160;CI&#160;commands&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1801.2" textLength="24.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-460130354-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-460130354-line-74)">│</text><text class="terminal-460130354-r5" x="24.4" y="1825.6" textLength="378.2" clip-path="url(#terminal-460130354-line-74)">fix-ownership&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1825.6" textLength="1012.6" clip-path="url(#terminal-460130354-lin [...]
+</text><text class="terminal-460130354-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-460130354-line-75)">│</text><text class="terminal-460130354-r5" x="24.4" y="1850" textLength="378.2" clip-path="url(#terminal-460130354-line-75)">free-space&#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-460130354-r2" x="427" y="1850" textLength="1012.6" clip-path="url(#terminal-4601 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-460130354-line-76)">│</text><text class="terminal-460130354-r5" x="24.4" y="1874.4" textLength="378.2" clip-path="url(#terminal-460130354-line-76)">resource-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1874.4" textLength="1012.6" clip-path="url(#terminal-460130354-line-76) [...]
+</text><text class="terminal-460130354-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-460130354-line-77)">│</text><text class="terminal-460130354-r5" x="24.4" y="1898.8" textLength="378.2" clip-path="url(#terminal-460130354-line-77)">selective-check&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1898.8" textLength="1012.6" clip-path="url(#terminal-460130354-line-77)">Che [...]
+</text><text class="terminal-460130354-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-460130354-line-78)">│</text><text class="terminal-460130354-r5" x="24.4" y="1923.2" textLength="378.2" clip-path="url(#terminal-460130354-line-78)">find-newer-dependencies&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="427" y="1923.2" textLength="1012.6" clip-path="url(#terminal-460130354-line-78)">Finds&#160;which&#160;dependencies&#160;are [...]
+</text><text class="terminal-460130354-r4" x="0" y="1947.6" textLength="1464" clip-path="url(#terminal-460130354-line-79)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="1947.6" textLength="12.2" clip-path="url(#terminal-460130354-line-79)">
+</text><text class="terminal-460130354-r4" x="0" y="1972" textLength="24.4" clip-path="url(#terminal-460130354-line-80)">╭─</text><text class="terminal-460130354-r4" x="24.4" y="1972" textLength="1415.2" clip-path="url(#terminal-460130354-line-80)">&#160;Release&#160;management&#160;────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-460130354-r4" x="1439.6" y="1972" textLength="24.4" clip-path="url(#terminal-460130 [...]
+</text><text class="terminal-460130354-r4" x="0" y="1996.4" textLength="12.2" clip-path="url(#terminal-460130354-line-81)">│</text><text class="terminal-460130354-r5" x="24.4" y="1996.4" textLength="402.6" clip-path="url(#terminal-460130354-line-81)">verify-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="1996.4" textLength="988.2" clip-path="url(#terminal-460130354-line-81)">Verifies&#160;if&#160;all&#160;prov [...]
+</text><text class="terminal-460130354-r4" x="0" y="2020.8" textLength="12.2" clip-path="url(#terminal-460130354-line-82)">│</text><text class="terminal-460130354-r5" x="24.4" y="2020.8" textLength="402.6" clip-path="url(#terminal-460130354-line-82)">prepare-provider-documentation&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2020.8" textLength="988.2" clip-path="url(#terminal-460130354-line-82)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;in [...]
+</text><text class="terminal-460130354-r4" x="0" y="2045.2" textLength="12.2" clip-path="url(#terminal-460130354-line-83)">│</text><text class="terminal-460130354-r5" x="24.4" y="2045.2" textLength="402.6" clip-path="url(#terminal-460130354-line-83)">prepare-provider-packages&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2045.2" textLength="988.2" clip-path="url(#terminal-460130354-line-83)">Prepare&#160;sdist/whl&#160;packages&#16 [...]
+</text><text class="terminal-460130354-r4" x="0" y="2069.6" textLength="12.2" clip-path="url(#terminal-460130354-line-84)">│</text><text class="terminal-460130354-r5" x="24.4" y="2069.6" textLength="402.6" clip-path="url(#terminal-460130354-line-84)">prepare-airflow-package&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2069.6" textLength="988.2" clip-path="url(#terminal-460130354-line-84)">Prepare&#160;sdist/whl&#160;pa [...]
+</text><text class="terminal-460130354-r4" x="0" y="2094" textLength="12.2" clip-path="url(#terminal-460130354-line-85)">│</text><text class="terminal-460130354-r5" x="24.4" y="2094" textLength="402.6" clip-path="url(#terminal-460130354-line-85)">release-prod-images&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2094" textLength="988.2" clip-path="url(#terminal-460130354-line-85)">Release&#160;pro [...]
+</text><text class="terminal-460130354-r4" x="0" y="2118.4" textLength="12.2" clip-path="url(#terminal-460130354-line-86)">│</text><text class="terminal-460130354-r5" x="24.4" y="2118.4" textLength="402.6" clip-path="url(#terminal-460130354-line-86)">generate-constraints&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-460130354-r2" x="451.4" y="2118.4" textLength="988.2" clip-path="url(#terminal-460130354-line-86)">Generates&#160; [...]
+</text><text class="terminal-460130354-r4" x="0" y="2142.8" textLength="1464" clip-path="url(#terminal-460130354-line-87)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-460130354-r2" x="1464" y="2142.8" textLength="12.2" clip-path="url(#terminal-460130354-line-87)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-selective-check.svg b/images/breeze/output-selective-check.svg
new file mode 100644
index 0000000000..3ea08a5bf7
--- /dev/null
+++ b/images/breeze/output-selective-check.svg
@@ -0,0 +1,132 @@
+<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .terminal-3258521135-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .terminal-3258521135-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .terminal-3258521135-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-3258521135-r2 { fill: #c5c8c6 }
+.terminal-3258521135-r3 { fill: #d0b344;font-weight: bold }
+.terminal-3258521135-r4 { fill: #868887 }
+.terminal-3258521135-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-3258521135-r6 { fill: #8d7b39 }
+.terminal-3258521135-r7 { fill: #98a84b;font-weight: bold }
+    </style>
+
+    <defs>
+    <clipPath id="terminal-3258521135-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="438.2" />
+    </clipPath>
+    <clipPath id="terminal-3258521135-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-3258521135-line-16">
+    <rect x="0" y="391.9" 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="487.2" rx="8"/><text class="terminal-3258521135-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;selective-check</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-3258521135-clip-terminal)">
+    
+    <g class="terminal-3258521135-matrix">
+    <text class="terminal-3258521135-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3258521135-line-0)">
+</text><text class="terminal-3258521135-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3258521135-line-1)">Usage:&#160;</text><text class="terminal-3258521135-r1" x="97.6" y="44.4" textLength="390.4" clip-path="url(#terminal-3258521135-line-1)">breeze&#160;selective-check&#160;[OPTIONS]</text><text class="terminal-3258521135-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-1)">
+</text><text class="terminal-3258521135-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-2)">
+</text><text class="terminal-3258521135-r2" x="12.2" y="93.2" textLength="768.6" clip-path="url(#terminal-3258521135-line-3)">Checks&#160;what&#160;kind&#160;of&#160;tests&#160;should&#160;be&#160;run&#160;for&#160;an&#160;incoming&#160;commit.</text><text class="terminal-3258521135-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3258521135-line-3)">
+</text><text class="terminal-3258521135-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-4)">
+</text><text class="terminal-3258521135-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3258521135-line-5)">╭─</text><text class="terminal-3258521135-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3258521135-line-5)">&#160;Selective&#160;check&#160;flags&#160;─────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3258521135-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-3 [...]
+</text><text class="terminal-3258521135-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-6)">│</text><text class="terminal-3258521135-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-6)">-</text><text class="terminal-3258521135-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3258521135-line-6)">-commit</text><text class="terminal-3258521135-r5" x="122" y="166.4" textLength="48.8" clip-path="url(#terminal-325 [...]
+</text><text class="terminal-3258521135-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-7)">│</text><text class="terminal-3258521135-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-7)">-</text><text class="terminal-3258521135-r5" x="36.6" y="190.8" textLength="36.6" clip-path="url(#terminal-3258521135-line-7)">-pr</text><text class="terminal-3258521135-r5" x="73.2" y="190.8" textLength="85.4" clip-path="url(#terminal-325852 [...]
+</text><text class="terminal-3258521135-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3258521135-line-8)">│</text><text class="terminal-3258521135-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3258521135-line-8)">-</text><text class="terminal-3258521135-r5" x="36.6" y="215.2" textLength="97.6" clip-path="url(#terminal-3258521135-line-8)">-default</text><text class="terminal-3258521135-r5" x="134.2" y="215.2" textLength="85.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-3258521135-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-9)">│</text><text class="terminal-3258521135-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-9)">-</text><text class="terminal-3258521135-r5" x="36.6" y="239.6" textLength="85.4" clip-path="url(#terminal-3258521135-line-9)">-github</text><text class="terminal-3258521135-r5" x="122" y="239.6" textLength="134.2" clip-path="url(#terminal-32 [...]
+</text><text class="terminal-3258521135-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3258521135-line-10)">│</text><text class="terminal-3258521135-r6" x="305" y="264" textLength="927.2" clip-path="url(#terminal-3258521135-line-10)">(pull_request&#160;|&#160;pull_request_review&#160;|&#160;pull_request_target&#160;|&#160;push&#160;|&#160;schedule)</text><text class="terminal-3258521135-r4" x="1451.8" y="264" textLength="12.2" clip-path="url(#terminal-3258521135-line-10)">│ [...]
+</text><text class="terminal-3258521135-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-11)">│</text><text class="terminal-3258521135-r4" x="305" y="288.4" textLength="927.2" clip-path="url(#terminal-3258521135-line-11)">[default:&#160;pull_request]&#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-3258521135-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-3258521135-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3258521135-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-12)">
+</text><text class="terminal-3258521135-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-3258521135-line-13)">╭─</text><text class="terminal-3258521135-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-3258521135-line-13)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3258521135-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#terminal-325 [...]
+</text><text class="terminal-3258521135-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-14)">│</text><text class="terminal-3258521135-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3258521135-line-14)">-</text><text class="terminal-3258521135-r5" x="36.6" y="361.6" textLength="97.6" clip-path="url(#terminal-3258521135-line-14)">-verbose</text><text class="terminal-3258521135-r7" x="158.6" y="361.6" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-3258521135-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3258521135-line-15)">│</text><text class="terminal-3258521135-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3258521135-line-15)">-</text><text class="terminal-3258521135-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-3258521135-line-15)">-dry</text><text class="terminal-3258521135-r5" x="85.4" y="386" textLength="48.8" clip-path="url(#terminal-3258521135 [...]
+</text><text class="terminal-3258521135-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-16)">│</text><text class="terminal-3258521135-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3258521135-line-16)">-</text><text class="terminal-3258521135-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-3258521135-line-16)">-help</text><text class="terminal-3258521135-r7" x="158.6" y="410.4" textLength="24.4" clip-path="url(#terminal-32 [...]
+</text><text class="terminal-3258521135-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-3258521135-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3258521135-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-3258521135-line-17)">
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/images/breeze/output-tests.svg b/images/breeze/output-tests.svg
index 1d819816f2..0bb6680bef 100644
--- a/images/breeze/output-tests.svg
+++ b/images/breeze/output-tests.svg
@@ -19,177 +19,177 @@
         font-weight: 700;
     }
 
-    .terminal-3301140235-matrix {
+    .terminal-2980146706-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3301140235-title {
+    .terminal-2980146706-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3301140235-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3301140235-r2 { fill: #c5c8c6 }
-.terminal-3301140235-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3301140235-r4 { fill: #868887 }
-.terminal-3301140235-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3301140235-r6 { fill: #8d7b39 }
-.terminal-3301140235-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-2980146706-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2980146706-r2 { fill: #c5c8c6 }
+.terminal-2980146706-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2980146706-r4 { fill: #868887 }
+.terminal-2980146706-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2980146706-r6 { fill: #8d7b39 }
+.terminal-2980146706-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-3301140235-clip-terminal">
+    <clipPath id="terminal-2980146706-clip-terminal">
       <rect x="0" y="0" width="1463.0" height="828.5999999999999" />
     </clipPath>
-    <clipPath id="terminal-3301140235-line-0">
+    <clipPath id="terminal-2980146706-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-1">
+<clipPath id="terminal-2980146706-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-2">
+<clipPath id="terminal-2980146706-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-3">
+<clipPath id="terminal-2980146706-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-4">
+<clipPath id="terminal-2980146706-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-5">
+<clipPath id="terminal-2980146706-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-6">
+<clipPath id="terminal-2980146706-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-7">
+<clipPath id="terminal-2980146706-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-8">
+<clipPath id="terminal-2980146706-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-9">
+<clipPath id="terminal-2980146706-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-10">
+<clipPath id="terminal-2980146706-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-11">
+<clipPath id="terminal-2980146706-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-12">
+<clipPath id="terminal-2980146706-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-13">
+<clipPath id="terminal-2980146706-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-14">
+<clipPath id="terminal-2980146706-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-15">
+<clipPath id="terminal-2980146706-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-16">
+<clipPath id="terminal-2980146706-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-17">
+<clipPath id="terminal-2980146706-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-18">
+<clipPath id="terminal-2980146706-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-19">
+<clipPath id="terminal-2980146706-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-20">
+<clipPath id="terminal-2980146706-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-21">
+<clipPath id="terminal-2980146706-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-22">
+<clipPath id="terminal-2980146706-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-23">
+<clipPath id="terminal-2980146706-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-24">
+<clipPath id="terminal-2980146706-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-25">
+<clipPath id="terminal-2980146706-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-26">
+<clipPath id="terminal-2980146706-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-27">
+<clipPath id="terminal-2980146706-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-28">
+<clipPath id="terminal-2980146706-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-29">
+<clipPath id="terminal-2980146706-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-30">
+<clipPath id="terminal-2980146706-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-31">
+<clipPath id="terminal-2980146706-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3301140235-line-32">
+<clipPath id="terminal-2980146706-line-32">
     <rect x="0" y="782.3" 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="877.6" rx="8"/><text class="terminal-3301140235-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="877.6" rx="8"/><text class="terminal-2980146706-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;tests</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-3301140235-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2980146706-clip-terminal)">
     
-    <g class="terminal-3301140235-matrix">
-    <text class="terminal-3301140235-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3301140235-line-0)">
-</text><text class="terminal-3301140235-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3301140235-line-1)">Usage:&#160;</text><text class="terminal-3301140235-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-3301140235-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3301140235-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-1)">
-</text><text class="terminal-3301140235-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-2)">
-</text><text class="terminal-3301140235-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-3301140235-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-3301140235-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-3)">
-</text><text class="terminal-3301140235-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-4)">
-</text><text class="terminal-3301140235-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3301140235-line-5)">╭─</text><text class="terminal-3301140235-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3301140235-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3301140235-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
-</text><text class="terminal-3301140235-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-6)">│</text><text class="terminal-3301140235-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-6)">-</text><text class="terminal-3301140235-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-3301140235-line-6)">-integration</text><text class="terminal-3301140235-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
-</text><text class="terminal-3301140235-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-7)">│</text><text class="terminal-3301140235-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-3301140235-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-3301140235-r4" x="1451.8" y=" [...]
-</text><text class="terminal-3301140235-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-8)">│</text><text class="terminal-3301140235-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-8)">-</text><text class="terminal-3301140235-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-3301140235-line-8)">-test</text><text class="terminal-3301140235-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-33011402 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-9)">│</text><text class="terminal-3301140235-r6" x="317.2" y="239.6" textLength="1122.4" clip-path="url(#terminal-3301140235-line-9)">(All&#160;|&#160;Always&#160;|&#160;Core&#160;|&#160;Providers&#160;|&#160;API&#160;|&#160;CLI&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;WWW&#160;|&#160;Postgres&#160;|&#160;MySQL&#160;</text><text class="terminal-3301140235-r4 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3301140235-line-10)">│</text><text class="terminal-3301140235-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-3301140235-line-10)">|&#160;Helm&#160;|&#160;Quarantined)&#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-3301140235-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-11)">│</text><text class="terminal-3301140235-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-11)">-</text><text class="terminal-3301140235-r5" x="36.6" y="288.4" textLength="36.6" clip-path="url(#terminal-3301140235-line-11)">-db</text><text class="terminal-3301140235-r5" x="73.2" y="288.4" textLength="73.2" clip-path="url(#terminal-330 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-12)">│</text><text class="terminal-3301140235-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-12)">-</text><text class="terminal-3301140235-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-3301140235-line-12)">-backend</text><text class="terminal-3301140235-r7" x="268.4" y="312.8" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-3301140235-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-13)">│</text><text class="terminal-3301140235-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-13)">-</text><text class="terminal-3301140235-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-3301140235-line-13)">-python</text><text class="terminal-3301140235-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3301140235-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-14)">│</text><text class="terminal-3301140235-r4" x="317.2" y="361.6" textLength="732" clip-path="url(#terminal-3301140235-line-14)">[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-3301140235-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3301140235-line-15)">│</text><text class="terminal-3301140235-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3301140235-line-15)">-</text><text class="terminal-3301140235-r5" x="36.6" y="386" textLength="109.8" clip-path="url(#terminal-3301140235-line-15)">-postgres</text><text class="terminal-3301140235-r5" x="146.4" y="386" textLength="97.6" clip-path="url(#terminal-330 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-16)">│</text><text class="terminal-3301140235-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-16)">-</text><text class="terminal-3301140235-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-3301140235-line-16)">-mysql</text><text class="terminal-3301140235-r5" x="109.8" y="410.4" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3301140235-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-17)">│</text><text class="terminal-3301140235-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-17)">-</text><text class="terminal-3301140235-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-3301140235-line-17)">-mssql</text><text class="terminal-3301140235-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3301140235-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-3301140235-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3301140235-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-18)">
-</text><text class="terminal-3301140235-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-3301140235-line-19)">╭─</text><text class="terminal-3301140235-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-3301140235-line-19)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3301140235-r4" x="1439.6" y="483.6" textLength="24.4" clip-pat [...]
-</text><text class="terminal-3301140235-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3301140235-line-20)">│</text><text class="terminal-3301140235-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-3301140235-line-20)">-</text><text class="terminal-3301140235-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-3301140235-line-20)">-limit</text><text class="terminal-3301140235-r5" x="109.8" y="508" textLength="195.2" clip-path="url(#terminal-330114 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-21)">│</text><text class="terminal-3301140235-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-21)">-</text><text class="terminal-3301140235-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-3301140235-line-21)">-image</text><text class="terminal-3301140235-r5" x="109.8" y="532.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3301140235-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-22)">│</text><text class="terminal-3301140235-r2" x="378.2" y="556.8" textLength="1061.4" clip-path="url(#terminal-3301140235-line-22)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-3301140235-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-23)">│</text><text class="terminal-3301140235-r6" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#terminal-3301140235-line-23)">(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;&#1 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-24)">│</text><text class="terminal-3301140235-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3301140235-line-24)">-</text><text class="terminal-3301140235-r5" x="36.6" y="605.6" textLength="73.2" clip-path="url(#terminal-3301140235-line-24)">-mount</text><text class="terminal-3301140235-r5" x="109.8" y="605.6" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3301140235-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3301140235-line-25)">│</text><text class="terminal-3301140235-r2" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-3301140235-line-25)">selected).&#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-3301140235-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-26)">│</text><text class="terminal-3301140235-r6" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-3301140235-line-26)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-3301140235-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-27)">│</text><text class="terminal-3301140235-r4" x="378.2" y="678.8" textLength="1061.4" clip-path="url(#terminal-3301140235-line-27)">[default:&#160;selected]&#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-3301140235-r4" x="0" y="703.2" textLength="1464" clip-path="url(#terminal-3301140235-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3301140235-r2" x="1464" y="703.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-28)">
-</text><text class="terminal-3301140235-r4" x="0" y="727.6" textLength="24.4" clip-path="url(#terminal-3301140235-line-29)">╭─</text><text class="terminal-3301140235-r4" x="24.4" y="727.6" textLength="1415.2" clip-path="url(#terminal-3301140235-line-29)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3301140235-r4" x="1439.6" y="727.6" textLength="24.4" clip-path="url(#terminal-330 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3301140235-line-30)">│</text><text class="terminal-3301140235-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-3301140235-line-30)">-</text><text class="terminal-3301140235-r5" x="36.6" y="752" textLength="48.8" clip-path="url(#terminal-3301140235-line-30)">-dry</text><text class="terminal-3301140235-r5" x="85.4" y="752" textLength="48.8" clip-path="url(#terminal-3301140235 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-31)">│</text><text class="terminal-3301140235-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3301140235-line-31)">-</text><text class="terminal-3301140235-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-3301140235-line-31)">-verbose</text><text class="terminal-3301140235-r7" x="158.6" y="776.4" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-3301140235-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-32)">│</text><text class="terminal-3301140235-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-3301140235-line-32)">-</text><text class="terminal-3301140235-r5" x="36.6" y="800.8" textLength="61" clip-path="url(#terminal-3301140235-line-32)">-help</text><text class="terminal-3301140235-r7" x="158.6" y="800.8" textLength="24.4" clip-path="url(#terminal-33 [...]
-</text><text class="terminal-3301140235-r4" x="0" y="825.2" textLength="1464" clip-path="url(#terminal-3301140235-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3301140235-r2" x="1464" y="825.2" textLength="12.2" clip-path="url(#terminal-3301140235-line-33)">
+    <g class="terminal-2980146706-matrix">
+    <text class="terminal-2980146706-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2980146706-line-0)">
+</text><text class="terminal-2980146706-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2980146706-line-1)">Usage:&#160;</text><text class="terminal-2980146706-r1" x="97.6" y="44.4" textLength="549" clip-path="url(#terminal-2980146706-line-1)">breeze&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2980146706-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-1)">
+</text><text class="terminal-2980146706-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-2)">
+</text><text class="terminal-2980146706-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-2980146706-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-2980146706-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-3)">
+</text><text class="terminal-2980146706-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-4)">
+</text><text class="terminal-2980146706-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2980146706-line-5)">╭─</text><text class="terminal-2980146706-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2980146706-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2980146706-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-2980146706-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-6)">│</text><text class="terminal-2980146706-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-6)">-</text><text class="terminal-2980146706-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-2980146706-line-6)">-integration</text><text class="terminal-2980146706-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
+</text><text class="terminal-2980146706-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-7)">│</text><text class="terminal-2980146706-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-2980146706-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-2980146706-r4" x="1451.8" y=" [...]
+</text><text class="terminal-2980146706-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-8)">│</text><text class="terminal-2980146706-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-8)">-</text><text class="terminal-2980146706-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-2980146706-line-8)">-test</text><text class="terminal-2980146706-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-29801467 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-9)">│</text><text class="terminal-2980146706-r6" x="317.2" y="239.6" textLength="1122.4" clip-path="url(#terminal-2980146706-line-9)">(All&#160;|&#160;Always&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;Helm&#160;|&#160;&#160;</text><text class="terminal-298 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2980146706-line-10)">│</text><text class="terminal-2980146706-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-2980146706-line-10)">Postgres&#160;|&#160;MySQL&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Quarantine)&#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-2980146706-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-11)">│</text><text class="terminal-2980146706-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-11)">-</text><text class="terminal-2980146706-r5" x="36.6" y="288.4" textLength="36.6" clip-path="url(#terminal-2980146706-line-11)">-db</text><text class="terminal-2980146706-r5" x="73.2" y="288.4" textLength="73.2" clip-path="url(#terminal-298 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-12)">│</text><text class="terminal-2980146706-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-12)">-</text><text class="terminal-2980146706-r5" x="36.6" y="312.8" textLength="97.6" clip-path="url(#terminal-2980146706-line-12)">-backend</text><text class="terminal-2980146706-r7" x="268.4" y="312.8" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2980146706-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-13)">│</text><text class="terminal-2980146706-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-13)">-</text><text class="terminal-2980146706-r5" x="36.6" y="337.2" textLength="85.4" clip-path="url(#terminal-2980146706-line-13)">-python</text><text class="terminal-2980146706-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2980146706-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-14)">│</text><text class="terminal-2980146706-r4" x="317.2" y="361.6" textLength="732" clip-path="url(#terminal-2980146706-line-14)">[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-2980146706-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2980146706-line-15)">│</text><text class="terminal-2980146706-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-2980146706-line-15)">-</text><text class="terminal-2980146706-r5" x="36.6" y="386" textLength="109.8" clip-path="url(#terminal-2980146706-line-15)">-postgres</text><text class="terminal-2980146706-r5" x="146.4" y="386" textLength="97.6" clip-path="url(#terminal-298 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-16)">│</text><text class="terminal-2980146706-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-16)">-</text><text class="terminal-2980146706-r5" x="36.6" y="410.4" textLength="73.2" clip-path="url(#terminal-2980146706-line-16)">-mysql</text><text class="terminal-2980146706-r5" x="109.8" y="410.4" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2980146706-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-17)">│</text><text class="terminal-2980146706-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-17)">-</text><text class="terminal-2980146706-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-2980146706-line-17)">-mssql</text><text class="terminal-2980146706-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2980146706-r4" x="0" y="459.2" textLength="1464" clip-path="url(#terminal-2980146706-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2980146706-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-18)">
+</text><text class="terminal-2980146706-r4" x="0" y="483.6" textLength="24.4" clip-path="url(#terminal-2980146706-line-19)">╭─</text><text class="terminal-2980146706-r4" x="24.4" y="483.6" textLength="1415.2" clip-path="url(#terminal-2980146706-line-19)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2980146706-r4" x="1439.6" y="483.6" textLength="24.4" clip-pat [...]
+</text><text class="terminal-2980146706-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2980146706-line-20)">│</text><text class="terminal-2980146706-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-2980146706-line-20)">-</text><text class="terminal-2980146706-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-2980146706-line-20)">-limit</text><text class="terminal-2980146706-r5" x="109.8" y="508" textLength="195.2" clip-path="url(#terminal-298014 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-21)">│</text><text class="terminal-2980146706-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-21)">-</text><text class="terminal-2980146706-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-2980146706-line-21)">-image</text><text class="terminal-2980146706-r5" x="109.8" y="532.4" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2980146706-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-22)">│</text><text class="terminal-2980146706-r2" x="378.2" y="556.8" textLength="1061.4" clip-path="url(#terminal-2980146706-line-22)">when&#160;using&#160;to&#160;run&#160;shell&#160;or&#160;tests)&#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-2980146706-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-23)">│</text><text class="terminal-2980146706-r6" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#terminal-2980146706-line-23)">(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;&#1 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-24)">│</text><text class="terminal-2980146706-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-2980146706-line-24)">-</text><text class="terminal-2980146706-r5" x="36.6" y="605.6" textLength="73.2" clip-path="url(#terminal-2980146706-line-24)">-mount</text><text class="terminal-2980146706-r5" x="109.8" y="605.6" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2980146706-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2980146706-line-25)">│</text><text class="terminal-2980146706-r2" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-2980146706-line-25)">selected).&#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-2980146706-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-26)">│</text><text class="terminal-2980146706-r6" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-2980146706-line-26)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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-2980146706-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-27)">│</text><text class="terminal-2980146706-r4" x="378.2" y="678.8" textLength="1061.4" clip-path="url(#terminal-2980146706-line-27)">[default:&#160;selected]&#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-2980146706-r4" x="0" y="703.2" textLength="1464" clip-path="url(#terminal-2980146706-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2980146706-r2" x="1464" y="703.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-28)">
+</text><text class="terminal-2980146706-r4" x="0" y="727.6" textLength="24.4" clip-path="url(#terminal-2980146706-line-29)">╭─</text><text class="terminal-2980146706-r4" x="24.4" y="727.6" textLength="1415.2" clip-path="url(#terminal-2980146706-line-29)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2980146706-r4" x="1439.6" y="727.6" textLength="24.4" clip-path="url(#terminal-298 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2980146706-line-30)">│</text><text class="terminal-2980146706-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-2980146706-line-30)">-</text><text class="terminal-2980146706-r5" x="36.6" y="752" textLength="48.8" clip-path="url(#terminal-2980146706-line-30)">-dry</text><text class="terminal-2980146706-r5" x="85.4" y="752" textLength="48.8" clip-path="url(#terminal-2980146706 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-31)">│</text><text class="terminal-2980146706-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2980146706-line-31)">-</text><text class="terminal-2980146706-r5" x="36.6" y="776.4" textLength="97.6" clip-path="url(#terminal-2980146706-line-31)">-verbose</text><text class="terminal-2980146706-r7" x="158.6" y="776.4" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2980146706-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-32)">│</text><text class="terminal-2980146706-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-2980146706-line-32)">-</text><text class="terminal-2980146706-r5" x="36.6" y="800.8" textLength="61" clip-path="url(#terminal-2980146706-line-32)">-help</text><text class="terminal-2980146706-r7" x="158.6" y="800.8" textLength="24.4" clip-path="url(#terminal-29 [...]
+</text><text class="terminal-2980146706-r4" x="0" y="825.2" textLength="1464" clip-path="url(#terminal-2980146706-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2980146706-r2" x="1464" y="825.2" textLength="12.2" clip-path="url(#terminal-2980146706-line-33)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/selective_ci_checks.sh b/scripts/ci/selective_ci_checks.sh
deleted file mode 100755
index 26fbf13f66..0000000000
--- a/scripts/ci/selective_ci_checks.sh
+++ /dev/null
@@ -1,768 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-# shellcheck source=scripts/ci/libraries/_script_init.sh
-. ./scripts/ci/libraries/_script_init.sh
-
-# Parameter:
-#
-# $1 - COMMIT SHA of the incoming commit. If this parameter is missing, this script does not check anything,
-#      it simply sets all the version outputs that determine that all tests should be run.
-#      This happens in case the even triggering the workflow is 'schedule' or 'push'.
-#
-# The logic of retrieving changes works by comparing the incoming commit with the target branch
-# The commit addresses.
-#
-#
-declare -a pattern_array
-
-if [[ ${PR_LABELS=} == *"full tests needed"* ]]; then
-    echo
-    echo "Found the right PR labels in '${PR_LABELS=}': 'full tests needed''"
-    echo
-    FULL_TESTS_NEEDED_LABEL="true"
-else
-    echo
-    echo "Did not find the right PR labels in '${PR_LABELS=}': 'full tests needed'"
-    echo
-    FULL_TESTS_NEEDED_LABEL="false"
-fi
-
-function check_upgrade_to_newer_dependencies_needed() {
-    if [[ ${GITHUB_EVENT_NAME=} == 'push' || ${GITHUB_EVENT_NAME=} == "scheduled" ]]; then
-        # Trigger upgrading to latest constraints when we are in push or schedule event
-        upgrade_to_newer_dependencies="true"
-    fi
-}
-
-function output_all_basic_variables() {
-    if [[ ${FULL_TESTS_NEEDED_LABEL} == "true" ]]; then
-        initialization::ga_output python-versions \
-            "$(initialization::parameters_to_json "${CURRENT_PYTHON_MAJOR_MINOR_VERSIONS[@]}")"
-        initialization::ga_output all-python-versions \
-            "$(initialization::parameters_to_json "${ALL_PYTHON_MAJOR_MINOR_VERSIONS[@]}")"
-        initialization::ga_output all-python-versions-list-as-string "${ALL_PYTHON_MAJOR_MINOR_VERSIONS[*]}"
-        initialization::ga_output python-versions-list-as-string "${CURRENT_PYTHON_MAJOR_MINOR_VERSIONS[*]}"
-        initialization::ga_output kubernetes-versions-list-as-string "${CURRENT_KUBERNETES_VERSIONS[*]}"
-    else
-        initialization::ga_output python-versions \
-            "$(initialization::parameters_to_json "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}")"
-        # this will work as long as DEFAULT_PYTHON_MAJOR_VERSION is the same on HEAD
-        # all-python-versions are used in BuildImage Workflow
-        initialization::ga_output all-python-versions \
-            "$(initialization::parameters_to_json "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}")"
-        initialization::ga_output all-python-versions-list-as-string "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}"
-        initialization::ga_output python-versions-list-as-string "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}"
-        initialization::ga_output kubernetes-versions-list-as-string "${DEFAULT_KUBERNETES_VERSION}"
-    fi
-    initialization::ga_output default-python-version "${DEFAULT_PYTHON_MAJOR_MINOR_VERSION}"
-
-    if [[ ${FULL_TESTS_NEEDED_LABEL} == "true" ]]; then
-        initialization::ga_output kubernetes-versions \
-            "$(initialization::parameters_to_json "${CURRENT_KUBERNETES_VERSIONS[@]}")"
-    else
-        initialization::ga_output kubernetes-versions \
-            "$(initialization::parameters_to_json "${KUBERNETES_VERSION}")"
-    fi
-    initialization::ga_output default-kubernetes-version "${KUBERNETES_VERSION}"
-
-    initialization::ga_output kubernetes-modes \
-        "$(initialization::parameters_to_json "${CURRENT_KUBERNETES_MODES[@]}")"
-    initialization::ga_output default-kubernetes-mode "${KUBERNETES_MODE}"
-
-    if [[ ${FULL_TESTS_NEEDED_LABEL} == "true" ]]; then
-        initialization::ga_output postgres-versions \
-            "$(initialization::parameters_to_json "${CURRENT_POSTGRES_VERSIONS[@]}")"
-    else
-        initialization::ga_output postgres-versions \
-            "$(initialization::parameters_to_json "${POSTGRES_VERSION}")"
-    fi
-    initialization::ga_output default-postgres-version "${POSTGRES_VERSION}"
-
-    if [[ ${FULL_TESTS_NEEDED_LABEL} == "true" ]]; then
-        initialization::ga_output mysql-versions \
-            "$(initialization::parameters_to_json "${CURRENT_MYSQL_VERSIONS[@]}")"
-    else
-        initialization::ga_output mysql-versions \
-            "$(initialization::parameters_to_json "${MYSQL_VERSION}")"
-    fi
-    initialization::ga_output default-mysql-version "${MYSQL_VERSION}"
-
-    if [[ ${FULL_TESTS_NEEDED_LABEL} == "true" ]]; then
-        initialization::ga_output mssql-versions \
-            "$(initialization::parameters_to_json "${CURRENT_MSSQL_VERSIONS[@]}")"
-    else
-        initialization::ga_output mssql-versions \
-            "$(initialization::parameters_to_json "${MSSQL_VERSION}")"
-    fi
-    initialization::ga_output default-mssql-version "${MSSQL_VERSION}"
-
-
-
-    initialization::ga_output kind-versions \
-        "$(initialization::parameters_to_json "${CURRENT_KIND_VERSIONS[@]}")"
-    initialization::ga_output default-kind-version "${KIND_VERSION}"
-
-    initialization::ga_output helm-versions \
-        "$(initialization::parameters_to_json "${CURRENT_HELM_VERSIONS[@]}")"
-    initialization::ga_output default-helm-version "${HELM_VERSION}"
-
-    if [[ ${FULL_TESTS_NEEDED_LABEL} == "true" ]]; then
-        initialization::ga_output postgres-exclude '[{ "python-version": "3.7" }]'
-        initialization::ga_output mssql-exclude '[{ "python-version": "3.8" }]'
-        initialization::ga_output mysql-exclude '[{ "python-version": "3.10" }]'
-        initialization::ga_output sqlite-exclude '[{ "python-version": "3.9" }]'
-    else
-        initialization::ga_output postgres-exclude '[]'
-        initialization::ga_output mysql-exclude '[]'
-        initialization::ga_output mssql-exclude '[]'
-        initialization::ga_output sqlite-exclude '[]'
-    fi
-
-
-    initialization::ga_output default-helm-version "${HELM_VERSION}"
-    initialization::ga_output kubernetes-exclude '[]'
-
-    initialization::ga_output default-branch "${DEFAULT_BRANCH}"
-
-}
-
-function get_changed_files() {
-    start_end::group_start "Get changed files"
-    echo
-    echo "Incoming commit SHA: ${INCOMING_COMMIT_SHA}"
-    echo
-    echo "Changed files from ${INCOMING_COMMIT_SHA} vs it's first parent"
-    echo
-    CHANGED_FILES=$(git diff-tree --no-commit-id --name-only \
-        -r "${INCOMING_COMMIT_SHA}^" "${INCOMING_COMMIT_SHA}" || true)
-    if [[ -z "${CHANGED_FILES}" ]]; then
-        echo
-        echo  "${COLOR_YELLOW}WARNING: Could not find any changed files  ${COLOR_RESET}"
-        echo Assuming that we should run all tests in this case
-        echo
-        set_outputs_run_everything_and_exit
-    fi
-    echo
-    echo "Changed files:"
-    echo
-    echo "${CHANGED_FILES}"
-    echo
-    readonly CHANGED_FILES
-    start_end::group_end
-}
-
-function run_tests() {
-    initialization::ga_output run-tests "${@}"
-}
-
-function run_kubernetes_tests() {
-    initialization::ga_output run-kubernetes-tests "${@}"
-}
-
-function needs_helm_tests() {
-    initialization::ga_output needs-helm-tests "${@}"
-}
-
-function needs_api_tests() {
-    initialization::ga_output needs-api-tests "${@}"
-}
-
-function needs_api_codegen() {
-    initialization::ga_output needs-api-codegen "${@}"
-}
-
-function needs_javascript_scans() {
-    initialization::ga_output needs-javascript-scans "${@}"
-}
-
-function needs_python_scans() {
-    initialization::ga_output needs-python-scans "${@}"
-}
-
-function set_test_types() {
-    initialization::ga_output test-types "${@}"
-}
-
-function set_docs_build() {
-    initialization::ga_output docs-build "${@}"
-}
-
-function set_image_build() {
-    initialization::ga_output image-build "${@}"
-}
-
-function set_basic_checks_only() {
-    initialization::ga_output basic-checks-only "${@}"
-}
-
-function set_upgrade_to_newer_dependencies() {
-    initialization::ga_output upgrade-to-newer-dependencies "${@}"
-}
-
-function needs_ui_tests() {
-    initialization::ga_output run-ui-tests "${@}"
-}
-
-function needs_www_tests() {
-    initialization::ga_output run-www-tests "${@}"
-}
-
-if [[ ${DEFAULT_BRANCH} == "main" ]]; then
-    ALL_TESTS="Always API Core Other CLI Providers WWW Integration"
-else
-    # Skips Provider tests in case current default branch is not main
-    ALL_TESTS="Always API Core Other CLI WWW Integration"
-fi
-readonly ALL_TESTS
-
-function set_outputs_run_everything_and_exit() {
-    needs_api_tests "true"
-    needs_api_codegen "true"
-    needs_helm_tests "true"
-    needs_javascript_scans "true"
-    needs_python_scans "true"
-    run_tests "true"
-    run_kubernetes_tests "true"
-    set_test_types "${ALL_TESTS}"
-    set_basic_checks_only "false"
-    set_docs_build "true"
-    set_image_build "true"
-    set_upgrade_to_newer_dependencies "${upgrade_to_newer_dependencies}"
-    needs_ui_tests "true"
-    needs_www_tests "true"
-    exit
-}
-
-function set_outputs_run_all_python_tests() {
-    run_tests "true"
-    run_kubernetes_tests "true"
-    set_test_types "${ALL_TESTS}"
-    set_basic_checks_only "false"
-    set_image_build "true"
-    kubernetes_tests_needed="true"
-}
-
-function set_output_skip_all_tests_and_docs_and_exit() {
-    needs_api_tests "false"
-    needs_api_codegen "false"
-    needs_helm_tests "false"
-    needs_javascript_scans "false"
-    needs_python_scans "false"
-    run_tests "false"
-    run_kubernetes_tests "false"
-    set_test_types ""
-    set_basic_checks_only "true"
-    set_docs_build "false"
-    set_image_build "false"
-    set_upgrade_to_newer_dependencies "false"
-    needs_ui_tests "false"
-    needs_www_tests "false"
-    exit
-}
-
-function set_output_skip_tests_but_build_images_and_exit() {
-    needs_api_tests "false"
-    needs_api_codegen "false"
-    needs_helm_tests "false"
-    needs_javascript_scans "false"
-    needs_python_scans "false"
-    run_tests "false"
-    run_kubernetes_tests "false"
-    set_test_types ""
-    set_basic_checks_only "false"
-    set_docs_build "true"
-    set_image_build "true"
-    set_upgrade_to_newer_dependencies "${upgrade_to_newer_dependencies}"
-    needs_ui_tests "false"
-    needs_www_tests "false"
-    exit
-}
-
-# Converts array of patterns into single | pattern string
-#    pattern_array - array storing regexp patterns
-# Outputs - pattern string
-function get_regexp_from_patterns() {
-    local test_triggering_regexp=""
-    local separator=""
-    local pattern
-    for pattern in "${pattern_array[@]}"; do
-        test_triggering_regexp="${test_triggering_regexp}${separator}${pattern}"
-        separator="|"
-    done
-    echo "${test_triggering_regexp}"
-}
-
-# Shows changed files in the commit vs. the target.
-# Input:
-#    pattern_array - array storing regexp patterns
-function show_changed_files() {
-    local the_regexp
-    the_regexp=$(get_regexp_from_patterns)
-    echo
-    echo "Changed files matching the ${the_regexp} pattern:"
-    echo
-    echo "${CHANGED_FILES}" | grep -E "${the_regexp}" || true
-    echo
-}
-
-# Counts changed files in the commit vs. the target
-# Input:
-#    pattern_array - array storing regexp patterns
-# Output:
-#    Count of changed files matching the patterns
-function count_changed_files() {
-    echo "${CHANGED_FILES}" | grep -c -E "$(get_regexp_from_patterns)" || true
-}
-
-function check_if_python_security_scans_should_be_run() {
-    start_end::group_start "Check Python security scans"
-    local pattern_array=(
-        "^airflow/.*\.py"
-        "^setup.py"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        needs_python_scans "false"
-    else
-        needs_python_scans "true"
-    fi
-    start_end::group_end
-}
-
-function check_if_setup_files_changed() {
-    start_end::group_start "Check setup.py/cfg changed"
-    local pattern_array=(
-        "^setup.cfg"
-        "^setup.py"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) != "0" ]]; then
-        # In case the setup files changed, we automatically force upgrading to newer dependencies
-        # no matter what was set before.
-        upgrade_to_newer_dependencies="true"
-    fi
-    start_end::group_end
-}
-
-
-function check_if_javascript_security_scans_should_be_run() {
-    start_end::group_start "Check JavaScript security scans"
-    local pattern_array=(
-        "^airflow/.*\.[jt]sx?"
-        "^airflow/.*\.lock"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        needs_javascript_scans "false"
-    else
-        needs_javascript_scans "true"
-    fi
-    start_end::group_end
-}
-
-function check_if_api_tests_should_be_run() {
-    start_end::group_start "Check API tests"
-    local pattern_array=(
-        "^airflow/api"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        needs_api_tests "false"
-    else
-        needs_api_tests "true"
-    fi
-    start_end::group_end
-}
-
-function check_if_api_codegen_should_be_run() {
-    start_end::group_start "Check API codegen"
-    local pattern_array=(
-        "^airflow/api_connexion/openapi/v1.yaml"
-        "^clients/gen"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        needs_api_codegen "false"
-    else
-        needs_api_codegen "true"
-    fi
-    start_end::group_end
-}
-
-function check_if_helm_tests_should_be_run() {
-    start_end::group_start "Check helm tests"
-    local pattern_array=(
-        "^chart"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        needs_helm_tests "false"
-    else
-        needs_helm_tests "true"
-    fi
-    start_end::group_end
-}
-
-function check_if_docs_should_be_generated() {
-    start_end::group_start "Check docs"
-    local pattern_array=(
-        "^docs"
-        "^airflow/.*\.py$"
-        "^CHANGELOG\.txt"
-        "^airflow/config_templates/config\.yml"
-        "^chart/UPDATING\.rst"
-        "^chart/CHANGELOG\.txt"
-        "^chart/values\.schema\.json"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        echo "None of the docs changed"
-    else
-        image_build_needed="true"
-        docs_build_needed="true"
-    fi
-    start_end::group_end
-}
-
-function check_if_ui_tests_should_be_run() {
-    start_end::group_start "Check UI"
-    local pattern_array=(
-        "^airflow/ui/.*\.[tj]sx?$"
-        # tsconfig.json, package.json, etc.
-        "^airflow/ui/[^/]+\.json$"
-        "^airflow/ui/.*\.lock$"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        needs_ui_tests "false"
-    else
-        needs_ui_tests "true"
-    fi
-    start_end::group_end
-}
-
-function check_if_www_tests_should_be_run() {
-    start_end::group_start "Check WWW"
-    local pattern_array=(
-        "^airflow/www/.*\.js[x]?$"
-        # tsconfig.json, package.json, etc.
-        "^airflow/www/[^/]+\.json$"
-        "^airflow/www/.*\.lock$"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        needs_www_tests "false"
-    else
-        needs_www_tests "true"
-    fi
-    start_end::group_end
-}
-
-
-ANY_PY_FILES_CHANGED=(
-    "\.py$"
-)
-readonly ANY_PY_FILES_CHANGED
-
-function check_if_any_py_files_changed() {
-    start_end::group_start "Check if any Python files changed"
-    local pattern_array=("${ANY_PY_FILES_CHANGED[@]}")
-    show_changed_files
-
-    if [[ $(count_changed_files) != "0" ]]; then
-        image_build_needed="true"
-    fi
-    start_end::group_end
-}
-
-
-AIRFLOW_SOURCES_TRIGGERING_TESTS=(
-    "^.pre-commit-config.yaml$"
-    "^airflow"
-    "^chart"
-    "^tests"
-    "^kubernetes_tests"
-)
-readonly AIRFLOW_SOURCES_TRIGGERING_TESTS
-
-function check_if_tests_are_needed_at_all() {
-    start_end::group_start "Check tests are needed"
-    local pattern_array=("${AIRFLOW_SOURCES_TRIGGERING_TESTS[@]}")
-    show_changed_files
-
-    if [[ $(count_changed_files) == "0" ]]; then
-        if [[ ${image_build_needed} == "true" ]]; then
-            echo "No tests needed, Skipping tests but building images."
-            set_output_skip_tests_but_build_images_and_exit
-        else
-            echo "None of the important files changed, Skipping tests"
-            set_output_skip_all_tests_and_docs_and_exit
-        fi
-    else
-        image_build_needed="true"
-        tests_needed="true"
-    fi
-    start_end::group_end
-}
-
-function run_all_tests_if_environment_files_changed() {
-    start_end::group_start "Check if everything should be run"
-    local pattern_array=(
-        "^.github/workflows/"
-        "^Dockerfile"
-        "^scripts"
-        "^setup.py"
-        "^setup.cfg"
-    )
-    show_changed_files
-
-    if [[ $(count_changed_files) != "0" ]]; then
-        echo "Important environment files changed. Running everything"
-        set_outputs_run_everything_and_exit
-    fi
-    if [[ ${FULL_TESTS_NEEDED_LABEL} == "true" ]]; then
-        echo "Full tests requested by label on PR. Running everything"
-        set_outputs_run_everything_and_exit
-    fi
-    start_end::group_end
-}
-
-function get_count_all_files() {
-    start_end::group_start "Count all airflow source files"
-    local pattern_array=("${AIRFLOW_SOURCES_TRIGGERING_TESTS[@]}")
-    show_changed_files
-    COUNT_ALL_CHANGED_FILES=$(count_changed_files)
-    echo "Files count: ${COUNT_ALL_CHANGED_FILES}"
-    readonly COUNT_ALL_CHANGED_FILES
-    start_end::group_end
-}
-
-function get_count_api_files() {
-    start_end::group_start "Count API files"
-    local pattern_array=(
-        "^airflow/api"
-        "^airflow/api_connexion"
-        "^tests/api"
-        "^tests/api_connexion"
-    )
-    show_changed_files
-    COUNT_API_CHANGED_FILES=$(count_changed_files)
-    echo "Files count: ${COUNT_API_CHANGED_FILES}"
-    readonly COUNT_API_CHANGED_FILES
-    start_end::group_end
-}
-
-function get_count_cli_files() {
-    start_end::group_start "Count CLI files"
-    local pattern_array=(
-        "^airflow/cli"
-        "^tests/cli"
-    )
-    show_changed_files
-    COUNT_CLI_CHANGED_FILES=$(count_changed_files)
-    echo "Files count: ${COUNT_CLI_CHANGED_FILES}"
-    readonly COUNT_CLI_CHANGED_FILES
-    start_end::group_end
-}
-
-function get_count_providers_files() {
-    start_end::group_start "Count providers files"
-    local pattern_array=(
-        "^airflow/providers/"
-        "^tests/providers/"
-    )
-    show_changed_files
-    COUNT_PROVIDERS_CHANGED_FILES=$(count_changed_files)
-    echo "Files count: ${COUNT_PROVIDERS_CHANGED_FILES}"
-    readonly COUNT_PROVIDERS_CHANGED_FILES
-    start_end::group_end
-}
-
-function get_count_www_files() {
-    start_end::group_start "Count www files"
-    local pattern_array=(
-        "^airflow/www"
-        "^tests/www"
-    )
-    show_changed_files
-    COUNT_WWW_CHANGED_FILES=$(count_changed_files)
-    echo "Files count: ${COUNT_WWW_CHANGED_FILES}"
-    readonly COUNT_WWW_CHANGED_FILES
-    start_end::group_end
-}
-
-function get_count_ui_files() {
-    start_end::group_start "Count ui files"
-    local pattern_array=(
-        "^airflow/ui/"
-    )
-    show_changed_files
-    COUNT_UI_CHANGED_FILES=$(count_changed_files)
-    echo "Files count: ${COUNT_UI_CHANGED_FILES}"
-    readonly COUNT_UI_CHANGED_FILES
-    start_end::group_end
-}
-
-function get_count_kubernetes_files() {
-    start_end::group_start "Count kubernetes files"
-    local pattern_array=(
-        "^chart"
-        "^kubernetes_tests"
-        "^airflow/providers/cncf/kubernetes/"
-        "^tests/providers/cncf/kubernetes/"
-    )
-    show_changed_files
-    COUNT_KUBERNETES_CHANGED_FILES=$(count_changed_files)
-    echo "Files count: ${COUNT_KUBERNETES_CHANGED_FILES}"
-    readonly COUNT_KUBERNETES_CHANGED_FILES
-    start_end::group_end
-}
-
-function calculate_test_types_to_run() {
-    start_end::group_start "Count core/other files"
-    COUNT_CORE_OTHER_CHANGED_FILES=$((COUNT_ALL_CHANGED_FILES - COUNT_WWW_CHANGED_FILES - COUNT_UI_CHANGED_FILES - COUNT_PROVIDERS_CHANGED_FILES - COUNT_CLI_CHANGED_FILES - COUNT_API_CHANGED_FILES - COUNT_KUBERNETES_CHANGED_FILES))
-
-    readonly COUNT_CORE_OTHER_CHANGED_FILES
-    echo
-    echo "Files count: ${COUNT_CORE_OTHER_CHANGED_FILES}"
-    echo
-    if [[ ${COUNT_CORE_OTHER_CHANGED_FILES} -gt 0 ]]; then
-        # Running all tests because some core or other files changed
-        echo
-        echo "Looks like ${COUNT_CORE_OTHER_CHANGED_FILES} files changed in the core/other area and"
-        echo "We have to run all python tests. This will take longer than usual"
-        echo
-        set_outputs_run_all_python_tests
-    else
-        if [[ ${COUNT_KUBERNETES_CHANGED_FILES} != "0" ]]; then
-            kubernetes_tests_needed="true"
-        fi
-        tests_needed="true"
-        SELECTED_TESTS=""
-        if [[ ${COUNT_API_CHANGED_FILES} != "0" ]]; then
-            echo
-            echo "Adding API to selected files as ${COUNT_API_CHANGED_FILES} API files changed"
-            echo
-            SELECTED_TESTS="${SELECTED_TESTS} API"
-        fi
-        if [[ ${COUNT_CLI_CHANGED_FILES} != "0" ]]; then
-            echo
-            echo "Adding CLI and Kubernetes (they depend on CLI) to selected files as ${COUNT_CLI_CHANGED_FILES} CLI files changed"
-            echo
-            SELECTED_TESTS="${SELECTED_TESTS} CLI"
-            kubernetes_tests_needed="true"
-        fi
-
-        if [[ ${DEFAULT_BRANCH} == "main" ]]; then
-            if [[ ${COUNT_PROVIDERS_CHANGED_FILES} != "0" ]]; then
-                echo
-                echo "Adding Providers to selected files as ${COUNT_PROVIDERS_CHANGED_FILES} Provider files changed"
-                echo
-                SELECTED_TESTS="${SELECTED_TESTS} Providers"
-            fi
-        else
-            echo
-            echo "Providers tests are not added because they are only run in case of main branch."
-            echo
-        fi
-        if [[ ${COUNT_WWW_CHANGED_FILES} != "0" ]]; then
-            echo
-            echo "Adding WWW to selected files as ${COUNT_WWW_CHANGED_FILES} WWW files changed"
-            echo
-            SELECTED_TESTS="${SELECTED_TESTS} WWW"
-        fi
-        initialization::ga_output test-types "Always Integration ${SELECTED_TESTS}"
-    fi
-    start_end::group_end
-}
-
-
-
-upgrade_to_newer_dependencies="false"
-
-if (($# < 1)); then
-    echo
-    echo "No Commit SHA - running all tests (likely direct merge, or scheduled run)!"
-    echo
-    INCOMING_COMMIT_SHA=""
-    readonly INCOMING_COMMIT_SHA
-    # override FULL_TESTS_NEEDED_LABEL in main/scheduled run
-    FULL_TESTS_NEEDED_LABEL="true"
-    readonly FULL_TESTS_NEEDED_LABEL
-    output_all_basic_variables
-    check_upgrade_to_newer_dependencies_needed
-    set_outputs_run_everything_and_exit
-else
-    INCOMING_COMMIT_SHA="${1}"
-    readonly INCOMING_COMMIT_SHA
-    echo
-    echo "Commit SHA passed: ${INCOMING_COMMIT_SHA}!"
-    echo
-    readonly FULL_TESTS_NEEDED_LABEL
-fi
-
-check_upgrade_to_newer_dependencies_needed
-
-output_all_basic_variables
-
-image_build_needed="false"
-docs_build_needed="false"
-tests_needed="false"
-kubernetes_tests_needed="false"
-
-get_changed_files
-check_if_setup_files_changed
-run_all_tests_if_environment_files_changed
-check_if_any_py_files_changed
-check_if_docs_should_be_generated
-check_if_helm_tests_should_be_run
-check_if_api_tests_should_be_run
-check_if_api_codegen_should_be_run
-check_if_javascript_security_scans_should_be_run
-check_if_python_security_scans_should_be_run
-check_if_ui_tests_should_be_run
-check_if_www_tests_should_be_run
-check_if_tests_are_needed_at_all
-get_count_all_files
-get_count_api_files
-get_count_cli_files
-get_count_providers_files
-get_count_www_files
-get_count_ui_files
-get_count_kubernetes_files
-calculate_test_types_to_run
-
-set_image_build "${image_build_needed}"
-if [[ ${image_build_needed} == "true" ]]; then
-    set_basic_checks_only "false"
-else
-    set_basic_checks_only "true"
-fi
-set_docs_build "${docs_build_needed}"
-run_tests "${tests_needed}"
-run_kubernetes_tests "${kubernetes_tests_needed}"
-set_upgrade_to_newer_dependencies "${upgrade_to_newer_dependencies}"
diff --git a/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh b/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh
index d120b50ec7..bc5bc041ed 100755
--- a/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh
+++ b/scripts/ci/testing/ci_run_single_airflow_test_in_docker.sh
@@ -89,7 +89,7 @@ function run_airflow_testing_in_docker() {
     echo
     docker-compose -f "${SCRIPTS_CI_DIR}/docker-compose/base.yml" \
         "${INTEGRATIONS[@]}" \
-        --project-name "airflow-${TEST_TYPE}-${BACKEND}" \
+        --project-name "airflow-${TEST_TYPE,,}-${BACKEND}" \
         down --remove-orphans \
         --volumes --timeout 10
     docker-compose --log-level INFO \
@@ -97,7 +97,7 @@ function run_airflow_testing_in_docker() {
       "${BACKEND_DOCKER_COMPOSE[@]}" \
       "${INTEGRATIONS[@]}" \
       "${DOCKER_COMPOSE_LOCAL[@]}" \
-      --project-name "airflow-${TEST_TYPE}-${BACKEND}" \
+      --project-name "airflow-${TEST_TYPE,,}-${BACKEND}" \
          run airflow "${@}"
     exit_code=$?
     docker ps
@@ -112,7 +112,7 @@ function run_airflow_testing_in_docker() {
 
     docker-compose --log-level INFO -f "${SCRIPTS_CI_DIR}/docker-compose/base.yml" \
         "${INTEGRATIONS[@]}" \
-        --project-name "airflow-${TEST_TYPE}-${BACKEND}" \
+        --project-name "airflow-${TEST_TYPE,,}-${BACKEND}" \
         down --remove-orphans \
         --volumes --timeout 10
     set -u


[airflow] 26/39: Allows to specify different Python base image when building images (#24634)

Posted by po...@apache.org.
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 de17f27d30dcefff98e06648be8827a418a3edfd
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 25 00:02:57 2022 +0200

    Allows to specify different Python base image when building images (#24634)
    
    Today Python released new images that seems to break some of
    our dependencies (at least on M1/ARM). This PR adds a workaround
    possibility to add --python-image option to override the
    default, latest image with any other version released previously
    until we diagnose and fix the real issue.
    
    (cherry picked from commit d6e6e7d2979e7a3c71d9b9a036630def0f9432f5)
---
 .../airflow_breeze/commands/ci_image_commands.py   |   3 +
 .../commands/production_image_commands.py          |   3 +
 .../airflow_breeze/params/common_build_params.py   |   4 +-
 .../src/airflow_breeze/utils/common_options.py     |   7 +
 images/breeze/output-build-image.svg               | 288 +++++++++--------
 images/breeze/output-build-prod-image.svg          | 356 +++++++++++----------
 images/breeze/output-commands-hash.txt             |   2 +-
 7 files changed, 351 insertions(+), 312 deletions(-)

diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index ce38e83724..b9cfa28957 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -56,6 +56,7 @@ from airflow_breeze.utils.common_options import (
     option_pull_image,
     option_push_image,
     option_python,
+    option_python_image,
     option_python_versions,
     option_run_in_parallel,
     option_runtime_apt_command,
@@ -127,6 +128,7 @@ CI_IMAGE_TOOLS_PARAMETERS = {
                 "--install-providers-from-sources",
                 "--airflow-constraints-mode",
                 "--airflow-constraints-reference",
+                "--python-image",
                 "--additional-python-deps",
                 "--runtime-apt-deps",
                 "--runtime-apt-command",
@@ -253,6 +255,7 @@ def run_build_in_parallel(
 @option_dev_apt_command
 @option_dev_apt_deps
 @option_force_build
+@option_python_image
 @option_runtime_apt_command
 @option_runtime_apt_deps
 @option_force_build
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 9ae3791e31..c8dca4cae1 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -55,6 +55,7 @@ from airflow_breeze.utils.common_options import (
     option_pull_image,
     option_push_image,
     option_python,
+    option_python_image,
     option_python_versions,
     option_run_in_parallel,
     option_runtime_apt_command,
@@ -118,6 +119,7 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS = {
                 "--airflow-extras",
                 "--airflow-constraints-mode",
                 "--airflow-constraints-reference",
+                "--python-image",
                 "--additional-python-deps",
                 "--additional-extras",
                 "--additional-runtime-apt-deps",
@@ -301,6 +303,7 @@ def run_build_in_parallel(
 @option_additional_runtime_apt_command
 @option_dev_apt_command
 @option_dev_apt_deps
+@option_python_image
 @option_runtime_apt_command
 @option_runtime_apt_deps
 @option_tag_as_latest
diff --git a/dev/breeze/src/airflow_breeze/params/common_build_params.py b/dev/breeze/src/airflow_breeze/params/common_build_params.py
index fd8a2b82e8..68947186d6 100644
--- a/dev/breeze/src/airflow_breeze/params/common_build_params.py
+++ b/dev/breeze/src/airflow_breeze/params/common_build_params.py
@@ -58,6 +58,7 @@ class CommonBuildParams:
     install_providers_from_sources: bool = False
     platform: str = f"linux/{os.uname().machine}"
     prepare_buildx_cache: bool = False
+    python_image: Optional[str] = None
     push_image: bool = False
     python: str = "3.7"
     runtime_apt_command: str = ""
@@ -110,7 +111,8 @@ class CommonBuildParams:
     @property
     def python_base_image(self):
         """Construct Python Base Image"""
-        #  ghcr.io/apache/airflow/main/python:3.8-slim-bullseye
+        if self.python_image is not None:
+            return self.python_image
         return f'python:{self.python}-slim-{self.debian_version}'
 
     @property
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index 292e74891d..65f0040f89 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -434,3 +434,10 @@ option_pull_image = click.option(
     is_flag=True,
     envvar='PULL_IMAGE',
 )
+
+option_python_image = click.option(
+    '--python-image',
+    help="If specified this is the base python image used to build the image. "
+    "Should be something like: python:VERSION-slim-bullseye",
+    envvar='PYTHON_IMAGE',
+)
diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg
index 389c973d0e..082e97adef 100644
--- a/images/breeze/output-build-image.svg
+++ b/images/breeze/output-build-image.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1562.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1636.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,289 +19,301 @@
         font-weight: 700;
     }
 
-    .terminal-4238821259-matrix {
+    .terminal-763863226-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-4238821259-title {
+    .terminal-763863226-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-4238821259-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-4238821259-r2 { fill: #c5c8c6 }
-.terminal-4238821259-r3 { fill: #d0b344;font-weight: bold }
-.terminal-4238821259-r4 { fill: #868887 }
-.terminal-4238821259-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-4238821259-r6 { fill: #98a84b;font-weight: bold }
-.terminal-4238821259-r7 { fill: #8d7b39 }
+    .terminal-763863226-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-763863226-r2 { fill: #c5c8c6 }
+.terminal-763863226-r3 { fill: #d0b344;font-weight: bold }
+.terminal-763863226-r4 { fill: #868887 }
+.terminal-763863226-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-763863226-r6 { fill: #98a84b;font-weight: bold }
+.terminal-763863226-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-4238821259-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1511.8" />
+    <clipPath id="terminal-763863226-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1585.0" />
     </clipPath>
-    <clipPath id="terminal-4238821259-line-0">
+    <clipPath id="terminal-763863226-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-1">
+<clipPath id="terminal-763863226-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-2">
+<clipPath id="terminal-763863226-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-3">
+<clipPath id="terminal-763863226-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-4">
+<clipPath id="terminal-763863226-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-5">
+<clipPath id="terminal-763863226-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-6">
+<clipPath id="terminal-763863226-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-7">
+<clipPath id="terminal-763863226-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-8">
+<clipPath id="terminal-763863226-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-9">
+<clipPath id="terminal-763863226-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-10">
+<clipPath id="terminal-763863226-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-11">
+<clipPath id="terminal-763863226-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-12">
+<clipPath id="terminal-763863226-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-13">
+<clipPath id="terminal-763863226-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-14">
+<clipPath id="terminal-763863226-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-15">
+<clipPath id="terminal-763863226-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-16">
+<clipPath id="terminal-763863226-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-17">
+<clipPath id="terminal-763863226-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-18">
+<clipPath id="terminal-763863226-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-19">
+<clipPath id="terminal-763863226-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-20">
+<clipPath id="terminal-763863226-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-21">
+<clipPath id="terminal-763863226-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-22">
+<clipPath id="terminal-763863226-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-23">
+<clipPath id="terminal-763863226-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-24">
+<clipPath id="terminal-763863226-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-25">
+<clipPath id="terminal-763863226-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-26">
+<clipPath id="terminal-763863226-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-27">
+<clipPath id="terminal-763863226-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-28">
+<clipPath id="terminal-763863226-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-29">
+<clipPath id="terminal-763863226-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-30">
+<clipPath id="terminal-763863226-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-31">
+<clipPath id="terminal-763863226-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-32">
+<clipPath id="terminal-763863226-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-33">
+<clipPath id="terminal-763863226-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-34">
+<clipPath id="terminal-763863226-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-35">
+<clipPath id="terminal-763863226-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-36">
+<clipPath id="terminal-763863226-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-37">
+<clipPath id="terminal-763863226-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-38">
+<clipPath id="terminal-763863226-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-39">
+<clipPath id="terminal-763863226-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-40">
+<clipPath id="terminal-763863226-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-41">
+<clipPath id="terminal-763863226-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-42">
+<clipPath id="terminal-763863226-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-43">
+<clipPath id="terminal-763863226-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-44">
+<clipPath id="terminal-763863226-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-45">
+<clipPath id="terminal-763863226-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-46">
+<clipPath id="terminal-763863226-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-47">
+<clipPath id="terminal-763863226-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-48">
+<clipPath id="terminal-763863226-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-49">
+<clipPath id="terminal-763863226-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-50">
+<clipPath id="terminal-763863226-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-51">
+<clipPath id="terminal-763863226-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-52">
+<clipPath id="terminal-763863226-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-53">
+<clipPath id="terminal-763863226-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-54">
+<clipPath id="terminal-763863226-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-55">
+<clipPath id="terminal-763863226-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-56">
+<clipPath id="terminal-763863226-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-57">
+<clipPath id="terminal-763863226-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-58">
+<clipPath id="terminal-763863226-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-59">
+<clipPath id="terminal-763863226-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-4238821259-line-60">
+<clipPath id="terminal-763863226-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-763863226-line-61">
+    <rect x="0" y="1489.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-763863226-line-62">
+    <rect x="0" y="1514.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-763863226-line-63">
+    <rect x="0" y="1538.7" 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="1560.8" rx="8"/><text class="terminal-4238821259-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-image</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1634" rx="8"/><text class="terminal-763863226-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;build-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-4238821259-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-763863226-clip-terminal)">
     
-    <g class="terminal-4238821259-matrix">
-    <text class="terminal-4238821259-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-4238821259-line-0)">
-</text><text class="terminal-4238821259-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-1)">Usage:&#160;</text><text class="terminal-4238821259-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-4238821259-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-4238821259-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-1)">
-</text><text class="terminal-4238821259-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-2)">
-</text><text class="terminal-4238821259-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-4238821259-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-4238821259-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-3)">
-</text><text class="terminal-4238821259-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-4)">
-</text><text class="terminal-4238821259-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-4238821259-line-5)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-4238821259-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-423882 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-6)">│</text><text class="terminal-4238821259-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-6)">-</text><text class="terminal-4238821259-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-6)">-python</text><text class="terminal-4238821259-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-423 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-7)">│</text><text class="terminal-4238821259-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-4238821259-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-4238821259-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-8)">│</text><text class="terminal-4238821259-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-4238821259-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-4238821259-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-9)">│</text><text class="terminal-4238821259-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-9)">-</text><text class="terminal-4238821259-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-4238821259-line-9)">-upgrade</text><text class="terminal-4238821259-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal [...]
-</text><text class="terminal-4238821259-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-4238821259-line-10)">│</text><text class="terminal-4238821259-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-4238821259-line-10)">-</text><text class="terminal-4238821259-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-4238821259-line-10)">-debian</text><text class="terminal-4238821259-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-42388212 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-11)">│</text><text class="terminal-4238821259-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-11)">-</text><text class="terminal-4238821259-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-4238821259-line-11)">-image</text><text class="terminal-4238821259-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-4238821259-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-12)">│</text><text class="terminal-4238821259-r5" x="475.8" y="312.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-12)">-</text><text class="terminal-4238821259-r5" x="488" y="312.8" textLength="73.2" clip-path="url(#terminal-4238821259-line-12)">-mount</text><text class="terminal-4238821259-r5" x="561.2" y="312.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-4238821259-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-13)">│</text><text class="terminal-4238821259-r7" x="475.8" y="337.2" textLength="963.8" clip-path="url(#terminal-4238821259-line-13)">(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;&#16 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-14)">│</text><text class="terminal-4238821259-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-14)">-</text><text class="terminal-4238821259-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-4238821259-line-14)">-tag</text><text class="terminal-4238821259-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-423 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-4238821259-line-15)">│</text><text class="terminal-4238821259-r2" x="475.8" y="386" textLength="414.8" clip-path="url(#terminal-4238821259-line-15)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-4238821259-r5" x="890.6" y="386" textLength="12.2" clip-path="url(#terminal-4238821259-line-15)">-</text><text class="terminal-4238821259-r5" x= [...]
-</text><text class="terminal-4238821259-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-16)">│</text><text class="terminal-4238821259-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-16)">-</text><text class="terminal-4238821259-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-16)">-docker</text><text class="terminal-4238821259-r5" x="122" y="410.4" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-4238821259-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-17)">│</text><text class="terminal-4238821259-r4" x="475.8" y="434.8" textLength="549" clip-path="url(#terminal-4238821259-line-17)">[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-4238821259-r4" x="1451.8" y="43 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-18)">│</text><text class="terminal-4238821259-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-18)">-</text><text class="terminal-4238821259-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-4238821259-line-18)">-force</text><text class="terminal-4238821259-r5" x="109.8" y="459.2" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-4238821259-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-4238821259-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-19)">
-</text><text class="terminal-4238821259-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-4238821259-line-20)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-4238821259-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-4238821259-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-21)">│</text><text class="terminal-4238821259-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-21)">-</text><text class="terminal-4238821259-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-4238821259-line-21)">-run</text><text class="terminal-4238821259-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-4 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-22)">│</text><text class="terminal-4238821259-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-22)">-</text><text class="terminal-4238821259-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-4238821259-line-22)">-parallelism</text><text class="terminal-4238821259-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-4238821259-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-23)">│</text><text class="terminal-4238821259-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-4238821259-line-23)">[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-4238821259-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-24)">│</text><text class="terminal-4238821259-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-24)">-</text><text class="terminal-4238821259-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-4238821259-line-24)">-python</text><text class="terminal-4238821259-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-4238821259-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-4238821259-line-25)">│</text><text class="terminal-4238821259-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-4238821259-line-25)">[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;&#1 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-4238821259-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-26)">
-</text><text class="terminal-4238821259-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-4238821259-line-27)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-4238821259-line-27)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="678.8" textLength="24.4" clip-pat [...]
-</text><text class="terminal-4238821259-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-28)">│</text><text class="terminal-4238821259-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-28)">-</text><text class="terminal-4238821259-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-4238821259-line-28)">-install</text><text class="terminal-4238821259-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-4238821259-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-29)">│</text><text class="terminal-4238821259-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-29)">-</text><text class="terminal-4238821259-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-4238821259-line-29)">-airflow</text><text class="terminal-4238821259-r5" x="134.2" y="727.6" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-4238821259-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-4238821259-line-30)">│</text><text class="terminal-4238821259-r7" x="463.6" y="752" textLength="866.2" clip-path="url(#terminal-4238821259-line-30)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-4238821259-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-4238821259-line-30)">│</text><text class="ter [...]
-</text><text class="terminal-4238821259-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-31)">│</text><text class="terminal-4238821259-r4" x="463.6" y="776.4" textLength="866.2" clip-path="url(#terminal-4238821259-line-31)">[default:&#160;constraints-source-providers]&#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-4238821259-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-32)">│</text><text class="terminal-4238821259-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-32)">-</text><text class="terminal-4238821259-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-4238821259-line-32)">-airflow</text><text class="terminal-4238821259-r5" x="134.2" y="800.8" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-4238821259-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-33)">│</text><text class="terminal-4238821259-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-33)">-</text><text class="terminal-4238821259-r5" x="36.6" y="825.2" textLength="134.2" clip-path="url(#terminal-4238821259-line-33)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="825.2" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-4238821259-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-34)">│</text><text class="terminal-4238821259-r5" x="24.4" y="849.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-34)">-</text><text class="terminal-4238821259-r5" x="36.6" y="849.6" textLength="97.6" clip-path="url(#terminal-4238821259-line-34)">-runtime</text><text class="terminal-4238821259-r5" x="134.2" y="849.6" textLength="109.8" clip-path="url(#termi [...]
-</text><text class="terminal-4238821259-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-4238821259-line-35)">│</text><text class="terminal-4238821259-r5" x="24.4" y="874" textLength="12.2" clip-path="url(#terminal-4238821259-line-35)">-</text><text class="terminal-4238821259-r5" x="36.6" y="874" textLength="97.6" clip-path="url(#terminal-4238821259-line-35)">-runtime</text><text class="terminal-4238821259-r5" x="134.2" y="874" textLength="146.4" clip-path="url(#terminal-4238 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-36)">│</text><text class="terminal-4238821259-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-36)">-</text><text class="terminal-4238821259-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-4238821259-line-36)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="898.4" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-4238821259-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-37)">│</text><text class="terminal-4238821259-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-37)">-</text><text class="terminal-4238821259-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-4238821259-line-37)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="922.8" textLength="207.4" clip-path="url(#t [...]
-</text><text class="terminal-4238821259-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-38)">│</text><text class="terminal-4238821259-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-38)">-</text><text class="terminal-4238821259-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-4238821259-line-38)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="947.2" textLength="195.2" clip-path="url(#t [...]
-</text><text class="terminal-4238821259-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-39)">│</text><text class="terminal-4238821259-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-39)">-</text><text class="terminal-4238821259-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-4238821259-line-39)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="971.6" textLength="244" clip-path="url(#ter [...]
-</text><text class="terminal-4238821259-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-4238821259-line-40)">│</text><text class="terminal-4238821259-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-4238821259-line-40)">-</text><text class="terminal-4238821259-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-4238821259-line-40)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="996" textLength="158.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-41)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-41)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-4238821259-line-41)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="1020.4" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-42)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-42)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-4238821259-line-42)">-additional</text><text class="terminal-4238821259-r5" x="170.8" y="1044.8" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-43)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-43)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1069.2" textLength="48.8" clip-path="url(#terminal-4238821259-line-43)">-dev</text><text class="terminal-4238821259-r5" x="85.4" y="1069.2" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-44)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-44)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1093.6" textLength="48.8" clip-path="url(#terminal-4238821259-line-44)">-dev</text><text class="terminal-4238821259-r5" x="85.4" y="1093.6" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1118" textLength="1464" clip-path="url(#terminal-4238821259-line-45)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="1118" textLength="12.2" clip-path="url(#terminal-4238821259-line-45)">
-</text><text class="terminal-4238821259-r4" x="0" y="1142.4" textLength="24.4" clip-path="url(#terminal-4238821259-line-46)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="1142.4" textLength="1415.2" clip-path="url(#terminal-4238821259-line-46)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="1142.4" textLeng [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-47)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-47)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-4238821259-line-47)">-github</text><text class="terminal-4238821259-r5" x="122" y="1166.8" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-48)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-48)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1191.2" textLength="85.4" clip-path="url(#terminal-4238821259-line-48)">-github</text><text class="terminal-4238821259-r5" x="122" y="1191.2" textLength="109.8" clip-path="url(#term [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-49)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-49)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1215.6" textLength="109.8" clip-path="url(#terminal-4238821259-line-49)">-platform</text><text class="terminal-4238821259-r2" x="341.6" y="1215.6" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-4238821259-line-50)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-4238821259-line-50)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1240" textLength="61" clip-path="url(#terminal-4238821259-line-50)">-push</text><text class="terminal-4238821259-r5" x="97.6" y="1240" textLength="73.2" clip-path="url(#terminal-4238821 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-51)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-51)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1264.4" textLength="73.2" clip-path="url(#terminal-4238821259-line-51)">-empty</text><text class="terminal-4238821259-r5" x="109.8" y="1264.4" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-52)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-52)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-4238821259-line-52)">-prepare</text><text class="terminal-4238821259-r5" x="134.2" y="1288.8" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-53)">│</text><text class="terminal-4238821259-r2" x="341.6" y="1313.2" textLength="1098" clip-path="url(#terminal-4238821259-line-53)">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-4238821259-r4" x="0" y="1337.6" textLength="1464" clip-path="url(#terminal-4238821259-line-54)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="1337.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-54)">
-</text><text class="terminal-4238821259-r4" x="0" y="1362" textLength="24.4" clip-path="url(#terminal-4238821259-line-55)">╭─</text><text class="terminal-4238821259-r4" x="24.4" y="1362" textLength="1415.2" clip-path="url(#terminal-4238821259-line-55)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-4238821259-r4" x="1439.6" y="1362" textLength="24.4" clip-path="url(#terminal-423882 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-56)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-56)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1386.4" textLength="85.4" clip-path="url(#terminal-4238821259-line-56)">-github</text><text class="terminal-4238821259-r5" x="122" y="1386.4" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-57)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-4238821259-line-57)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-4238821259-line-57)">-verbose</text><text class="terminal-4238821259-r6" x="280.6" y="1410.8" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-58)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-4238821259-line-58)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1435.2" textLength="48.8" clip-path="url(#terminal-4238821259-line-58)">-dry</text><text class="terminal-4238821259-r5" x="85.4" y="1435.2" textLength="48.8" clip-path="url(#termina [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-59)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-4238821259-line-59)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1459.6" textLength="85.4" clip-path="url(#terminal-4238821259-line-59)">-answer</text><text class="terminal-4238821259-r6" x="280.6" y="1459.6" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-4238821259-line-60)">│</text><text class="terminal-4238821259-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-4238821259-line-60)">-</text><text class="terminal-4238821259-r5" x="36.6" y="1484" textLength="61" clip-path="url(#terminal-4238821259-line-60)">-help</text><text class="terminal-4238821259-r6" x="280.6" y="1484" textLength="24.4" clip-path="url(#terminal-423882 [...]
-</text><text class="terminal-4238821259-r4" x="0" y="1508.4" textLength="1464" clip-path="url(#terminal-4238821259-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-4238821259-r2" x="1464" y="1508.4" textLength="12.2" clip-path="url(#terminal-4238821259-line-61)">
+    <g class="terminal-763863226-matrix">
+    <text class="terminal-763863226-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-763863226-line-0)">
+</text><text class="terminal-763863226-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-763863226-line-1)">Usage:&#160;</text><text class="terminal-763863226-r1" x="97.6" y="44.4" textLength="341.6" clip-path="url(#terminal-763863226-line-1)">breeze&#160;build-image&#160;[OPTIONS]</text><text class="terminal-763863226-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-763863226-line-1)">
+</text><text class="terminal-763863226-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-763863226-line-2)">
+</text><text class="terminal-763863226-r2" x="12.2" y="93.2" textLength="1073.6" clip-path="url(#terminal-763863226-line-3)">Build&#160;CI&#160;image.&#160;Include&#160;building&#160;multiple&#160;images&#160;for&#160;all&#160;python&#160;versions&#160;(sequentially).</text><text class="terminal-763863226-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-763863226-line-3)">
+</text><text class="terminal-763863226-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-763863226-line-4)">
+</text><text class="terminal-763863226-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-763863226-line-5)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-763863226-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-763863226-l [...]
+</text><text class="terminal-763863226-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-763863226-line-6)">│</text><text class="terminal-763863226-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-763863226-line-6)">-</text><text class="terminal-763863226-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-763863226-line-6)">-python</text><text class="terminal-763863226-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-763863226- [...]
+</text><text class="terminal-763863226-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-763863226-line-7)">│</text><text class="terminal-763863226-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-763863226-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;&#16 [...]
+</text><text class="terminal-763863226-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-763863226-line-8)">│</text><text class="terminal-763863226-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-763863226-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;&#160 [...]
+</text><text class="terminal-763863226-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-763863226-line-9)">│</text><text class="terminal-763863226-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-763863226-line-9)">-</text><text class="terminal-763863226-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-763863226-line-9)">-upgrade</text><text class="terminal-763863226-r5" x="134.2" y="239.6" textLength="268.4" clip-path="url(#terminal-763863 [...]
+</text><text class="terminal-763863226-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-763863226-line-10)">│</text><text class="terminal-763863226-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-763863226-line-10)">-</text><text class="terminal-763863226-r5" x="36.6" y="264" textLength="85.4" clip-path="url(#terminal-763863226-line-10)">-debian</text><text class="terminal-763863226-r5" x="122" y="264" textLength="97.6" clip-path="url(#terminal-763863226-line- [...]
+</text><text class="terminal-763863226-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-763863226-line-11)">│</text><text class="terminal-763863226-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-763863226-line-11)">-</text><text class="terminal-763863226-r5" x="36.6" y="288.4" textLength="73.2" clip-path="url(#terminal-763863226-line-11)">-image</text><text class="terminal-763863226-r5" x="109.8" y="288.4" textLength="48.8" clip-path="url(#terminal-763863 [...]
+</text><text class="terminal-763863226-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-763863226-line-12)">│</text><text class="terminal-763863226-r5" x="475.8" y="312.8" textLength="12.2" clip-path="url(#terminal-763863226-line-12)">-</text><text class="terminal-763863226-r5" x="488" y="312.8" textLength="73.2" clip-path="url(#terminal-763863226-line-12)">-mount</text><text class="terminal-763863226-r5" x="561.2" y="312.8" textLength="97.6" clip-path="url(#terminal-763863 [...]
+</text><text class="terminal-763863226-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-763863226-line-13)">│</text><text class="terminal-763863226-r7" x="475.8" y="337.2" textLength="963.8" clip-path="url(#terminal-763863226-line-13)">(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-763863226-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-763863226-line-14)">│</text><text class="terminal-763863226-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-763863226-line-14)">-</text><text class="terminal-763863226-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-763863226-line-14)">-tag</text><text class="terminal-763863226-r5" x="85.4" y="361.6" textLength="122" clip-path="url(#terminal-763863226- [...]
+</text><text class="terminal-763863226-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-763863226-line-15)">│</text><text class="terminal-763863226-r2" x="475.8" y="386" textLength="414.8" clip-path="url(#terminal-763863226-line-15)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-763863226-r5" x="890.6" y="386" textLength="12.2" clip-path="url(#terminal-763863226-line-15)">-</text><text class="terminal-763863226-r5" x="902.8" [...]
+</text><text class="terminal-763863226-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-763863226-line-16)">│</text><text class="terminal-763863226-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-763863226-line-16)">-</text><text class="terminal-763863226-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-763863226-line-16)">-docker</text><text class="terminal-763863226-r5" x="122" y="410.4" textLength="73.2" clip-path="url(#terminal-7638632 [...]
+</text><text class="terminal-763863226-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-763863226-line-17)">│</text><text class="terminal-763863226-r4" x="475.8" y="434.8" textLength="549" clip-path="url(#terminal-763863226-line-17)">[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-763863226-r4" x="1451.8" y="434.8"  [...]
+</text><text class="terminal-763863226-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-763863226-line-18)">│</text><text class="terminal-763863226-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-763863226-line-18)">-</text><text class="terminal-763863226-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-763863226-line-18)">-force</text><text class="terminal-763863226-r5" x="109.8" y="459.2" textLength="73.2" clip-path="url(#terminal-763863 [...]
+</text><text class="terminal-763863226-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-763863226-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-763863226-line-19)">
+</text><text class="terminal-763863226-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-763863226-line-20)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-763863226-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#terminal [...]
+</text><text class="terminal-763863226-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-763863226-line-21)">│</text><text class="terminal-763863226-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-763863226-line-21)">-</text><text class="terminal-763863226-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-763863226-line-21)">-run</text><text class="terminal-763863226-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-76386322 [...]
+</text><text class="terminal-763863226-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-763863226-line-22)">│</text><text class="terminal-763863226-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-763863226-line-22)">-</text><text class="terminal-763863226-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-763863226-line-22)">-parallelism</text><text class="terminal-763863226-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#terminal- [...]
+</text><text class="terminal-763863226-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-763863226-line-23)">│</text><text class="terminal-763863226-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-763863226-line-23)">[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;&#1 [...]
+</text><text class="terminal-763863226-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-763863226-line-24)">│</text><text class="terminal-763863226-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-763863226-line-24)">-</text><text class="terminal-763863226-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-763863226-line-24)">-python</text><text class="terminal-763863226-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal-763863 [...]
+</text><text class="terminal-763863226-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-763863226-line-25)">│</text><text class="terminal-763863226-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-763863226-line-25)">[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;&#160;& [...]
+</text><text class="terminal-763863226-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-763863226-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-763863226-line-26)">
+</text><text class="terminal-763863226-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-763863226-line-27)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-763863226-line-27)">&#160;Advanced&#160;options&#160;(for&#160;power&#160;users)&#160;────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="678.8" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-763863226-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-763863226-line-28)">│</text><text class="terminal-763863226-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-763863226-line-28)">-</text><text class="terminal-763863226-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-763863226-line-28)">-install</text><text class="terminal-763863226-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#terminal-763 [...]
+</text><text class="terminal-763863226-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-763863226-line-29)">│</text><text class="terminal-763863226-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-763863226-line-29)">-</text><text class="terminal-763863226-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-763863226-line-29)">-airflow</text><text class="terminal-763863226-r5" x="134.2" y="727.6" textLength="207.4" clip-path="url(#terminal-763 [...]
+</text><text class="terminal-763863226-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-763863226-line-30)">│</text><text class="terminal-763863226-r7" x="463.6" y="752" textLength="866.2" clip-path="url(#terminal-763863226-line-30)">(constraints-source-providers&#160;|&#160;constraints&#160;|&#160;constraints-no-providers)</text><text class="terminal-763863226-r4" x="1451.8" y="752" textLength="12.2" clip-path="url(#terminal-763863226-line-30)">│</text><text class="terminal- [...]
+</text><text class="terminal-763863226-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-763863226-line-31)">│</text><text class="terminal-763863226-r4" x="463.6" y="776.4" textLength="866.2" clip-path="url(#terminal-763863226-line-31)">[default:&#160;constraints-source-providers]&#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><text class="terminal-763863226-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-763863226-line-32)">│</text><text class="terminal-763863226-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-763863226-line-32)">-</text><text class="terminal-763863226-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-763863226-line-32)">-airflow</text><text class="terminal-763863226-r5" x="134.2" y="800.8" textLength="268.4" clip-path="url(#terminal-763 [...]
+</text><text class="terminal-763863226-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-763863226-line-33)">│</text><text class="terminal-763863226-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-763863226-line-33)">-</text><text class="terminal-763863226-r5" x="36.6" y="825.2" textLength="85.4" clip-path="url(#terminal-763863226-line-33)">-python</text><text class="terminal-763863226-r5" x="122" y="825.2" textLength="73.2" clip-path="url(#terminal-7638632 [...]
+</text><text class="terminal-763863226-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-763863226-line-34)">│</text><text class="terminal-763863226-r2" x="463.6" y="849.6" textLength="976" clip-path="url(#terminal-763863226-line-34)">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;&#16 [...]
+</text><text class="terminal-763863226-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-763863226-line-35)">│</text><text class="terminal-763863226-r7" x="463.6" y="874" textLength="976" clip-path="url(#terminal-763863226-line-35)">(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;&#160;&# [...]
+</text><text class="terminal-763863226-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-763863226-line-36)">│</text><text class="terminal-763863226-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-763863226-line-36)">-</text><text class="terminal-763863226-r5" x="36.6" y="898.4" textLength="134.2" clip-path="url(#terminal-763863226-line-36)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="898.4" textLength="146.4" clip-path="url(#terminal [...]
+</text><text class="terminal-763863226-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-763863226-line-37)">│</text><text class="terminal-763863226-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-763863226-line-37)">-</text><text class="terminal-763863226-r5" x="36.6" y="922.8" textLength="97.6" clip-path="url(#terminal-763863226-line-37)">-runtime</text><text class="terminal-763863226-r5" x="134.2" y="922.8" textLength="109.8" clip-path="url(#terminal-763 [...]
+</text><text class="terminal-763863226-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-763863226-line-38)">│</text><text class="terminal-763863226-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-763863226-line-38)">-</text><text class="terminal-763863226-r5" x="36.6" y="947.2" textLength="97.6" clip-path="url(#terminal-763863226-line-38)">-runtime</text><text class="terminal-763863226-r5" x="134.2" y="947.2" textLength="146.4" clip-path="url(#terminal-763 [...]
+</text><text class="terminal-763863226-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-763863226-line-39)">│</text><text class="terminal-763863226-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-763863226-line-39)">-</text><text class="terminal-763863226-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-763863226-line-39)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="971.6" textLength="85.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-763863226-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-763863226-line-40)">│</text><text class="terminal-763863226-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-763863226-line-40)">-</text><text class="terminal-763863226-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-763863226-line-40)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="996" textLength="207.4" clip-path="url(#terminal-7638632 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-763863226-line-41)">│</text><text class="terminal-763863226-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-763863226-line-41)">-</text><text class="terminal-763863226-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-763863226-line-41)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1020.4" textLength="195.2" clip-path="url(#term [...]
+</text><text class="terminal-763863226-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-763863226-line-42)">│</text><text class="terminal-763863226-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-763863226-line-42)">-</text><text class="terminal-763863226-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-763863226-line-42)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1044.8" textLength="244" clip-path="url(#termin [...]
+</text><text class="terminal-763863226-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-763863226-line-43)">│</text><text class="terminal-763863226-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-763863226-line-43)">-</text><text class="terminal-763863226-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-763863226-line-43)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1069.2" textLength="158.6" clip-path="url(#term [...]
+</text><text class="terminal-763863226-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-763863226-line-44)">│</text><text class="terminal-763863226-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-763863226-line-44)">-</text><text class="terminal-763863226-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-763863226-line-44)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1093.6" textLength="146.4" clip-path="url(#term [...]
+</text><text class="terminal-763863226-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-763863226-line-45)">│</text><text class="terminal-763863226-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-763863226-line-45)">-</text><text class="terminal-763863226-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-763863226-line-45)">-additional</text><text class="terminal-763863226-r5" x="170.8" y="1118" textLength="195.2" clip-path="url(#terminal-763 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-763863226-line-46)">│</text><text class="terminal-763863226-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-763863226-line-46)">-</text><text class="terminal-763863226-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-763863226-line-46)">-dev</text><text class="terminal-763863226-r5" x="85.4" y="1142.4" textLength="109.8" clip-path="url(#terminal-7638 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-763863226-line-47)">│</text><text class="terminal-763863226-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-763863226-line-47)">-</text><text class="terminal-763863226-r5" x="36.6" y="1166.8" textLength="48.8" clip-path="url(#terminal-763863226-line-47)">-dev</text><text class="terminal-763863226-r5" x="85.4" y="1166.8" textLength="146.4" clip-path="url(#terminal-7638 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1191.2" textLength="1464" clip-path="url(#terminal-763863226-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="1191.2" textLength="12.2" clip-path="url(#terminal-763863226-line-48)">
+</text><text class="terminal-763863226-r4" x="0" y="1215.6" textLength="24.4" clip-path="url(#terminal-763863226-line-49)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="1215.6" textLength="1415.2" clip-path="url(#terminal-763863226-line-49)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="1215.6" textLength="2 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-763863226-line-50)">│</text><text class="terminal-763863226-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-763863226-line-50)">-</text><text class="terminal-763863226-r5" x="36.6" y="1240" textLength="85.4" clip-path="url(#terminal-763863226-line-50)">-github</text><text class="terminal-763863226-r5" x="122" y="1240" textLength="73.2" clip-path="url(#terminal-763863226-l [...]
+</text><text class="terminal-763863226-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-763863226-line-51)">│</text><text class="terminal-763863226-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-763863226-line-51)">-</text><text class="terminal-763863226-r5" x="36.6" y="1264.4" textLength="85.4" clip-path="url(#terminal-763863226-line-51)">-github</text><text class="terminal-763863226-r5" x="122" y="1264.4" textLength="109.8" clip-path="url(#terminal-76 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-763863226-line-52)">│</text><text class="terminal-763863226-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-763863226-line-52)">-</text><text class="terminal-763863226-r5" x="36.6" y="1288.8" textLength="109.8" clip-path="url(#terminal-763863226-line-52)">-platform</text><text class="terminal-763863226-r2" x="341.6" y="1288.8" textLength="329.4" clip-path="url(#termin [...]
+</text><text class="terminal-763863226-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-763863226-line-53)">│</text><text class="terminal-763863226-r5" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#terminal-763863226-line-53)">-</text><text class="terminal-763863226-r5" x="36.6" y="1313.2" textLength="61" clip-path="url(#terminal-763863226-line-53)">-push</text><text class="terminal-763863226-r5" x="97.6" y="1313.2" textLength="73.2" clip-path="url(#terminal-763863 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-763863226-line-54)">│</text><text class="terminal-763863226-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-763863226-line-54)">-</text><text class="terminal-763863226-r5" x="36.6" y="1337.6" textLength="73.2" clip-path="url(#terminal-763863226-line-54)">-empty</text><text class="terminal-763863226-r5" x="109.8" y="1337.6" textLength="73.2" clip-path="url(#terminal-76 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-763863226-line-55)">│</text><text class="terminal-763863226-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-763863226-line-55)">-</text><text class="terminal-763863226-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-763863226-line-55)">-prepare</text><text class="terminal-763863226-r5" x="134.2" y="1362" textLength="158.6" clip-path="url(#terminal-7638632 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-763863226-line-56)">│</text><text class="terminal-763863226-r2" x="341.6" y="1386.4" textLength="1098" clip-path="url(#terminal-763863226-line-56)">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-763863226-r4" x="0" y="1410.8" textLength="1464" clip-path="url(#terminal-763863226-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="1410.8" textLength="12.2" clip-path="url(#terminal-763863226-line-57)">
+</text><text class="terminal-763863226-r4" x="0" y="1435.2" textLength="24.4" clip-path="url(#terminal-763863226-line-58)">╭─</text><text class="terminal-763863226-r4" x="24.4" y="1435.2" textLength="1415.2" clip-path="url(#terminal-763863226-line-58)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-763863226-r4" x="1439.6" y="1435.2" textLength="24.4" clip-path="url(#terminal-76386 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-763863226-line-59)">│</text><text class="terminal-763863226-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-763863226-line-59)">-</text><text class="terminal-763863226-r5" x="36.6" y="1459.6" textLength="85.4" clip-path="url(#terminal-763863226-line-59)">-github</text><text class="terminal-763863226-r5" x="122" y="1459.6" textLength="134.2" clip-path="url(#terminal-76 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-763863226-line-60)">│</text><text class="terminal-763863226-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-763863226-line-60)">-</text><text class="terminal-763863226-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-763863226-line-60)">-verbose</text><text class="terminal-763863226-r6" x="280.6" y="1484" textLength="24.4" clip-path="url(#terminal-76386322 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-763863226-line-61)">│</text><text class="terminal-763863226-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-763863226-line-61)">-</text><text class="terminal-763863226-r5" x="36.6" y="1508.4" textLength="48.8" clip-path="url(#terminal-763863226-line-61)">-dry</text><text class="terminal-763863226-r5" x="85.4" y="1508.4" textLength="48.8" clip-path="url(#terminal-76386 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-763863226-line-62)">│</text><text class="terminal-763863226-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-763863226-line-62)">-</text><text class="terminal-763863226-r5" x="36.6" y="1532.8" textLength="85.4" clip-path="url(#terminal-763863226-line-62)">-answer</text><text class="terminal-763863226-r6" x="280.6" y="1532.8" textLength="24.4" clip-path="url(#terminal-7 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-763863226-line-63)">│</text><text class="terminal-763863226-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-763863226-line-63)">-</text><text class="terminal-763863226-r5" x="36.6" y="1557.2" textLength="61" clip-path="url(#terminal-763863226-line-63)">-help</text><text class="terminal-763863226-r6" x="280.6" y="1557.2" textLength="24.4" clip-path="url(#terminal-76386 [...]
+</text><text class="terminal-763863226-r4" x="0" y="1581.6" textLength="1464" clip-path="url(#terminal-763863226-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-763863226-r2" x="1464" y="1581.6" textLength="12.2" clip-path="url(#terminal-763863226-line-64)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg
index 331cd3808b..0a18dfecae 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 1977.6" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2050.8" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,357 +19,369 @@
         font-weight: 700;
     }
 
-    .terminal-3171273326-matrix {
+    .terminal-1022829484-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3171273326-title {
+    .terminal-1022829484-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3171273326-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3171273326-r2 { fill: #c5c8c6 }
-.terminal-3171273326-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3171273326-r4 { fill: #868887 }
-.terminal-3171273326-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3171273326-r6 { fill: #98a84b;font-weight: bold }
-.terminal-3171273326-r7 { fill: #8d7b39 }
+    .terminal-1022829484-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1022829484-r2 { fill: #c5c8c6 }
+.terminal-1022829484-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1022829484-r4 { fill: #868887 }
+.terminal-1022829484-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1022829484-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1022829484-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
-    <clipPath id="terminal-3171273326-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1926.6" />
+    <clipPath id="terminal-1022829484-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="1999.8" />
     </clipPath>
-    <clipPath id="terminal-3171273326-line-0">
+    <clipPath id="terminal-1022829484-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-1">
+<clipPath id="terminal-1022829484-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-2">
+<clipPath id="terminal-1022829484-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-3">
+<clipPath id="terminal-1022829484-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-4">
+<clipPath id="terminal-1022829484-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-5">
+<clipPath id="terminal-1022829484-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-6">
+<clipPath id="terminal-1022829484-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-7">
+<clipPath id="terminal-1022829484-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-8">
+<clipPath id="terminal-1022829484-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-9">
+<clipPath id="terminal-1022829484-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-10">
+<clipPath id="terminal-1022829484-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-11">
+<clipPath id="terminal-1022829484-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-12">
+<clipPath id="terminal-1022829484-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-13">
+<clipPath id="terminal-1022829484-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-14">
+<clipPath id="terminal-1022829484-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-15">
+<clipPath id="terminal-1022829484-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-16">
+<clipPath id="terminal-1022829484-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-17">
+<clipPath id="terminal-1022829484-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-18">
+<clipPath id="terminal-1022829484-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-19">
+<clipPath id="terminal-1022829484-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-20">
+<clipPath id="terminal-1022829484-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-21">
+<clipPath id="terminal-1022829484-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-22">
+<clipPath id="terminal-1022829484-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-23">
+<clipPath id="terminal-1022829484-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-24">
+<clipPath id="terminal-1022829484-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-25">
+<clipPath id="terminal-1022829484-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-26">
+<clipPath id="terminal-1022829484-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-27">
+<clipPath id="terminal-1022829484-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-28">
+<clipPath id="terminal-1022829484-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-29">
+<clipPath id="terminal-1022829484-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-30">
+<clipPath id="terminal-1022829484-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-31">
+<clipPath id="terminal-1022829484-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-32">
+<clipPath id="terminal-1022829484-line-32">
     <rect x="0" y="782.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-33">
+<clipPath id="terminal-1022829484-line-33">
     <rect x="0" y="806.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-34">
+<clipPath id="terminal-1022829484-line-34">
     <rect x="0" y="831.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-35">
+<clipPath id="terminal-1022829484-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-36">
+<clipPath id="terminal-1022829484-line-36">
     <rect x="0" y="879.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-37">
+<clipPath id="terminal-1022829484-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-38">
+<clipPath id="terminal-1022829484-line-38">
     <rect x="0" y="928.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-39">
+<clipPath id="terminal-1022829484-line-39">
     <rect x="0" y="953.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-40">
+<clipPath id="terminal-1022829484-line-40">
     <rect x="0" y="977.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-41">
+<clipPath id="terminal-1022829484-line-41">
     <rect x="0" y="1001.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-42">
+<clipPath id="terminal-1022829484-line-42">
     <rect x="0" y="1026.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-43">
+<clipPath id="terminal-1022829484-line-43">
     <rect x="0" y="1050.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-44">
+<clipPath id="terminal-1022829484-line-44">
     <rect x="0" y="1075.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-45">
+<clipPath id="terminal-1022829484-line-45">
     <rect x="0" y="1099.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-46">
+<clipPath id="terminal-1022829484-line-46">
     <rect x="0" y="1123.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-47">
+<clipPath id="terminal-1022829484-line-47">
     <rect x="0" y="1148.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-48">
+<clipPath id="terminal-1022829484-line-48">
     <rect x="0" y="1172.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-49">
+<clipPath id="terminal-1022829484-line-49">
     <rect x="0" y="1197.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-50">
+<clipPath id="terminal-1022829484-line-50">
     <rect x="0" y="1221.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-51">
+<clipPath id="terminal-1022829484-line-51">
     <rect x="0" y="1245.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-52">
+<clipPath id="terminal-1022829484-line-52">
     <rect x="0" y="1270.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-53">
+<clipPath id="terminal-1022829484-line-53">
     <rect x="0" y="1294.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-54">
+<clipPath id="terminal-1022829484-line-54">
     <rect x="0" y="1319.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-55">
+<clipPath id="terminal-1022829484-line-55">
     <rect x="0" y="1343.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-56">
+<clipPath id="terminal-1022829484-line-56">
     <rect x="0" y="1367.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-57">
+<clipPath id="terminal-1022829484-line-57">
     <rect x="0" y="1392.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-58">
+<clipPath id="terminal-1022829484-line-58">
     <rect x="0" y="1416.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-59">
+<clipPath id="terminal-1022829484-line-59">
     <rect x="0" y="1441.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-60">
+<clipPath id="terminal-1022829484-line-60">
     <rect x="0" y="1465.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-61">
+<clipPath id="terminal-1022829484-line-61">
     <rect x="0" y="1489.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-62">
+<clipPath id="terminal-1022829484-line-62">
     <rect x="0" y="1514.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-63">
+<clipPath id="terminal-1022829484-line-63">
     <rect x="0" y="1538.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-64">
+<clipPath id="terminal-1022829484-line-64">
     <rect x="0" y="1563.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-65">
+<clipPath id="terminal-1022829484-line-65">
     <rect x="0" y="1587.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-66">
+<clipPath id="terminal-1022829484-line-66">
     <rect x="0" y="1611.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-67">
+<clipPath id="terminal-1022829484-line-67">
     <rect x="0" y="1636.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-68">
+<clipPath id="terminal-1022829484-line-68">
     <rect x="0" y="1660.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-69">
+<clipPath id="terminal-1022829484-line-69">
     <rect x="0" y="1685.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-70">
+<clipPath id="terminal-1022829484-line-70">
     <rect x="0" y="1709.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-71">
+<clipPath id="terminal-1022829484-line-71">
     <rect x="0" y="1733.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-72">
+<clipPath id="terminal-1022829484-line-72">
     <rect x="0" y="1758.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-73">
+<clipPath id="terminal-1022829484-line-73">
     <rect x="0" y="1782.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-74">
+<clipPath id="terminal-1022829484-line-74">
     <rect x="0" y="1807.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-75">
+<clipPath id="terminal-1022829484-line-75">
     <rect x="0" y="1831.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-76">
+<clipPath id="terminal-1022829484-line-76">
     <rect x="0" y="1855.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3171273326-line-77">
+<clipPath id="terminal-1022829484-line-77">
     <rect x="0" y="1880.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-1022829484-line-78">
+    <rect x="0" y="1904.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1022829484-line-79">
+    <rect x="0" y="1929.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1022829484-line-80">
+    <rect x="0" y="1953.5" 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="1975.6" rx="8"/><text class="terminal-3171273326-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="2048.8" rx="8"/><text class="terminal-1022829484-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-3171273326-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1022829484-clip-terminal)">
     
-    <g class="terminal-3171273326-matrix">
-    <text class="terminal-3171273326-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3171273326-line-0)">
-</text><text class="terminal-3171273326-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3171273326-line-1)">Usage:&#160;</text><text class="terminal-3171273326-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-3171273326-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-3171273326-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-1)">
-</text><text class="terminal-3171273326-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-2)">
-</text><text class="terminal-3171273326-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-3171273326-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-3171273326-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-3)">
-</text><text class="terminal-3171273326-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-4)">
-</text><text class="terminal-3171273326-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3171273326-line-5)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3171273326-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-317127 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-6)">│</text><text class="terminal-3171273326-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-6)">-</text><text class="terminal-3171273326-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-3171273326-line-6)">-python</text><text class="terminal-3171273326-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-317 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-7)">│</text><text class="terminal-3171273326-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-3171273326-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-3171273326-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-8)">│</text><text class="terminal-3171273326-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-3171273326-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-3171273326-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-9)">│</text><text class="terminal-3171273326-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-9)">-</text><text class="terminal-3171273326-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-9)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3171273326-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3171273326-line-10)">│</text><text class="terminal-3171273326-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-3171273326-line-10)">-</text><text class="terminal-3171273326-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-3171273326-line-10)">-upgrade</text><text class="terminal-3171273326-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-3171 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-11)">│</text><text class="terminal-3171273326-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-11)">-</text><text class="terminal-3171273326-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-3171273326-line-11)">-debian</text><text class="terminal-3171273326-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-12)">│</text><text class="terminal-3171273326-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-12)">-</text><text class="terminal-3171273326-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-3171273326-line-12)">-image</text><text class="terminal-3171273326-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3171273326-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-13)">│</text><text class="terminal-3171273326-r5" x="475.8" y="337.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-13)">-</text><text class="terminal-3171273326-r5" x="488" y="337.2" textLength="73.2" clip-path="url(#terminal-3171273326-line-13)">-mount</text><text class="terminal-3171273326-r5" x="561.2" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3171273326-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-14)">│</text><text class="terminal-3171273326-r7" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-3171273326-line-14)">(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;&#16 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3171273326-line-15)">│</text><text class="terminal-3171273326-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-3171273326-line-15)">-</text><text class="terminal-3171273326-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-3171273326-line-15)">-tag</text><text class="terminal-3171273326-r5" x="85.4" y="386" textLength="122" clip-path="url(#terminal-3171273326- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-16)">│</text><text class="terminal-3171273326-r2" x="475.8" y="410.4" textLength="414.8" clip-path="url(#terminal-3171273326-line-16)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-3171273326-r5" x="890.6" y="410.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-16)">-</text><text class="terminal-3171273326- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-17)">│</text><text class="terminal-3171273326-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-17)">-</text><text class="terminal-3171273326-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-3171273326-line-17)">-docker</text><text class="terminal-3171273326-r5" x="122" y="434.8" textLength="73.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-18)">│</text><text class="terminal-3171273326-r4" x="475.8" y="459.2" textLength="549" clip-path="url(#terminal-3171273326-line-18)">[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-3171273326-r4" x="1451.8" y="45 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-3171273326-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-19)">
-</text><text class="terminal-3171273326-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-3171273326-line-20)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-3171273326-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-3171273326-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-21)">│</text><text class="terminal-3171273326-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-21)">-</text><text class="terminal-3171273326-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-3171273326-line-21)">-run</text><text class="terminal-3171273326-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-3 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-22)">│</text><text class="terminal-3171273326-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-22)">-</text><text class="terminal-3171273326-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-3171273326-line-22)">-parallelism</text><text class="terminal-3171273326-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#te [...]
-</text><text class="terminal-3171273326-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-23)">│</text><text class="terminal-3171273326-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-3171273326-line-23)">[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-3171273326-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-24)">│</text><text class="terminal-3171273326-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-24)">-</text><text class="terminal-3171273326-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-3171273326-line-24)">-python</text><text class="terminal-3171273326-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3171273326-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3171273326-line-25)">│</text><text class="terminal-3171273326-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-3171273326-line-25)">[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;&#1 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-3171273326-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-26)">
-</text><text class="terminal-3171273326-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-3171273326-line-27)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-3171273326-line-27)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="678.8" textLength="24.4" clip-path="ur [...]
-</text><text class="terminal-3171273326-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-28)">│</text><text class="terminal-3171273326-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-28)">-</text><text class="terminal-3171273326-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-3171273326-line-28)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#termi [...]
-</text><text class="terminal-3171273326-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-29)">│</text><text class="terminal-3171273326-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-29)">-</text><text class="terminal-3171273326-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-29)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
-</text><text class="terminal-3171273326-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3171273326-line-30)">│</text><text class="terminal-3171273326-r7" x="463.6" y="752" textLength="976" clip-path="url(#terminal-3171273326-line-30)">(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;&#16 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-31)">│</text><text class="terminal-3171273326-r4" x="463.6" y="776.4" textLength="976" clip-path="url(#terminal-3171273326-line-31)">[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-3171273326-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-32)">│</text><text class="terminal-3171273326-r4" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-3171273326-line-32)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-3171273326-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-32)">│</text><text class="terminal-3 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-33)">│</text><text class="terminal-3171273326-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-33)">-</text><text class="terminal-3171273326-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-3171273326-line-33)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="825.2" textLength="207.4" clip-path="url(#termi [...]
-</text><text class="terminal-3171273326-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-34)">│</text><text class="terminal-3171273326-r7" x="463.6" y="849.6" textLength="866.2" clip-path="url(#terminal-3171273326-line-34)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-3171273326-r4" x="1451.8" y="849.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-34)">│</text><text clas [...]
-</text><text class="terminal-3171273326-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3171273326-line-35)">│</text><text class="terminal-3171273326-r4" x="463.6" y="874" textLength="866.2" clip-path="url(#terminal-3171273326-line-35)">[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;&#160 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-36)">│</text><text class="terminal-3171273326-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-36)">-</text><text class="terminal-3171273326-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-36)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="898.4" textLength="268.4" clip-path="url(#termi [...]
-</text><text class="terminal-3171273326-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-37)">│</text><text class="terminal-3171273326-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-37)">-</text><text class="terminal-3171273326-r5" x="36.6" y="922.8" textLength="134.2" clip-path="url(#terminal-3171273326-line-37)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="922.8" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-38)">│</text><text class="terminal-3171273326-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-38)">-</text><text class="terminal-3171273326-r5" x="36.6" y="947.2" textLength="134.2" clip-path="url(#terminal-3171273326-line-38)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="947.2" textLength="85.4" clip-path="url(#te [...]
-</text><text class="terminal-3171273326-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-39)">│</text><text class="terminal-3171273326-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-39)">-</text><text class="terminal-3171273326-r5" x="36.6" y="971.6" textLength="134.2" clip-path="url(#terminal-3171273326-line-39)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="971.6" textLength="207.4" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-3171273326-line-40)">│</text><text class="terminal-3171273326-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-3171273326-line-40)">-</text><text class="terminal-3171273326-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-3171273326-line-40)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="996" textLength="195.2" clip-path="url(#terminal- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-41)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-41)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-3171273326-line-41)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1020.4" textLength="244" clip-path="url( [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-42)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-42)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-3171273326-line-42)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1044.8" textLength="158.6" clip-path="ur [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-43)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-43)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-3171273326-line-43)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1069.2" textLength="146.4" clip-path="ur [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-44)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-44)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-3171273326-line-44)">-additional</text><text class="terminal-3171273326-r5" x="170.8" y="1093.6" textLength="195.2" clip-path="ur [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3171273326-line-45)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3171273326-line-45)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1118" textLength="97.6" clip-path="url(#terminal-3171273326-line-45)">-runtime</text><text class="terminal-3171273326-r5" x="134.2" y="1118" textLength="109.8" clip-path="url(#terminal- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-46)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-46)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-46)">-runtime</text><text class="terminal-3171273326-r5" x="134.2" y="1142.4" textLength="146.4" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-47)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-47)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1166.8" textLength="48.8" clip-path="url(#terminal-3171273326-line-47)">-dev</text><text class="terminal-3171273326-r5" x="85.4" y="1166.8" textLength="109.8" clip-path="url(#termin [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-48)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-48)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1191.2" textLength="48.8" clip-path="url(#terminal-3171273326-line-48)">-dev</text><text class="terminal-3171273326-r5" x="85.4" y="1191.2" textLength="146.4" clip-path="url(#termin [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-3171273326-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-49)">
-</text><text class="terminal-3171273326-r4" x="0" y="1240" textLength="24.4" clip-path="url(#terminal-3171273326-line-50)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="1240" textLength="1415.2" clip-path="url(#terminal-3171273326-line-50)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="1240" textLength="24.4" clip-p [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-51)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-51)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1264.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-51)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="1264.4" textLength="268.4" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1288.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-52)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-52)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1288.8" textLength="97.6" clip-path="url(#terminal-3171273326-line-52)">-airflow</text><text class="terminal-3171273326-r5" x="134.2" y="1288.8" textLength="170.8" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1313.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-53)">│</text><text class="terminal-3171273326-r2" x="536.8" y="1313.2" textLength="902.8" clip-path="url(#terminal-3171273326-line-53)">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-3171273326-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-54)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-54)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-54)">-cleanup</text><text class="terminal-3171273326-r5" x="134.2" y="1337.6" textLength="97.6" clip-path="url(#te [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-3171273326-line-55)">│</text><text class="terminal-3171273326-r2" x="536.8" y="1362" textLength="170.8" clip-path="url(#terminal-3171273326-line-55)">together&#160;with&#160;</text><text class="terminal-3171273326-r5" x="707.6" y="1362" textLength="12.2" clip-path="url(#terminal-3171273326-line-55)">-</text><text class="terminal-3171273326-r5" x="719.8" y="1362" textLength="97.6" clip-pa [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-56)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-56)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-56)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1386.4" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-57)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-57)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-3171273326-line-57)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1410.8" textLength="317.2" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-58)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-58)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1435.2" textLength="97.6" clip-path="url(#terminal-3171273326-line-58)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1435.2" textLength="353.8" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-59)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-59)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-59)">-disable</text><text class="terminal-3171273326-r5" x="134.2" y="1459.6" textLength="231.8" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-3171273326-line-60)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-3171273326-line-60)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-3171273326-line-60)">-install</text><text class="terminal-3171273326-r5" x="134.2" y="1484" textLength="219.6" clip-path="url(#terminal- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-61)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-61)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1508.4" textLength="158.6" clip-path="url(#terminal-3171273326-line-61)">-installation</text><text class="terminal-3171273326-r5" x="195.2" y="1508.4" textLength="85.4" clip-path="u [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1532.8" textLength="1464" clip-path="url(#terminal-3171273326-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1532.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-62)">
-</text><text class="terminal-3171273326-r4" x="0" y="1557.2" textLength="24.4" clip-path="url(#terminal-3171273326-line-63)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="1557.2" textLength="1415.2" clip-path="url(#terminal-3171273326-line-63)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="1557.2" textLeng [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-64)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-64)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1581.6" textLength="85.4" clip-path="url(#terminal-3171273326-line-64)">-github</text><text class="terminal-3171273326-r5" x="122" y="1581.6" textLength="73.2" clip-path="url(#termi [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1606" textLength="12.2" clip-path="url(#terminal-3171273326-line-65)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1606" textLength="12.2" clip-path="url(#terminal-3171273326-line-65)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1606" textLength="85.4" clip-path="url(#terminal-3171273326-line-65)">-github</text><text class="terminal-3171273326-r5" x="122" y="1606" textLength="109.8" clip-path="url(#terminal-317 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1630.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-66)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-66)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1630.4" textLength="109.8" clip-path="url(#terminal-3171273326-line-66)">-platform</text><text class="terminal-3171273326-r2" x="341.6" y="1630.4" textLength="329.4" clip-path="url( [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-67)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-67)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1654.8" textLength="61" clip-path="url(#terminal-3171273326-line-67)">-push</text><text class="terminal-3171273326-r5" x="97.6" y="1654.8" textLength="73.2" clip-path="url(#terminal [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-68)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-68)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1679.2" textLength="73.2" clip-path="url(#terminal-3171273326-line-68)">-empty</text><text class="terminal-3171273326-r5" x="109.8" y="1679.2" textLength="73.2" clip-path="url(#term [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-69)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-69)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1703.6" textLength="97.6" clip-path="url(#terminal-3171273326-line-69)">-prepare</text><text class="terminal-3171273326-r5" x="134.2" y="1703.6" textLength="158.6" clip-path="url(#t [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-3171273326-line-70)">│</text><text class="terminal-3171273326-r2" x="341.6" y="1728" textLength="1098" clip-path="url(#terminal-3171273326-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-3171273326-r4" x="0" y="1752.4" textLength="1464" clip-path="url(#terminal-3171273326-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1752.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-71)">
-</text><text class="terminal-3171273326-r4" x="0" y="1776.8" textLength="24.4" clip-path="url(#terminal-3171273326-line-72)">╭─</text><text class="terminal-3171273326-r4" x="24.4" y="1776.8" textLength="1415.2" clip-path="url(#terminal-3171273326-line-72)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3171273326-r4" x="1439.6" y="1776.8" textLength="24.4" clip-path="url(#terminal- [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-73)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-73)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1801.2" textLength="85.4" clip-path="url(#terminal-3171273326-line-73)">-github</text><text class="terminal-3171273326-r5" x="122" y="1801.2" textLength="134.2" clip-path="url(#term [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1825.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-74)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#terminal-3171273326-line-74)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1825.6" textLength="85.4" clip-path="url(#terminal-3171273326-line-74)">-answer</text><text class="terminal-3171273326-r6" x="280.6" y="1825.6" textLength="24.4" clip-path="url(#ter [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1850" textLength="12.2" clip-path="url(#terminal-3171273326-line-75)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1850" textLength="12.2" clip-path="url(#terminal-3171273326-line-75)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1850" textLength="48.8" clip-path="url(#terminal-3171273326-line-75)">-dry</text><text class="terminal-3171273326-r5" x="85.4" y="1850" textLength="48.8" clip-path="url(#terminal-317127 [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-76)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-3171273326-line-76)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1874.4" textLength="97.6" clip-path="url(#terminal-3171273326-line-76)">-verbose</text><text class="terminal-3171273326-r6" x="280.6" y="1874.4" textLength="24.4" clip-path="url(#te [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-77)">│</text><text class="terminal-3171273326-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-3171273326-line-77)">-</text><text class="terminal-3171273326-r5" x="36.6" y="1898.8" textLength="61" clip-path="url(#terminal-3171273326-line-77)">-help</text><text class="terminal-3171273326-r6" x="280.6" y="1898.8" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3171273326-r4" x="0" y="1923.2" textLength="1464" clip-path="url(#terminal-3171273326-line-78)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3171273326-r2" x="1464" y="1923.2" textLength="12.2" clip-path="url(#terminal-3171273326-line-78)">
+    <g class="terminal-1022829484-matrix">
+    <text class="terminal-1022829484-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1022829484-line-0)">
+</text><text class="terminal-1022829484-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-1)">Usage:&#160;</text><text class="terminal-1022829484-r1" x="97.6" y="44.4" textLength="402.6" clip-path="url(#terminal-1022829484-line-1)">breeze&#160;build-prod-image&#160;[OPTIONS]</text><text class="terminal-1022829484-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-1)">
+</text><text class="terminal-1022829484-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-2)">
+</text><text class="terminal-1022829484-r2" x="12.2" y="93.2" textLength="1293.2" clip-path="url(#terminal-1022829484-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-1022829484-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-3)">
+</text><text class="terminal-1022829484-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-4)">
+</text><text class="terminal-1022829484-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1022829484-line-5)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1022829484-line-5)">&#160;Basic&#160;usage&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-102282 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-6)">│</text><text class="terminal-1022829484-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-6)">-</text><text class="terminal-1022829484-r5" x="36.6" y="166.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-6)">-python</text><text class="terminal-1022829484-r6" x="427" y="166.4" textLength="24.4" clip-path="url(#terminal-102 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-7)">│</text><text class="terminal-1022829484-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#terminal-1022829484-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-1022829484-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-8)">│</text><text class="terminal-1022829484-r4" x="475.8" y="215.2" textLength="732" clip-path="url(#terminal-1022829484-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-1022829484-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-9)">│</text><text class="terminal-1022829484-r5" x="24.4" y="239.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-9)">-</text><text class="terminal-1022829484-r5" x="36.6" y="239.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-9)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="239.6" textLength="195.2" clip-path="url(#terminal [...]
+</text><text class="terminal-1022829484-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1022829484-line-10)">│</text><text class="terminal-1022829484-r5" x="24.4" y="264" textLength="12.2" clip-path="url(#terminal-1022829484-line-10)">-</text><text class="terminal-1022829484-r5" x="36.6" y="264" textLength="97.6" clip-path="url(#terminal-1022829484-line-10)">-upgrade</text><text class="terminal-1022829484-r5" x="134.2" y="264" textLength="268.4" clip-path="url(#terminal-1022 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-11)">│</text><text class="terminal-1022829484-r5" x="24.4" y="288.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-11)">-</text><text class="terminal-1022829484-r5" x="36.6" y="288.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-11)">-debian</text><text class="terminal-1022829484-r5" x="122" y="288.4" textLength="97.6" clip-path="url(#terminal- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-12)">│</text><text class="terminal-1022829484-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-12)">-</text><text class="terminal-1022829484-r5" x="36.6" y="312.8" textLength="73.2" clip-path="url(#terminal-1022829484-line-12)">-image</text><text class="terminal-1022829484-r5" x="109.8" y="312.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1022829484-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-13)">│</text><text class="terminal-1022829484-r5" x="475.8" y="337.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-13)">-</text><text class="terminal-1022829484-r5" x="488" y="337.2" textLength="73.2" clip-path="url(#terminal-1022829484-line-13)">-mount</text><text class="terminal-1022829484-r5" x="561.2" y="337.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-1022829484-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-14)">│</text><text class="terminal-1022829484-r7" x="475.8" y="361.6" textLength="963.8" clip-path="url(#terminal-1022829484-line-14)">(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;&#16 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1022829484-line-15)">│</text><text class="terminal-1022829484-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1022829484-line-15)">-</text><text class="terminal-1022829484-r5" x="36.6" y="386" textLength="48.8" clip-path="url(#terminal-1022829484-line-15)">-tag</text><text class="terminal-1022829484-r5" x="85.4" y="386" textLength="122" clip-path="url(#terminal-1022829484- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-16)">│</text><text class="terminal-1022829484-r2" x="475.8" y="410.4" textLength="414.8" clip-path="url(#terminal-1022829484-line-16)">when&#160;you&#160;build&#160;or&#160;pull&#160;image&#160;with&#160;</text><text class="terminal-1022829484-r5" x="890.6" y="410.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-16)">-</text><text class="terminal-1022829484- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-17)">│</text><text class="terminal-1022829484-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-17)">-</text><text class="terminal-1022829484-r5" x="36.6" y="434.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-17)">-docker</text><text class="terminal-1022829484-r5" x="122" y="434.8" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-18)">│</text><text class="terminal-1022829484-r4" x="475.8" y="459.2" textLength="549" clip-path="url(#terminal-1022829484-line-18)">[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-1022829484-r4" x="1451.8" y="45 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-1022829484-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-19)">
+</text><text class="terminal-1022829484-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-1022829484-line-20)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-1022829484-line-20)">&#160;Building&#160;images&#160;in&#160;parallel&#160;───────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="508" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-1022829484-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-21)">│</text><text class="terminal-1022829484-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-21)">-</text><text class="terminal-1022829484-r5" x="36.6" y="532.4" textLength="48.8" clip-path="url(#terminal-1022829484-line-21)">-run</text><text class="terminal-1022829484-r5" x="85.4" y="532.4" textLength="146.4" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-22)">│</text><text class="terminal-1022829484-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-22)">-</text><text class="terminal-1022829484-r5" x="36.6" y="556.8" textLength="146.4" clip-path="url(#terminal-1022829484-line-22)">-parallelism</text><text class="terminal-1022829484-r2" x="280.6" y="556.8" textLength="915" clip-path="url(#te [...]
+</text><text class="terminal-1022829484-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-23)">│</text><text class="terminal-1022829484-r4" x="280.6" y="581.2" textLength="915" clip-path="url(#terminal-1022829484-line-23)">[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-1022829484-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-24)">│</text><text class="terminal-1022829484-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-24)">-</text><text class="terminal-1022829484-r5" x="36.6" y="605.6" textLength="85.4" clip-path="url(#terminal-1022829484-line-24)">-python</text><text class="terminal-1022829484-r5" x="122" y="605.6" textLength="109.8" clip-path="url(#terminal [...]
+</text><text class="terminal-1022829484-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-1022829484-line-25)">│</text><text class="terminal-1022829484-r4" x="280.6" y="630" textLength="951.6" clip-path="url(#terminal-1022829484-line-25)">[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;&#1 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="654.4" textLength="1464" clip-path="url(#terminal-1022829484-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-26)">
+</text><text class="terminal-1022829484-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#terminal-1022829484-line-27)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="678.8" textLength="1415.2" clip-path="url(#terminal-1022829484-line-27)">&#160;Options&#160;for&#160;customizing&#160;images&#160;────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="678.8" textLength="24.4" clip-path="ur [...]
+</text><text class="terminal-1022829484-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-28)">│</text><text class="terminal-1022829484-r5" x="24.4" y="703.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-28)">-</text><text class="terminal-1022829484-r5" x="36.6" y="703.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-28)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="703.2" textLength="280.6" clip-path="url(#termi [...]
+</text><text class="terminal-1022829484-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-29)">│</text><text class="terminal-1022829484-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-29)">-</text><text class="terminal-1022829484-r5" x="36.6" y="727.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-29)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="727.6" textLength="85.4" clip-path="url(#termin [...]
+</text><text class="terminal-1022829484-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-1022829484-line-30)">│</text><text class="terminal-1022829484-r7" x="463.6" y="752" textLength="976" clip-path="url(#terminal-1022829484-line-30)">(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;&#16 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-31)">│</text><text class="terminal-1022829484-r4" x="463.6" y="776.4" textLength="976" clip-path="url(#terminal-1022829484-line-31)">[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-1022829484-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-32)">│</text><text class="terminal-1022829484-r4" x="463.6" y="800.8" textLength="976" clip-path="url(#terminal-1022829484-line-32)">amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,google…</text><text class="terminal-1022829484-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-32)">│</text><text class="terminal-1 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-33)">│</text><text class="terminal-1022829484-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-33)">-</text><text class="terminal-1022829484-r5" x="36.6" y="825.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-33)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="825.2" textLength="207.4" clip-path="url(#termi [...]
+</text><text class="terminal-1022829484-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-34)">│</text><text class="terminal-1022829484-r7" x="463.6" y="849.6" textLength="866.2" clip-path="url(#terminal-1022829484-line-34)">(constraints&#160;|&#160;constraints-no-providers&#160;|&#160;constraints-source-providers)</text><text class="terminal-1022829484-r4" x="1451.8" y="849.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-34)">│</text><text clas [...]
+</text><text class="terminal-1022829484-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-1022829484-line-35)">│</text><text class="terminal-1022829484-r4" x="463.6" y="874" textLength="866.2" clip-path="url(#terminal-1022829484-line-35)">[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;&#160 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-36)">│</text><text class="terminal-1022829484-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-36)">-</text><text class="terminal-1022829484-r5" x="36.6" y="898.4" textLength="97.6" clip-path="url(#terminal-1022829484-line-36)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="898.4" textLength="268.4" clip-path="url(#termi [...]
+</text><text class="terminal-1022829484-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-37)">│</text><text class="terminal-1022829484-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-37)">-</text><text class="terminal-1022829484-r5" x="36.6" y="922.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-37)">-python</text><text class="terminal-1022829484-r5" x="122" y="922.8" textLength="73.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-38)">│</text><text class="terminal-1022829484-r2" x="463.6" y="947.2" textLength="976" clip-path="url(#terminal-1022829484-line-38)">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-1022829484-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-39)">│</text><text class="terminal-1022829484-r7" x="463.6" y="971.6" textLength="976" clip-path="url(#terminal-1022829484-line-39)">(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-1022829484-r4" x="0" y="996" textLength="12.2" clip-path="url(#terminal-1022829484-line-40)">│</text><text class="terminal-1022829484-r5" x="24.4" y="996" textLength="12.2" clip-path="url(#terminal-1022829484-line-40)">-</text><text class="terminal-1022829484-r5" x="36.6" y="996" textLength="134.2" clip-path="url(#terminal-1022829484-line-40)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="996" textLength="146.4" clip-path="url(#terminal- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1020.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-41)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-41)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1020.4" textLength="134.2" clip-path="url(#terminal-1022829484-line-41)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1020.4" textLength="85.4" clip-path="url [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-42)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-42)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1044.8" textLength="134.2" clip-path="url(#terminal-1022829484-line-42)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1044.8" textLength="207.4" clip-path="ur [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-43)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-43)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1069.2" textLength="134.2" clip-path="url(#terminal-1022829484-line-43)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1069.2" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-44)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-44)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1093.6" textLength="134.2" clip-path="url(#terminal-1022829484-line-44)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1093.6" textLength="244" clip-path="url( [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-1022829484-line-45)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-1022829484-line-45)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1118" textLength="134.2" clip-path="url(#terminal-1022829484-line-45)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1118" textLength="158.6" clip-path="url(#termi [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-46)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-46)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1142.4" textLength="134.2" clip-path="url(#terminal-1022829484-line-46)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1142.4" textLength="146.4" clip-path="ur [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-47)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-47)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1166.8" textLength="134.2" clip-path="url(#terminal-1022829484-line-47)">-additional</text><text class="terminal-1022829484-r5" x="170.8" y="1166.8" textLength="195.2" clip-path="ur [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-48)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-48)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1191.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-48)">-runtime</text><text class="terminal-1022829484-r5" x="134.2" y="1191.2" textLength="109.8" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1215.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-49)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-49)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1215.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-49)">-runtime</text><text class="terminal-1022829484-r5" x="134.2" y="1215.6" textLength="146.4" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1240" textLength="12.2" clip-path="url(#terminal-1022829484-line-50)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1240" textLength="12.2" clip-path="url(#terminal-1022829484-line-50)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1240" textLength="48.8" clip-path="url(#terminal-1022829484-line-50)">-dev</text><text class="terminal-1022829484-r5" x="85.4" y="1240" textLength="109.8" clip-path="url(#terminal-10228 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1264.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-51)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-51)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1264.4" textLength="48.8" clip-path="url(#terminal-1022829484-line-51)">-dev</text><text class="terminal-1022829484-r5" x="85.4" y="1264.4" textLength="146.4" clip-path="url(#termin [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1288.8" textLength="1464" clip-path="url(#terminal-1022829484-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1288.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-52)">
+</text><text class="terminal-1022829484-r4" x="0" y="1313.2" textLength="24.4" clip-path="url(#terminal-1022829484-line-53)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="1313.2" textLength="1415.2" clip-path="url(#terminal-1022829484-line-53)">&#160;Customization&#160;options&#160;(for&#160;specific&#160;customization&#160;needs)&#160;──────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="1313.2" textLength="24.4"  [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1337.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-54)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-54)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-54)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="1337.6" textLength="268.4" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1362" textLength="12.2" clip-path="url(#terminal-1022829484-line-55)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1362" textLength="12.2" clip-path="url(#terminal-1022829484-line-55)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1362" textLength="97.6" clip-path="url(#terminal-1022829484-line-55)">-airflow</text><text class="terminal-1022829484-r5" x="134.2" y="1362" textLength="170.8" clip-path="url(#terminal- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1386.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-56)">│</text><text class="terminal-1022829484-r2" x="536.8" y="1386.4" textLength="902.8" clip-path="url(#terminal-1022829484-line-56)">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-1022829484-r4" x="0" y="1410.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-57)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-57)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1410.8" textLength="97.6" clip-path="url(#terminal-1022829484-line-57)">-cleanup</text><text class="terminal-1022829484-r5" x="134.2" y="1410.8" textLength="97.6" clip-path="url(#te [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1435.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-58)">│</text><text class="terminal-1022829484-r2" x="536.8" y="1435.2" textLength="170.8" clip-path="url(#terminal-1022829484-line-58)">together&#160;with&#160;</text><text class="terminal-1022829484-r5" x="707.6" y="1435.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-58)">-</text><text class="terminal-1022829484-r5" x="719.8" y="1435.2" textLength="97.6" [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1459.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-59)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-59)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1459.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-59)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1459.6" textLength="317.2" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1484" textLength="12.2" clip-path="url(#terminal-1022829484-line-60)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1484" textLength="12.2" clip-path="url(#terminal-1022829484-line-60)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1484" textLength="97.6" clip-path="url(#terminal-1022829484-line-60)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1484" textLength="317.2" clip-path="url(#terminal- [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1508.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-61)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-61)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#terminal-1022829484-line-61)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1508.4" textLength="353.8" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1532.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-62)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-62)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1532.8" textLength="97.6" clip-path="url(#terminal-1022829484-line-62)">-disable</text><text class="terminal-1022829484-r5" x="134.2" y="1532.8" textLength="231.8" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1557.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-63)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-63)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1557.2" textLength="97.6" clip-path="url(#terminal-1022829484-line-63)">-install</text><text class="terminal-1022829484-r5" x="134.2" y="1557.2" textLength="219.6" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1581.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-64)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-64)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1581.6" textLength="158.6" clip-path="url(#terminal-1022829484-line-64)">-installation</text><text class="terminal-1022829484-r5" x="195.2" y="1581.6" textLength="85.4" clip-path="u [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1606" textLength="1464" clip-path="url(#terminal-1022829484-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1606" textLength="12.2" clip-path="url(#terminal-1022829484-line-65)">
+</text><text class="terminal-1022829484-r4" x="0" y="1630.4" textLength="24.4" clip-path="url(#terminal-1022829484-line-66)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="1630.4" textLength="1415.2" clip-path="url(#terminal-1022829484-line-66)">&#160;Preparing&#160;cache&#160;and&#160;push&#160;(for&#160;maintainers&#160;and&#160;CI)&#160;─────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="1630.4" textLeng [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1654.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-67)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-67)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1654.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-67)">-github</text><text class="terminal-1022829484-r5" x="122" y="1654.8" textLength="73.2" clip-path="url(#termi [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1679.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-68)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-68)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1679.2" textLength="85.4" clip-path="url(#terminal-1022829484-line-68)">-github</text><text class="terminal-1022829484-r5" x="122" y="1679.2" textLength="109.8" clip-path="url(#term [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1703.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-69)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-69)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1703.6" textLength="109.8" clip-path="url(#terminal-1022829484-line-69)">-platform</text><text class="terminal-1022829484-r2" x="341.6" y="1703.6" textLength="329.4" clip-path="url( [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1728" textLength="12.2" clip-path="url(#terminal-1022829484-line-70)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1728" textLength="12.2" clip-path="url(#terminal-1022829484-line-70)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1728" textLength="61" clip-path="url(#terminal-1022829484-line-70)">-push</text><text class="terminal-1022829484-r5" x="97.6" y="1728" textLength="73.2" clip-path="url(#terminal-1022829 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1752.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-71)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-71)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1752.4" textLength="73.2" clip-path="url(#terminal-1022829484-line-71)">-empty</text><text class="terminal-1022829484-r5" x="109.8" y="1752.4" textLength="73.2" clip-path="url(#term [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1776.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-72)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-72)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1776.8" textLength="97.6" clip-path="url(#terminal-1022829484-line-72)">-prepare</text><text class="terminal-1022829484-r5" x="134.2" y="1776.8" textLength="158.6" clip-path="url(#t [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1801.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-73)">│</text><text class="terminal-1022829484-r2" x="341.6" y="1801.2" textLength="1098" clip-path="url(#terminal-1022829484-line-73)">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-1022829484-r4" x="0" y="1825.6" textLength="1464" clip-path="url(#terminal-1022829484-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1825.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-74)">
+</text><text class="terminal-1022829484-r4" x="0" y="1850" textLength="24.4" clip-path="url(#terminal-1022829484-line-75)">╭─</text><text class="terminal-1022829484-r4" x="24.4" y="1850" textLength="1415.2" clip-path="url(#terminal-1022829484-line-75)">&#160;Options&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1022829484-r4" x="1439.6" y="1850" textLength="24.4" clip-path="url(#terminal-102282 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1874.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-76)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-76)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1874.4" textLength="85.4" clip-path="url(#terminal-1022829484-line-76)">-github</text><text class="terminal-1022829484-r5" x="122" y="1874.4" textLength="134.2" clip-path="url(#term [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1898.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-77)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#terminal-1022829484-line-77)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1898.8" textLength="85.4" clip-path="url(#terminal-1022829484-line-77)">-answer</text><text class="terminal-1022829484-r6" x="280.6" y="1898.8" textLength="24.4" clip-path="url(#ter [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1923.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-78)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#terminal-1022829484-line-78)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1923.2" textLength="48.8" clip-path="url(#terminal-1022829484-line-78)">-dry</text><text class="terminal-1022829484-r5" x="85.4" y="1923.2" textLength="48.8" clip-path="url(#termina [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1947.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-79)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#terminal-1022829484-line-79)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1947.6" textLength="97.6" clip-path="url(#terminal-1022829484-line-79)">-verbose</text><text class="terminal-1022829484-r6" x="280.6" y="1947.6" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1972" textLength="12.2" clip-path="url(#terminal-1022829484-line-80)">│</text><text class="terminal-1022829484-r5" x="24.4" y="1972" textLength="12.2" clip-path="url(#terminal-1022829484-line-80)">-</text><text class="terminal-1022829484-r5" x="36.6" y="1972" textLength="61" clip-path="url(#terminal-1022829484-line-80)">-help</text><text class="terminal-1022829484-r6" x="280.6" y="1972" textLength="24.4" clip-path="url(#terminal-102282 [...]
+</text><text class="terminal-1022829484-r4" x="0" y="1996.4" textLength="1464" clip-path="url(#terminal-1022829484-line-81)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1022829484-r2" x="1464" y="1996.4" textLength="12.2" clip-path="url(#terminal-1022829484-line-81)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 1b791a7afb..5ddc9626a3 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,4 +2,4 @@
 # This file is automatically generated by pre-commit. If you have a conflict with this file
 # Please do not solve it but run `breeze regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
-518a158901cde1a5a889d37086eca87e
+b48267467e8d9a9a4af99df180177b43


[airflow] 35/39: Remove "Label when approved" workflow (#24704)

Posted by po...@apache.org.
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 0d659c96a982a7b64cfb4296d5a3ab797a4e416f
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Tue Jun 28 16:23:02 2022 +0200

    Remove "Label when approved" workflow (#24704)
    
    The labelling workflow has proven to be far less useful than we
    thought and some of the recent changes in selective checks made
    it largely obsolete. The committers can still add "full tests needed"
    label when they think it is needed and there is no need to label
    the PRs automatically for that (or any other reason).
    
    For quite a while this workflow is basically a useless noise.
    
    (cherry picked from commit 359700a450b9bf7afde5a2a6442dadadba36cd90)
---
 .gitattributes                                     |   1 -
 .github/actions/checks-action                      |   1 -
 .github/actions/label-when-approved-action         |   1 -
 .github/workflows/label_when_reviewed.yml          |  28 ----
 .../workflows/label_when_reviewed_workflow_run.yml | 177 ---------------------
 .gitmodules                                        |   6 -
 CI.rst                                             |   6 -
 CONTRIBUTING.rst                                   |  27 ----
 PULL_REQUEST_WORKFLOW.rst                          | 151 ------------------
 TESTING.rst                                        |   2 -
 dev/airflow-github                                 |   1 -
 .../src/airflow_breeze/commands/ci_commands.py     |   2 +-
 .../configuration_and_maintenance_commands.py      |   6 +-
 .../airflow_breeze/commands/developer_commands.py  |   7 +
 .../commands/production_image_commands.py          |   6 +-
 dev/breeze/src/airflow_breeze/global_constants.py  |  15 +-
 .../airflow_breeze/params/common_build_params.py   |   4 +-
 .../src/airflow_breeze/params/shell_params.py      |   6 +-
 dev/breeze/src/airflow_breeze/pre_commit_ids.py    |   6 +-
 .../src/airflow_breeze/utils/common_options.py     |  16 +-
 .../airflow_breeze/utils/docker_command_utils.py   |   7 +-
 .../src/airflow_breeze/utils/md5_build_check.py    |   2 +-
 dev/breeze/src/airflow_breeze/utils/path_utils.py  |  17 +-
 dev/breeze/src/airflow_breeze/utils/run_utils.py   |   1 +
 dev/breeze/tests/test_selective_checks.py          |  90 ++++++++++-
 images/pr/pr-full-tests-needed.png                 | Bin 88512 -> 0 bytes
 images/pr/pr-likely-ok-to-merge.png                | Bin 98362 -> 0 bytes
 images/pr/pr-no-tests-needed-comment.png           | Bin 80852 -> 0 bytes
 28 files changed, 160 insertions(+), 426 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index 083e1747cb..5f8117153f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -16,7 +16,6 @@ tests export-ignore
 Dockerfile.ci export-ignore
 
 ISSUE_TRIAGE_PROCESS.rst export-ignore
-PULL_REQUEST_WORKFLOW.rst export-ignore
 STATIC_CODE_CHECKS.rst export-ignore
 TESTING.rst export-ignore
 LOCAL_VIRTUALENV.rst export-ignore
diff --git a/.github/actions/checks-action b/.github/actions/checks-action
deleted file mode 160000
index 9f02872da7..0000000000
--- a/.github/actions/checks-action
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9f02872da71b6f558c6a6f190f925dde5e4d8798
diff --git a/.github/actions/label-when-approved-action b/.github/actions/label-when-approved-action
deleted file mode 160000
index 0058d0094d..0000000000
--- a/.github/actions/label-when-approved-action
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0058d0094da27e116fad6e0da516ebe1107f26de
diff --git a/.github/workflows/label_when_reviewed.yml b/.github/workflows/label_when_reviewed.yml
deleted file mode 100644
index 189a2d7343..0000000000
--- a/.github/workflows/label_when_reviewed.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# 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.
-#
----
-name: Label when reviewed
-on: pull_request_review  # yamllint disable-line rule:truthy
-jobs:
-
-  label-when-reviewed:
-    name: "Label PRs when reviewed"
-    runs-on: ubuntu-20.04
-    steps:
-      - name: "Do nothing. Only trigger corresponding workflow_run event"
-        run: echo
diff --git a/.github/workflows/label_when_reviewed_workflow_run.yml b/.github/workflows/label_when_reviewed_workflow_run.yml
deleted file mode 100644
index b84ab34a79..0000000000
--- a/.github/workflows/label_when_reviewed_workflow_run.yml
+++ /dev/null
@@ -1,177 +0,0 @@
-# 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.
-#
----
-name: Label when reviewed workflow run
-on:  # yamllint disable-line rule:truthy
-  workflow_run:
-    workflows: ["Label when reviewed"]
-    types: ['requested']
-permissions:
-  # All other permissions are set to none
-  checks: write
-  contents: read
-  pull-requests: write
-jobs:
-
-  label-when-reviewed:
-    name: "Label PRs when reviewed workflow run"
-    runs-on: ubuntu-20.04
-    outputs:
-      labelSet: ${{ steps.label-when-reviewed.outputs.labelSet }}
-    steps:
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v2
-        with:
-          persist-credentials: false
-          submodules: recursive
-      - name: "Get information about the original trigger of the run"
-        uses: ./.github/actions/get-workflow-origin
-        id: source-run-info
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          sourceRunId: ${{ github.event.workflow_run.id }}
-      - name: Initiate Selective Build check
-        uses: ./.github/actions/checks-action
-        id: selective-build-check
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          name: "Selective build check"
-          status: "in_progress"
-          sha: ${{ steps.source-run-info.outputs.sourceHeadSha }}
-          details_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
-          output: >
-            {"summary":
-            "Checking selective status of the build in
-            [the run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
-            "}
-      - name: >
-          Event: ${{ steps.source-run-info.outputs.sourceEvent }}
-          Repo: ${{ steps.source-run-info.outputs.sourceHeadRepo }}
-          Branch: ${{ steps.source-run-info.outputs.sourceHeadBranch }}
-          Run id: ${{ github.run_id }}
-          Source Run id: ${{ github.event.workflow_run.id }}
-          Sha: ${{ github.sha }}
-          Source Sha: ${{ steps.source-run-info.outputs.sourceHeadSha }}
-          Merge commit Sha: ${{ steps.source-run-info.outputs.mergeCommitSha }}
-          Target commit Sha: ${{ steps.source-run-info.outputs.targetCommitSha }}
-        run: printenv
-      - name: >
-          Fetch incoming commit ${{ steps.source-run-info.outputs.targetCommitSha }} with its parent
-        uses: actions/checkout@v2
-        with:
-          ref: ${{ steps.source-run-info.outputs.targetCommitSha }}
-          fetch-depth: 2
-          persist-credentials: false
-      # checkout the main branch again, to use the right script in main workflow
-      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
-        uses: actions/checkout@v2
-        with:
-          persist-credentials: false
-          submodules: recursive
-      - name: "Setup python"
-        uses: actions/setup-python@v2
-        with:
-          # We do not have output from selective checks yet, so we need to hardcode python
-          python-version: 3.7
-          cache: 'pip'
-          cache-dependency-path: ./dev/breeze/setup*
-      - run: ./scripts/ci/install_breeze.sh
-      - name: Selective checks
-        id: selective-checks
-        env:
-          PR_LABELS: "${{ steps.source-run-info.outputs.pullRequestLabels }}"
-          COMMIT_REF: "${{ steps.source-run-info.outputs.targetCommitSha }}"
-        run: breeze selective-check
-      - name: "Label when approved by committers for PRs that require full tests"
-        uses: ./.github/actions/label-when-approved-action
-        id: label-full-test-prs-when-approved-by-commiters
-        if: >
-          steps.selective-checks.outputs.run-tests == 'true' &&
-          contains(steps.selective-checks.outputs.test-types, 'Core')
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          label: 'full tests needed'
-          require_committers_approval: 'true'
-          remove_label_when_approval_missing: 'false'
-          pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }}
-          comment: >
-            The PR most likely needs to run full matrix of tests because it modifies parts of the core
-            of Airflow. However, committers might decide to merge it quickly and take the risk.
-            If they don't merge it quickly - please rebase it to the latest main at your convenience,
-            or amend the last commit of the PR, and push it with --force-with-lease.
-      - name: "Initiate GitHub Check forcing rerun of SH ${{ github.event.pull_request.head.sha }}"
-        uses: ./.github/actions/checks-action
-        id: full-test-check
-        if: steps.label-full-test-prs-when-approved-by-commiters.outputs.labelSet == 'true'
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          name: "Please rebase or amend, and force push the PR to run full tests"
-          status: "in_progress"
-          sha: ${{ steps.source-run-info.outputs.sourceHeadSha }}
-          details_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
-          output: >
-            {"summary":
-            "The PR likely needs to run all tests! This was determined via selective check in
-            [the run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
-            "}
-      - name: "Label when approved by committers for PRs that do not require full tests"
-        uses: ./.github/actions/label-when-approved-action
-        id: label-simple-test-prs-when-approved-by-commiters
-        if: >
-          steps.selective-checks.outputs.run-tests == 'true' &&
-          ! contains(steps.selective-checks.outputs.test-types, 'Core')
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          label: 'okay to merge'
-          require_committers_approval: 'true'
-          pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }}
-          comment: >
-            The PR is likely OK to be merged with just subset of tests for default Python and Database
-            versions without running the full matrix of tests, because it does not modify the core of
-            Airflow. If the committers decide that the full tests matrix is needed, they will add the label
-            'full tests needed'. Then you should rebase to the latest main or amend the last commit
-            of the PR, and push it with --force-with-lease.
-      - name: "Label when approved by committers for PRs that do not require tests at all"
-        uses: ./.github/actions/label-when-approved-action
-        id: label-no-test-prs-when-approved-by-commiters
-        if: steps.selective-checks.outputs.run-tests != 'true'
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          label: 'okay to merge'
-          pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }}
-          require_committers_approval: 'true'
-          comment: >
-            The PR is likely ready to be merged. No tests are needed as no important environment files,
-            nor python files were modified by it. However, committers might decide that full test matrix is
-            needed and add the 'full tests needed' label. Then you should rebase it to the latest main
-            or amend the last commit of the PR, and push it with --force-with-lease.
-      - name: Update Selective Build check
-        uses: ./.github/actions/checks-action
-        if: always()
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          check_id: ${{ steps.selective-build-check.outputs.check_id }}
-          status: "completed"
-          sha: ${{ steps.source-run-info.outputs.sourceHeadSha }}
-          conclusion: ${{ job.status }}
-          details_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
-          output: >
-            {"summary":
-            "Checking selective status of the build completed in
-            [the run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
-            "}
diff --git a/.gitmodules b/.gitmodules
index e03978e263..aa1358f884 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
 [submodule ".github/actions/get-workflow-origin"]
 	path = .github/actions/get-workflow-origin
 	url = https://github.com/potiuk/get-workflow-origin
-[submodule ".github/actions/checks-action"]
-	path = .github/actions/checks-action
-	url = https://github.com/LouisBrunner/checks-action
 [submodule ".github/actions/configure-aws-credentials"]
 	path = .github/actions/configure-aws-credentials
 	url = https://github.com/aws-actions/configure-aws-credentials
@@ -13,6 +10,3 @@
 [submodule ".github/actions/github-push-action"]
 	path = .github/actions/github-push-action
 	url = https://github.com/ad-m/github-push-action
-[submodule ".github/actions/label-when-approved-action"]
-	path = .github/actions/label-when-approved-action
-	url = https://github.com/TobKed/label-when-approved-action
diff --git a/CI.rst b/CI.rst
index 7798b077ac..c058598449 100644
--- a/CI.rst
+++ b/CI.rst
@@ -426,12 +426,6 @@ CI, Production Images as well as base Python images that are also cached in the
 Also for those builds we only execute Python tests if important files changed (so for example if it is
 "no-code" change, no tests will be executed.
 
-The workflow involved in Pull Requests review and approval is a bit more complex than simple workflows
-in most of other projects because we've implemented some optimizations related to efficient use
-of queue slots we share with other Apache Software Foundation projects. More details about it
-can be found in `PULL_REQUEST_WORKFLOW.rst <PULL_REQUEST_WORKFLOW.rst>`_.
-
-
 Direct Push/Merge Run
 ---------------------
 
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index f862d33b19..1904c15abe 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -360,33 +360,6 @@ Step 4: Prepare PR
    PR guidelines described in `pull request guidelines <#pull-request-guidelines>`_.
    Create Pull Request! Make yourself ready for the discussion!
 
-5. Depending on "scope" of your changes, your Pull Request might go through one of few paths after approval.
-   We run some non-standard workflow with high degree of automation that allows us to optimize the usage
-   of queue slots in GitHub Actions. Our automated workflows determine the "scope" of changes in your PR
-   and send it through the right path:
-
-   * In case of a "no-code" change, approval will generate a comment that the PR can be merged and no
-     tests are needed. This is usually when the change modifies some non-documentation related RST
-     files (such as this file). No python tests are run and no CI images are built for such PR. Usually
-     it can be approved and merged few minutes after it is submitted (unless there is a big queue of jobs).
-
-   * In case of change involving python code changes or documentation changes, a subset of full test matrix
-     will be executed. This subset of tests perform relevant tests for single combination of python, backend
-     version and only builds one CI image and one PROD image. Here the scope of tests depends on the
-     scope of your changes:
-
-     * when your change does not change "core" of Airflow (Providers, CLI, WWW, Helm Chart) you will get the
-       comment that PR is likely ok to be merged without running "full matrix" of tests. However decision
-       for that is left to committer who approves your change. The committer might set a "full tests needed"
-       label for your PR and ask you to rebase your request or re-run all jobs. PRs with "full tests needed"
-       run full matrix of tests.
-
-     * when your change changes the "core" of Airflow you will get the comment that PR needs full tests and
-       the "full tests needed" label is set for your PR. Additional check is set that prevents from
-       accidental merging of the request until full matrix of tests succeeds for the PR.
-
-   More details about the PR workflow be found in `PULL_REQUEST_WORKFLOW.rst <PULL_REQUEST_WORKFLOW.rst>`_.
-
 
 Step 5: Pass PR Review
 ----------------------
diff --git a/PULL_REQUEST_WORKFLOW.rst b/PULL_REQUEST_WORKFLOW.rst
deleted file mode 100644
index 7d7a7860fd..0000000000
--- a/PULL_REQUEST_WORKFLOW.rst
+++ /dev/null
@@ -1,151 +0,0 @@
- .. 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.
-
-.. contents:: :local:
-
-Why non-standard pull request workflow?
----------------------------------------
-
-This document describes the Pull Request Workflow we've implemented in Airflow. The workflow is slightly
-more complex than regular workflow you might encounter in most of the projects because after experiencing
-some huge delays in processing queues in October 2020 with GitHub Actions, we've decided to optimize the
-workflow to minimize the use of GitHub Actions build time by utilising selective approach on which tests
-and checks in the CI system are run depending on analysis of which files changed in the incoming PR and
-allowing the Committers to control the scope of the tests during the approval/review process.
-
-Just to give a bit of context, we started off with the approach that we always run all tests for all the
-incoming PRs, however due to our matrix of tests growing, this approach did not scale with the increasing
-number of PRs and when we had to compete with other Apache Software Foundation projects for the 180
-slots that are available for the whole organization. More Apache Software Foundation projects started
-to use GitHub Actions and we've started to experience long queues when our jobs waited for free slots.
-
-We approached the problem by:
-
-1) Improving mechanism of cancelling duplicate workflow runs more efficiently in case of queue conditions
-   (duplicate workflow runs are generated when someone pushes a fixup quickly - leading to running both
-   out-dated and current run to completion, taking precious slots. This has been implemented by improving
-   `cancel-workflow-run <https://github.com/potiuk/cancel-workflow-runs/>`_ action we are using. In version
-   4.1 it got a new feature of cancelling all duplicates even if there is a long queue of builds.
-
-2) Heavily decreasing strain on the GitHub Actions jobs by introducing selective checks - mechanism
-   to control which parts of the tests are run during the tests. This is implemented by the
-   ``breeze selective-check`` command. It selectively chooses which tests should be run in the PR based on
-   type of the PR and its content. More about it can be found in
-   `Selective checks <dev/breeze/SELECTIVE_CHECKS.md>`_
-
-3) Even more optimisation came from limiting the scope of tests to only "default" matrix parameters. So far
-   in Airflow we always run all tests for all matrix combinations. The primary matrix components are:
-
-   * Python versions (currently 3.7, 3.8, 3.9, 3.10)
-   * Backend types (currently MySQL/Postgres)
-   * Backed version (currently MySQL 5.7, MySQL 8, Postgres 13
-
-   We've decided that instead of running all the combinations of parameters for all matrix component we will
-   only run default values (Python 3.7, Mysql 5.7, Postgres 13) for all PRs which are not approved yet by
-   the committers. This has a nice effect, that full set of tests (though with limited combinations of
-   the matrix) are still run in the CI for every Pull Request that needs tests at all - allowing the
-   contributors to make sure that their PR is "good enough" to be reviewed.
-
-   Even after approval, the automated workflows we've implemented, check if the PR seems to need
-   "full test matrix" and provide helpful information to both contributors and committers in the form of
-   explanatory comments and labels set automatically showing the status of the PR. Committers have still
-   control whether they want to merge such requests automatically or ask for rebase or re-run the tests
-   and run "full tests" by applying the "full tests needed" label and re-running such request.
-   The "full tests needed" label is also applied automatically after approval when the change touches
-   the "core" of Airflow - also a separate check is added to the PR so that the "merge" button status
-   will indicate to the committer that full tests are still needed. The committer might still decide,
-   whether to merge such PR without the "full matrix". The "escape hatch" we have - i.e. running the full
-   matrix of tests in the "merge push" will enable committers to catch and fix such problems quickly.
-   More about it can be found in `Approval workflow and Matrix tests <#approval-workflow-and-matrix-tests>`_
-   chapter.
-
-4) We've also applied (and received) funds to run self-hosted runners. They are used for ``main`` runs
-   and whenever the PRs are done by one of the maintainers. Maintainers can force using Public GitHub runners
-   by applying "use public runners" label to the PR before submitting it.
-
-
-Approval Workflow and Matrix tests
-----------------------------------
-
-As explained above the approval and matrix tests workflow works according to the algorithm below:
-
-1) In case of "no-code" changes - so changes that do not change any of the code or environment of
-   the application, no test are run (this is done via selective checks). Also no CI/PROD images are
-   build saving extra minutes. Such build takes less than 2 minutes currently and only few jobs are run
-   which is a very small fraction of the "full build" time.
-
-2) When new PR is created, only a "default set" of matrix test are running. Only default
-   values for each of the parameters are used effectively limiting it to running matrix builds for only
-   one python version and one version of each of the backends. In this case only one CI and one PROD
-   image is built, saving precious job slots. This build takes around 50% less time than the "full matrix"
-   build.
-
-3) When such PR gets approved, the system further analyses the files changed in this PR and further
-   decision is made that should be communicated to both Committer and Reviewer.
-
-3a) In case of "no-code" builds, a message is communicated that the PR is ready to be merged and
-    no tests are needed.
-
-.. image:: images/pr/pr-no-tests-needed-comment.png
-    :align: center
-    :alt: No tests needed for "no-code" builds
-
-3b) In case of "non-core" builds a message is communicated that such PR is likely OK to be merged as is with
-    limited set of tests, but that the committer might decide to re-run the PR after applying
-    "full tests needed" label, which will trigger full matrix build for tests for this PR. The committer
-    might make further decision on what to do with this PR.
-
-.. image:: images/pr/pr-likely-ok-to-merge.png
-    :align: center
-    :alt: Likely ok to merge the PR with only small set of tests
-
-3c) In case of "core" builds (i. e. when the PR touches some "core" part of Airflow) a message is
-    communicated that this PR needs "full test matrix", the "full tests needed" label is applied
-    automatically and either the contributor might rebase the request to trigger full test build or the
-    committer might re-run the build manually to trigger such full test rebuild. Also a check "in-progress"
-    is added, so that the committer realises that the PR is not yet "green to merge". Pull requests with
-    "full tests needed" label always trigger the full matrix build when rebased or re-run so if the
-    PR gets rebased, it will continue triggering full matrix build.
-
-.. image:: images/pr/pr-full-tests-needed.png
-    :align: center
-    :alt: Full tests are needed for the PR
-
-4) If this or another committer "request changes" in a previously approved PR with "full tests needed"
-   label, the bot automatically removes the label, moving it back to "run only default set of parameters"
-   mode. For PRs touching core of airflow once the PR gets approved back, the label will be restored.
-   If it was manually set by the committer, it has to be restored manually.
-
-.. note:: Note that setting the labels and adding comments might be delayed, due to limitation of GitHub Actions,
-      in case of queues, processing of Pull Request reviews might take some time, so it is advised not to merge
-      PR immediately after approval. Luckily, the comments describing the status of the PR trigger notifications
-      for the PRs and they provide good "notification" for the committer to act on a PR that was recently
-      approved.
-
-The PR approval workflow is possible thanks to two custom GitHub Actions we've developed:
-
-* `Get workflow origin <https://github.com/potiuk/get-workflow-origin/>`_
-* `Label when approved <https://github.com/TobKed/label-when-approved-action>`_
-
-
-Next steps
-----------
-
-We are planning to also propose the approach to other projects from Apache Software Foundation to
-make it a common approach, so that our effort is not limited only to one project.
-
-Discussion about it in `this discussion <https://lists.apache.org/thread.html/r1708881f52adbdae722afb8fea16b23325b739b254b60890e72375e1%40%3Cbuilds.apache.org%3E>`_
diff --git a/TESTING.rst b/TESTING.rst
index 2271e73ecf..4f7de58b76 100644
--- a/TESTING.rst
+++ b/TESTING.rst
@@ -487,8 +487,6 @@ This is done for three reasons:
 1. in order to selectively run only subset of the test types for some PRs
 2. in order to allow parallel execution of the tests on Self-Hosted runners
 
-For case 1. see `Pull Request Workflow <PULL_REQUEST_WORKFLOW.rst#selective-ci-checks>`_  for details.
-
 For case 2. We can utilise memory and CPUs available on both CI and local development machines to run
 test in parallel. This way we can decrease the time of running all tests in self-hosted runners from
 60 minutes to ~15 minutes.
diff --git a/dev/airflow-github b/dev/airflow-github
index 5dc5f5bd9d..fcda3355d9 100755
--- a/dev/airflow-github
+++ b/dev/airflow-github
@@ -126,7 +126,6 @@ def is_core_commit(files: List[str]) -> bool:
         "CONTRIBUTORS_QUICK_START.rst",
         "IMAGES.rst",
         "LOCAL_VIRTUALENV.rst",
-        "PULL_REQUEST_WORKFLOW.rst",
         "INTHEWILD.md",
         "INSTALL",
         "README.md",
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index c8260698d7..c65753e1a6 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -205,7 +205,7 @@ def selective_check(
     from airflow_breeze.utils.selective_checks import SelectiveChecks
 
     github_event = GithubEvents(github_event_name)
-    if github_event == GithubEvents.PULL_REQUEST:
+    if commit_ref is not None:
         changed_files = get_changed_files(commit_ref=commit_ref, dry_run=dry_run, verbose=verbose)
     else:
         changed_files = ()
diff --git a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
index 546f52ba5a..7ef0a11a20 100644
--- a/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/configuration_and_maintenance_commands.py
@@ -319,7 +319,6 @@ def version(verbose: bool):
 @click.option('-C/-c', '--cheatsheet/--no-cheatsheet', help="Enable/disable cheatsheet.", default=None)
 @click.option('-A/-a', '--asciiart/--no-asciiart', help="Enable/disable ASCIIart.", default=None)
 @click.option(
-    '-B/-b',
     '--colour/--no-colour',
     help="Enable/disable Colour mode (useful for colour blind-friendly communication).",
     default=None,
@@ -404,7 +403,10 @@ def command_hash_export(verbose: bool, output: IO):
         the_context_dict = ctx.to_info_dict()
         if verbose:
             get_console().print(the_context_dict)
-        output.write(dict_hash(the_context_dict) + "\n")
+        output.write(f"main:{dict_hash(the_context_dict['command']['params'])}\n")
+        commands_dict = the_context_dict['command']['commands']
+        for command in sorted(commands_dict.keys()):
+            output.write(f"{command}:{dict_hash(commands_dict[command])}\n")
 
 
 def write_to_shell(command_to_execute: str, dry_run: bool, script_path: str, force_setup: bool) -> bool:
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index a81ae92745..cbb2b10d06 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -53,6 +53,7 @@ from airflow_breeze.utils.common_options import (
     option_mount_sources,
     option_mssql_version,
     option_mysql_version,
+    option_platform_single,
     option_postgres_version,
     option_python,
     option_use_airflow_version,
@@ -226,6 +227,7 @@ DEVELOPER_PARAMETERS = {
 @option_verbose
 @option_dry_run
 @option_python
+@option_platform_single
 @option_backend
 @option_debian_version
 @option_github_repository
@@ -267,6 +269,7 @@ def shell(
     db_reset: bool,
     answer: Optional[str],
     image_tag: Optional[str],
+    platform: Optional[str],
     extra_args: Tuple,
 ):
     """Enter breeze.py environment. this is the default command use when no other is selected."""
@@ -296,6 +299,7 @@ def shell(
         answer=answer,
         debian_version=debian_version,
         image_tag=image_tag,
+        platform=platform,
     )
 
 
@@ -303,6 +307,7 @@ def shell(
 @main.command(name='start-airflow')
 @option_dry_run
 @option_python
+@option_platform_single
 @option_github_repository
 @option_backend
 @option_postgres_version
@@ -346,6 +351,7 @@ def start_airflow(
     image_tag: Optional[str],
     db_reset: bool,
     answer: Optional[str],
+    platform: Optional[str],
     extra_args: Tuple,
 ):
     """Enter breeze.py environment and starts all Airflow components in the tmux session."""
@@ -372,6 +378,7 @@ def start_airflow(
         db_reset=db_reset,
         start_airflow=True,
         image_tag=image_tag,
+        platform=platform,
         extra_args=extra_args,
         answer=answer,
     )
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 07bd42cab9..d08e1d89b5 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -37,6 +37,7 @@ from airflow_breeze.utils.common_options import (
     option_airflow_constraints_mode_prod,
     option_airflow_constraints_reference_build,
     option_answer,
+    option_builder,
     option_debian_version,
     option_dev_apt_command,
     option_dev_apt_deps,
@@ -52,7 +53,7 @@ from airflow_breeze.utils.common_options import (
     option_image_tag_for_verifying,
     option_install_providers_from_sources,
     option_parallelism,
-    option_platform,
+    option_platform_multiple,
     option_prepare_buildx_cache,
     option_pull_image,
     option_push_image,
@@ -242,7 +243,7 @@ def run_build_in_parallel(
 @option_parallelism
 @option_python_versions
 @option_upgrade_to_newer_dependencies
-@option_platform
+@option_platform_multiple
 @option_debian_version
 @option_github_repository
 @option_github_token
@@ -303,6 +304,7 @@ def run_build_in_parallel(
 @option_additional_dev_apt_env
 @option_additional_runtime_apt_env
 @option_additional_runtime_apt_command
+@option_builder
 @option_dev_apt_command
 @option_dev_apt_deps
 @option_python_image
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 8dedc191f7..5ba825e71f 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -19,7 +19,7 @@ Global constants that are used by all other Breeze components.
 """
 from __future__ import annotations
 
-import os
+import platform
 from enum import Enum
 from functools import lru_cache
 
@@ -106,7 +106,8 @@ ALLOWED_INSTALLATION_METHODS = ['.', 'apache-airflow']
 ALLOWED_DEBIAN_VERSIONS = ['bullseye', 'buster']
 ALLOWED_BUILD_CACHE = ["registry", "local", "disabled"]
 MULTI_PLATFORM = "linux/amd64,linux/arm64"
-ALLOWED_PLATFORMS = ["linux/amd64", "linux/arm64", MULTI_PLATFORM]
+SINGLE_PLATFORMS = ["linux/amd64", "linux/arm64"]
+ALLOWED_PLATFORMS = [*SINGLE_PLATFORMS, MULTI_PLATFORM]
 ALLOWED_USE_AIRFLOW_VERSIONS = ['none', 'wheel', 'sdist']
 
 PARAM_NAME_DESCRIPTION = {
@@ -144,8 +145,15 @@ def get_available_packages(short_version=False) -> list[str]:
     return package_list
 
 
+def get_default_platform_machine() -> str:
+    machine = platform.uname().machine
+    # Some additional conversion for various platforms...
+    machine = {"AMD64": "x86_64"}.get(machine, machine)
+    return machine
+
+
 # Initialise base variables
-DOCKER_DEFAULT_PLATFORM = f"linux/{os.uname().machine}"
+DOCKER_DEFAULT_PLATFORM = f"linux/{get_default_platform_machine()}"
 DOCKER_BUILDKIT = 1
 
 SSH_PORT = "12322"
@@ -296,6 +304,7 @@ class GithubEvents(Enum):
     PULL_REQUEST = "pull_request"
     PULL_REQUEST_REVIEW = "pull_request_review"
     PULL_REQUEST_TARGET = "pull_request_target"
+    PULL_REQUEST_WORKFLOW = "pull_request_workflow"
     PUSH = "push"
     SCHEDULE = "schedule"
     WORKFLOW_RUN = "workflow_run"
diff --git a/dev/breeze/src/airflow_breeze/params/common_build_params.py b/dev/breeze/src/airflow_breeze/params/common_build_params.py
index 68947186d6..e6c2c70029 100644
--- a/dev/breeze/src/airflow_breeze/params/common_build_params.py
+++ b/dev/breeze/src/airflow_breeze/params/common_build_params.py
@@ -22,6 +22,7 @@ from datetime import datetime
 from typing import List, Optional
 
 from airflow_breeze.branch_defaults import AIRFLOW_BRANCH
+from airflow_breeze.global_constants import DOCKER_DEFAULT_PLATFORM
 from airflow_breeze.utils.console import get_console
 from airflow_breeze.utils.platforms import get_real_platform
 
@@ -44,6 +45,7 @@ class CommonBuildParams:
     airflow_constraints_location: str = ""
     answer: Optional[str] = None
     build_id: int = 0
+    builder: str = "default"
     constraints_github_repository: str = "apache/airflow"
     debian_version: str = "bullseye"
     dev_apt_command: str = ""
@@ -56,7 +58,7 @@ class CommonBuildParams:
     github_username: str = ""
     image_tag: Optional[str] = None
     install_providers_from_sources: bool = False
-    platform: str = f"linux/{os.uname().machine}"
+    platform: str = DOCKER_DEFAULT_PLATFORM
     prepare_buildx_cache: bool = False
     python_image: Optional[str] = None
     push_image: bool = False
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py b/dev/breeze/src/airflow_breeze/params/shell_params.py
index b67d362186..b4c1e73f5a 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -31,6 +31,7 @@ from airflow_breeze.global_constants import (
     ALLOWED_POSTGRES_VERSIONS,
     ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
     AVAILABLE_INTEGRATIONS,
+    DOCKER_DEFAULT_PLATFORM,
     MOUNT_ALL,
     MOUNT_REMOVE,
     MOUNT_SELECTED,
@@ -78,6 +79,7 @@ class ShellParams:
     mysql_version: str = ALLOWED_MYSQL_VERSIONS[0]
     num_runs: str = ""
     package_format: str = ALLOWED_INSTALLATION_PACKAGE_FORMATS[0]
+    platform: str = DOCKER_DEFAULT_PLATFORM
     postgres_version: str = ALLOWED_POSTGRES_VERSIONS[0]
     python: str = ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[0]
     skip_environment_initialization: bool = False
@@ -189,6 +191,8 @@ class ShellParams:
             backend_files = []
             for backend in ALLOWED_BACKENDS:
                 backend_files.extend(self.get_backend_compose_files(backend))
+            compose_ci_file.append(f"{str(SCRIPTS_CI_DIR)}/docker-compose/backend-mssql-bind-volume.yml")
+            compose_ci_file.append(f"{str(SCRIPTS_CI_DIR)}/docker-compose/backend-mssql-docker-volume.yml")
         local_docker_compose_file = f"{str(SCRIPTS_CI_DIR)}/docker-compose/local.yml"
         local_all_sources_docker_compose_file = f"{str(SCRIPTS_CI_DIR)}/docker-compose/local-all-sources.yml"
         files_docker_compose_file = f"{str(SCRIPTS_CI_DIR)}/docker-compose/files.yml"
@@ -239,7 +243,7 @@ class ShellParams:
         if len(integrations) > 0:
             for integration in integrations:
                 compose_ci_file.append(f"{str(SCRIPTS_CI_DIR)}/docker-compose/integration-{integration}.yml")
-        return ':'.join(compose_ci_file)
+        return os.pathsep.join(compose_ci_file)
 
     @property
     def command_passed(self):
diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
index bcddfa0ec9..db839f0712 100644
--- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py
+++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py
@@ -25,10 +25,11 @@ PRE_COMMIT_LIST = [
     'all',
     'black',
     'blacken-docs',
-    'check-airflow-2-1-compatibility',
+    'check-airflow-2-2-compatibility',
     'check-airflow-config-yaml-consistent',
     'check-airflow-providers-have-extras',
     'check-apache-license-rat',
+    'check-base-operator-partial-arguments',
     'check-base-operator-usage',
     'check-boring-cyborg-configuration',
     'check-breeze-top-dependencies-limited',
@@ -36,6 +37,7 @@ PRE_COMMIT_LIST = [
     'check-changelog-has-no-duplicates',
     'check-daysago-import-from-utils',
     'check-docstring-param-types',
+    'check-example-dags-urls',
     'check-executables-have-shebangs',
     'check-extra-packages-references',
     'check-extras-order',
@@ -59,8 +61,10 @@ PRE_COMMIT_LIST = [
     'check-setup-order',
     'check-start-date-not-used-in-defaults',
     'check-system-tests-present',
+    'check-system-tests-tocs',
     'check-xml',
     'codespell',
+    'create-missing-init-py-files-tests',
     'debug-statements',
     'detect-private-key',
     'doctoc',
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index af2b6c75e0..778b34ad1c 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -37,6 +37,7 @@ from airflow_breeze.global_constants import (
     ALLOWED_POSTGRES_VERSIONS,
     ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
     ALLOWED_USE_AIRFLOW_VERSIONS,
+    SINGLE_PLATFORMS,
     get_available_packages,
 )
 from airflow_breeze.utils.custom_param_types import (
@@ -214,12 +215,18 @@ option_image_tag_for_verifying = click.option(
 option_image_name = click.option(
     '-n', '--image-name', help='Name of the image to verify (overrides --python and --image-tag).'
 )
-option_platform = click.option(
+option_platform_multiple = click.option(
     '--platform',
     help='Platform for Airflow image.',
     envvar='PLATFORM',
     type=BetterChoice(ALLOWED_PLATFORMS),
 )
+option_platform_single = click.option(
+    '--platform',
+    help='Platform for Airflow image.',
+    envvar='PLATFORM',
+    type=BetterChoice(SINGLE_PLATFORMS),
+)
 option_debian_version = click.option(
     '--debian-version',
     help='Debian version used for the image.',
@@ -452,10 +459,15 @@ option_pull_image = click.option(
     is_flag=True,
     envvar='PULL_IMAGE',
 )
-
 option_python_image = click.option(
     '--python-image',
     help="If specified this is the base python image used to build the image. "
     "Should be something like: python:VERSION-slim-bullseye",
     envvar='PYTHON_IMAGE',
 )
+option_builder = click.option(
+    '--builder',
+    help="Buildx builder used to perform `docker buildx build` commands",
+    envvar='BUILDER',
+    default='default',
+)
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 8af6010c40..cdb1ceb258 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -28,7 +28,7 @@ from airflow_breeze.params.build_prod_params import BuildProdParams
 from airflow_breeze.params.common_build_params import CommonBuildParams
 from airflow_breeze.params.shell_params import ShellParams
 from airflow_breeze.utils.host_info_utils import get_host_group_id, get_host_os, get_host_user_id
-from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
+from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, MSSQL_DATA_VOLUME
 
 try:
     from packaging import version
@@ -352,7 +352,7 @@ def prepare_docker_build_cache_command(
     build_flags = image_params.extra_docker_build_flags
     final_command = []
     final_command.extend(["docker"])
-    final_command.extend(["buildx", "build", "--builder", "airflow_cache", "--progress=tty"])
+    final_command.extend(["buildx", "build", "--builder", image_params.builder, "--progress=tty"])
     final_command.extend(build_flags)
     final_command.extend(["--pull"])
     final_command.extend(arguments)
@@ -388,7 +388,7 @@ def prepare_base_build_command(image_params: CommonBuildParams, verbose: bool) -
                 "buildx",
                 "build",
                 "--builder",
-                "default",
+                image_params.builder,
                 "--progress=tty",
                 "--push" if image_params.push_image else "--load",
             ]
@@ -525,6 +525,7 @@ def update_expected_environment_variables(env: Dict[str, str]) -> None:
     set_value_to_default_if_not_set(env, 'LIST_OF_INTEGRATION_TESTS_TO_RUN', "")
     set_value_to_default_if_not_set(env, 'LOAD_DEFAULT_CONNECTIONS', "false")
     set_value_to_default_if_not_set(env, 'LOAD_EXAMPLES', "false")
+    set_value_to_default_if_not_set(env, 'MSSQL_DATA_VOLUME', str(MSSQL_DATA_VOLUME))
     set_value_to_default_if_not_set(env, 'PACKAGE_FORMAT', ALLOWED_PACKAGE_FORMATS[0])
     set_value_to_default_if_not_set(env, 'PRINT_INFO_FROM_SCRIPTS', "true")
     set_value_to_default_if_not_set(env, 'PYTHONDONTWRITEBYTECODE', "true")
diff --git a/dev/breeze/src/airflow_breeze/utils/md5_build_check.py b/dev/breeze/src/airflow_breeze/utils/md5_build_check.py
index 0900793a48..e572c5c373 100644
--- a/dev/breeze/src/airflow_breeze/utils/md5_build_check.py
+++ b/dev/breeze/src/airflow_breeze/utils/md5_build_check.py
@@ -86,7 +86,7 @@ def calculate_md5_checksum_for_files(
     return modified_files, not_modified_files
 
 
-def md5sum_check_if_build_is_needed(md5sum_cache_dir: Path, verbose: bool) -> bool:
+def md5sum_check_if_build_is_needed(md5sum_cache_dir: Path) -> bool:
     """
     Checks if build is needed based on whether important files were modified.
 
diff --git a/dev/breeze/src/airflow_breeze/utils/path_utils.py b/dev/breeze/src/airflow_breeze/utils/path_utils.py
index 413401c0e8..c54b54e5c7 100644
--- a/dev/breeze/src/airflow_breeze/utils/path_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/path_utils.py
@@ -238,7 +238,9 @@ def find_airflow_sources_root_to_operate_on() -> Path:
 
 AIRFLOW_SOURCES_ROOT = find_airflow_sources_root_to_operate_on().resolve()
 BUILD_CACHE_DIR = AIRFLOW_SOURCES_ROOT / '.build'
+DAGS_DIR = AIRFLOW_SOURCES_ROOT / 'dags'
 FILES_DIR = AIRFLOW_SOURCES_ROOT / 'files'
+HOOKS_DIR = AIRFLOW_SOURCES_ROOT / 'hooks'
 MSSQL_DATA_VOLUME = AIRFLOW_SOURCES_ROOT / 'tmp_mssql_volume'
 KUBE_DIR = AIRFLOW_SOURCES_ROOT / ".kube"
 LOGS_DIR = AIRFLOW_SOURCES_ROOT / 'logs'
@@ -260,12 +262,17 @@ def create_volume_if_missing(volume_name: str):
         check=False,
     )
     if res_inspect.returncode != 0:
-        run_command(
+        result = run_command(
             cmd=["docker", "volume", "create", volume_name],
-            stdout=subprocess.DEVNULL,
-            stderr=subprocess.DEVNULL,
-            check=True,
+            check=False,
+            capture_output=True,
         )
+        if result.returncode != 0:
+            get_console().print(
+                "[warning]\nMypy Cache volume could not be created. Continuing, but you "
+                "should make sure your docker works.\n\n"
+                f"Error: {result.stdout}\n"
+            )
 
 
 def create_static_check_volumes():
@@ -278,7 +285,9 @@ def create_directories_and_files() -> None:
     Checks if setup has been updates since last time and proposes to upgrade if so.
     """
     BUILD_CACHE_DIR.mkdir(parents=True, exist_ok=True)
+    DAGS_DIR.mkdir(parents=True, exist_ok=True)
     FILES_DIR.mkdir(parents=True, exist_ok=True)
+    HOOKS_DIR.mkdir(parents=True, exist_ok=True)
     MSSQL_DATA_VOLUME.mkdir(parents=True, exist_ok=True)
     KUBE_DIR.mkdir(parents=True, exist_ok=True)
     LOGS_DIR.mkdir(parents=True, exist_ok=True)
diff --git a/dev/breeze/src/airflow_breeze/utils/run_utils.py b/dev/breeze/src/airflow_breeze/utils/run_utils.py
index f0a44b425f..9754605f49 100644
--- a/dev/breeze/src/airflow_breeze/utils/run_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/run_utils.py
@@ -96,6 +96,7 @@ def run_command(
             return subprocess.CompletedProcess(cmd, returncode=0)
     try:
         cmd_env = os.environ.copy()
+        cmd_env.setdefault("HOME", str(Path.home()))
         if env:
             cmd_env.update(env)
         with ci_group(title=f"Output of {title}", enabled=enabled_output_group):
diff --git a/dev/breeze/tests/test_selective_checks.py b/dev/breeze/tests/test_selective_checks.py
index 492135ebd3..2d7e8fe83d 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -298,7 +298,7 @@ def test_expected_output_full_tests_needed(
                 "upgrade-to-newer-dependencies": "false",
                 "test-types": "",
             },
-            id="Everything should run when full tests are needed even if no files are changed",
+            id="Nothing should run if only non-important files changed",
         ),
         pytest.param(
             (
@@ -371,6 +371,76 @@ def test_expected_output_pull_request_v2_3(
     assert_outputs_are_printed(expected_outputs, str(sc))
 
 
+@pytest.mark.parametrize(
+    "files, expected_outputs,",
+    [
+        pytest.param(
+            ("INTHEWILD.md",),
+            {
+                "all-python-versions": "['3.7']",
+                "all-python-versions-list-as-string": "3.7",
+                "image-build": "false",
+                "needs-helm-tests": "false",
+                "run-tests": "false",
+                "docs-build": "false",
+                "upgrade-to-newer-dependencies": "false",
+                "test-types": "",
+            },
+            id="Nothing should run if only non-important files changed",
+        ),
+        pytest.param(
+            (
+                "airflow/cli/test.py",
+                "chart/aaaa.txt",
+                "tests/providers/google/file.py",
+            ),
+            {
+                "all-python-versions": "['3.7']",
+                "all-python-versions-list-as-string": "3.7",
+                "image-build": "true",
+                "needs-helm-tests": "true",
+                "run-tests": "true",
+                "docs-build": "true",
+                "run-kubernetes-tests": "true",
+                "upgrade-to-newer-dependencies": "false",
+                "test-types": "Always CLI",
+            },
+            id="CLI tests and Kubernetes tests should run if cli/chart files changed",
+        ),
+        pytest.param(
+            (
+                "airflow/file.py",
+                "tests/providers/google/file.py",
+            ),
+            {
+                "all-python-versions": "['3.7']",
+                "all-python-versions-list-as-string": "3.7",
+                "image-build": "true",
+                "needs-helm-tests": "false",
+                "run-tests": "true",
+                "docs-build": "true",
+                "run-kubernetes-tests": "false",
+                "upgrade-to-newer-dependencies": "false",
+                "test-types": "API Always CLI Core Integration Other Providers WWW",
+            },
+            id="All tests except should run if core file changed",
+        ),
+    ],
+)
+def test_expected_output_pull_request_target(
+    files: Tuple[str, ...],
+    expected_outputs: Dict[str, str],
+):
+    sc = SelectiveChecks(
+        files=files,
+        commit_ref="HEAD",
+        github_event=GithubEvents.PULL_REQUEST_TARGET,
+        pr_labels=(),
+        default_branch="main",
+    )
+    assert_outputs_are_printed(expected_outputs, str(sc))
+
+
 @pytest.mark.parametrize(
     "files, pr_labels, default_branch, expected_outputs,",
     [
@@ -441,11 +511,21 @@ def test_expected_output_push(
     assert_outputs_are_printed(expected_outputs, str(sc))
 
 
-def test_no_commit_provided():
+@pytest.mark.parametrize(
+    "github_event",
+    [
+        GithubEvents.PUSH,
+        GithubEvents.PULL_REQUEST,
+        GithubEvents.PULL_REQUEST_TARGET,
+        GithubEvents.PULL_REQUEST_WORKFLOW,
+        GithubEvents.SCHEDULE,
+    ],
+)
+def test_no_commit_provided_trigger_full_build_for_any_event_type(github_event):
     sc = SelectiveChecks(
         files=(),
         commit_ref="",
-        github_event=GithubEvents.PULL_REQUEST,
+        github_event=github_event,
         pr_labels=(),
         default_branch="main",
     )
@@ -457,7 +537,9 @@ def test_no_commit_provided():
             "needs-helm-tests": "true",
             "run-tests": "true",
             "docs-build": "true",
-            "upgrade-to-newer-dependencies": "false",
+            "upgrade-to-newer-dependencies": "true"
+            if github_event in [GithubEvents.PUSH, GithubEvents.SCHEDULE]
+            else "false",
             "test-types": "API Always CLI Core Integration Other Providers WWW",
         },
         str(sc),
diff --git a/images/pr/pr-full-tests-needed.png b/images/pr/pr-full-tests-needed.png
deleted file mode 100644
index c863153d06..0000000000
Binary files a/images/pr/pr-full-tests-needed.png and /dev/null differ
diff --git a/images/pr/pr-likely-ok-to-merge.png b/images/pr/pr-likely-ok-to-merge.png
deleted file mode 100644
index 9c04dee422..0000000000
Binary files a/images/pr/pr-likely-ok-to-merge.png and /dev/null differ
diff --git a/images/pr/pr-no-tests-needed-comment.png b/images/pr/pr-no-tests-needed-comment.png
deleted file mode 100644
index 78a1181868..0000000000
Binary files a/images/pr/pr-no-tests-needed-comment.png and /dev/null differ


[airflow] 02/39: Get rid of TimedJSONWebSignatureSerializer (#24519)

Posted by po...@apache.org.
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 50657119da418366b91d2da180551b852be4b399
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Sat Jun 18 23:08:51 2022 +0200

    Get rid of TimedJSONWebSignatureSerializer (#24519)
    
    The TimedJSONWebSignatureSerializer has been deprecated from the
    itsdangerous library and they recommended to use dedicated
    libraries for it.
    
    https://github.com/pallets/itsdangerous/issues/129
    
    Since we are going to move to FAB 4+ with #22397 where newer version of
    itsdangerous is used, we need to switch to another library.
    
    We are already using PyJWT so the choice is obvious.
    
    Additionally to switching, the following improvements were done:
    
    * the use of JWT claims has been fixed to follow JWT standard.
      We were using "iat" header wrongly. The specification of JWT only
      expects the header to be there and be valid UTC timestamp, but the
      claim does not impact maturity of the signature - the signature
      is valid if iat is in the future.
      Instead "nbf" - "not before" claim should be used to verify if the
      request is not coming from the future. We now require all claims
      to be present in the request.
    
    * rather than using salt/signing_context we switched to standard
      JWT "audience" claim (same end result)
    
    * we have now much better diagnostics on the server side of the
      reason why request is forbidden - explicit error messages
      are printed in server logs and details of the exception. This
      is secure, we do not spill the information about the reason
      to the client, it's only available in server logs, so there is
      no risk attacker could use it.
    
    * the JWTSigner is "use-agnostic". We should be able to use the
      same class for any other signatures (Internal API from AIP-44)
      with just different audience
    
    * Short, 5 seconds default clock skew is allowed, to account for
      systems that have "almost" synchronized time
    
    * more tests addded with proper time freezing testing both
      expiry and immaturity of the request
    
    This change is not a breaking one because the JWT authentication
    details are not "public API" - but in case someone reverse engineered
    our claims and implemented their own log file retrieval, we
    should add a change in our changelog - therefore newsfragment
    is added.
    
    (cherry picked from commit 1f8e4c955394b31462956501d9a6741b98892f3a)
---
 airflow/utils/jwt_signer.py            |  82 ++++++++++++++++++
 airflow/utils/log/file_task_handler.py |  18 ++--
 airflow/utils/serve_logs.py            |  84 +++++++++++++------
 newsfragments/24519.misc.rst           |   1 +
 tests/utils/test_serve_logs.py         | 147 +++++++++++++++++++++++++++------
 5 files changed, 272 insertions(+), 60 deletions(-)

diff --git a/airflow/utils/jwt_signer.py b/airflow/utils/jwt_signer.py
new file mode 100644
index 0000000000..941a3d0598
--- /dev/null
+++ b/airflow/utils/jwt_signer.py
@@ -0,0 +1,82 @@
+# 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.
+from datetime import datetime, timedelta
+from typing import Any, Dict
+
+import jwt
+
+
+class JWTSigner:
+    """
+    Signs and verifies JWT Token. Used to authorise and verify requests.
+
+    :param secret_key: key used to sign the request
+    :param expiration_time_in_seconds: time after which the token becomes invalid (in seconds)
+    :param audience: audience that the request is expected to have
+    :param leeway_in_seconds: leeway that allows for a small clock skew between the two parties
+    :param algorithm: algorithm used for signing
+    """
+
+    def __init__(
+        self,
+        secret_key: str,
+        expiration_time_in_seconds: int,
+        audience: str,
+        leeway_in_seconds: int = 5,
+        algorithm: str = "HS512",
+    ):
+        self._secret_key = secret_key
+        self._expiration_time_in_seconds = expiration_time_in_seconds
+        self._audience = audience
+        self._leeway_in_seconds = leeway_in_seconds
+        self._algorithm = algorithm
+
+    def generate_signed_token(self, extra_payload: Dict[str, Any]) -> str:
+        """
+        Generate JWT with extra payload added.
+        :param extra_payload: extra payload that is added to the signed token
+        :return: signed token
+        """
+        jwt_dict = {
+            "aud": self._audience,
+            "iat": datetime.utcnow(),
+            "nbf": datetime.utcnow(),
+            "exp": datetime.utcnow() + timedelta(seconds=self._expiration_time_in_seconds),
+        }
+        jwt_dict.update(extra_payload)
+        token = jwt.encode(
+            jwt_dict,
+            self._secret_key,
+            algorithm=self._algorithm,
+        )
+        return token
+
+    def verify_token(self, token: str) -> Dict[str, Any]:
+        payload = jwt.decode(
+            token,
+            self._secret_key,
+            leeway=timedelta(seconds=self._leeway_in_seconds),
+            algorithms=[self._algorithm],
+            options={
+                "verify_signature": True,
+                "require_exp": True,
+                "require_iat": True,
+                "require_nbf": True,
+            },
+            audience=self._audience,
+        )
+        return payload
diff --git a/airflow/utils/log/file_task_handler.py b/airflow/utils/log/file_task_handler.py
index e0561991b2..321e125288 100644
--- a/airflow/utils/log/file_task_handler.py
+++ b/airflow/utils/log/file_task_handler.py
@@ -22,11 +22,10 @@ from datetime import datetime
 from pathlib import Path
 from typing import TYPE_CHECKING, Optional, Tuple
 
-from itsdangerous import TimedJSONWebSignatureSerializer
-
 from airflow.configuration import AirflowConfigException, conf
 from airflow.utils.context import Context
 from airflow.utils.helpers import parse_template_string, render_template_to_string
+from airflow.utils.jwt_signer import JWTSigner
 from airflow.utils.log.non_caching_file_handler import NonCachingFileHandler
 
 if TYPE_CHECKING:
@@ -191,16 +190,17 @@ class FileTaskHandler(logging.Handler):
                 except (AirflowConfigException, ValueError):
                     pass
 
-                signer = TimedJSONWebSignatureSerializer(
+                signer = JWTSigner(
                     secret_key=conf.get('webserver', 'secret_key'),
-                    algorithm_name='HS512',
-                    expires_in=conf.getint('webserver', 'log_request_clock_grace', fallback=30),
-                    # This isn't really a "salt", more of a signing context
-                    salt='task-instance-logs',
+                    expiration_time_in_seconds=conf.getint(
+                        'webserver', 'log_request_clock_grace', fallback=30
+                    ),
+                    audience="task-instance-logs",
                 )
-
                 response = httpx.get(
-                    url, timeout=timeout, headers={'Authorization': signer.dumps(log_relative_path)}
+                    url,
+                    timeout=timeout,
+                    headers={b'Authorization': signer.generate_signed_token({"filename": log_relative_path})},
                 )
                 response.encoding = "utf-8"
 
diff --git a/airflow/utils/serve_logs.py b/airflow/utils/serve_logs.py
index 50fdb47a02..e14162178b 100644
--- a/airflow/utils/serve_logs.py
+++ b/airflow/utils/serve_logs.py
@@ -16,55 +16,89 @@
 # under the License.
 
 """Serve logs process"""
+import logging
 import os
-import time
 
 import gunicorn.app.base
 from flask import Flask, abort, request, send_from_directory
-from itsdangerous import TimedJSONWebSignatureSerializer
+from jwt.exceptions import (
+    ExpiredSignatureError,
+    ImmatureSignatureError,
+    InvalidAudienceError,
+    InvalidIssuedAtError,
+    InvalidSignatureError,
+)
 from setproctitle import setproctitle
 
 from airflow.configuration import conf
+from airflow.utils.docs import get_docs_url
+from airflow.utils.jwt_signer import JWTSigner
+
+logger = logging.getLogger(__name__)
 
 
 def create_app():
     flask_app = Flask(__name__, static_folder=None)
-    max_request_age = conf.getint('webserver', 'log_request_clock_grace', fallback=30)
+    expiration_time_in_seconds = conf.getint('webserver', 'log_request_clock_grace', fallback=30)
     log_directory = os.path.expanduser(conf.get('logging', 'BASE_LOG_FOLDER'))
 
-    signer = TimedJSONWebSignatureSerializer(
+    signer = JWTSigner(
         secret_key=conf.get('webserver', 'secret_key'),
-        algorithm_name='HS512',
-        expires_in=max_request_age,
-        # This isn't really a "salt", more of a signing context
-        salt='task-instance-logs',
+        expiration_time_in_seconds=expiration_time_in_seconds,
+        audience="task-instance-logs",
     )
 
     # Prevent direct access to the logs port
     @flask_app.before_request
     def validate_pre_signed_url():
         try:
-            auth = request.headers['Authorization']
-
-            # We don't actually care about the payload, just that the signature
-            # was valid and the `exp` claim is correct
-            filename, headers = signer.loads(auth, return_header=True)
-
-            issued_at = int(headers['iat'])
-            expires_at = int(headers['exp'])
-        except Exception:
+            auth = request.headers.get('Authorization')
+            if auth is None:
+                logger.warning("The Authorization header is missing: %s.", request.headers)
+                abort(403)
+            payload = signer.verify_token(auth)
+            token_filename = payload.get("filename")
+            request_filename = request.view_args['filename']
+            if token_filename is None:
+                logger.warning("The payload does not contain 'filename' key: %s.", payload)
+                abort(403)
+            if token_filename != request_filename:
+                logger.warning(
+                    "The payload log_relative_path key is different than the one in token:"
+                    "Request path: %s. Token path: %s.",
+                    request_filename,
+                    token_filename,
+                )
+                abort(403)
+        except InvalidAudienceError:
+            logger.warning("Invalid audience for the request", exc_info=True)
             abort(403)
-
-        if filename != request.view_args['filename']:
+        except InvalidSignatureError:
+            logger.warning("The signature of the request was wrong", exc_info=True)
             abort(403)
-
-        # Validate the `iat` and `exp` are within `max_request_age` of now.
-        now = int(time.time())
-        if abs(now - issued_at) > max_request_age:
+        except ImmatureSignatureError:
+            logger.warning("The signature of the request was sent from the future", exc_info=True)
             abort(403)
-        if abs(now - expires_at) > max_request_age:
+        except ExpiredSignatureError:
+            logger.warning(
+                "The signature of the request has expired. Make sure that all components "
+                "in your system have synchronized clocks. "
+                "See more at %s",
+                get_docs_url("configurations-ref.html#secret-key"),
+                exc_info=True,
+            )
             abort(403)
-        if issued_at > expires_at or expires_at - issued_at > max_request_age:
+        except InvalidIssuedAtError:
+            logger.warning(
+                "The request was issues in the future. Make sure that all components "
+                "in your system have synchronized clocks. "
+                "See more at %s",
+                get_docs_url("configurations-ref.html#secret-key"),
+                exc_info=True,
+            )
+            abort(403)
+        except Exception:
+            logger.warning("Unknown error", exc_info=True)
             abort(403)
 
     @flask_app.route('/log/<path:filename>')
diff --git a/newsfragments/24519.misc.rst b/newsfragments/24519.misc.rst
new file mode 100644
index 0000000000..799d9141d2
--- /dev/null
+++ b/newsfragments/24519.misc.rst
@@ -0,0 +1 @@
+The JWT claims in the request to retrieve logs have been standardized: we use "nbf" and "aud" claims for maturity and audience of the requests. Also "filename" payload field is used to keep log name.
diff --git a/tests/utils/test_serve_logs.py b/tests/utils/test_serve_logs.py
index 168a43a012..f8d3881759 100644
--- a/tests/utils/test_serve_logs.py
+++ b/tests/utils/test_serve_logs.py
@@ -14,12 +14,15 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+import datetime
 from typing import TYPE_CHECKING
 
+import jwt
 import pytest
-from itsdangerous import TimedJSONWebSignatureSerializer
+from freezegun import freeze_time
 
 from airflow.configuration import conf
+from airflow.utils.jwt_signer import JWTSigner
 from airflow.utils.serve_logs import create_app
 from tests.test_utils.config import conf_vars
 
@@ -47,12 +50,19 @@ def sample_log(tmpdir):
 
 @pytest.fixture
 def signer():
-    return TimedJSONWebSignatureSerializer(
+    return JWTSigner(
         secret_key=conf.get('webserver', 'secret_key'),
-        algorithm_name='HS512',
-        expires_in=30,
-        # This isn't really a "salt", more of a signing context
-        salt='task-instance-logs',
+        expiration_time_in_seconds=30,
+        audience="task-instance-logs",
+    )
+
+
+@pytest.fixture
+def different_audience():
+    return JWTSigner(
+        secret_key=conf.get('webserver', 'secret_key'),
+        expiration_time_in_seconds=30,
+        audience="different-audience",
     )
 
 
@@ -62,49 +72,134 @@ class TestServeLogs:
         assert 403 == client.get('/log/sample.log').status_code
 
     def test_should_serve_file(self, client: "FlaskClient", signer):
+        response = client.get(
+            '/log/sample.log',
+            headers={
+                'Authorization': signer.generate_signed_token({"filename": 'sample.log'}),
+            },
+        )
+        assert response.data.decode() == LOG_DATA
+        assert response.status_code == 200
+
+    def test_forbidden_different_logname(self, client: "FlaskClient", signer):
+        response = client.get(
+            '/log/sample.log',
+            headers={
+                'Authorization': signer.generate_signed_token({"filename": 'different.log'}),
+            },
+        )
+        assert response.status_code == 403
+
+    def test_forbidden_expired(self, client: "FlaskClient", signer):
+        with freeze_time("2010-01-14"):
+            token = signer.generate_signed_token({"filename": 'sample.log'})
+        assert (
+            client.get(
+                '/log/sample.log',
+                headers={
+                    'Authorization': token,
+                },
+            ).status_code
+            == 403
+        )
+
+    def test_forbidden_future(self, client: "FlaskClient", signer):
+        with freeze_time(datetime.datetime.utcnow() + datetime.timedelta(seconds=3600)):
+            token = signer.generate_signed_token({"filename": 'sample.log'})
         assert (
-            LOG_DATA
-            == client.get(
+            client.get(
                 '/log/sample.log',
                 headers={
-                    'Authorization': signer.dumps('sample.log'),
+                    'Authorization': token,
                 },
-            ).data.decode()
+            ).status_code
+            == 403
         )
 
-    def test_forbidden_too_long_validity(self, client: "FlaskClient", signer):
-        signer.expires_in = 3600
+    def test_ok_with_short_future_skew(self, client: "FlaskClient", signer):
+        with freeze_time(datetime.datetime.utcnow() + datetime.timedelta(seconds=1)):
+            token = signer.generate_signed_token({"filename": 'sample.log'})
         assert (
-            403
-            == client.get(
+            client.get(
                 '/log/sample.log',
                 headers={
-                    'Authorization': signer.dumps('sample.log'),
+                    'Authorization': token,
                 },
             ).status_code
+            == 200
         )
 
-    def test_forbidden_expired(self, client: "FlaskClient", signer):
-        # Fake the time we think we are
-        signer.now = lambda: 0
+    def test_ok_with_short_past_skew(self, client: "FlaskClient", signer):
+        with freeze_time(datetime.datetime.utcnow() - datetime.timedelta(seconds=31)):
+            token = signer.generate_signed_token({"filename": 'sample.log'})
+        assert (
+            client.get(
+                '/log/sample.log',
+                headers={
+                    'Authorization': token,
+                },
+            ).status_code
+            == 200
+        )
+
+    def test_forbidden_with_long_future_skew(self, client: "FlaskClient", signer):
+        with freeze_time(datetime.datetime.utcnow() + datetime.timedelta(seconds=10)):
+            token = signer.generate_signed_token({"filename": 'sample.log'})
+        assert (
+            client.get(
+                '/log/sample.log',
+                headers={
+                    'Authorization': token,
+                },
+            ).status_code
+            == 403
+        )
+
+    def test_forbidden_with_long_past_skew(self, client: "FlaskClient", signer):
+        with freeze_time(datetime.datetime.utcnow() - datetime.timedelta(seconds=40)):
+            token = signer.generate_signed_token({"filename": 'sample.log'})
+        assert (
+            client.get(
+                '/log/sample.log',
+                headers={
+                    'Authorization': token,
+                },
+            ).status_code
+            == 403
+        )
+
+    def test_wrong_audience(self, client: "FlaskClient", different_audience):
         assert (
-            403
-            == client.get(
+            client.get(
                 '/log/sample.log',
                 headers={
-                    'Authorization': signer.dumps('sample.log'),
+                    'Authorization': different_audience.generate_signed_token({"filename": 'sample.log'}),
                 },
             ).status_code
+            == 403
         )
 
-    def test_wrong_context(self, client: "FlaskClient", signer):
-        signer.salt = None
+    @pytest.mark.parametrize("claim_to_remove", ["iat", "exp", "nbf", "aud"])
+    def test_missing_claims(self, claim_to_remove: str, client: "FlaskClient"):
+        jwt_dict = {
+            "aud": "task-instance-logs",
+            "iat": datetime.datetime.utcnow(),
+            "nbf": datetime.datetime.utcnow(),
+            "exp": datetime.datetime.utcnow() + datetime.timedelta(seconds=30),
+        }
+        del jwt_dict[claim_to_remove]
+        jwt_dict.update({"filename": 'sample.log'})
+        token = jwt.encode(
+            jwt_dict,
+            conf.get('webserver', 'secret_key'),
+            algorithm="HS512",
+        )
         assert (
-            403
-            == client.get(
+            client.get(
                 '/log/sample.log',
                 headers={
-                    'Authorization': signer.dumps('sample.log'),
+                    'Authorization': token,
                 },
             ).status_code
+            == 403
         )