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 2024/02/06 00:01:26 UTC
(airflow) 01/01: python 3.12 support
This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch python3.12
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 62d023a96cda2d61d4383fa051b168d2fa2a74e3
Author: dirrao <di...@gmail.com>
AuthorDate: Fri Jan 12 13:30:52 2024 +0530
python 3.12 support
---
Dockerfile.ci | 8 ++
airflow/__init__.py | 1 +
airflow/providers/apache/beam/provider.yaml | 4 +
airflow/providers/apache/cassandra/provider.yaml | 16 +++
airflow/providers/papermill/provider.yaml | 5 +
dev/README_RELEASE_AIRFLOW.md | 2 +-
dev/breeze/README.md | 2 +-
dev/breeze/doc/images/output-commands.svg | 2 +-
dev/breeze/doc/images/output_ci-image_build.svg | 4 +-
dev/breeze/doc/images/output_ci-image_build.txt | 2 +-
dev/breeze/doc/images/output_ci-image_pull.svg | 64 ++++++-----
dev/breeze/doc/images/output_ci-image_pull.txt | 2 +-
dev/breeze/doc/images/output_ci-image_verify.svg | 4 +-
dev/breeze/doc/images/output_ci-image_verify.txt | 2 +-
.../doc/images/output_k8s_build-k8s-image.svg | 52 +++++----
.../doc/images/output_k8s_build-k8s-image.txt | 2 +-
.../doc/images/output_k8s_configure-cluster.svg | 60 +++++-----
.../doc/images/output_k8s_configure-cluster.txt | 2 +-
.../doc/images/output_k8s_create-cluster.svg | 4 +-
.../doc/images/output_k8s_create-cluster.txt | 2 +-
.../doc/images/output_k8s_delete-cluster.svg | 34 +++---
.../doc/images/output_k8s_delete-cluster.txt | 2 +-
.../doc/images/output_k8s_deploy-airflow.svg | 76 +++++++------
.../doc/images/output_k8s_deploy-airflow.txt | 2 +-
dev/breeze/doc/images/output_k8s_k9s.svg | 32 +++---
dev/breeze/doc/images/output_k8s_k9s.txt | 2 +-
dev/breeze/doc/images/output_k8s_logs.svg | 34 +++---
dev/breeze/doc/images/output_k8s_logs.txt | 2 +-
.../doc/images/output_k8s_run-complete-tests.svg | 70 ++++++------
.../doc/images/output_k8s_run-complete-tests.txt | 2 +-
dev/breeze/doc/images/output_k8s_shell.svg | 42 +++----
dev/breeze/doc/images/output_k8s_shell.txt | 2 +-
dev/breeze/doc/images/output_k8s_status.svg | 36 +++---
dev/breeze/doc/images/output_k8s_status.txt | 2 +-
dev/breeze/doc/images/output_k8s_tests.svg | 70 ++++++------
dev/breeze/doc/images/output_k8s_tests.txt | 2 +-
.../doc/images/output_k8s_upload-k8s-image.svg | 58 +++++-----
.../doc/images/output_k8s_upload-k8s-image.txt | 2 +-
dev/breeze/doc/images/output_prod-image_build.svg | 4 +-
dev/breeze/doc/images/output_prod-image_build.txt | 2 +-
dev/breeze/doc/images/output_prod-image_pull.svg | 64 ++++++-----
dev/breeze/doc/images/output_prod-image_pull.txt | 2 +-
dev/breeze/doc/images/output_prod-image_verify.svg | 4 +-
dev/breeze/doc/images/output_prod-image_verify.txt | 2 +-
...put_release-management_generate-constraints.svg | 4 +-
...put_release-management_generate-constraints.txt | 2 +-
...ease-management_generate-providers-metadata.svg | 2 +-
...ease-management_generate-providers-metadata.txt | 2 +-
...elease-management_install-provider-packages.svg | 122 +++++++++++----------
...elease-management_install-provider-packages.txt | 2 +-
...tput_release-management_release-prod-images.svg | 2 +-
...tput_release-management_release-prod-images.txt | 2 +-
...release-management_verify-provider-packages.svg | 104 +++++++++---------
...release-management_verify-provider-packages.txt | 2 +-
.../output_sbom_build-all-airflow-images.svg | 2 +-
.../output_sbom_build-all-airflow-images.txt | 2 +-
...output_sbom_generate-providers-requirements.svg | 2 +-
...output_sbom_generate-providers-requirements.txt | 2 +-
.../images/output_sbom_update-sbom-information.svg | 2 +-
.../images/output_sbom_update-sbom-information.txt | 2 +-
dev/breeze/doc/images/output_setup_config.svg | 2 +-
dev/breeze/doc/images/output_setup_config.txt | 2 +-
dev/breeze/doc/images/output_shell.svg | 2 +-
dev/breeze/doc/images/output_shell.txt | 2 +-
dev/breeze/doc/images/output_start-airflow.svg | 2 +-
dev/breeze/doc/images/output_start-airflow.txt | 2 +-
dev/breeze/doc/images/output_testing_db-tests.svg | 88 ++++++++-------
dev/breeze/doc/images/output_testing_db-tests.txt | 2 +-
.../images/output_testing_docker-compose-tests.svg | 2 +-
.../images/output_testing_docker-compose-tests.txt | 2 +-
.../images/output_testing_integration-tests.svg | 50 +++++----
.../images/output_testing_integration-tests.txt | 2 +-
.../doc/images/output_testing_non-db-tests.svg | 84 +++++++-------
.../doc/images/output_testing_non-db-tests.txt | 2 +-
dev/breeze/doc/images/output_testing_tests.svg | 92 ++++++++--------
dev/breeze/doc/images/output_testing_tests.txt | 2 +-
dev/breeze/pyproject.toml | 2 +-
dev/breeze/src/airflow_breeze/global_constants.py | 7 +-
dev/breeze/src/airflow_breeze/utils/cdxgen.py | 1 +
dev/breeze/tests/test_cache.py | 4 +-
dev/breeze/tests/test_packages.py | 2 +-
dev/breeze/tests/test_selective_checks.py | 64 +++++------
dev/retag_docker_images.py | 2 +-
generated/provider_dependencies.json | 12 +-
pyproject.toml | 25 +++--
scripts/docker/entrypoint_ci.sh | 9 ++
tests/always/test_example_dags.py | 31 +++++-
.../apache/cassandra/hooks/test_cassandra.py | 14 ++-
.../amazon/aws/executors/ecs/test_ecs_executor.py | 2 +-
.../apache/cassandra/sensors/test_record.py | 6 +-
.../apache/cassandra/sensors/test_table.py | 6 +-
.../cloud/transfers/test_cassandra_to_gcs.py | 4 +-
.../utils/test_mlengine_prediction_summary.py | 54 +++++----
tests/providers/microsoft/azure/hooks/test_adx.py | 63 ++++++-----
tests/providers/microsoft/azure/hooks/test_wasb.py | 5 +-
tests/providers/papermill/hooks/test_kernel.py | 13 ++-
.../papermill/operators/test_papermill.py | 67 ++++++++---
tests/www/api/experimental/test_endpoints.py | 5 +-
tests/www/test_security.py | 8 +-
99 files changed, 1011 insertions(+), 777 deletions(-)
diff --git a/Dockerfile.ci b/Dockerfile.ci
index 178c0fda04..323894d5f6 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -946,11 +946,19 @@ function check_run_tests() {
fi
}
+function check_install_universal_pathlib() {
+ echo
+ echo "${COLOR_BLUE}Installing universal python pathlib from PR url${COLOR_RESET}"
+ echo
+ pip install --root-user-action ignore git+https://github.com/ap--/universal_pathlib/@improve-subclassing-for-py312#egg=universal-pathlib
+}
+
determine_airflow_to_use
environment_initialization
check_boto_upgrade
check_download_sqlalchemy
check_download_pendulum
+check_install_universal_pathlib
check_run_tests "${@}"
exec /bin/bash "${@}"
diff --git a/airflow/__init__.py b/airflow/__init__.py
index 4af74a44d2..3df4a11cb1 100644
--- a/airflow/__init__.py
+++ b/airflow/__init__.py
@@ -75,6 +75,7 @@ PY38 = sys.version_info >= (3, 8)
PY39 = sys.version_info >= (3, 9)
PY310 = sys.version_info >= (3, 10)
PY311 = sys.version_info >= (3, 11)
+PY312 = sys.version_info >= (3, 12)
# Things to lazy import in form {local_name: ('target_module', 'target_name', 'deprecated')}
__lazy_imports: dict[str, tuple[str, str, bool]] = {
diff --git a/airflow/providers/apache/beam/provider.yaml b/airflow/providers/apache/beam/provider.yaml
index 819a40c387..e58edabefc 100644
--- a/airflow/providers/apache/beam/provider.yaml
+++ b/airflow/providers/apache/beam/provider.yaml
@@ -62,6 +62,10 @@ additional-extras:
dependencies:
- apache-beam[gcp]
+# Apache Beam currently does not support Python 3.12
+# There is an issue tracking it https://github.com/apache/beam/issues/29149
+excluded-python-versions: ['3.12']
+
integrations:
- integration-name: Apache Beam
external-doc-url: https://beam.apache.org/
diff --git a/airflow/providers/apache/cassandra/provider.yaml b/airflow/providers/apache/cassandra/provider.yaml
index 96827667f3..a8295790aa 100644
--- a/airflow/providers/apache/cassandra/provider.yaml
+++ b/airflow/providers/apache/cassandra/provider.yaml
@@ -45,6 +45,22 @@ dependencies:
- apache-airflow>=2.6.0
- cassandra-driver>=3.13.0
+# Cassandra provider is not yet compatible with Python 3.12
+# The main issue is that python cassandra driver by default uses asyncore which has been deprecated since
+# Python 3.6 and removed in Python 3.12 (https://docs.python.org/3.11/library/asyncore.html)
+# The issue is tracked here: https://datastax-oss.atlassian.net/browse/PYTHON-1375 and is scheduled
+# to be fixed in cassandra-driver 3.30.0.
+#
+# All Cassandra tests are automatically skipped if cassandra package is not present, so once you remove the
+# exclusion, they will start running for Python 3.12. You can remove the list below then.
+#
+# tests/providers/apache/cassandra/sensors/test_record.py
+# tests/providers/apache/cassandra/sensors/test_table.py
+# tests/integration/providers/apache/cassandra/hooks/test_cassandra.py
+# tests/providers/google/cloud/transfers/test_cassandra_to_gcs.py
+#
+excluded-python-versions: ['3.12']
+
integrations:
- integration-name: Apache Cassandra
external-doc-url: https://cassandra.apache.org/
diff --git a/airflow/providers/papermill/provider.yaml b/airflow/providers/papermill/provider.yaml
index e068a4ff3a..8a0546f0ce 100644
--- a/airflow/providers/papermill/provider.yaml
+++ b/airflow/providers/papermill/provider.yaml
@@ -21,6 +21,11 @@ name: Papermill
description: |
`Papermill <https://github.com/nteract/papermill>`__
+# Papermill is technically compliant with 3.12, but it's 2.5.0 version that is compliant, requires pinned
+# version of aiohttp which conflicts with other providers. The fix for that is implemented extra-links:
+# https://github.com/nteract/papermill/pull/771 and waits for new Papermill release
+excluded-python-versions: ['3.12']
+
state: ready
source-date-epoch: 1705912216
versions:
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index 0504d94714..98df18f1e2 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -819,7 +819,7 @@ the older branches, you should set the "skip" field to true.
## Verify production images
```shell script
-for PYTHON in 3.8 3.9 3.10 3.11
+for PYTHON in 3.8 3.9 3.10 3.11 3.12
do
docker pull apache/airflow:${VERSION}-python${PYTHON}
breeze prod-image verify --image-name apache/airflow:${VERSION}-python${PYTHON}
diff --git a/dev/breeze/README.md b/dev/breeze/README.md
index de9fa17911..14b81e0e9a 100644
--- a/dev/breeze/README.md
+++ b/dev/breeze/README.md
@@ -66,6 +66,6 @@ PLEASE DO NOT MODIFY THE HASH BELOW! IT IS AUTOMATICALLY UPDATED BY PRE-COMMIT.
---------------------------------------------------------------------------------------------------------
-Package config hash: 0a4cc814e27e822622708d862952a5b411a1a4ad8f3bca8fa591f39ed670ab6636de3caf7c1d072896c411c7eef824f887202b8de8729b8622f2af9b84a154b3
+Package config hash: 4ff506f6876f259f266c6987d814a54b4cf26f2c80186403bbe2e4f036581dcd54ec74172e150b46b4f3b4a34fd5c8d86a3e77a694e0470934ae96c883972714
---------------------------------------------------------------------------------------------------------
diff --git a/dev/breeze/doc/images/output-commands.svg b/dev/breeze/doc/images/output-commands.svg
index 3837045fc3..b21f7f14e9 100644
--- a/dev/breeze/doc/images/output-commands.svg
+++ b/dev/breeze/doc/images/output-commands.svg
@@ -281,7 +281,7 @@
</text><text class="breeze-help-r1" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-help-line-2)">
</text><text class="breeze-help-r5" x="0" y="93.2" textLength="24.4" clip-path="url(#breeze-help-line-3)">╭─</text><text class="breeze-help-r5" x="24.4" y="93.2" textLength="195.2" clip-path="url(#breeze-help-line-3)"> Execution mode </text><text class="breeze-help-r5" x="219.6" y="93.2" textLength="1220" clip-path="url(#breeze-help-line-3)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-help-r [...]
</text><text class="breeze-help-r5" x="0" y="117.6" textLength="12.2" clip-path="url(#breeze-help-line-4)">│</text><text class="breeze-help-r4" x="24.4" y="117.6" textLength="12.2" clip-path="url(#breeze-help-line-4)">-</text><text class="breeze-help-r4" x="36.6" y="117.6" textLength="85.4" clip-path="url(#breeze-help-line-4)">-python</text><text class="breeze-help-r6" x="366" y="117.6" textLength="24.4" clip-path="url(#breeze-help-line-4)">-p</text><text class="breeze-help-r1" x="414.8" [...]
-</text><text class="breeze-help-r5" x="0" y="142" textLength="12.2" clip-path="url(#breeze-help-line-5)">│</text><text class="breeze-help-r7" x="414.8" y="142" textLength="732" clip-path="url(#breeze-help-line-5)">(>3.8< | 3.9 | 3.10 | 3.11)                                 </text><text clas [...]
+</text><text class="breeze-help-r5" x="0" y="142" textLength="12.2" clip-path="url(#breeze-help-line-5)">│</text><text class="breeze-help-r7" x="414.8" y="142" textLength="732" clip-path="url(#breeze-help-line-5)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text class="breeze-help-r5" x="145 [...]
</text><text class="breeze-help-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-help-line-6)">│</text><text class="breeze-help-r5" x="414.8" y="166.4" textLength="732" clip-path="url(#breeze-help-line-6)">[default: 3.8]                                           [...]
</text><text class="breeze-help-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-help-line-7)">│</text><text class="breeze-help-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-help-line-7)">-</text><text class="breeze-help-r4" x="36.6" y="190.8" textLength="146.4" clip-path="url(#breeze-help-line-7)">-integration</text><text class="breeze-help-r1" x="414.8" y="190.8" textLength="1024.8" clip-path="url(#breeze-help-line-7)">Integration(s) to enable [...]
</text><text class="breeze-help-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-help-line-8)">│</text><text class="breeze-help-r7" x="414.8" y="215.2" textLength="1024.8" clip-path="url(#breeze-help-line-8)">(all | all-testable | cassandra | celery | kafka | kerberos | mongo | openlineage | </text><text class="breeze-help-r5" x="1451.8" y="215.2" textLength="12.2" clip-path="url(#breeze-help-line [...]
diff --git a/dev/breeze/doc/images/output_ci-image_build.svg b/dev/breeze/doc/images/output_ci-image_build.svg
index 17ea15e9e9..0239626c6d 100644
--- a/dev/breeze/doc/images/output_ci-image_build.svg
+++ b/dev/breeze/doc/images/output_ci-image_build.svg
@@ -343,7 +343,7 @@
</text><text class="breeze-ci-image-build-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-4)">
</text><text class="breeze-ci-image-build-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-ci-image-build-line-5)">╭─</text><text class="breeze-ci-image-build-r5" x="24.4" y="142" textLength="158.6" clip-path="url(#breeze-ci-image-build-line-5)"> Basic usage </text><text class="breeze-ci-image-build-r5" x="183" y="142" textLength="1256.6" clip-path="url(#breeze-ci-image-build-line-5)">─────────────────────────────────────────────────────────────────────────────── [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-6)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-6)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-6)">-python</text><text class="breeze-ci-image-build-r6" x="585.6" y="166.4" textLength="24.4" clip-path="u [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-7)">│</text><text class="breeze-ci-image-build-r7" x="634.4" y="190.8" textLength="732" clip-path="url(#breeze-ci-image-build-line-7)">(>3.8< | 3.9 | 3.10 | 3.11)                             [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-7)">│</text><text class="breeze-ci-image-build-r7" x="634.4" y="190.8" textLength="732" clip-path="url(#breeze-ci-image-build-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-8)">│</text><text class="breeze-ci-image-build-r5" x="634.4" y="215.2" textLength="732" clip-path="url(#breeze-ci-image-build-line-8)">[default: 3.8]                                     [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-9)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-9)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-9)">-upgrade</text><text class="breeze-ci-image-build-r4" x="134.2" y="239.6" textLength="268.4" clip-path= [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-10)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-10)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="264" textLength="97.6" clip-path="url(#breeze-ci-image-build-line-10)">-upgrade</text><text class="breeze-ci-image-build-r4" x="134.2" y="264" textLength="134.2" clip-path="url( [...]
@@ -371,7 +371,7 @@
</text><text class="breeze-ci-image-build-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-32)">│</text><text class="breeze-ci-image-build-r7" x="378.2" y="800.8" textLength="915" clip-path="url(#breeze-ci-image-build-line-32)">(INTEGER RANGE)                                   &# [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-33)">│</text><text class="breeze-ci-image-build-r5" x="378.2" y="825.2" textLength="915" clip-path="url(#breeze-ci-image-build-line-33)">[default: 4; 1<=x<=8]                                 [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-34)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-34)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="849.6" textLength="85.4" clip-path="url(#breeze-ci-image-build-line-34)">-python</text><text class="breeze-ci-image-build-r4" x="122" y="849.6" textLength="109.8" clip-path= [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-35)">│</text><text class="breeze-ci-image-build-r5" x="378.2" y="874" textLength="951.6" clip-path="url(#breeze-ci-image-build-line-35)">[default: 3.8 3.9 3.10 3.11]                                [...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-35)">│</text><text class="breeze-ci-image-build-r5" x="378.2" y="874" textLength="951.6" clip-path="url(#breeze-ci-image-build-line-35)">[default: 3.8 3.9 3.10 3.11 3.12]                             &# [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-36)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-36)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="898.4" textLength="48.8" clip-path="url(#breeze-ci-image-build-line-36)">-run</text><text class="breeze-ci-image-build-r4" x="85.4" y="898.4" textLength="146.4" clip-path="u [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-37)">│</text><text class="breeze-ci-image-build-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-37)">-</text><text class="breeze-ci-image-build-r4" x="36.6" y="922.8" textLength="61" clip-path="url(#breeze-ci-image-build-line-37)">-skip</text><text class="breeze-ci-image-build-r4" x="97.6" y="922.8" textLength="97.6" clip-path="url [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="947.2" textLength="1464" clip-path="url(#breeze-ci-image-build-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-build-r1" x="1464" y="947.2" textLength="12.2" clip-path="url(#breeze-ci-image-build-line-38)">
diff --git a/dev/breeze/doc/images/output_ci-image_build.txt b/dev/breeze/doc/images/output_ci-image_build.txt
index b4ab5dac08..4d03572e98 100644
--- a/dev/breeze/doc/images/output_ci-image_build.txt
+++ b/dev/breeze/doc/images/output_ci-image_build.txt
@@ -1 +1 @@
-d2ef2733519d945c8cfd4fed63a43f24
+953b11162ee3c7a8e57be0d2c049aaeb
diff --git a/dev/breeze/doc/images/output_ci-image_pull.svg b/dev/breeze/doc/images/output_ci-image_pull.svg
index fd74f3d396..78616b5421 100644
--- a/dev/breeze/doc/images/output_ci-image_pull.svg
+++ b/dev/breeze/doc/images/output_ci-image_pull.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 904.0" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-ci-image-pull-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="828.5999999999999" />
+ <rect x="0" y="0" width="1463.0" height="853.0" />
</clipPath>
<clipPath id="breeze-ci-image-pull-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -144,9 +144,12 @@
<clipPath id="breeze-ci-image-pull-line-32">
<rect x="0" y="782.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-ci-image-pull-line-33">
+ <rect x="0" y="806.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="877.6" rx="8"/><text class="breeze-ci-image-pull-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: ci-image pull</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="902" rx="8"/><text class="breeze-ci-image-pull-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: ci-image pull</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -163,33 +166,34 @@
</text><text class="breeze-ci-image-pull-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-4)">
</text><text class="breeze-ci-image-pull-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-ci-image-pull-line-5)">╭─</text><text class="breeze-ci-image-pull-r5" x="24.4" y="142" textLength="219.6" clip-path="url(#breeze-ci-image-pull-line-5)"> Pull image flags </text><text class="breeze-ci-image-pull-r5" x="244" y="142" textLength="1195.6" clip-path="url(#breeze-ci-image-pull-line-5)">─────────────────────────────────────────────────────────────────────────── [...]
</text><text class="breeze-ci-image-pull-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-6)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-6)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-ci-image-pull-line-6)">-image</text><text class="breeze-ci-image-pull-r4" x="109.8" y="166.4" textLength="48.8" clip-path="url(#bree [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-7)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-7)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-7)">-python</text><text class="breeze-ci-image-pull-r6" x="244" y="190.8" textLength="24.4" clip-path="url(#breez [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-8)">│</text><text class="breeze-ci-image-pull-r5" x="292.8" y="215.2" textLength="732" clip-path="url(#breeze-ci-image-pull-line-8)">[default: 3.8]                                     [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-9)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-9)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="239.6" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-9)">-verify</text><text class="breeze-ci-image-pull-r1" x="292.8" y="239.6" textLength="158.6" clip-path="url(#br [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-10)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-10)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="264" textLength="61" clip-path="url(#breeze-ci-image-pull-line-10)">-wait</text><text class="breeze-ci-image-pull-r4" x="97.6" y="264" textLength="122" clip-path="url(#breeze-ci-imag [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-11)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-11)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="288.4" textLength="48.8" clip-path="url(#breeze-ci-image-pull-line-11)">-tag</text><text class="breeze-ci-image-pull-r4" x="85.4" y="288.4" textLength="122" clip-path="url(#breez [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-12)">│</text><text class="breeze-ci-image-pull-r1" x="292.8" y="312.8" textLength="231.8" clip-path="url(#breeze-ci-image-pull-line-12)">or pull image with </text><text class="breeze-ci-image-pull-r4" x="524.6" y="312.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-12)">-</text><text class="breeze-ci-image-pull-r4" x="536.8" y="312.8" [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-13)">
-</text><text class="breeze-ci-image-pull-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-ci-image-pull-line-14)">╭─</text><text class="breeze-ci-image-pull-r5" x="24.4" y="361.6" textLength="219.6" clip-path="url(#breeze-ci-image-pull-line-14)"> Parallel running </text><text class="breeze-ci-image-pull-r5" x="244" y="361.6" textLength="1195.6" clip-path="url(#breeze-ci-image-pull-line-14)">─────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-15)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-15)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="386" textLength="48.8" clip-path="url(#breeze-ci-image-pull-line-15)">-run</text><text class="breeze-ci-image-pull-r4" x="85.4" y="386" textLength="146.4" clip-path="url(#breeze-ci-i [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-16)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-16)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="410.4" textLength="146.4" clip-path="url(#breeze-ci-image-pull-line-16)">-parallelism</text><text class="breeze-ci-image-pull-r1" x="378.2" y="410.4" textLength="915" clip-path=" [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-17)">│</text><text class="breeze-ci-image-pull-r7" x="378.2" y="434.8" textLength="915" clip-path="url(#breeze-ci-image-pull-line-17)">(INTEGER RANGE)                                     [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-18)">│</text><text class="breeze-ci-image-pull-r5" x="378.2" y="459.2" textLength="915" clip-path="url(#breeze-ci-image-pull-line-18)">[default: 4; 1<=x<=8]                                 & [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-19)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-19)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="483.6" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-19)">-python</text><text class="breeze-ci-image-pull-r4" x="122" y="483.6" textLength="109.8" clip-path="url(#b [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-20)">│</text><text class="breeze-ci-image-pull-r5" x="378.2" y="508" textLength="951.6" clip-path="url(#breeze-ci-image-pull-line-20)">[default: 3.8 3.9 3.10 3.11]                                [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-21)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-21)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="532.4" textLength="61" clip-path="url(#breeze-ci-image-pull-line-21)">-skip</text><text class="breeze-ci-image-pull-r4" x="97.6" y="532.4" textLength="97.6" clip-path="url(#breez [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-22)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-22)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="556.8" textLength="73.2" clip-path="url(#breeze-ci-image-pull-line-22)">-debug</text><text class="breeze-ci-image-pull-r4" x="109.8" y="556.8" textLength="122" clip-path="url(#br [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-23)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-23)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="581.2" textLength="97.6" clip-path="url(#breeze-ci-image-pull-line-23)">-include</text><text class="breeze-ci-image-pull-r4" x="134.2" y="581.2" textLength="195.2" clip-path="url [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="605.6" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-24)">
-</text><text class="breeze-ci-image-pull-r5" x="0" y="630" textLength="24.4" clip-path="url(#breeze-ci-image-pull-line-25)">╭─</text><text class="breeze-ci-image-pull-r5" x="24.4" y="630" textLength="280.6" clip-path="url(#breeze-ci-image-pull-line-25)"> Github authentication </text><text class="breeze-ci-image-pull-r5" x="305" y="630" textLength="1134.6" clip-path="url(#breeze-ci-image-pull-line-25)">──────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-26)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-26)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="654.4" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-26)">-github</text><text class="breeze-ci-image-pull-r4" x="122" y="654.4" textLength="134.2" clip-path="url(#b [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-27)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-27)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="678.8" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-27)">-github</text><text class="breeze-ci-image-pull-r4" x="122" y="678.8" textLength="73.2" clip-path="url(#br [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="703.2" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="703.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-28)">
-</text><text class="breeze-ci-image-pull-r5" x="0" y="727.6" textLength="24.4" clip-path="url(#breeze-ci-image-pull-line-29)">╭─</text><text class="breeze-ci-image-pull-r5" x="24.4" y="727.6" textLength="195.2" clip-path="url(#breeze-ci-image-pull-line-29)"> Common options </text><text class="breeze-ci-image-pull-r5" x="219.6" y="727.6" textLength="1220" clip-path="url(#breeze-ci-image-pull-line-29)">───────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-30)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-30)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-ci-image-pull-line-30)">-verbose</text><text class="breeze-ci-image-pull-r6" x="158.6" y="752" textLength="24.4" clip-path="url(#breeze- [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-31)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-31)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="776.4" textLength="48.8" clip-path="url(#breeze-ci-image-pull-line-31)">-dry</text><text class="breeze-ci-image-pull-r4" x="85.4" y="776.4" textLength="48.8" clip-path="url(#bree [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-32)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-32)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="800.8" textLength="61" clip-path="url(#breeze-ci-image-pull-line-32)">-help</text><text class="breeze-ci-image-pull-r6" x="158.6" y="800.8" textLength="24.4" clip-path="url(#bree [...]
-</text><text class="breeze-ci-image-pull-r5" x="0" y="825.2" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-33)">
+</text><text class="breeze-ci-image-pull-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-7)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-7)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-7)">-python</text><text class="breeze-ci-image-pull-r6" x="244" y="190.8" textLength="24.4" clip-path="url(#breez [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-8)">│</text><text class="breeze-ci-image-pull-r7" x="292.8" y="215.2" textLength="732" clip-path="url(#breeze-ci-image-pull-line-8)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </ [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-9)">│</text><text class="breeze-ci-image-pull-r5" x="292.8" y="239.6" textLength="732" clip-path="url(#breeze-ci-image-pull-line-9)">[default: 3.8]                                     [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-10)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-10)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="264" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-10)">-verify</text><text class="breeze-ci-image-pull-r1" x="292.8" y="264" textLength="158.6" clip-path="url(#breeze- [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-11)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-11)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="288.4" textLength="61" clip-path="url(#breeze-ci-image-pull-line-11)">-wait</text><text class="breeze-ci-image-pull-r4" x="97.6" y="288.4" textLength="122" clip-path="url(#breeze [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-12)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-12)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-ci-image-pull-line-12)">-tag</text><text class="breeze-ci-image-pull-r4" x="85.4" y="312.8" textLength="122" clip-path="url(#breez [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-13)">│</text><text class="breeze-ci-image-pull-r1" x="292.8" y="337.2" textLength="231.8" clip-path="url(#breeze-ci-image-pull-line-13)">or pull image with </text><text class="breeze-ci-image-pull-r4" x="524.6" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-13)">-</text><text class="breeze-ci-image-pull-r4" x="536.8" y="337.2" [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-14)">
+</text><text class="breeze-ci-image-pull-r5" x="0" y="386" textLength="24.4" clip-path="url(#breeze-ci-image-pull-line-15)">╭─</text><text class="breeze-ci-image-pull-r5" x="24.4" y="386" textLength="219.6" clip-path="url(#breeze-ci-image-pull-line-15)"> Parallel running </text><text class="breeze-ci-image-pull-r5" x="244" y="386" textLength="1195.6" clip-path="url(#breeze-ci-image-pull-line-15)">───────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-16)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-16)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-ci-image-pull-line-16)">-run</text><text class="breeze-ci-image-pull-r4" x="85.4" y="410.4" textLength="146.4" clip-path="url(#bre [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-17)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-17)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="434.8" textLength="146.4" clip-path="url(#breeze-ci-image-pull-line-17)">-parallelism</text><text class="breeze-ci-image-pull-r1" x="378.2" y="434.8" textLength="915" clip-path=" [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-18)">│</text><text class="breeze-ci-image-pull-r7" x="378.2" y="459.2" textLength="915" clip-path="url(#breeze-ci-image-pull-line-18)">(INTEGER RANGE)                                     [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-19)">│</text><text class="breeze-ci-image-pull-r5" x="378.2" y="483.6" textLength="915" clip-path="url(#breeze-ci-image-pull-line-19)">[default: 4; 1<=x<=8]                                 & [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-20)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-20)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="508" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-20)">-python</text><text class="breeze-ci-image-pull-r4" x="122" y="508" textLength="109.8" clip-path="url(#breeze-ci [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-21)">│</text><text class="breeze-ci-image-pull-r5" x="378.2" y="532.4" textLength="951.6" clip-path="url(#breeze-ci-image-pull-line-21)">[default: 3.8 3.9 3.10 3.11 3.12]                             &# [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-22)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-22)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="556.8" textLength="61" clip-path="url(#breeze-ci-image-pull-line-22)">-skip</text><text class="breeze-ci-image-pull-r4" x="97.6" y="556.8" textLength="97.6" clip-path="url(#breez [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-23)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-23)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="581.2" textLength="73.2" clip-path="url(#breeze-ci-image-pull-line-23)">-debug</text><text class="breeze-ci-image-pull-r4" x="109.8" y="581.2" textLength="122" clip-path="url(#br [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-24)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-24)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="605.6" textLength="97.6" clip-path="url(#breeze-ci-image-pull-line-24)">-include</text><text class="breeze-ci-image-pull-r4" x="134.2" y="605.6" textLength="195.2" clip-path="url [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-25)">
+</text><text class="breeze-ci-image-pull-r5" x="0" y="654.4" textLength="24.4" clip-path="url(#breeze-ci-image-pull-line-26)">╭─</text><text class="breeze-ci-image-pull-r5" x="24.4" y="654.4" textLength="280.6" clip-path="url(#breeze-ci-image-pull-line-26)"> Github authentication </text><text class="breeze-ci-image-pull-r5" x="305" y="654.4" textLength="1134.6" clip-path="url(#breeze-ci-image-pull-line-26)">────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-27)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-27)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="678.8" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-27)">-github</text><text class="breeze-ci-image-pull-r4" x="122" y="678.8" textLength="134.2" clip-path="url(#b [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-28)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-28)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="703.2" textLength="85.4" clip-path="url(#breeze-ci-image-pull-line-28)">-github</text><text class="breeze-ci-image-pull-r4" x="122" y="703.2" textLength="73.2" clip-path="url(#br [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-29)">
+</text><text class="breeze-ci-image-pull-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-ci-image-pull-line-30)">╭─</text><text class="breeze-ci-image-pull-r5" x="24.4" y="752" textLength="195.2" clip-path="url(#breeze-ci-image-pull-line-30)"> Common options </text><text class="breeze-ci-image-pull-r5" x="219.6" y="752" textLength="1220" clip-path="url(#breeze-ci-image-pull-line-30)">─────────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-31)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-31)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="776.4" textLength="97.6" clip-path="url(#breeze-ci-image-pull-line-31)">-verbose</text><text class="breeze-ci-image-pull-r6" x="158.6" y="776.4" textLength="24.4" clip-path="url( [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-32)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-32)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="800.8" textLength="48.8" clip-path="url(#breeze-ci-image-pull-line-32)">-dry</text><text class="breeze-ci-image-pull-r4" x="85.4" y="800.8" textLength="48.8" clip-path="url(#bree [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-33)">│</text><text class="breeze-ci-image-pull-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-33)">-</text><text class="breeze-ci-image-pull-r4" x="36.6" y="825.2" textLength="61" clip-path="url(#breeze-ci-image-pull-line-33)">-help</text><text class="breeze-ci-image-pull-r6" x="158.6" y="825.2" textLength="24.4" clip-path="url(#bree [...]
+</text><text class="breeze-ci-image-pull-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-ci-image-pull-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-image-pull-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-ci-image-pull-line-34)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_ci-image_pull.txt b/dev/breeze/doc/images/output_ci-image_pull.txt
index 3eb380722d..c916be1bf3 100644
--- a/dev/breeze/doc/images/output_ci-image_pull.txt
+++ b/dev/breeze/doc/images/output_ci-image_pull.txt
@@ -1 +1 @@
-f9248c6026da61fe0acdb5d8f37b20da
+3c950cd0e358661163e52c9f3726aee8
diff --git a/dev/breeze/doc/images/output_ci-image_verify.svg b/dev/breeze/doc/images/output_ci-image_verify.svg
index cb247415e9..2a0431e876 100644
--- a/dev/breeze/doc/images/output_ci-image_verify.svg
+++ b/dev/breeze/doc/images/output_ci-image_verify.svg
@@ -157,7 +157,7 @@
</text><text class="breeze-ci-image-verify-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-4)">
</text><text class="breeze-ci-image-verify-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-ci-image-verify-line-5)">╭─</text><text class="breeze-ci-image-verify-r5" x="24.4" y="142" textLength="244" clip-path="url(#breeze-ci-image-verify-line-5)"> Verify image flags </text><text class="breeze-ci-image-verify-r5" x="268.4" y="142" textLength="1171.2" clip-path="url(#breeze-ci-image-verify-line-5)">───────────────────────────────────────────────────────────── [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-6)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-6)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-ci-image-verify-line-6)">-image</text><text class="breeze-ci-image-verify-r4" x="109.8" y="166.4" textLength="61" clip-pat [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-7)">-python</text><text class="breeze-ci-image-verify-r6" x="195.2" y="190.8" textLength="24.4" clip- [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-7)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-7)">-python</text><text class="breeze-ci-image-verify-r6" x="195.2" y="190.8" textLength="24.4" clip- [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-8)">│</text><text class="breeze-ci-image-verify-r5" x="244" y="215.2" textLength="732" clip-path="url(#breeze-ci-image-verify-line-8)">[default: 3.8]                                    [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-9)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-9)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="239.6" textLength="73.2" clip-path="url(#breeze-ci-image-verify-line-9)">-image</text><text class="breeze-ci-image-verify-r4" x="109.8" y="239.6" textLength="48.8" clip-p [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-10)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-10)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="264" textLength="61" clip-path="url(#breeze-ci-image-verify-line-10)">-pull</text><text class="breeze-ci-image-verify-r1" x="244" y="264" textLength="646.6" clip-path="url( [...]
@@ -168,7 +168,7 @@
</text><text class="breeze-ci-image-verify-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-15)">│</text><text class="breeze-ci-image-verify-r7" x="378.2" y="386" textLength="915" clip-path="url(#breeze-ci-image-verify-line-15)">(INTEGER RANGE)                                   &# [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-16)">│</text><text class="breeze-ci-image-verify-r5" x="378.2" y="410.4" textLength="915" clip-path="url(#breeze-ci-image-verify-line-16)">[default: 4; 1<=x<=8]                                 [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-17)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-17)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="434.8" textLength="85.4" clip-path="url(#breeze-ci-image-verify-line-17)">-python</text><text class="breeze-ci-image-verify-r4" x="122" y="434.8" textLength="109.8" cli [...]
-</text><text class="breeze-ci-image-verify-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-18)">│</text><text class="breeze-ci-image-verify-r5" x="378.2" y="459.2" textLength="951.6" clip-path="url(#breeze-ci-image-verify-line-18)">[default: 3.8 3.9 3.10 3.11]                              [...]
+</text><text class="breeze-ci-image-verify-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-18)">│</text><text class="breeze-ci-image-verify-r5" x="378.2" y="459.2" textLength="951.6" clip-path="url(#breeze-ci-image-verify-line-18)">[default: 3.8 3.9 3.10 3.11 3.12]                             [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-19)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-19)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="483.6" textLength="61" clip-path="url(#breeze-ci-image-verify-line-19)">-skip</text><text class="breeze-ci-image-verify-r4" x="97.6" y="483.6" textLength="97.6" clip-pa [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-20)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-20)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="508" textLength="73.2" clip-path="url(#breeze-ci-image-verify-line-20)">-debug</text><text class="breeze-ci-image-verify-r4" x="109.8" y="508" textLength="122" clip-path="u [...]
</text><text class="breeze-ci-image-verify-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-21)">│</text><text class="breeze-ci-image-verify-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-ci-image-verify-line-21)">-</text><text class="breeze-ci-image-verify-r4" x="36.6" y="532.4" textLength="97.6" clip-path="url(#breeze-ci-image-verify-line-21)">-include</text><text class="breeze-ci-image-verify-r4" x="134.2" y="532.4" textLength="195.2" [...]
diff --git a/dev/breeze/doc/images/output_ci-image_verify.txt b/dev/breeze/doc/images/output_ci-image_verify.txt
index f454443f68..bad4f7d8a8 100644
--- a/dev/breeze/doc/images/output_ci-image_verify.txt
+++ b/dev/breeze/doc/images/output_ci-image_verify.txt
@@ -1 +1 @@
-707a149f99bd49d37be5b8d0db844d69
+ec059842b7c4c41db33a6362a361b0ef
diff --git a/dev/breeze/doc/images/output_k8s_build-k8s-image.svg b/dev/breeze/doc/images/output_k8s_build-k8s-image.svg
index 362f24d0e8..ddabddce54 100644
--- a/dev/breeze/doc/images/output_k8s_build-k8s-image.svg
+++ b/dev/breeze/doc/images/output_k8s_build-k8s-image.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>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-build-k8s-image-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="657.8" />
+ <rect x="0" y="0" width="1463.0" height="682.1999999999999" />
</clipPath>
<clipPath id="breeze-k8s-build-k8s-image-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -123,9 +123,12 @@
<clipPath id="breeze-k8s-build-k8s-image-line-25">
<rect x="0" y="611.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-build-k8s-image-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="breeze-k8s-build-k8s-image-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s build-k8s-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="breeze-k8s-build-k8s-image-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s build-k8s-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"/>
@@ -141,27 +144,28 @@
</text><text class="breeze-k8s-build-k8s-image-r1" x="12.2" y="93.2" textLength="805.2" clip-path="url(#breeze-k8s-build-k8s-image-line-3)">Build k8s-ready airflow image (optionally all images in parallel).</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-3)">
</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-4)">
</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-build-k8s-image-line-5)">╭─</text><text class="breeze-k8s-build-k8s-image-r5" x="24.4" y="142" textLength="231.8" clip-path="url(#breeze-k8s-build-k8s-image-line-5)"> Build image flags </text><text class="breeze-k8s-build-k8s-image-r5" x="256.2" y="142" textLength="1183.4" clip-path="url(#breeze-k8s-build-k8s-image-line-5)">──────────────────────────────────── [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-6)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-6)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-build-k8s-image-line-6)">-python</text><text class="breeze-k8s-build-k8s-image-r6" x="292.8" y="16 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-7)">│</text><text class="breeze-k8s-build-k8s-image-r5" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-build-k8s-image-line-7)">[default: 3.8]                                 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-8)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-8)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="215.2" textLength="97.6" clip-path="url(#breeze-k8s-build-k8s-image-line-8)">-rebuild</text><text class="breeze-k8s-build-k8s-image-r4" x="134.2" y="2 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-9)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-9)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="239.6" textLength="73.2" clip-path="url(#breeze-k8s-build-k8s-image-line-9)">-image</text><text class="breeze-k8s-build-k8s-image-r4" x="109.8" y="239 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="264" textLength="1464" clip-path="url(#breeze-k8s-build-k8s-image-line-10)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="264" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-10)">
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="288.4" textLength="24.4" clip-path="url(#breeze-k8s-build-k8s-image-line-11)">╭─</text><text class="breeze-k8s-build-k8s-image-r5" x="24.4" y="288.4" textLength="219.6" clip-path="url(#breeze-k8s-build-k8s-image-line-11)"> Parallel options </text><text class="breeze-k8s-build-k8s-image-r5" x="244" y="288.4" textLength="1195.6" clip-path="url(#breeze-k8s-build-k8s-image-line-11)">─────────────────────────────────── [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-12)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-12)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-k8s-build-k8s-image-line-12)">-run</text><text class="breeze-k8s-build-k8s-image-r4" x="85.4" y="312 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-13)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-13)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="337.2" textLength="146.4" clip-path="url(#breeze-k8s-build-k8s-image-line-13)">-parallelism</text><text class="breeze-k8s-build-k8s-image-r1" x="378 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-14)">│</text><text class="breeze-k8s-build-k8s-image-r7" x="378.2" y="361.6" textLength="915" clip-path="url(#breeze-k8s-build-k8s-image-line-14)">(INTEGER RANGE)                                 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-15)">│</text><text class="breeze-k8s-build-k8s-image-r5" x="378.2" y="386" textLength="915" clip-path="url(#breeze-k8s-build-k8s-image-line-15)">[default: 4; 1<=x<=8]                               [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-16)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-16)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="410.4" textLength="85.4" clip-path="url(#breeze-k8s-build-k8s-image-line-16)">-python</text><text class="breeze-k8s-build-k8s-image-r4" x="122" y="4 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-17)">│</text><text class="breeze-k8s-build-k8s-image-r5" x="378.2" y="434.8" textLength="951.6" clip-path="url(#breeze-k8s-build-k8s-image-line-17)">[default: 3.8 3.9 3.10 3.11]                            [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-18)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-18)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="459.2" textLength="61" clip-path="url(#breeze-k8s-build-k8s-image-line-18)">-skip</text><text class="breeze-k8s-build-k8s-image-r4" x="97.6" y="459. [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-19)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-19)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="483.6" textLength="73.2" clip-path="url(#breeze-k8s-build-k8s-image-line-19)">-debug</text><text class="breeze-k8s-build-k8s-image-r4" x="109.8" y=" [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-20)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-20)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="508" textLength="97.6" clip-path="url(#breeze-k8s-build-k8s-image-line-20)">-include</text><text class="breeze-k8s-build-k8s-image-r4" x="134.2" y="508" [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-k8s-build-k8s-image-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-21)">
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="556.8" textLength="24.4" clip-path="url(#breeze-k8s-build-k8s-image-line-22)">╭─</text><text class="breeze-k8s-build-k8s-image-r5" x="24.4" y="556.8" textLength="195.2" clip-path="url(#breeze-k8s-build-k8s-image-line-22)"> Common options </text><text class="breeze-k8s-build-k8s-image-r5" x="219.6" y="556.8" textLength="1220" clip-path="url(#breeze-k8s-build-k8s-image-line-22)">───────────────────────────────────── [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-23)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-23)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="581.2" textLength="97.6" clip-path="url(#breeze-k8s-build-k8s-image-line-23)">-verbose</text><text class="breeze-k8s-build-k8s-image-r6" x="158.6" y [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-24)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-24)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="605.6" textLength="48.8" clip-path="url(#breeze-k8s-build-k8s-image-line-24)">-dry</text><text class="breeze-k8s-build-k8s-image-r4" x="85.4" y="605 [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-25)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-25)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="630" textLength="61" clip-path="url(#breeze-k8s-build-k8s-image-line-25)">-help</text><text class="breeze-k8s-build-k8s-image-r6" x="158.6" y="630" text [...]
-</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-k8s-build-k8s-image-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-26)">
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-6)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-6)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-build-k8s-image-line-6)">-python</text><text class="breeze-k8s-build-k8s-image-r6" x="292.8" y="16 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-7)">│</text><text class="breeze-k8s-build-k8s-image-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-build-k8s-image-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                      &# [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-8)">│</text><text class="breeze-k8s-build-k8s-image-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-build-k8s-image-line-8)">[default: 3.8]                                 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-9)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-9)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-build-k8s-image-line-9)">-rebuild</text><text class="breeze-k8s-build-k8s-image-r4" x="134.2" y="2 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-10)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-10)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="264" textLength="73.2" clip-path="url(#breeze-k8s-build-k8s-image-line-10)">-image</text><text class="breeze-k8s-build-k8s-image-r4" x="109.8" y="264" t [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-k8s-build-k8s-image-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-11)">
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-k8s-build-k8s-image-line-12)">╭─</text><text class="breeze-k8s-build-k8s-image-r5" x="24.4" y="312.8" textLength="219.6" clip-path="url(#breeze-k8s-build-k8s-image-line-12)"> Parallel options </text><text class="breeze-k8s-build-k8s-image-r5" x="244" y="312.8" textLength="1195.6" clip-path="url(#breeze-k8s-build-k8s-image-line-12)">─────────────────────────────────── [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-13)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-13)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="337.2" textLength="48.8" clip-path="url(#breeze-k8s-build-k8s-image-line-13)">-run</text><text class="breeze-k8s-build-k8s-image-r4" x="85.4" y="337 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-14)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-14)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="361.6" textLength="146.4" clip-path="url(#breeze-k8s-build-k8s-image-line-14)">-parallelism</text><text class="breeze-k8s-build-k8s-image-r1" x="378 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-15)">│</text><text class="breeze-k8s-build-k8s-image-r7" x="378.2" y="386" textLength="915" clip-path="url(#breeze-k8s-build-k8s-image-line-15)">(INTEGER RANGE)                                 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-16)">│</text><text class="breeze-k8s-build-k8s-image-r5" x="378.2" y="410.4" textLength="915" clip-path="url(#breeze-k8s-build-k8s-image-line-16)">[default: 4; 1<=x<=8]                             & [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-17)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-17)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="434.8" textLength="85.4" clip-path="url(#breeze-k8s-build-k8s-image-line-17)">-python</text><text class="breeze-k8s-build-k8s-image-r4" x="122" y="4 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-18)">│</text><text class="breeze-k8s-build-k8s-image-r5" x="378.2" y="459.2" textLength="951.6" clip-path="url(#breeze-k8s-build-k8s-image-line-18)">[default: 3.8 3.9 3.10 3.11 3.12]                         &# [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-19)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-19)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="483.6" textLength="61" clip-path="url(#breeze-k8s-build-k8s-image-line-19)">-skip</text><text class="breeze-k8s-build-k8s-image-r4" x="97.6" y="483. [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-20)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-20)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="508" textLength="73.2" clip-path="url(#breeze-k8s-build-k8s-image-line-20)">-debug</text><text class="breeze-k8s-build-k8s-image-r4" x="109.8" y="508" t [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-21)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-21)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="532.4" textLength="97.6" clip-path="url(#breeze-k8s-build-k8s-image-line-21)">-include</text><text class="breeze-k8s-build-k8s-image-r4" x="134.2" y [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="556.8" textLength="1464" clip-path="url(#breeze-k8s-build-k8s-image-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-22)">
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="581.2" textLength="24.4" clip-path="url(#breeze-k8s-build-k8s-image-line-23)">╭─</text><text class="breeze-k8s-build-k8s-image-r5" x="24.4" y="581.2" textLength="195.2" clip-path="url(#breeze-k8s-build-k8s-image-line-23)"> Common options </text><text class="breeze-k8s-build-k8s-image-r5" x="219.6" y="581.2" textLength="1220" clip-path="url(#breeze-k8s-build-k8s-image-line-23)">───────────────────────────────────── [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-24)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-24)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="605.6" textLength="97.6" clip-path="url(#breeze-k8s-build-k8s-image-line-24)">-verbose</text><text class="breeze-k8s-build-k8s-image-r6" x="158.6" y [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-25)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-25)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="630" textLength="48.8" clip-path="url(#breeze-k8s-build-k8s-image-line-25)">-dry</text><text class="breeze-k8s-build-k8s-image-r4" x="85.4" y="630" text [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-26)">│</text><text class="breeze-k8s-build-k8s-image-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-26)">-</text><text class="breeze-k8s-build-k8s-image-r4" x="36.6" y="654.4" textLength="61" clip-path="url(#breeze-k8s-build-k8s-image-line-26)">-help</text><text class="breeze-k8s-build-k8s-image-r6" x="158.6" y="654 [...]
+</text><text class="breeze-k8s-build-k8s-image-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-k8s-build-k8s-image-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-build-k8s-image-r1" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-build-k8s-image-line-27)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_build-k8s-image.txt b/dev/breeze/doc/images/output_k8s_build-k8s-image.txt
index ee7491ec5c..a27ce4e094 100644
--- a/dev/breeze/doc/images/output_k8s_build-k8s-image.txt
+++ b/dev/breeze/doc/images/output_k8s_build-k8s-image.txt
@@ -1 +1 @@
-b625255c3e8f3f794ee404f9a4476836
+c3cf7a80eeecc93e5ddc74c47a511957
diff --git a/dev/breeze/doc/images/output_k8s_configure-cluster.svg b/dev/breeze/doc/images/output_k8s_configure-cluster.svg
index e0c298e6c4..0a3e540852 100644
--- a/dev/breeze/doc/images/output_k8s_configure-cluster.svg
+++ b/dev/breeze/doc/images/output_k8s_configure-cluster.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 830.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 855.1999999999999" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-configure-cluster-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="779.8" />
+ <rect x="0" y="0" width="1463.0" height="804.1999999999999" />
</clipPath>
<clipPath id="breeze-k8s-configure-cluster-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -138,9 +138,12 @@
<clipPath id="breeze-k8s-configure-cluster-line-30">
<rect x="0" y="733.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-configure-cluster-line-31">
+ <rect x="0" y="757.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="828.8" rx="8"/><text class="breeze-k8s-configure-cluster-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s configure-cluster</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="853.2" rx="8"/><text class="breeze-k8s-configure-cluster-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s configure-cluster</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -157,31 +160,32 @@
</text><text class="breeze-k8s-configure-cluster-r1" x="12.2" y="117.6" textLength="122" clip-path="url(#breeze-k8s-configure-cluster-line-4)">parallel).</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-4)">
</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="142" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-5)">
</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-configure-cluster-line-6)">╭─</text><text class="breeze-k8s-configure-cluster-r5" x="24.4" y="166.4" textLength="305" clip-path="url(#breeze-k8s-configure-cluster-line-6)"> Configure cluster flags </text><text class="breeze-k8s-configure-cluster-r5" x="329.4" y="166.4" textLength="1110.2" clip-path="url(#breeze-k8s-configure-cluster-line-6)">────────────── [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-7)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-7)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-k8s-configure-cluster-line-7)">-python</text><text class="breeze-k8s-configure-cluster-r6" x [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-8)">│</text><text class="breeze-k8s-configure-cluster-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-configure-cluster-line-8)">[default: 3.8]                               & [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-9)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-9)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-configure-cluster-line-9)">-kubernetes</text><text class="breeze-k8s-configure-cluster- [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-10)">│</text><text class="breeze-k8s-configure-cluster-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-configure-cluster-r5" x="1451.8" y="264" textLength="12.2" clip-p [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-11)">│</text><text class="breeze-k8s-configure-cluster-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-11)">[default: v1.25.11]                              [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-k8s-configure-cluster-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-12)">
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-configure-cluster-line-13)">╭─</text><text class="breeze-k8s-configure-cluster-r5" x="24.4" y="337.2" textLength="219.6" clip-path="url(#breeze-k8s-configure-cluster-line-13)"> Parallel options </text><text class="breeze-k8s-configure-cluster-r5" x="244" y="337.2" textLength="1195.6" clip-path="url(#breeze-k8s-configure-cluster-line-13)">─────────────────────── [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-14)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-14)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="361.6" textLength="48.8" clip-path="url(#breeze-k8s-configure-cluster-line-14)">-run</text><text class="breeze-k8s-configure-cluster-r4" x [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-15)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-15)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="386" textLength="146.4" clip-path="url(#breeze-k8s-configure-cluster-line-15)">-parallelism</text><text class="breeze-k8s-configure-cluster-r1 [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-16)">│</text><text class="breeze-k8s-configure-cluster-r1" x="378.2" y="410.4" textLength="1061.4" clip-path="url(#breeze-k8s-configure-cluster-line-16)">operations.                                [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-17)">│</text><text class="breeze-k8s-configure-cluster-r7" x="378.2" y="434.8" textLength="1061.4" clip-path="url(#breeze-k8s-configure-cluster-line-17)">(INTEGER RANGE)                              & [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-18)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="459.2" textLength="1061.4" clip-path="url(#breeze-k8s-configure-cluster-line-18)">[default: 2; 1<=x<=4]                           &# [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-19)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-19)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="483.6" textLength="85.4" clip-path="url(#breeze-k8s-configure-cluster-line-19)">-python</text><text class="breeze-k8s-configure-cluster-r4 [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-20)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="508" textLength="951.6" clip-path="url(#breeze-k8s-configure-cluster-line-20)">[default: 3.8 3.9 3.10 3.11]                          &# [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-21)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-21)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="532.4" textLength="134.2" clip-path="url(#breeze-k8s-configure-cluster-line-21)">-kubernetes</text><text class="breeze-k8s-configure-clust [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-22)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="556.8" textLength="756.4" clip-path="url(#breeze-k8s-configure-cluster-line-22)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-configure-cluster-r5" x="1451 [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-23)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-23)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="581.2" textLength="61" clip-path="url(#breeze-k8s-configure-cluster-line-23)">-skip</text><text class="breeze-k8s-configure-cluster-r4" x= [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-24)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-24)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="605.6" textLength="73.2" clip-path="url(#breeze-k8s-configure-cluster-line-24)">-debug</text><text class="breeze-k8s-configure-cluster-r4" [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="630" textLength="97.6" clip-path="url(#breeze-k8s-configure-cluster-line-25)">-include</text><text class="breeze-k8s-configure-cluster-r4" x=" [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-k8s-configure-cluster-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-26)">
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="678.8" textLength="24.4" clip-path="url(#breeze-k8s-configure-cluster-line-27)">╭─</text><text class="breeze-k8s-configure-cluster-r5" x="24.4" y="678.8" textLength="195.2" clip-path="url(#breeze-k8s-configure-cluster-line-27)"> Common options </text><text class="breeze-k8s-configure-cluster-r5" x="219.6" y="678.8" textLength="1220" clip-path="url(#breeze-k8s-configure-cluster-line-27)">───────────────────────── [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-28)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-28)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="703.2" textLength="97.6" clip-path="url(#breeze-k8s-configure-cluster-line-28)">-verbose</text><text class="breeze-k8s-configure-cluster-r [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-29)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-29)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="727.6" textLength="48.8" clip-path="url(#breeze-k8s-configure-cluster-line-29)">-dry</text><text class="breeze-k8s-configure-cluster-r4" x [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-30)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-30)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="752" textLength="61" clip-path="url(#breeze-k8s-configure-cluster-line-30)">-help</text><text class="breeze-k8s-configure-cluster-r6" x="158.6 [...]
-</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="776.4" textLength="1464" clip-path="url(#breeze-k8s-configure-cluster-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-31)">
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-7)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-7)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-k8s-configure-cluster-line-7)">-python</text><text class="breeze-k8s-configure-cluster-r6" x [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-8)">│</text><text class="breeze-k8s-configure-cluster-r7" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-configure-cluster-line-8)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                      [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-9)">│</text><text class="breeze-k8s-configure-cluster-r5" x="341.6" y="239.6" textLength="732" clip-path="url(#breeze-k8s-configure-cluster-line-9)">[default: 3.8]                               & [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-10)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-10)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="264" textLength="134.2" clip-path="url(#breeze-k8s-configure-cluster-line-10)">-kubernetes</text><text class="breeze-k8s-configure-cluster-r4" [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-11)">│</text><text class="breeze-k8s-configure-cluster-r7" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-11)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-configure-cluster-r5" x="1451.8" y="288.4" textLength="12.2" [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-12)">│</text><text class="breeze-k8s-configure-cluster-r5" x="341.6" y="312.8" textLength="658.8" clip-path="url(#breeze-k8s-configure-cluster-line-12)">[default: v1.25.11]                              [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-configure-cluster-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-13)">
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-configure-cluster-line-14)">╭─</text><text class="breeze-k8s-configure-cluster-r5" x="24.4" y="361.6" textLength="219.6" clip-path="url(#breeze-k8s-configure-cluster-line-14)"> Parallel options </text><text class="breeze-k8s-configure-cluster-r5" x="244" y="361.6" textLength="1195.6" clip-path="url(#breeze-k8s-configure-cluster-line-14)">─────────────────────── [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-15)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-15)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="386" textLength="48.8" clip-path="url(#breeze-k8s-configure-cluster-line-15)">-run</text><text class="breeze-k8s-configure-cluster-r4" x="85.4 [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-16)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-16)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="410.4" textLength="146.4" clip-path="url(#breeze-k8s-configure-cluster-line-16)">-parallelism</text><text class="breeze-k8s-configure-clus [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-17)">│</text><text class="breeze-k8s-configure-cluster-r1" x="378.2" y="434.8" textLength="1061.4" clip-path="url(#breeze-k8s-configure-cluster-line-17)">operations.                                [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-18)">│</text><text class="breeze-k8s-configure-cluster-r7" x="378.2" y="459.2" textLength="1061.4" clip-path="url(#breeze-k8s-configure-cluster-line-18)">(INTEGER RANGE)                              & [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-19)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="483.6" textLength="1061.4" clip-path="url(#breeze-k8s-configure-cluster-line-19)">[default: 2; 1<=x<=4]                           &# [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-20)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-20)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="508" textLength="85.4" clip-path="url(#breeze-k8s-configure-cluster-line-20)">-python</text><text class="breeze-k8s-configure-cluster-r4" x="1 [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-21)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="532.4" textLength="951.6" clip-path="url(#breeze-k8s-configure-cluster-line-21)">[default: 3.8 3.9 3.10 3.11 3.12]                         [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-22)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-22)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="556.8" textLength="134.2" clip-path="url(#breeze-k8s-configure-cluster-line-22)">-kubernetes</text><text class="breeze-k8s-configure-clust [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-23)">│</text><text class="breeze-k8s-configure-cluster-r5" x="378.2" y="581.2" textLength="756.4" clip-path="url(#breeze-k8s-configure-cluster-line-23)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-configure-cluster-r5" x="1451 [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-24)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-24)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="605.6" textLength="61" clip-path="url(#breeze-k8s-configure-cluster-line-24)">-skip</text><text class="breeze-k8s-configure-cluster-r4" x= [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="630" textLength="73.2" clip-path="url(#breeze-k8s-configure-cluster-line-25)">-debug</text><text class="breeze-k8s-configure-cluster-r4" x="10 [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-26)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-26)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="654.4" textLength="97.6" clip-path="url(#breeze-k8s-configure-cluster-line-26)">-include</text><text class="breeze-k8s-configure-cluster-r [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-k8s-configure-cluster-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-27)">
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="703.2" textLength="24.4" clip-path="url(#breeze-k8s-configure-cluster-line-28)">╭─</text><text class="breeze-k8s-configure-cluster-r5" x="24.4" y="703.2" textLength="195.2" clip-path="url(#breeze-k8s-configure-cluster-line-28)"> Common options </text><text class="breeze-k8s-configure-cluster-r5" x="219.6" y="703.2" textLength="1220" clip-path="url(#breeze-k8s-configure-cluster-line-28)">───────────────────────── [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-29)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-29)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="727.6" textLength="97.6" clip-path="url(#breeze-k8s-configure-cluster-line-29)">-verbose</text><text class="breeze-k8s-configure-cluster-r [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-30)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-30)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="752" textLength="48.8" clip-path="url(#breeze-k8s-configure-cluster-line-30)">-dry</text><text class="breeze-k8s-configure-cluster-r4" x="85.4 [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-31)">│</text><text class="breeze-k8s-configure-cluster-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-31)">-</text><text class="breeze-k8s-configure-cluster-r4" x="36.6" y="776.4" textLength="61" clip-path="url(#breeze-k8s-configure-cluster-line-31)">-help</text><text class="breeze-k8s-configure-cluster-r6" x= [...]
+</text><text class="breeze-k8s-configure-cluster-r5" x="0" y="800.8" textLength="1464" clip-path="url(#breeze-k8s-configure-cluster-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-configure-cluster-r1" x="1464" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-configure-cluster-line-32)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_configure-cluster.txt b/dev/breeze/doc/images/output_k8s_configure-cluster.txt
index 6076641228..0daebf58e2 100644
--- a/dev/breeze/doc/images/output_k8s_configure-cluster.txt
+++ b/dev/breeze/doc/images/output_k8s_configure-cluster.txt
@@ -1 +1 @@
-dbc486330002aa424c8245f1f60afd61
+8f319ba66028f112ffc951375e6be828
diff --git a/dev/breeze/doc/images/output_k8s_create-cluster.svg b/dev/breeze/doc/images/output_k8s_create-cluster.svg
index daf7abdca7..f6bb74831d 100644
--- a/dev/breeze/doc/images/output_k8s_create-cluster.svg
+++ b/dev/breeze/doc/images/output_k8s_create-cluster.svg
@@ -160,7 +160,7 @@
</text><text class="breeze-k8s-create-cluster-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-4)">
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-create-cluster-line-5)">╭─</text><text class="breeze-k8s-create-cluster-r5" x="24.4" y="142" textLength="341.6" clip-path="url(#breeze-k8s-create-cluster-line-5)"> K8S cluster creation flags </text><text class="breeze-k8s-create-cluster-r5" x="366" y="142" textLength="1073.6" clip-path="url(#breeze-k8s-create-cluster-line-5)">────────────────────────────── [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-6)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-6)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-create-cluster-line-6)">-python</text><text class="breeze-k8s-create-cluster-r6" x="341.6" y="166.4" te [...]
-</text><text class="breeze-k8s-create-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-7)">│</text><text class="breeze-k8s-create-cluster-r7" x="390.4" y="190.8" textLength="732" clip-path="url(#breeze-k8s-create-cluster-line-7)">(>3.8< | 3.9 | 3.10 | 3.11)                           [...]
+</text><text class="breeze-k8s-create-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-7)">│</text><text class="breeze-k8s-create-cluster-r7" x="390.4" y="190.8" textLength="732" clip-path="url(#breeze-k8s-create-cluster-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                        [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-8)">│</text><text class="breeze-k8s-create-cluster-r5" x="390.4" y="215.2" textLength="732" clip-path="url(#breeze-k8s-create-cluster-line-8)">[default: 3.8]                                 & [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-9)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-9)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-create-cluster-line-9)">-kubernetes</text><text class="breeze-k8s-create-cluster-r4" x="170.8" y="239. [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-10)">│</text><text class="breeze-k8s-create-cluster-r7" x="390.4" y="264" textLength="658.8" clip-path="url(#breeze-k8s-create-cluster-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-create-cluster-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breez [...]
@@ -174,7 +174,7 @@
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-18)">│</text><text class="breeze-k8s-create-cluster-r7" x="378.2" y="459.2" textLength="1061.4" clip-path="url(#breeze-k8s-create-cluster-line-18)">(INTEGER RANGE)                                & [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-19)">│</text><text class="breeze-k8s-create-cluster-r5" x="378.2" y="483.6" textLength="1061.4" clip-path="url(#breeze-k8s-create-cluster-line-19)">[default: 2; 1<=x<=4]                             &# [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-20)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-20)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="508" textLength="85.4" clip-path="url(#breeze-k8s-create-cluster-line-20)">-python</text><text class="breeze-k8s-create-cluster-r4" x="122" y="508" textLengt [...]
-</text><text class="breeze-k8s-create-cluster-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-21)">│</text><text class="breeze-k8s-create-cluster-r5" x="378.2" y="532.4" textLength="951.6" clip-path="url(#breeze-k8s-create-cluster-line-21)">[default: 3.8 3.9 3.10 3.11]                            [...]
+</text><text class="breeze-k8s-create-cluster-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-21)">│</text><text class="breeze-k8s-create-cluster-r5" x="378.2" y="532.4" textLength="951.6" clip-path="url(#breeze-k8s-create-cluster-line-21)">[default: 3.8 3.9 3.10 3.11 3.12]                           [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-22)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-22)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="556.8" textLength="134.2" clip-path="url(#breeze-k8s-create-cluster-line-22)">-kubernetes</text><text class="breeze-k8s-create-cluster-r4" x="170.8" y="5 [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-23)">│</text><text class="breeze-k8s-create-cluster-r5" x="378.2" y="581.2" textLength="756.4" clip-path="url(#breeze-k8s-create-cluster-line-23)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-create-cluster-r5" x="1451.8" y="581.2" t [...]
</text><text class="breeze-k8s-create-cluster-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-24)">│</text><text class="breeze-k8s-create-cluster-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-create-cluster-line-24)">-</text><text class="breeze-k8s-create-cluster-r4" x="36.6" y="605.6" textLength="61" clip-path="url(#breeze-k8s-create-cluster-line-24)">-skip</text><text class="breeze-k8s-create-cluster-r4" x="97.6" y="605.6" text [...]
diff --git a/dev/breeze/doc/images/output_k8s_create-cluster.txt b/dev/breeze/doc/images/output_k8s_create-cluster.txt
index a43c091256..12f6df753b 100644
--- a/dev/breeze/doc/images/output_k8s_create-cluster.txt
+++ b/dev/breeze/doc/images/output_k8s_create-cluster.txt
@@ -1 +1 @@
-7c88a610871bcb3a9b056fff6b23cb59
+3ded28206cb71b47180300a262d4cb4b
diff --git a/dev/breeze/doc/images/output_k8s_delete-cluster.svg b/dev/breeze/doc/images/output_k8s_delete-cluster.svg
index 9c1f82748a..509db13fb6 100644
--- a/dev/breeze/doc/images/output_k8s_delete-cluster.svg
+++ b/dev/breeze/doc/images/output_k8s_delete-cluster.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>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-delete-cluster-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="438.2" />
+ <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
</clipPath>
<clipPath id="breeze-k8s-delete-cluster-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -96,9 +96,12 @@
<clipPath id="breeze-k8s-delete-cluster-line-16">
<rect x="0" y="391.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-delete-cluster-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="breeze-k8s-delete-cluster-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s delete-cluster</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="breeze-k8s-delete-cluster-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s delete-cluster</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -114,18 +117,19 @@
</text><text class="breeze-k8s-delete-cluster-r1" x="12.2" y="93.2" textLength="707.6" clip-path="url(#breeze-k8s-delete-cluster-line-3)">Delete the current KinD Cluster (optionally all clusters).</text><text class="breeze-k8s-delete-cluster-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-3)">
</text><text class="breeze-k8s-delete-cluster-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-4)">
</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-delete-cluster-line-5)">╭─</text><text class="breeze-k8s-delete-cluster-r5" x="24.4" y="142" textLength="317.2" clip-path="url(#breeze-k8s-delete-cluster-line-5)"> K8S cluster delete flags </text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="142" textLength="1098" clip-path="url(#breeze-k8s-delete-cluster-line-5)">──────────────────────────────── [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-6)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-6)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-delete-cluster-line-6)">-python</text><text class="breeze-k8s-delete-cluster-r6" x="292.8" y="166.4" te [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-7)">│</text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-delete-cluster-line-7)">[default: 3.8]                                 & [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-8)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-8)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-delete-cluster-line-8)">-kubernetes</text><text class="breeze-k8s-delete-cluster-r4" x="170.8" y="215. [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-9)">│</text><text class="breeze-k8s-delete-cluster-r7" x="341.6" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-delete-cluster-r5" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#b [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-10)">│</text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-10)">[default: v1.25.11]                                &# [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-11)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-11)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="288.4" textLength="48.8" clip-path="url(#breeze-k8s-delete-cluster-line-11)">-all</text><text class="breeze-k8s-delete-cluster-r1" x="341.6" y="288.4" te [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-k8s-delete-cluster-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-delete-cluster-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-12)">
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-delete-cluster-line-13)">╭─</text><text class="breeze-k8s-delete-cluster-r5" x="24.4" y="337.2" textLength="195.2" clip-path="url(#breeze-k8s-delete-cluster-line-13)"> Common options </text><text class="breeze-k8s-delete-cluster-r5" x="219.6" y="337.2" textLength="1220" clip-path="url(#breeze-k8s-delete-cluster-line-13)">─────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-14)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-14)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="361.6" textLength="97.6" clip-path="url(#breeze-k8s-delete-cluster-line-14)">-verbose</text><text class="breeze-k8s-delete-cluster-r6" x="158.6" y="361.6 [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-15)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-15)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="386" textLength="48.8" clip-path="url(#breeze-k8s-delete-cluster-line-15)">-dry</text><text class="breeze-k8s-delete-cluster-r4" x="85.4" y="386" textLength= [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-16)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-16)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="410.4" textLength="61" clip-path="url(#breeze-k8s-delete-cluster-line-16)">-help</text><text class="breeze-k8s-delete-cluster-r6" x="158.6" y="410.4" tex [...]
-</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="434.8" textLength="1464" clip-path="url(#breeze-k8s-delete-cluster-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-delete-cluster-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-17)">
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-6)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-6)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-delete-cluster-line-6)">-python</text><text class="breeze-k8s-delete-cluster-r6" x="292.8" y="166.4" te [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-7)">│</text><text class="breeze-k8s-delete-cluster-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-delete-cluster-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                        [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-8)">│</text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-delete-cluster-line-8)">[default: 3.8]                                 & [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-9)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-9)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-delete-cluster-line-9)">-kubernetes</text><text class="breeze-k8s-delete-cluster-r4" x="170.8" y="239. [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-10)">│</text><text class="breeze-k8s-delete-cluster-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-delete-cluster-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breez [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-11)">│</text><text class="breeze-k8s-delete-cluster-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-delete-cluster-line-11)">[default: v1.25.11]                                [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-12)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-12)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-k8s-delete-cluster-line-12)">-all</text><text class="breeze-k8s-delete-cluster-r1" x="341.6" y="312.8" te [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-delete-cluster-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-delete-cluster-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-13)">
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-delete-cluster-line-14)">╭─</text><text class="breeze-k8s-delete-cluster-r5" x="24.4" y="361.6" textLength="195.2" clip-path="url(#breeze-k8s-delete-cluster-line-14)"> Common options </text><text class="breeze-k8s-delete-cluster-r5" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-k8s-delete-cluster-line-14)">─────────────────────────────────────────── [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-15)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-15)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="386" textLength="97.6" clip-path="url(#breeze-k8s-delete-cluster-line-15)">-verbose</text><text class="breeze-k8s-delete-cluster-r6" x="158.6" y="386" textLe [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-16)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-16)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-k8s-delete-cluster-line-16)">-dry</text><text class="breeze-k8s-delete-cluster-r4" x="85.4" y="410.4" tex [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-17)">│</text><text class="breeze-k8s-delete-cluster-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-17)">-</text><text class="breeze-k8s-delete-cluster-r4" x="36.6" y="434.8" textLength="61" clip-path="url(#breeze-k8s-delete-cluster-line-17)">-help</text><text class="breeze-k8s-delete-cluster-r6" x="158.6" y="434.8" tex [...]
+</text><text class="breeze-k8s-delete-cluster-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-k8s-delete-cluster-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-delete-cluster-r1" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-delete-cluster-line-18)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_delete-cluster.txt b/dev/breeze/doc/images/output_k8s_delete-cluster.txt
index a75d33a0ca..bbf2c5a7d6 100644
--- a/dev/breeze/doc/images/output_k8s_delete-cluster.txt
+++ b/dev/breeze/doc/images/output_k8s_delete-cluster.txt
@@ -1 +1 @@
-4a3947c3129b6b14b730f1bddc80a155
+51b7c9723341ff67567e89982f1aebba
diff --git a/dev/breeze/doc/images/output_k8s_deploy-airflow.svg b/dev/breeze/doc/images/output_k8s_deploy-airflow.svg
index 25b7b8f541..72c51ffc91 100644
--- a/dev/breeze/doc/images/output_k8s_deploy-airflow.svg
+++ b/dev/breeze/doc/images/output_k8s_deploy-airflow.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1001.5999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1026.0" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-deploy-airflow-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="950.5999999999999" />
+ <rect x="0" y="0" width="1463.0" height="975.0" />
</clipPath>
<clipPath id="breeze-k8s-deploy-airflow-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -159,9 +159,12 @@
<clipPath id="breeze-k8s-deploy-airflow-line-37">
<rect x="0" y="904.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-deploy-airflow-line-38">
+ <rect x="0" y="928.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="999.6" rx="8"/><text class="breeze-k8s-deploy-airflow-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s deploy-airflow</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1024" rx="8"/><text class="breeze-k8s-deploy-airflow-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s deploy-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"/>
@@ -177,39 +180,40 @@
</text><text class="breeze-k8s-deploy-airflow-r1" x="12.2" y="93.2" textLength="817.4" clip-path="url(#breeze-k8s-deploy-airflow-line-3)">Deploy airflow image to the current KinD cluster (or all clusters).</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-3)">
</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-4)">
</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-deploy-airflow-line-5)">╭─</text><text class="breeze-k8s-deploy-airflow-r5" x="24.4" y="142" textLength="268.4" clip-path="url(#breeze-k8s-deploy-airflow-line-5)"> Airflow deploy flags </text><text class="breeze-k8s-deploy-airflow-r5" x="292.8" y="142" textLength="1146.8" clip-path="url(#breeze-k8s-deploy-airflow-line-5)">─────────────────────────────────────── [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-6)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-6)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-deploy-airflow-line-6)">-python</text><text class="breeze-k8s-deploy-airflow-r6" x="317.2" y="166.4" te [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-7)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="190.8" textLength="732" clip-path="url(#breeze-k8s-deploy-airflow-line-7)">[default: 3.8]                                  [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-8)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-8)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-deploy-airflow-line-8)">-kubernetes</text><text class="breeze-k8s-deploy-airflow-r4" x="170.8" y="215. [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#bre [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">[default: v1.25.11]                                 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="288.4" textLength="109.8" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">-executor</text><text class="breeze-k8s-deploy-airflow-r1" x="366" y="288.4 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |     </text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-13)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#breeze-k8s-deploy-airflow-line-13)">SequentialExecutor)                                 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-14)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="361.6" textLength="1073.6" clip-path="url(#breeze-k8s-deploy-airflow-line-14)">[default: LocalExecutor]                                [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-15)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-15)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="386" textLength="97.6" clip-path="url(#breeze-k8s-deploy-airflow-line-15)">-upgrade</text><text class="breeze-k8s-deploy-airflow-r1" x="366" y="386" textLeng [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-16)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-16)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="410.4" textLength="61" clip-path="url(#breeze-k8s-deploy-airflow-line-16)">-wait</text><text class="breeze-k8s-deploy-airflow-r4" x="97.6" y="410.4" text [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-17)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-17)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="434.8" textLength="48.8" clip-path="url(#breeze-k8s-deploy-airflow-line-17)">-use</text><text class="breeze-k8s-deploy-airflow-r4" x="85.4" y="434.8" tex [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-18)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-18)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="459.2" textLength="73.2" clip-path="url(#breeze-k8s-deploy-airflow-line-18)">-multi</text><text class="breeze-k8s-deploy-airflow-r4" x="109.8" y="459.2" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="483.6" textLength="1464" clip-path="url(#breeze-k8s-deploy-airflow-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-19)">
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="508" textLength="24.4" clip-path="url(#breeze-k8s-deploy-airflow-line-20)">╭─</text><text class="breeze-k8s-deploy-airflow-r5" x="24.4" y="508" textLength="219.6" clip-path="url(#breeze-k8s-deploy-airflow-line-20)"> Parallel options </text><text class="breeze-k8s-deploy-airflow-r5" x="244" y="508" textLength="1195.6" clip-path="url(#breeze-k8s-deploy-airflow-line-20)">─────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-21)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-21)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="532.4" textLength="48.8" clip-path="url(#breeze-k8s-deploy-airflow-line-21)">-run</text><text class="breeze-k8s-deploy-airflow-r4" x="85.4" y="532.4" tex [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-22)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-22)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="556.8" textLength="146.4" clip-path="url(#breeze-k8s-deploy-airflow-line-22)">-parallelism</text><text class="breeze-k8s-deploy-airflow-r1" x="378.2" y=" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-23)">│</text><text class="breeze-k8s-deploy-airflow-r1" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#breeze-k8s-deploy-airflow-line-23)">operations.                                  [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-24)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="378.2" y="605.6" textLength="1061.4" clip-path="url(#breeze-k8s-deploy-airflow-line-24)">(INTEGER RANGE)                                & [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-25)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="630" textLength="1061.4" clip-path="url(#breeze-k8s-deploy-airflow-line-25)">[default: 2; 1<=x<=4]                               [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="654.4" textLength="85.4" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">-python</text><text class="breeze-k8s-deploy-airflow-r4" x="122" y="654.4" t [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="678.8" textLength="951.6" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">[default: 3.8 3.9 3.10 3.11]                            [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="703.2" textLength="134.2" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-kubernetes</text><text class="breeze-k8s-deploy-airflow-r4" x="170.8" y="7 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="727.6" textLength="756.4" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="727.6" t [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="752" textLength="61" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">-skip</text><text class="breeze-k8s-deploy-airflow-r4" x="97.6" y="752" textLength=" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-31)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-31)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="776.4" textLength="73.2" clip-path="url(#breeze-k8s-deploy-airflow-line-31)">-debug</text><text class="breeze-k8s-deploy-airflow-r4" x="109.8" y="776.4" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-32)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-32)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-k8s-deploy-airflow-line-32)">-include</text><text class="breeze-k8s-deploy-airflow-r4" x="134.2" y="800.8 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="825.2" textLength="1464" clip-path="url(#breeze-k8s-deploy-airflow-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-33)">
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="849.6" textLength="24.4" clip-path="url(#breeze-k8s-deploy-airflow-line-34)">╭─</text><text class="breeze-k8s-deploy-airflow-r5" x="24.4" y="849.6" textLength="195.2" clip-path="url(#breeze-k8s-deploy-airflow-line-34)"> Common options </text><text class="breeze-k8s-deploy-airflow-r5" x="219.6" y="849.6" textLength="1220" clip-path="url(#breeze-k8s-deploy-airflow-line-34)">─────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-35)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-35)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="874" textLength="97.6" clip-path="url(#breeze-k8s-deploy-airflow-line-35)">-verbose</text><text class="breeze-k8s-deploy-airflow-r6" x="158.6" y="874" textLe [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-36)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-36)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="898.4" textLength="48.8" clip-path="url(#breeze-k8s-deploy-airflow-line-36)">-dry</text><text class="breeze-k8s-deploy-airflow-r4" x="85.4" y="898.4" tex [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-37)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-37)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="922.8" textLength="61" clip-path="url(#breeze-k8s-deploy-airflow-line-37)">-help</text><text class="breeze-k8s-deploy-airflow-r6" x="158.6" y="922.8" tex [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="947.2" textLength="1464" clip-path="url(#breeze-k8s-deploy-airflow-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-38)">
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-6)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-6)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-deploy-airflow-line-6)">-python</text><text class="breeze-k8s-deploy-airflow-r6" x="317.2" y="166.4" te [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-7)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="190.8" textLength="732" clip-path="url(#breeze-k8s-deploy-airflow-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                       &# [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-8)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="215.2" textLength="732" clip-path="url(#breeze-k8s-deploy-airflow-line-8)">[default: 3.8]                                  [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-deploy-airflow-line-9)">-kubernetes</text><text class="breeze-k8s-deploy-airflow-r4" x="170.8" y="239. [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze- [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-deploy-airflow-line-11)">[default: v1.25.11]                                 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="312.8" textLength="109.8" clip-path="url(#breeze-k8s-deploy-airflow-line-12)">-executor</text><text class="breeze-k8s-deploy-airflow-r1" x="366" y="312.8 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-13)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#breeze-k8s-deploy-airflow-line-13)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |     </text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-14)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#breeze-k8s-deploy-airflow-line-14)">SequentialExecutor)                                 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-15)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="366" y="386" textLength="1073.6" clip-path="url(#breeze-k8s-deploy-airflow-line-15)">[default: LocalExecutor]                                [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-16)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-16)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="410.4" textLength="97.6" clip-path="url(#breeze-k8s-deploy-airflow-line-16)">-upgrade</text><text class="breeze-k8s-deploy-airflow-r1" x="366" y="410.4" [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-17)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-17)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="434.8" textLength="61" clip-path="url(#breeze-k8s-deploy-airflow-line-17)">-wait</text><text class="breeze-k8s-deploy-airflow-r4" x="97.6" y="434.8" text [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-18)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-18)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="459.2" textLength="48.8" clip-path="url(#breeze-k8s-deploy-airflow-line-18)">-use</text><text class="breeze-k8s-deploy-airflow-r4" x="85.4" y="459.2" tex [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-19)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-19)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="483.6" textLength="73.2" clip-path="url(#breeze-k8s-deploy-airflow-line-19)">-multi</text><text class="breeze-k8s-deploy-airflow-r4" x="109.8" y="483.6" [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="508" textLength="1464" clip-path="url(#breeze-k8s-deploy-airflow-line-20)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="508" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-20)">
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="532.4" textLength="24.4" clip-path="url(#breeze-k8s-deploy-airflow-line-21)">╭─</text><text class="breeze-k8s-deploy-airflow-r5" x="24.4" y="532.4" textLength="219.6" clip-path="url(#breeze-k8s-deploy-airflow-line-21)"> Parallel options </text><text class="breeze-k8s-deploy-airflow-r5" x="244" y="532.4" textLength="1195.6" clip-path="url(#breeze-k8s-deploy-airflow-line-21)">───────────────────────────────────────── [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-22)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-22)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="556.8" textLength="48.8" clip-path="url(#breeze-k8s-deploy-airflow-line-22)">-run</text><text class="breeze-k8s-deploy-airflow-r4" x="85.4" y="556.8" tex [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-23)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-23)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="581.2" textLength="146.4" clip-path="url(#breeze-k8s-deploy-airflow-line-23)">-parallelism</text><text class="breeze-k8s-deploy-airflow-r1" x="378.2" y=" [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-24)">│</text><text class="breeze-k8s-deploy-airflow-r1" x="378.2" y="605.6" textLength="1061.4" clip-path="url(#breeze-k8s-deploy-airflow-line-24)">operations.                                  [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-25)">│</text><text class="breeze-k8s-deploy-airflow-r7" x="378.2" y="630" textLength="1061.4" clip-path="url(#breeze-k8s-deploy-airflow-line-25)">(INTEGER RANGE)                                  [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#breeze-k8s-deploy-airflow-line-26)">[default: 2; 1<=x<=4]                             &# [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="678.8" textLength="85.4" clip-path="url(#breeze-k8s-deploy-airflow-line-27)">-python</text><text class="breeze-k8s-deploy-airflow-r4" x="122" y="678.8" t [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="703.2" textLength="951.6" clip-path="url(#breeze-k8s-deploy-airflow-line-28)">[default: 3.8 3.9 3.10 3.11 3.12]                           [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="727.6" textLength="134.2" clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-kubernetes</text><text class="breeze-k8s-deploy-airflow-r4" x="170.8" y="7 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">│</text><text class="breeze-k8s-deploy-airflow-r5" x="378.2" y="752" textLength="756.4" clip-path="url(#breeze-k8s-deploy-airflow-line-30)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-deploy-airflow-r5" x="1451.8" y="752" textLen [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-31)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-31)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="776.4" textLength="61" clip-path="url(#breeze-k8s-deploy-airflow-line-31)">-skip</text><text class="breeze-k8s-deploy-airflow-r4" x="97.6" y="776.4" text [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-32)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-32)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="800.8" textLength="73.2" clip-path="url(#breeze-k8s-deploy-airflow-line-32)">-debug</text><text class="breeze-k8s-deploy-airflow-r4" x="109.8" y="800.8" [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-33)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-33)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-k8s-deploy-airflow-line-33)">-include</text><text class="breeze-k8s-deploy-airflow-r4" x="134.2" y="825.2 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-k8s-deploy-airflow-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-34)">
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="874" textLength="24.4" clip-path="url(#breeze-k8s-deploy-airflow-line-35)">╭─</text><text class="breeze-k8s-deploy-airflow-r5" x="24.4" y="874" textLength="195.2" clip-path="url(#breeze-k8s-deploy-airflow-line-35)"> Common options </text><text class="breeze-k8s-deploy-airflow-r5" x="219.6" y="874" textLength="1220" clip-path="url(#breeze-k8s-deploy-airflow-line-35)">───────────────────────────────────────────────── [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-36)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-36)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="898.4" textLength="97.6" clip-path="url(#breeze-k8s-deploy-airflow-line-36)">-verbose</text><text class="breeze-k8s-deploy-airflow-r6" x="158.6" y="898.4 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-37)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-37)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="922.8" textLength="48.8" clip-path="url(#breeze-k8s-deploy-airflow-line-37)">-dry</text><text class="breeze-k8s-deploy-airflow-r4" x="85.4" y="922.8" tex [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-38)">│</text><text class="breeze-k8s-deploy-airflow-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-38)">-</text><text class="breeze-k8s-deploy-airflow-r4" x="36.6" y="947.2" textLength="61" clip-path="url(#breeze-k8s-deploy-airflow-line-38)">-help</text><text class="breeze-k8s-deploy-airflow-r6" x="158.6" y="947.2" tex [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="971.6" textLength="1464" clip-path="url(#breeze-k8s-deploy-airflow-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-deploy-airflow-r1" x="1464" y="971.6" textLength="12.2" clip-path="url(#breeze-k8s-deploy-airflow-line-39)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_deploy-airflow.txt b/dev/breeze/doc/images/output_k8s_deploy-airflow.txt
index 26da86efda..c952649ff9 100644
--- a/dev/breeze/doc/images/output_k8s_deploy-airflow.txt
+++ b/dev/breeze/doc/images/output_k8s_deploy-airflow.txt
@@ -1 +1 @@
-462ede926684192014531cef0efaf6eb
+4f9ec999728f3bde15a17efc238ac08d
diff --git a/dev/breeze/doc/images/output_k8s_k9s.svg b/dev/breeze/doc/images/output_k8s_k9s.svg
index 46ff5a53a3..c67db6065e 100644
--- a/dev/breeze/doc/images/output_k8s_k9s.svg
+++ b/dev/breeze/doc/images/output_k8s_k9s.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 489.2" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-k9s-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+ <rect x="0" y="0" width="1463.0" height="438.2" />
</clipPath>
<clipPath id="breeze-k8s-k9s-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -93,9 +93,12 @@
<clipPath id="breeze-k8s-k9s-line-15">
<rect x="0" y="367.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-k9s-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="462.8" rx="8"/><text class="breeze-k8s-k9s-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s k9s</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="breeze-k8s-k9s-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s k9s</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -111,17 +114,18 @@
</text><text class="breeze-k8s-k9s-r1" x="12.2" y="93.2" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-3)">Run k9s tool. You can pass any k9s args as extra args.</text><text class="breeze-k8s-k9s-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-3)">
</text><text class="breeze-k8s-k9s-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-4)">
</text><text class="breeze-k8s-k9s-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-5)">╭─</text><text class="breeze-k8s-k9s-r5" x="24.4" y="142" textLength="183" clip-path="url(#breeze-k8s-k9s-line-5)"> K8S k9s flags </text><text class="breeze-k8s-k9s-r5" x="207.4" y="142" textLength="1232.2" clip-path="url(#breeze-k8s-k9s-line-5)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-6)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-6)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-k9s-line-6)">-python</text><text class="breeze-k8s-k9s-r6" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-6)">-p</text><text class= [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-7)">│</text><text class="breeze-k8s-k9s-r5" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-k9s-line-7)">[default: 3.8]                                         [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-8)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-8)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-k9s-line-8)">-kubernetes</text><text class="breeze-k8s-k9s-r4" x="170.8" y="215.2" textLength="97.6" clip-path="url(#breeze-k8s-k9s-line-8)">-version</text>< [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-9)">│</text><text class="breeze-k8s-k9s-r7" x="341.6" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-k9s-r5" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-9)">│</text><text class="breeze-k8s- [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text class="breeze-k8s-k9s-r5" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-10)">[default: v1.25.11]                                   </text><text class="breeze-k [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-k8s-k9s-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-k9s-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-11)">
-</text><text class="breeze-k8s-k9s-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-12)">╭─</text><text class="breeze-k8s-k9s-r5" x="24.4" y="312.8" textLength="195.2" clip-path="url(#breeze-k8s-k9s-line-12)"> Common options </text><text class="breeze-k8s-k9s-r5" x="219.6" y="312.8" textLength="1220" clip-path="url(#breeze-k8s-k9s-line-12)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><t [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-13)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-13)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="337.2" textLength="97.6" clip-path="url(#breeze-k8s-k9s-line-13)">-verbose</text><text class="breeze-k8s-k9s-r6" x="158.6" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-13)">-v</text><text c [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-14)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-14)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="361.6" textLength="48.8" clip-path="url(#breeze-k8s-k9s-line-14)">-dry</text><text class="breeze-k8s-k9s-r4" x="85.4" y="361.6" textLength="48.8" clip-path="url(#breeze-k8s-k9s-line-14)">-run</text><text clas [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-15)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-15)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="386" textLength="61" clip-path="url(#breeze-k8s-k9s-line-15)">-help</text><text class="breeze-k8s-k9s-r6" x="158.6" y="386" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-15)">-h</text><text class="breeze- [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="410.4" textLength="1464" clip-path="url(#breeze-k8s-k9s-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-k9s-r1" x="1464" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-16)">
+</text><text class="breeze-k8s-k9s-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-6)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-6)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-k9s-line-6)">-python</text><text class="breeze-k8s-k9s-r6" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-6)">-p</text><text class= [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-7)">│</text><text class="breeze-k8s-k9s-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-k9s-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text class="breeze [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-8)">│</text><text class="breeze-k8s-k9s-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-k9s-line-8)">[default: 3.8]                                         [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-9)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-9)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-k9s-line-9)">-kubernetes</text><text class="breeze-k8s-k9s-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-k9s-line-9)">-version</text>< [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text class="breeze-k8s-k9s-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-k9s-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text class="breeze-k8s-k9s [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-11)">│</text><text class="breeze-k8s-k9s-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-k9s-line-11)">[default: v1.25.11]                                   </text><text class="bree [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-k8s-k9s-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-k9s-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-12)">
+</text><text class="breeze-k8s-k9s-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-13)">╭─</text><text class="breeze-k8s-k9s-r5" x="24.4" y="337.2" textLength="195.2" clip-path="url(#breeze-k8s-k9s-line-13)"> Common options </text><text class="breeze-k8s-k9s-r5" x="219.6" y="337.2" textLength="1220" clip-path="url(#breeze-k8s-k9s-line-13)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><t [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-14)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-14)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="361.6" textLength="97.6" clip-path="url(#breeze-k8s-k9s-line-14)">-verbose</text><text class="breeze-k8s-k9s-r6" x="158.6" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-14)">-v</text><text c [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-15)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-15)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="386" textLength="48.8" clip-path="url(#breeze-k8s-k9s-line-15)">-dry</text><text class="breeze-k8s-k9s-r4" x="85.4" y="386" textLength="48.8" clip-path="url(#breeze-k8s-k9s-line-15)">-run</text><text class="breez [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-16)">│</text><text class="breeze-k8s-k9s-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-16)">-</text><text class="breeze-k8s-k9s-r4" x="36.6" y="410.4" textLength="61" clip-path="url(#breeze-k8s-k9s-line-16)">-help</text><text class="breeze-k8s-k9s-r6" x="158.6" y="410.4" textLength="24.4" clip-path="url(#breeze-k8s-k9s-line-16)">-h</text><text class= [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="434.8" textLength="1464" clip-path="url(#breeze-k8s-k9s-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-k9s-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-k9s-line-17)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_k9s.txt b/dev/breeze/doc/images/output_k8s_k9s.txt
index 397656791e..911336c6e5 100644
--- a/dev/breeze/doc/images/output_k8s_k9s.txt
+++ b/dev/breeze/doc/images/output_k8s_k9s.txt
@@ -1 +1 @@
-6e3dc7675b01e32bcafdee3d8fba50c2
+815f4202dfd0aebc69e8e12a958b6aa4
diff --git a/dev/breeze/doc/images/output_k8s_logs.svg b/dev/breeze/doc/images/output_k8s_logs.svg
index 22fc37d29f..d53bdd2b3c 100644
--- a/dev/breeze/doc/images/output_k8s_logs.svg
+++ b/dev/breeze/doc/images/output_k8s_logs.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>
@@ -44,7 +44,7 @@
<defs>
<clipPath id="breeze-k8s-logs-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="438.2" />
+ <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
</clipPath>
<clipPath id="breeze-k8s-logs-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -97,9 +97,12 @@
<clipPath id="breeze-k8s-logs-line-16">
<rect x="0" y="391.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-logs-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="breeze-k8s-logs-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s logs</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="breeze-k8s-logs-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s logs</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -115,18 +118,19 @@
</text><text class="breeze-k8s-logs-r1" x="12.2" y="93.2" textLength="463.6" clip-path="url(#breeze-k8s-logs-line-3)">Dump k8s logs to ${TMP_DIR}/kind_logs_</text><text class="breeze-k8s-logs-r5" x="475.8" y="93.2" textLength="170.8" clip-path="url(#breeze-k8s-logs-line-3)"><cluster_name></text><text class="breeze-k8s-logs-r1" x="646.6" y="93.2" textLength="451.4" clip-path="url(#breeze-k8s-logs-line-3)"> directory (optionally all clusters).< [...]
</text><text class="breeze-k8s-logs-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-4)">
</text><text class="breeze-k8s-logs-r6" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-5)">╭─</text><text class="breeze-k8s-logs-r6" x="24.4" y="142" textLength="195.2" clip-path="url(#breeze-k8s-logs-line-5)"> K8S logs flags </text><text class="breeze-k8s-logs-r6" x="219.6" y="142" textLength="1220" clip-path="url(#breeze-k8s-logs-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────────</text> [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-6)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-6)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-logs-line-6)">-python</text><text class="breeze-k8s-logs-r7" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-6)">-p</text><tex [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-7)">│</text><text class="breeze-k8s-logs-r6" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-logs-line-7)">[default: 3.8]                                         [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-8)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-8)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-logs-line-8)">-kubernetes</text><text class="breeze-k8s-logs-r4" x="170.8" y="215.2" textLength="97.6" clip-path="url(#breeze-k8s-logs-line-8)">-version [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-9)">│</text><text class="breeze-k8s-logs-r8" x="341.6" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-logs-r6" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-9)">│</text><text class="breez [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-10)">│</text><text class="breeze-k8s-logs-r6" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-10)">[default: v1.25.11]                                   </text><text class="bree [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-11)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-11)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="288.4" textLength="48.8" clip-path="url(#breeze-k8s-logs-line-11)">-all</text><text class="breeze-k8s-logs-r1" x="341.6" y="288.4" textLength="390.4" clip-path="url(#breeze-k8s-logs-line-11)">Apply  [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-k8s-logs-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-logs-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-12)">
-</text><text class="breeze-k8s-logs-r6" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-13)">╭─</text><text class="breeze-k8s-logs-r6" x="24.4" y="337.2" textLength="195.2" clip-path="url(#breeze-k8s-logs-line-13)"> Common options </text><text class="breeze-k8s-logs-r6" x="219.6" y="337.2" textLength="1220" clip-path="url(#breeze-k8s-logs-line-13)">────────────────────────────────────────────────────────────────────────────────────────────────────</t [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-14)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-14)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="361.6" textLength="97.6" clip-path="url(#breeze-k8s-logs-line-14)">-verbose</text><text class="breeze-k8s-logs-r7" x="158.6" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-14)">-v</text [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-15)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-15)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="386" textLength="48.8" clip-path="url(#breeze-k8s-logs-line-15)">-dry</text><text class="breeze-k8s-logs-r4" x="85.4" y="386" textLength="48.8" clip-path="url(#breeze-k8s-logs-line-15)">-run</text><text clas [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-16)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-16)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="410.4" textLength="61" clip-path="url(#breeze-k8s-logs-line-16)">-help</text><text class="breeze-k8s-logs-r7" x="158.6" y="410.4" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-16)">-h</text><tex [...]
-</text><text class="breeze-k8s-logs-r6" x="0" y="434.8" textLength="1464" clip-path="url(#breeze-k8s-logs-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-logs-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-17)">
+</text><text class="breeze-k8s-logs-r6" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-6)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-6)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-logs-line-6)">-python</text><text class="breeze-k8s-logs-r7" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-6)">-p</text><tex [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-7)">│</text><text class="breeze-k8s-logs-r8" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-logs-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text class="br [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-8)">│</text><text class="breeze-k8s-logs-r6" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-logs-line-8)">[default: 3.8]                                         [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-9)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-9)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-logs-line-9)">-kubernetes</text><text class="breeze-k8s-logs-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-logs-line-9)">-version [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-10)">│</text><text class="breeze-k8s-logs-r8" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-logs-r6" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-10)">│</text><text class="breeze-k [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-11)">│</text><text class="breeze-k8s-logs-r6" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-logs-line-11)">[default: v1.25.11]                                   </text><text class=" [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-12)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-12)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-k8s-logs-line-12)">-all</text><text class="breeze-k8s-logs-r1" x="341.6" y="312.8" textLength="390.4" clip-path="url(#breeze-k8s-logs-line-12)">Apply  [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-logs-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-logs-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-13)">
+</text><text class="breeze-k8s-logs-r6" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-14)">╭─</text><text class="breeze-k8s-logs-r6" x="24.4" y="361.6" textLength="195.2" clip-path="url(#breeze-k8s-logs-line-14)"> Common options </text><text class="breeze-k8s-logs-r6" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-k8s-logs-line-14)">────────────────────────────────────────────────────────────────────────────────────────────────────</t [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-15)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-15)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="386" textLength="97.6" clip-path="url(#breeze-k8s-logs-line-15)">-verbose</text><text class="breeze-k8s-logs-r7" x="158.6" y="386" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-15)">-v</text><text c [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-16)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-16)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-k8s-logs-line-16)">-dry</text><text class="breeze-k8s-logs-r4" x="85.4" y="410.4" textLength="48.8" clip-path="url(#breeze-k8s-logs-line-16)">-run</text><t [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-17)">│</text><text class="breeze-k8s-logs-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-17)">-</text><text class="breeze-k8s-logs-r4" x="36.6" y="434.8" textLength="61" clip-path="url(#breeze-k8s-logs-line-17)">-help</text><text class="breeze-k8s-logs-r7" x="158.6" y="434.8" textLength="24.4" clip-path="url(#breeze-k8s-logs-line-17)">-h</text><tex [...]
+</text><text class="breeze-k8s-logs-r6" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-k8s-logs-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-logs-r1" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-logs-line-18)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_logs.txt b/dev/breeze/doc/images/output_k8s_logs.txt
index a47473680b..bed87dcef8 100644
--- a/dev/breeze/doc/images/output_k8s_logs.txt
+++ b/dev/breeze/doc/images/output_k8s_logs.txt
@@ -1 +1 @@
-282a41985a318af938d250c6911c2e0b
+1f2c39963121e0fccaa1af474427a2aa
diff --git a/dev/breeze/doc/images/output_k8s_run-complete-tests.svg b/dev/breeze/doc/images/output_k8s_run-complete-tests.svg
index e0b79fb6b5..15cfc22b5c 100644
--- a/dev/breeze/doc/images/output_k8s_run-complete-tests.svg
+++ b/dev/breeze/doc/images/output_k8s_run-complete-tests.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>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-run-complete-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1194.6" />
+ <rect x="0" y="0" width="1463.0" height="1219.0" />
</clipPath>
<clipPath id="breeze-k8s-run-complete-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -189,9 +189,12 @@
<clipPath id="breeze-k8s-run-complete-tests-line-47">
<rect x="0" y="1148.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-run-complete-tests-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="breeze-k8s-run-complete-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s run-complete-tests</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="breeze-k8s-run-complete-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s run-complete-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"/>
@@ -220,36 +223,37 @@
</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-16)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-16)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="410.4" textLength="73.2" clip-path="url(#breeze-k8s-run-complete-tests-line-16)">-image</text><text class="breeze-k8s-run-complete-te [...]
</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="434.8" textLength="1464" clip-path="url(#breeze-k8s-run-complete-tests-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-run-complete-tests-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-17)">
</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="459.2" textLength="24.4" clip-path="url(#breeze-k8s-run-complete-tests-line-18)">╭─</text><text class="breeze-k8s-run-complete-tests-r5" x="24.4" y="459.2" textLength="207.4" clip-path="url(#breeze-k8s-run-complete-tests-line-18)"> K8S tests flags </text><text class="breeze-k8s-run-complete-tests-r5" x="231.8" y="459.2" textLength="1207.8" clip-path="url(#breeze-k8s-run-complete-tests-line-18)">─────────── [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="483.6" textLength="85.4" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">-python</text><text class="breeze-k8s-run-complete-t [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-20)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="508" textLength="732" clip-path="url(#breeze-k8s-run-complete-tests-line-20)">[default: 3.8]                                [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="532.4" textLength="134.2" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">-kubernetes</text><text class="breeze-k8s-run-compl [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="556.8" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-run-complete-tests-r5" x="1451.8" y="556.8" textLength="1 [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="581.2" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">[default: v1.25.11]                              [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="605.6" textLength="109.8" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">-executor</text><text class="breeze-k8s-run-complet [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-25)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="630" textLength="1098" clip-path="url(#breeze-k8s-run-complete-tests-line-25)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |       </text><text class="breeze-k8s-run-co [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-26)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="654.4" textLength="1098" clip-path="url(#breeze-k8s-run-complete-tests-line-26)">SequentialExecutor)                               [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-27)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="678.8" textLength="1098" clip-path="url(#breeze-k8s-run-complete-tests-line-27)">[default: LocalExecutor]                            &# [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-28)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-28)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="703.2" textLength="73.2" clip-path="url(#breeze-k8s-run-complete-tests-line-28)">-force</text><text class="breeze-k8s-run-complete-te [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-k8s-run-complete-tests-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-run-complete-tests-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-29)">
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-k8s-run-complete-tests-line-30)">╭─</text><text class="breeze-k8s-run-complete-tests-r5" x="24.4" y="752" textLength="219.6" clip-path="url(#breeze-k8s-run-complete-tests-line-30)"> Parallel options </text><text class="breeze-k8s-run-complete-tests-r5" x="244" y="752" textLength="1195.6" clip-path="url(#breeze-k8s-run-complete-tests-line-30)">─────────────────────── [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-31)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-31)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="776.4" textLength="48.8" clip-path="url(#breeze-k8s-run-complete-tests-line-31)">-run</text><text class="breeze-k8s-run-complete-test [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-32)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-32)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="800.8" textLength="146.4" clip-path="url(#breeze-k8s-run-complete-tests-line-32)">-parallelism</text><text class="breeze-k8s-run-comp [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-33)">│</text><text class="breeze-k8s-run-complete-tests-r1" x="378.2" y="825.2" textLength="1061.4" clip-path="url(#breeze-k8s-run-complete-tests-line-33)">operations.                                [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-34)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="378.2" y="849.6" textLength="1061.4" clip-path="url(#breeze-k8s-run-complete-tests-line-34)">(INTEGER RANGE)                              [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-35)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="874" textLength="1061.4" clip-path="url(#breeze-k8s-run-complete-tests-line-35)">[default: 2; 1<=x<=4]                           &# [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-36)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-36)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="898.4" textLength="85.4" clip-path="url(#breeze-k8s-run-complete-tests-line-36)">-python</text><text class="breeze-k8s-run-complete-t [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="922.8" textLength="951.6" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">[default: 3.8 3.9 3.10 3.11]                          [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="947.2" textLength="134.2" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">-kubernetes</text><text class="breeze-k8s-run-compl [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="971.6" textLength="756.4" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-run-complete-tests-r5" x= [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="996" textLength="61" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-skip</text><text class="breeze-k8s-run-complete-tests-r4" x [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1020.4" textLength="73.2" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-debug</text><text class="breeze-k8s-run-complete [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-42)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-42)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1044.8" textLength="97.6" clip-path="url(#breeze-k8s-run-complete-tests-line-42)">-include</text><text class="breeze-k8s-run-comple [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1069.2" textLength="1464" clip-path="url(#breeze-k8s-run-complete-tests-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-run-complete-tests-r1" x="1464" y="1069.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-43)">
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1093.6" textLength="24.4" clip-path="url(#breeze-k8s-run-complete-tests-line-44)">╭─</text><text class="breeze-k8s-run-complete-tests-r5" x="24.4" y="1093.6" textLength="195.2" clip-path="url(#breeze-k8s-run-complete-tests-line-44)"> Common options </text><text class="breeze-k8s-run-complete-tests-r5" x="219.6" y="1093.6" textLength="1220" clip-path="url(#breeze-k8s-run-complete-tests-line-44)">──────────────── [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-45)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-45)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1118" textLength="97.6" clip-path="url(#breeze-k8s-run-complete-tests-line-45)">-verbose</text><text class="breeze-k8s-run-complete-tes [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-46)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-46)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#breeze-k8s-run-complete-tests-line-46)">-dry</text><text class="breeze-k8s-run-complete-t [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-47)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-47)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1166.8" textLength="61" clip-path="url(#breeze-k8s-run-complete-tests-line-47)">-help</text><text class="breeze-k8s-run-complete-te [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1191.2" textLength="1464" clip-path="url(#breeze-k8s-run-complete-tests-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-run-complete-tests-r1" x="1464" y="1191.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-48)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="483.6" textLength="85.4" clip-path="url(#breeze-k8s-run-complete-tests-line-19)">-python</text><text class="breeze-k8s-run-complete-t [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-20)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="508" textLength="732" clip-path="url(#breeze-k8s-run-complete-tests-line-20)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                     [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="532.4" textLength="732" clip-path="url(#breeze-k8s-run-complete-tests-line-21)">[default: 3.8]                              & [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="556.8" textLength="134.2" clip-path="url(#breeze-k8s-run-complete-tests-line-22)">-kubernetes</text><text class="breeze-k8s-run-compl [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="581.2" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-23)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-run-complete-tests-r5" x="1451.8" y="581.2" textLength="1 [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="605.6" textLength="658.8" clip-path="url(#breeze-k8s-run-complete-tests-line-24)">[default: v1.25.11]                              [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-25)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-25)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="630" textLength="109.8" clip-path="url(#breeze-k8s-run-complete-tests-line-25)">-executor</text><text class="breeze-k8s-run-complete-test [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-26)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="654.4" textLength="1098" clip-path="url(#breeze-k8s-run-complete-tests-line-26)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |       </text><text class="breeze-k8s-ru [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-27)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="341.6" y="678.8" textLength="1098" clip-path="url(#breeze-k8s-run-complete-tests-line-27)">SequentialExecutor)                               [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-28)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="341.6" y="703.2" textLength="1098" clip-path="url(#breeze-k8s-run-complete-tests-line-28)">[default: LocalExecutor]                            &# [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-29)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-29)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="727.6" textLength="73.2" clip-path="url(#breeze-k8s-run-complete-tests-line-29)">-force</text><text class="breeze-k8s-run-complete-te [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="752" textLength="1464" clip-path="url(#breeze-k8s-run-complete-tests-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-run-complete-tests-r1" x="1464" y="752" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-30)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="776.4" textLength="24.4" clip-path="url(#breeze-k8s-run-complete-tests-line-31)">╭─</text><text class="breeze-k8s-run-complete-tests-r5" x="24.4" y="776.4" textLength="219.6" clip-path="url(#breeze-k8s-run-complete-tests-line-31)"> Parallel options </text><text class="breeze-k8s-run-complete-tests-r5" x="244" y="776.4" textLength="1195.6" clip-path="url(#breeze-k8s-run-complete-tests-line-31)">───────────────── [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-32)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-32)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="800.8" textLength="48.8" clip-path="url(#breeze-k8s-run-complete-tests-line-32)">-run</text><text class="breeze-k8s-run-complete-test [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-33)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-33)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="825.2" textLength="146.4" clip-path="url(#breeze-k8s-run-complete-tests-line-33)">-parallelism</text><text class="breeze-k8s-run-comp [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-34)">│</text><text class="breeze-k8s-run-complete-tests-r1" x="378.2" y="849.6" textLength="1061.4" clip-path="url(#breeze-k8s-run-complete-tests-line-34)">operations.                                [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-35)">│</text><text class="breeze-k8s-run-complete-tests-r6" x="378.2" y="874" textLength="1061.4" clip-path="url(#breeze-k8s-run-complete-tests-line-35)">(INTEGER RANGE)                              & [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-36)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="898.4" textLength="1061.4" clip-path="url(#breeze-k8s-run-complete-tests-line-36)">[default: 2; 1<=x<=4]                           [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="922.8" textLength="85.4" clip-path="url(#breeze-k8s-run-complete-tests-line-37)">-python</text><text class="breeze-k8s-run-complete-t [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="947.2" textLength="951.6" clip-path="url(#breeze-k8s-run-complete-tests-line-38)">[default: 3.8 3.9 3.10 3.11 3.12]                       &# [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="971.6" textLength="134.2" clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-kubernetes</text><text class="breeze-k8s-run-compl [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">│</text><text class="breeze-k8s-run-complete-tests-r5" x="378.2" y="996" textLength="756.4" clip-path="url(#breeze-k8s-run-complete-tests-line-40)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-run-complete-tests-r5" x="145 [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1020.4" textLength="61" clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-skip</text><text class="breeze-k8s-run-complete-te [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-42)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-42)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1044.8" textLength="73.2" clip-path="url(#breeze-k8s-run-complete-tests-line-42)">-debug</text><text class="breeze-k8s-run-complete [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-43)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-43)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1069.2" textLength="97.6" clip-path="url(#breeze-k8s-run-complete-tests-line-43)">-include</text><text class="breeze-k8s-run-comple [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1093.6" textLength="1464" clip-path="url(#breeze-k8s-run-complete-tests-line-44)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-run-complete-tests-r1" x="1464" y="1093.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-44)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1118" textLength="24.4" clip-path="url(#breeze-k8s-run-complete-tests-line-45)">╭─</text><text class="breeze-k8s-run-complete-tests-r5" x="24.4" y="1118" textLength="195.2" clip-path="url(#breeze-k8s-run-complete-tests-line-45)"> Common options </text><text class="breeze-k8s-run-complete-tests-r5" x="219.6" y="1118" textLength="1220" clip-path="url(#breeze-k8s-run-complete-tests-line-45)">────────────────────── [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-46)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-46)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#breeze-k8s-run-complete-tests-line-46)">-verbose</text><text class="breeze-k8s-run-comple [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-47)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-47)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1166.8" textLength="48.8" clip-path="url(#breeze-k8s-run-complete-tests-line-47)">-dry</text><text class="breeze-k8s-run-complete-t [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-48)">│</text><text class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-48)">-</text><text class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1191.2" textLength="61" clip-path="url(#breeze-k8s-run-complete-tests-line-48)">-help</text><text class="breeze-k8s-run-complete-te [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1215.6" textLength="1464" clip-path="url(#breeze-k8s-run-complete-tests-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-run-complete-tests-r1" x="1464" y="1215.6" textLength="12.2" clip-path="url(#breeze-k8s-run-complete-tests-line-49)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_run-complete-tests.txt b/dev/breeze/doc/images/output_k8s_run-complete-tests.txt
index cc4cbbb3c8..79d99baeef 100644
--- a/dev/breeze/doc/images/output_k8s_run-complete-tests.txt
+++ b/dev/breeze/doc/images/output_k8s_run-complete-tests.txt
@@ -1 +1 @@
-e640588f01da65c034d61eed01d638a1
+e610f1373eebedaf7686eef20292767e
diff --git a/dev/breeze/doc/images/output_k8s_shell.svg b/dev/breeze/doc/images/output_k8s_shell.svg
index 5b438be18f..7589918e60 100644
--- a/dev/breeze/doc/images/output_k8s_shell.svg
+++ b/dev/breeze/doc/images/output_k8s_shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 586.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 611.1999999999999" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-shell-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="535.8" />
+ <rect x="0" y="0" width="1463.0" height="560.1999999999999" />
</clipPath>
<clipPath id="breeze-k8s-shell-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -108,9 +108,12 @@
<clipPath id="breeze-k8s-shell-line-20">
<rect x="0" y="489.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-shell-line-21">
+ <rect x="0" y="513.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="584.8" rx="8"/><text class="breeze-k8s-shell-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s shell</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="609.2" rx="8"/><text class="breeze-k8s-shell-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s 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"/>
@@ -126,22 +129,23 @@
</text><text class="breeze-k8s-shell-r1" x="12.2" y="93.2" textLength="622.2" clip-path="url(#breeze-k8s-shell-line-3)">Run shell environment for the current KinD cluster.</text><text class="breeze-k8s-shell-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-3)">
</text><text class="breeze-k8s-shell-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-4)">
</text><text class="breeze-k8s-shell-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-5)">╭─</text><text class="breeze-k8s-shell-r5" x="24.4" y="142" textLength="207.4" clip-path="url(#breeze-k8s-shell-line-5)"> K8S shell flags </text><text class="breeze-k8s-shell-r5" x="231.8" y="142" textLength="1207.8" clip-path="url(#breeze-k8s-shell-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-6)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-6)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-shell-line-6)">-python</text><text class="breeze-k8s-shell-r6" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-6)">-p</t [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-7)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-shell-line-7)">[default: 3.8]                                       & [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-8)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-8)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-shell-line-8)">-kubernetes</text><text class="breeze-k8s-shell-r4" x="170.8" y="215.2" textLength="97.6" clip-path="url(#breeze-k8s-shell-line-8)"> [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-9)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-shell-r5" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-9)">│</text><text class= [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-10)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-10)">[default: v1.25.11]                                   </text><text class=" [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-11)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-11)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="288.4" textLength="109.8" clip-path="url(#breeze-k8s-shell-line-11)">-executor</text><text class="breeze-k8s-shell-r1" x="341.6" y="288.4" textLength="1098" clip-path="url(#breeze-k8s-shell-line-11) [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-12)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="312.8" textLength="1098" clip-path="url(#breeze-k8s-shell-line-12)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |       </text><text class="breeze-k8s-shell-r5" x="1451.8" y="312.8" textLength="12.2" clip- [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-13)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="337.2" textLength="1098" clip-path="url(#breeze-k8s-shell-line-13)">SequentialExecutor)                                       [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-14)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="361.6" textLength="1098" clip-path="url(#breeze-k8s-shell-line-14)">[default: LocalExecutor]                                      [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-15)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-15)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="386" textLength="73.2" clip-path="url(#breeze-k8s-shell-line-15)">-force</text><text class="breeze-k8s-shell-r4" x="109.8" y="386" textLength="134.2" clip-path="url(#breeze-k8s-shell-line-15)">-venv-set [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="410.4" textLength="1464" clip-path="url(#breeze-k8s-shell-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-shell-r1" x="1464" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-16)">
-</text><text class="breeze-k8s-shell-r5" x="0" y="434.8" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-17)">╭─</text><text class="breeze-k8s-shell-r5" x="24.4" y="434.8" textLength="195.2" clip-path="url(#breeze-k8s-shell-line-17)"> Common options </text><text class="breeze-k8s-shell-r5" x="219.6" y="434.8" textLength="1220" clip-path="url(#breeze-k8s-shell-line-17)">───────────────────────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-18)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-18)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="459.2" textLength="97.6" clip-path="url(#breeze-k8s-shell-line-18)">-verbose</text><text class="breeze-k8s-shell-r6" x="158.6" y="459.2" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-18)"> [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-19)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-19)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="483.6" textLength="48.8" clip-path="url(#breeze-k8s-shell-line-19)">-dry</text><text class="breeze-k8s-shell-r4" x="85.4" y="483.6" textLength="48.8" clip-path="url(#breeze-k8s-shell-line-19)">-run< [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-20)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-20)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="508" textLength="61" clip-path="url(#breeze-k8s-shell-line-20)">-help</text><text class="breeze-k8s-shell-r6" x="158.6" y="508" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-20)">-h</text><tex [...]
-</text><text class="breeze-k8s-shell-r5" x="0" y="532.4" textLength="1464" clip-path="url(#breeze-k8s-shell-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-shell-r1" x="1464" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-21)">
+</text><text class="breeze-k8s-shell-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-6)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-6)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-shell-line-6)">-python</text><text class="breeze-k8s-shell-r6" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-6)">-p</t [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-7)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-shell-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text class [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-8)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-shell-line-8)">[default: 3.8]                                       & [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-9)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-9)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-shell-line-9)">-kubernetes</text><text class="breeze-k8s-shell-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-shell-line-9)"> [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-10)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-shell-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-10)">│</text><text class="br [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-11)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-shell-line-11)">[default: v1.25.11]                                   </text><text cla [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-12)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-12)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="312.8" textLength="109.8" clip-path="url(#breeze-k8s-shell-line-12)">-executor</text><text class="breeze-k8s-shell-r1" x="341.6" y="312.8" textLength="1098" clip-path="url(#breeze-k8s-shell-line-12) [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-13)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="337.2" textLength="1098" clip-path="url(#breeze-k8s-shell-line-13)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |       </text><text class="breeze-k8s-shell-r5" x="1451.8" y="337.2" textLength="12.2" clip- [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-14)">│</text><text class="breeze-k8s-shell-r7" x="341.6" y="361.6" textLength="1098" clip-path="url(#breeze-k8s-shell-line-14)">SequentialExecutor)                                       [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-15)">│</text><text class="breeze-k8s-shell-r5" x="341.6" y="386" textLength="1098" clip-path="url(#breeze-k8s-shell-line-15)">[default: LocalExecutor]                                      [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-16)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-16)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="410.4" textLength="73.2" clip-path="url(#breeze-k8s-shell-line-16)">-force</text><text class="breeze-k8s-shell-r4" x="109.8" y="410.4" textLength="134.2" clip-path="url(#breeze-k8s-shell-line-16)">- [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="434.8" textLength="1464" clip-path="url(#breeze-k8s-shell-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-shell-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-17)">
+</text><text class="breeze-k8s-shell-r5" x="0" y="459.2" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-18)">╭─</text><text class="breeze-k8s-shell-r5" x="24.4" y="459.2" textLength="195.2" clip-path="url(#breeze-k8s-shell-line-18)"> Common options </text><text class="breeze-k8s-shell-r5" x="219.6" y="459.2" textLength="1220" clip-path="url(#breeze-k8s-shell-line-18)">───────────────────────────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-19)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-19)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="483.6" textLength="97.6" clip-path="url(#breeze-k8s-shell-line-19)">-verbose</text><text class="breeze-k8s-shell-r6" x="158.6" y="483.6" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-19)"> [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-20)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-20)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="508" textLength="48.8" clip-path="url(#breeze-k8s-shell-line-20)">-dry</text><text class="breeze-k8s-shell-r4" x="85.4" y="508" textLength="48.8" clip-path="url(#breeze-k8s-shell-line-20)">-run</text><t [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-21)">│</text><text class="breeze-k8s-shell-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-21)">-</text><text class="breeze-k8s-shell-r4" x="36.6" y="532.4" textLength="61" clip-path="url(#breeze-k8s-shell-line-21)">-help</text><text class="breeze-k8s-shell-r6" x="158.6" y="532.4" textLength="24.4" clip-path="url(#breeze-k8s-shell-line-21)">-h</t [...]
+</text><text class="breeze-k8s-shell-r5" x="0" y="556.8" textLength="1464" clip-path="url(#breeze-k8s-shell-line-22)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-shell-r1" x="1464" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-shell-line-22)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_shell.txt b/dev/breeze/doc/images/output_k8s_shell.txt
index 9bd2f7083f..0a7c307332 100644
--- a/dev/breeze/doc/images/output_k8s_shell.txt
+++ b/dev/breeze/doc/images/output_k8s_shell.txt
@@ -1 +1 @@
-b7cbc89a19e20a1811e1d15c21ddc38d
+d6ad2ea7a4f0b0c840ba664fb0adcd66
diff --git a/dev/breeze/doc/images/output_k8s_status.svg b/dev/breeze/doc/images/output_k8s_status.svg
index 79cf53dd56..1f47cb9d51 100644
--- a/dev/breeze/doc/images/output_k8s_status.svg
+++ b/dev/breeze/doc/images/output_k8s_status.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>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-status-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
+ <rect x="0" y="0" width="1463.0" height="487.0" />
</clipPath>
<clipPath id="breeze-k8s-status-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -99,9 +99,12 @@
<clipPath id="breeze-k8s-status-line-17">
<rect x="0" y="416.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-status-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="breeze-k8s-status-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s status</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="breeze-k8s-status-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s status</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -117,19 +120,20 @@
</text><text class="breeze-k8s-status-r1" x="12.2" y="93.2" textLength="1085.8" clip-path="url(#breeze-k8s-status-line-3)">Check status of the current cluster and airflow deployed to it (optionally all clusters).</text><text class="breeze-k8s-status-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-3)">
</text><text class="breeze-k8s-status-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-4)">
</text><text class="breeze-k8s-status-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-status-line-5)">╭─</text><text class="breeze-k8s-status-r5" x="24.4" y="142" textLength="317.2" clip-path="url(#breeze-k8s-status-line-5)"> K8S cluster status flags </text><text class="breeze-k8s-status-r5" x="341.6" y="142" textLength="1098" clip-path="url(#breeze-k8s-status-line-5)">──────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-6)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-6)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-status-line-6)">-python</text><text class="breeze-k8s-status-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-status-line-6 [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-7)">│</text><text class="breeze-k8s-status-r5" x="366" y="190.8" textLength="732" clip-path="url(#breeze-k8s-status-line-7)">[default: 3.8]                                        [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-8)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-8)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-status-line-8)">-kubernetes</text><text class="breeze-k8s-status-r4" x="170.8" y="215.2" textLength="97.6" clip-path="url(#breeze-k8s-status-l [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-9)">│</text><text class="breeze-k8s-status-r7" x="366" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-status-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-status-r5" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-9)">│</text><text cl [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-status-line-10)">│</text><text class="breeze-k8s-status-r5" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-status-line-10)">[default: v1.25.11]                                   </text><text class [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-11)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-11)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="288.4" textLength="61" clip-path="url(#breeze-k8s-status-line-11)">-wait</text><text class="breeze-k8s-status-r4" x="97.6" y="288.4" textLength="195.2" clip-path="url(#breeze-k8s-status-line-11 [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-12)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-12)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-k8s-status-line-12)">-all</text><text class="breeze-k8s-status-r1" x="366" y="312.8" textLength="390.4" clip-path="url(#breeze-k8s-status-line-12 [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-k8s-status-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-status-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-13)">
-</text><text class="breeze-k8s-status-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-k8s-status-line-14)">╭─</text><text class="breeze-k8s-status-r5" x="24.4" y="361.6" textLength="195.2" clip-path="url(#breeze-k8s-status-line-14)"> Common options </text><text class="breeze-k8s-status-r5" x="219.6" y="361.6" textLength="1220" clip-path="url(#breeze-k8s-status-line-14)">─────────────────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-status-line-15)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-status-line-15)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="386" textLength="97.6" clip-path="url(#breeze-k8s-status-line-15)">-verbose</text><text class="breeze-k8s-status-r6" x="158.6" y="386" textLength="24.4" clip-path="url(#breeze-k8s-status-line-15)"> [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-16)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-16)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-k8s-status-line-16)">-dry</text><text class="breeze-k8s-status-r4" x="85.4" y="410.4" textLength="48.8" clip-path="url(#breeze-k8s-status-line-16 [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-17)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-17)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="434.8" textLength="61" clip-path="url(#breeze-k8s-status-line-17)">-help</text><text class="breeze-k8s-status-r6" x="158.6" y="434.8" textLength="24.4" clip-path="url(#breeze-k8s-status-line-17 [...]
-</text><text class="breeze-k8s-status-r5" x="0" y="459.2" textLength="1464" clip-path="url(#breeze-k8s-status-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-status-r1" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-18)">
+</text><text class="breeze-k8s-status-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-6)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-6)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-status-line-6)">-python</text><text class="breeze-k8s-status-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-status-line-6 [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-7)">│</text><text class="breeze-k8s-status-r7" x="366" y="190.8" textLength="732" clip-path="url(#breeze-k8s-status-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text cla [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-8)">│</text><text class="breeze-k8s-status-r5" x="366" y="215.2" textLength="732" clip-path="url(#breeze-k8s-status-line-8)">[default: 3.8]                                        [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-9)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-9)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-status-line-9)">-kubernetes</text><text class="breeze-k8s-status-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-status-l [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-status-line-10)">│</text><text class="breeze-k8s-status-r7" x="366" y="264" textLength="658.8" clip-path="url(#breeze-k8s-status-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-status-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-status-line-10)">│</text><text class [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-11)">│</text><text class="breeze-k8s-status-r5" x="366" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-status-line-11)">[default: v1.25.11]                                   </text><text c [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-12)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-12)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="312.8" textLength="61" clip-path="url(#breeze-k8s-status-line-12)">-wait</text><text class="breeze-k8s-status-r4" x="97.6" y="312.8" textLength="195.2" clip-path="url(#breeze-k8s-status-line-12 [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-13)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-13)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="337.2" textLength="48.8" clip-path="url(#breeze-k8s-status-line-13)">-all</text><text class="breeze-k8s-status-r1" x="366" y="337.2" textLength="390.4" clip-path="url(#breeze-k8s-status-line-13 [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-k8s-status-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-status-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-14)">
+</text><text class="breeze-k8s-status-r5" x="0" y="386" textLength="24.4" clip-path="url(#breeze-k8s-status-line-15)">╭─</text><text class="breeze-k8s-status-r5" x="24.4" y="386" textLength="195.2" clip-path="url(#breeze-k8s-status-line-15)"> Common options </text><text class="breeze-k8s-status-r5" x="219.6" y="386" textLength="1220" clip-path="url(#breeze-k8s-status-line-15)">───────────────────────────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-16)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-status-line-16)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="410.4" textLength="97.6" clip-path="url(#breeze-k8s-status-line-16)">-verbose</text><text class="breeze-k8s-status-r6" x="158.6" y="410.4" textLength="24.4" clip-path="url(#breeze-k8s-status-li [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-17)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-status-line-17)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="434.8" textLength="48.8" clip-path="url(#breeze-k8s-status-line-17)">-dry</text><text class="breeze-k8s-status-r4" x="85.4" y="434.8" textLength="48.8" clip-path="url(#breeze-k8s-status-line-17 [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-18)">│</text><text class="breeze-k8s-status-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-status-line-18)">-</text><text class="breeze-k8s-status-r4" x="36.6" y="459.2" textLength="61" clip-path="url(#breeze-k8s-status-line-18)">-help</text><text class="breeze-k8s-status-r6" x="158.6" y="459.2" textLength="24.4" clip-path="url(#breeze-k8s-status-line-18 [...]
+</text><text class="breeze-k8s-status-r5" x="0" y="483.6" textLength="1464" clip-path="url(#breeze-k8s-status-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-status-r1" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-status-line-19)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_status.txt b/dev/breeze/doc/images/output_k8s_status.txt
index 40fc153ffa..dbf4e5596a 100644
--- a/dev/breeze/doc/images/output_k8s_status.txt
+++ b/dev/breeze/doc/images/output_k8s_status.txt
@@ -1 +1 @@
-8514432ea1774557c1bda26b52f91aec
+4ab3b70f38fe2cf889a93bbd34351b02
diff --git a/dev/breeze/doc/images/output_k8s_tests.svg b/dev/breeze/doc/images/output_k8s_tests.svg
index 3ca68703c6..6c201753d7 100644
--- a/dev/breeze/doc/images/output_k8s_tests.svg
+++ b/dev/breeze/doc/images/output_k8s_tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 928.4" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 952.8" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="877.4" />
+ <rect x="0" y="0" width="1463.0" height="901.8" />
</clipPath>
<clipPath id="breeze-k8s-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -150,9 +150,12 @@
<clipPath id="breeze-k8s-tests-line-34">
<rect x="0" y="831.1" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-tests-line-35">
+ <rect x="0" y="855.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="926.4" rx="8"/><text class="breeze-k8s-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="950.8" rx="8"/><text class="breeze-k8s-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s 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"/>
@@ -168,36 +171,37 @@
</text><text class="breeze-k8s-tests-r1" x="12.2" y="93.2" textLength="1037" clip-path="url(#breeze-k8s-tests-line-3)">Run tests against the current KinD cluster (optionally for all clusters in parallel).</text><text class="breeze-k8s-tests-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-3)">
</text><text class="breeze-k8s-tests-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-4)">
</text><text class="breeze-k8s-tests-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-5)">╭─</text><text class="breeze-k8s-tests-r5" x="24.4" y="142" textLength="207.4" clip-path="url(#breeze-k8s-tests-line-5)"> K8S tests flags </text><text class="breeze-k8s-tests-r5" x="231.8" y="142" textLength="1207.8" clip-path="url(#breeze-k8s-tests-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-6)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-6)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-tests-line-6)">-python</text><text class="breeze-k8s-tests-r6" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-6)">-p</t [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-7)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-tests-line-7)">[default: 3.8]                                       & [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-8)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-8)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-8)">-kubernetes</text><text class="breeze-k8s-tests-r4" x="170.8" y="215.2" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-8)"> [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-9)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-tests-r5" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-9)">│</text><text class= [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-10)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-10)">[default: v1.25.11]                                   </text><text class=" [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-11)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-11)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="288.4" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-11)">-executor</text><text class="breeze-k8s-tests-r1" x="341.6" y="288.4" textLength="1098" clip-path="url(#breeze-k8s-tests-line-11) [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-12)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="312.8" textLength="1098" clip-path="url(#breeze-k8s-tests-line-12)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |       </text><text class="breeze-k8s-tests-r5" x="1451.8" y="312.8" textLength="12.2" clip- [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-13)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="337.2" textLength="1098" clip-path="url(#breeze-k8s-tests-line-13)">SequentialExecutor)                                       [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-14)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="361.6" textLength="1098" clip-path="url(#breeze-k8s-tests-line-14)">[default: LocalExecutor]                                      [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-15)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-15)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="386" textLength="73.2" clip-path="url(#breeze-k8s-tests-line-15)">-force</text><text class="breeze-k8s-tests-r4" x="109.8" y="386" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-15)">-venv-set [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="410.4" textLength="1464" clip-path="url(#breeze-k8s-tests-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-tests-r1" x="1464" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-16)">
-</text><text class="breeze-k8s-tests-r5" x="0" y="434.8" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-17)">╭─</text><text class="breeze-k8s-tests-r5" x="24.4" y="434.8" textLength="219.6" clip-path="url(#breeze-k8s-tests-line-17)"> Parallel options </text><text class="breeze-k8s-tests-r5" x="244" y="434.8" textLength="1195.6" clip-path="url(#breeze-k8s-tests-line-17)">─────────────────────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-18)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-18)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="459.2" textLength="48.8" clip-path="url(#breeze-k8s-tests-line-18)">-run</text><text class="breeze-k8s-tests-r4" x="85.4" y="459.2" textLength="146.4" clip-path="url(#breeze-k8s-tests-line-18)">-in- [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-19)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-19)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="483.6" textLength="146.4" clip-path="url(#breeze-k8s-tests-line-19)">-parallelism</text><text class="breeze-k8s-tests-r1" x="378.2" y="483.6" textLength="1061.4" clip-path="url(#breeze-k8s-tests-lin [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-20)">│</text><text class="breeze-k8s-tests-r1" x="378.2" y="508" textLength="1061.4" clip-path="url(#breeze-k8s-tests-line-20)">operations.                                        &# [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-21)">│</text><text class="breeze-k8s-tests-r7" x="378.2" y="532.4" textLength="1061.4" clip-path="url(#breeze-k8s-tests-line-21)">(INTEGER RANGE)                                      & [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-22)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="556.8" textLength="1061.4" clip-path="url(#breeze-k8s-tests-line-22)">[default: 2; 1<=x<=4]                                   &# [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-23)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-23)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="581.2" textLength="85.4" clip-path="url(#breeze-k8s-tests-line-23)">-python</text><text class="breeze-k8s-tests-r4" x="122" y="581.2" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-23)">-v [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-24)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="605.6" textLength="951.6" clip-path="url(#breeze-k8s-tests-line-24)">[default: 3.8 3.9 3.10 3.11]                                  [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-25)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-25)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="630" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-25)">-kubernetes</text><text class="breeze-k8s-tests-r4" x="170.8" y="630" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-25)">-ve [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-26)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="654.4" textLength="756.4" clip-path="url(#breeze-k8s-tests-line-26)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-tests-r5" x="1451.8" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-t [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-27)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-27)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="678.8" textLength="61" clip-path="url(#breeze-k8s-tests-line-27)">-skip</text><text class="breeze-k8s-tests-r4" x="97.6" y="678.8" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-27)">-clean [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-28)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-28)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="703.2" textLength="73.2" clip-path="url(#breeze-k8s-tests-line-28)">-debug</text><text class="breeze-k8s-tests-r4" x="109.8" y="703.2" textLength="122" clip-path="url(#breeze-k8s-tests-line-28)">-re [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-29)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-29)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="727.6" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-29)">-include</text><text class="breeze-k8s-tests-r4" x="134.2" y="727.6" textLength="195.2" clip-path="url(#breeze-k8s-tests-line-29)" [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="752" textLength="1464" clip-path="url(#breeze-k8s-tests-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-tests-r1" x="1464" y="752" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-30)">
-</text><text class="breeze-k8s-tests-r5" x="0" y="776.4" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-31)">╭─</text><text class="breeze-k8s-tests-r5" x="24.4" y="776.4" textLength="195.2" clip-path="url(#breeze-k8s-tests-line-31)"> Common options </text><text class="breeze-k8s-tests-r5" x="219.6" y="776.4" textLength="1220" clip-path="url(#breeze-k8s-tests-line-31)">───────────────────────────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-32)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-32)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-32)">-verbose</text><text class="breeze-k8s-tests-r6" x="158.6" y="800.8" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-32)"> [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-33)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-33)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="825.2" textLength="48.8" clip-path="url(#breeze-k8s-tests-line-33)">-dry</text><text class="breeze-k8s-tests-r4" x="85.4" y="825.2" textLength="48.8" clip-path="url(#breeze-k8s-tests-line-33)">-run< [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-34)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-34)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="849.6" textLength="61" clip-path="url(#breeze-k8s-tests-line-34)">-help</text><text class="breeze-k8s-tests-r6" x="158.6" y="849.6" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-34)">-h</t [...]
-</text><text class="breeze-k8s-tests-r5" x="0" y="874" textLength="1464" clip-path="url(#breeze-k8s-tests-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-tests-r1" x="1464" y="874" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-35)">
+</text><text class="breeze-k8s-tests-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-6)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-6)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-tests-line-6)">-python</text><text class="breeze-k8s-tests-r6" x="292.8" y="166.4" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-6)">-p</t [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-7)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-tests-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text class [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-8)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-tests-line-8)">[default: 3.8]                                       & [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-9)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-9)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-9)">-kubernetes</text><text class="breeze-k8s-tests-r4" x="170.8" y="239.6" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-9)"> [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-10)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-tests-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-10)">│</text><text class="br [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-11)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-tests-line-11)">[default: v1.25.11]                                   </text><text cla [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-12)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-12)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="312.8" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-12)">-executor</text><text class="breeze-k8s-tests-r1" x="341.6" y="312.8" textLength="1098" clip-path="url(#breeze-k8s-tests-line-12) [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-13)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="337.2" textLength="1098" clip-path="url(#breeze-k8s-tests-line-13)">(>LocalExecutor< | KubernetesExecutor | CeleryExecutor | CeleryKubernetesExecutor |       </text><text class="breeze-k8s-tests-r5" x="1451.8" y="337.2" textLength="12.2" clip- [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-14)">│</text><text class="breeze-k8s-tests-r7" x="341.6" y="361.6" textLength="1098" clip-path="url(#breeze-k8s-tests-line-14)">SequentialExecutor)                                       [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-15)">│</text><text class="breeze-k8s-tests-r5" x="341.6" y="386" textLength="1098" clip-path="url(#breeze-k8s-tests-line-15)">[default: LocalExecutor]                                      [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-16)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-16)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="410.4" textLength="73.2" clip-path="url(#breeze-k8s-tests-line-16)">-force</text><text class="breeze-k8s-tests-r4" x="109.8" y="410.4" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-16)">- [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="434.8" textLength="1464" clip-path="url(#breeze-k8s-tests-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-tests-r1" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-17)">
+</text><text class="breeze-k8s-tests-r5" x="0" y="459.2" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-18)">╭─</text><text class="breeze-k8s-tests-r5" x="24.4" y="459.2" textLength="219.6" clip-path="url(#breeze-k8s-tests-line-18)"> Parallel options </text><text class="breeze-k8s-tests-r5" x="244" y="459.2" textLength="1195.6" clip-path="url(#breeze-k8s-tests-line-18)">─────────────────────────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-19)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-19)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="483.6" textLength="48.8" clip-path="url(#breeze-k8s-tests-line-19)">-run</text><text class="breeze-k8s-tests-r4" x="85.4" y="483.6" textLength="146.4" clip-path="url(#breeze-k8s-tests-line-19)">-in- [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-20)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-20)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="508" textLength="146.4" clip-path="url(#breeze-k8s-tests-line-20)">-parallelism</text><text class="breeze-k8s-tests-r1" x="378.2" y="508" textLength="1061.4" clip-path="url(#breeze-k8s-tests-line-20)">M [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-21)">│</text><text class="breeze-k8s-tests-r1" x="378.2" y="532.4" textLength="1061.4" clip-path="url(#breeze-k8s-tests-line-21)">operations.                                        [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-22)">│</text><text class="breeze-k8s-tests-r7" x="378.2" y="556.8" textLength="1061.4" clip-path="url(#breeze-k8s-tests-line-22)">(INTEGER RANGE)                                      & [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-23)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="581.2" textLength="1061.4" clip-path="url(#breeze-k8s-tests-line-23)">[default: 2; 1<=x<=4]                                   &# [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-24)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-24)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="605.6" textLength="85.4" clip-path="url(#breeze-k8s-tests-line-24)">-python</text><text class="breeze-k8s-tests-r4" x="122" y="605.6" textLength="109.8" clip-path="url(#breeze-k8s-tests-line-24)">-v [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-25)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="630" textLength="951.6" clip-path="url(#breeze-k8s-tests-line-25)">[default: 3.8 3.9 3.10 3.11 3.12]                                 [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-26)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-26)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="654.4" textLength="134.2" clip-path="url(#breeze-k8s-tests-line-26)">-kubernetes</text><text class="breeze-k8s-tests-r4" x="170.8" y="654.4" textLength="109.8" clip-path="url(#breeze-k8s-tests-line- [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-27)">│</text><text class="breeze-k8s-tests-r5" x="378.2" y="678.8" textLength="756.4" clip-path="url(#breeze-k8s-tests-line-27)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-tests-r5" x="1451.8" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-t [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-28)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-28)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="703.2" textLength="61" clip-path="url(#breeze-k8s-tests-line-28)">-skip</text><text class="breeze-k8s-tests-r4" x="97.6" y="703.2" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-28)">-clean [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-29)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-29)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="727.6" textLength="73.2" clip-path="url(#breeze-k8s-tests-line-29)">-debug</text><text class="breeze-k8s-tests-r4" x="109.8" y="727.6" textLength="122" clip-path="url(#breeze-k8s-tests-line-29)">-re [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-30)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-30)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-30)">-include</text><text class="breeze-k8s-tests-r4" x="134.2" y="752" textLength="195.2" clip-path="url(#breeze-k8s-tests-line-30)">-succes [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="776.4" textLength="1464" clip-path="url(#breeze-k8s-tests-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-tests-r1" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-31)">
+</text><text class="breeze-k8s-tests-r5" x="0" y="800.8" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-32)">╭─</text><text class="breeze-k8s-tests-r5" x="24.4" y="800.8" textLength="195.2" clip-path="url(#breeze-k8s-tests-line-32)"> Common options </text><text class="breeze-k8s-tests-r5" x="219.6" y="800.8" textLength="1220" clip-path="url(#breeze-k8s-tests-line-32)">───────────────────────────────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-33)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-33)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="825.2" textLength="97.6" clip-path="url(#breeze-k8s-tests-line-33)">-verbose</text><text class="breeze-k8s-tests-r6" x="158.6" y="825.2" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-33)"> [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-34)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-34)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="849.6" textLength="48.8" clip-path="url(#breeze-k8s-tests-line-34)">-dry</text><text class="breeze-k8s-tests-r4" x="85.4" y="849.6" textLength="48.8" clip-path="url(#breeze-k8s-tests-line-34)">-run< [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-35)">│</text><text class="breeze-k8s-tests-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-35)">-</text><text class="breeze-k8s-tests-r4" x="36.6" y="874" textLength="61" clip-path="url(#breeze-k8s-tests-line-35)">-help</text><text class="breeze-k8s-tests-r6" x="158.6" y="874" textLength="24.4" clip-path="url(#breeze-k8s-tests-line-35)">-h</text><tex [...]
+</text><text class="breeze-k8s-tests-r5" x="0" y="898.4" textLength="1464" clip-path="url(#breeze-k8s-tests-line-36)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-tests-r1" x="1464" y="898.4" textLength="12.2" clip-path="url(#breeze-k8s-tests-line-36)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_tests.txt b/dev/breeze/doc/images/output_k8s_tests.txt
index 008faa01dc..dbc23a6da4 100644
--- a/dev/breeze/doc/images/output_k8s_tests.txt
+++ b/dev/breeze/doc/images/output_k8s_tests.txt
@@ -1 +1 @@
-57e528bac1be683b2202d3d633a51ebd
+df8f1bd28a2b7e51def21c969727d845
diff --git a/dev/breeze/doc/images/output_k8s_upload-k8s-image.svg b/dev/breeze/doc/images/output_k8s_upload-k8s-image.svg
index 30794915b9..eba32c1bb0 100644
--- a/dev/breeze/doc/images/output_k8s_upload-k8s-image.svg
+++ b/dev/breeze/doc/images/output_k8s_upload-k8s-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 806.4" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-upload-k8s-image-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="731.0" />
+ <rect x="0" y="0" width="1463.0" height="755.4" />
</clipPath>
<clipPath id="breeze-k8s-upload-k8s-image-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -132,9 +132,12 @@
<clipPath id="breeze-k8s-upload-k8s-image-line-28">
<rect x="0" y="684.7" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-upload-k8s-image-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="780" rx="8"/><text class="breeze-k8s-upload-k8s-image-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s upload-k8s-image</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="breeze-k8s-upload-k8s-image-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: k8s upload-k8s-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"/>
@@ -150,30 +153,31 @@
</text><text class="breeze-k8s-upload-k8s-image-r1" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-3)">Upload k8s-ready airflow image to the KinD cluster (optionally to all clusters in parallel)</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-3)">
</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-4)">
</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-5)">╭─</text><text class="breeze-k8s-upload-k8s-image-r5" x="24.4" y="142" textLength="244" clip-path="url(#breeze-k8s-upload-k8s-image-line-5)"> Upload image flags </text><text class="breeze-k8s-upload-k8s-image-r5" x="268.4" y="142" textLength="1171.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-5)">─────────────────────────────── [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-6)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-6)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-6)">-python</text><text class="breeze-k8s-upload-k8s-image-r6" x="292.8 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-7)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-upload-k8s-image-line-7)">[default: 3.8]                                 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-8)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-8)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="215.2" textLength="134.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-8)">-kubernetes</text><text class="breeze-k8s-upload-k8s-image-r4" x=" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="341.6" y="239.6" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-upload-k8s-image-r5" x="1451.8" y="239.6" textLength="12.2" clip-pa [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">[default: v1.25.11]                                [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-12)">╭─</text><text class="breeze-k8s-upload-k8s-image-r5" x="24.4" y="312.8" textLength="219.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-12)"> Parallel options </text><text class="breeze-k8s-upload-k8s-image-r5" x="244" y="312.8" textLength="1195.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-12)">───────────────────────────── [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="337.2" textLength="48.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">-run</text><text class="breeze-k8s-upload-k8s-image-r4" x="85.4" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="361.6" textLength="146.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">-parallelism</text><text class="breeze-k8s-upload-k8s-image-r1" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-15)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="378.2" y="386" textLength="915" clip-path="url(#breeze-k8s-upload-k8s-image-line-15)">(INTEGER RANGE)                                 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-16)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="410.4" textLength="915" clip-path="url(#breeze-k8s-upload-k8s-image-line-16)">[default: 4; 1<=x<=8]                             [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-17)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-17)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="434.8" textLength="85.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-17)">-python</text><text class="breeze-k8s-upload-k8s-image-r4" x="12 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="459.2" textLength="951.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">[default: 3.8 3.9 3.10 3.11]                          &# [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-19)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-19)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="483.6" textLength="134.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-19)">-kubernetes</text><text class="breeze-k8s-upload-k8s-image-r4" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="508" textLength="756.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-upload-k8s-image-r5" x="1451.8" y="50 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="532.4" textLength="61" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">-skip</text><text class="breeze-k8s-upload-k8s-image-r4" x="97.6" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="556.8" textLength="73.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">-debug</text><text class="breeze-k8s-upload-k8s-image-r4" x="109 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="581.2" textLength="97.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">-include</text><text class="breeze-k8s-upload-k8s-image-r4" x="1 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="605.6" textLength="1464" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="630" textLength="24.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-25)">╭─</text><text class="breeze-k8s-upload-k8s-image-r5" x="24.4" y="630" textLength="195.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-25)"> Common options </text><text class="breeze-k8s-upload-k8s-image-r5" x="219.6" y="630" textLength="1220" clip-path="url(#breeze-k8s-upload-k8s-image-line-25)">───────────────────────────────────── [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-26)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-26)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="654.4" textLength="97.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-26)">-verbose</text><text class="breeze-k8s-upload-k8s-image-r6" x="1 [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-27)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-27)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="678.8" textLength="48.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-27)">-dry</text><text class="breeze-k8s-upload-k8s-image-r4" x="85.4" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-28)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-28)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="703.2" textLength="61" clip-path="url(#breeze-k8s-upload-k8s-image-line-28)">-help</text><text class="breeze-k8s-upload-k8s-image-r6" x="158.6" [...]
-</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-k8s-upload-k8s-image-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-29)">
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-6)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-6)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-6)">-python</text><text class="breeze-k8s-upload-k8s-image-r6" x="292.8 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-7)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="341.6" y="190.8" textLength="732" clip-path="url(#breeze-k8s-upload-k8s-image-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                      [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-8)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="341.6" y="215.2" textLength="732" clip-path="url(#breeze-k8s-upload-k8s-image-line-8)">[default: 3.8]                                 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="239.6" textLength="134.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-9)">-kubernetes</text><text class="breeze-k8s-upload-k8s-image-r4" x=" [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="341.6" y="264" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-10)">(>v1.25.11< | v1.26.6 | v1.27.3 | v1.28.0 | v1.29.0)  </text><text class="breeze-k8s-upload-k8s-image-r5" x="1451.8" y="264" textLength="12.2" clip-path=" [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="341.6" y="288.4" textLength="658.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-11)">[default: v1.25.11]                              &# [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="312.8" textLength="1464" clip-path="url(#breeze-k8s-upload-k8s-image-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-12)">
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="337.2" textLength="24.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">╭─</text><text class="breeze-k8s-upload-k8s-image-r5" x="24.4" y="337.2" textLength="219.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)"> Parallel options </text><text class="breeze-k8s-upload-k8s-image-r5" x="244" y="337.2" textLength="1195.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-13)">───────────────────────────── [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="361.6" textLength="48.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-14)">-run</text><text class="breeze-k8s-upload-k8s-image-r4" x="85.4" [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-15)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-15)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="386" textLength="146.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-15)">-parallelism</text><text class="breeze-k8s-upload-k8s-image-r1" x="37 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-16)">│</text><text class="breeze-k8s-upload-k8s-image-r7" x="378.2" y="410.4" textLength="915" clip-path="url(#breeze-k8s-upload-k8s-image-line-16)">(INTEGER RANGE)                               &# [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-17)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="434.8" textLength="915" clip-path="url(#breeze-k8s-upload-k8s-image-line-17)">[default: 4; 1<=x<=8]                             [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-18)">-python</text><text class="breeze-k8s-upload-k8s-image-r4" x="12 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-19)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="483.6" textLength="951.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-19)">[default: 3.8 3.9 3.10 3.11 3.12]                         [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="508" textLength="134.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-20)">-kubernetes</text><text class="breeze-k8s-upload-k8s-image-r4" x="170 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">│</text><text class="breeze-k8s-upload-k8s-image-r5" x="378.2" y="532.4" textLength="756.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-21)">[default: v1.25.11 v1.26.6 v1.27.3 v1.28.0 v1.29.0]           </text><text class="breeze-k8s-upload-k8s-image-r5" x="1451.8" y [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="556.8" textLength="61" clip-path="url(#breeze-k8s-upload-k8s-image-line-22)">-skip</text><text class="breeze-k8s-upload-k8s-image-r4" x="97.6" [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="581.2" textLength="73.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-23)">-debug</text><text class="breeze-k8s-upload-k8s-image-r4" x="109 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="605.6" textLength="97.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-24)">-include</text><text class="breeze-k8s-upload-k8s-image-r4" x="1 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-k8s-upload-k8s-image-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-25)">
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="654.4" textLength="24.4" clip-path="url(#breeze-k8s-upload-k8s-image-line-26)">╭─</text><text class="breeze-k8s-upload-k8s-image-r5" x="24.4" y="654.4" textLength="195.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-26)"> Common options </text><text class="breeze-k8s-upload-k8s-image-r5" x="219.6" y="654.4" textLength="1220" clip-path="url(#breeze-k8s-upload-k8s-image-line-26)">─────────────────────────────── [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-27)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-27)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="678.8" textLength="97.6" clip-path="url(#breeze-k8s-upload-k8s-image-line-27)">-verbose</text><text class="breeze-k8s-upload-k8s-image-r6" x="1 [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-28)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-28)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="703.2" textLength="48.8" clip-path="url(#breeze-k8s-upload-k8s-image-line-28)">-dry</text><text class="breeze-k8s-upload-k8s-image-r4" x="85.4" [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-29)">│</text><text class="breeze-k8s-upload-k8s-image-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-29)">-</text><text class="breeze-k8s-upload-k8s-image-r4" x="36.6" y="727.6" textLength="61" clip-path="url(#breeze-k8s-upload-k8s-image-line-29)">-help</text><text class="breeze-k8s-upload-k8s-image-r6" x="158.6" [...]
+</text><text class="breeze-k8s-upload-k8s-image-r5" x="0" y="752" textLength="1464" clip-path="url(#breeze-k8s-upload-k8s-image-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-k8s-upload-k8s-image-r1" x="1464" y="752" textLength="12.2" clip-path="url(#breeze-k8s-upload-k8s-image-line-30)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_k8s_upload-k8s-image.txt b/dev/breeze/doc/images/output_k8s_upload-k8s-image.txt
index 3049ceac9c..9d14dc0abe 100644
--- a/dev/breeze/doc/images/output_k8s_upload-k8s-image.txt
+++ b/dev/breeze/doc/images/output_k8s_upload-k8s-image.txt
@@ -1 +1 @@
-ee80bce63b6ef4968be3490022a8f3b1
+0c11051504aa4b4e0184e2e58993dfbb
diff --git a/dev/breeze/doc/images/output_prod-image_build.svg b/dev/breeze/doc/images/output_prod-image_build.svg
index 2e6599bb57..f13a73e2c6 100644
--- a/dev/breeze/doc/images/output_prod-image_build.svg
+++ b/dev/breeze/doc/images/output_prod-image_build.svg
@@ -367,7 +367,7 @@
</text><text class="breeze-prod-image-build-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-4)">
</text><text class="breeze-prod-image-build-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-prod-image-build-line-5)">╭─</text><text class="breeze-prod-image-build-r5" x="24.4" y="142" textLength="158.6" clip-path="url(#breeze-prod-image-build-line-5)"> Basic usage </text><text class="breeze-prod-image-build-r5" x="183" y="142" textLength="1256.6" clip-path="url(#breeze-prod-image-build-line-5)">─────────────────────────────────────────────────────────────────── [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-6)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-6)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-6)">-python</text><text class="breeze-prod-image-build-r6" x="353.8" y="166.4" textLength="24.4 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-7)">│</text><text class="breeze-prod-image-build-r7" x="402.6" y="190.8" textLength="732" clip-path="url(#breeze-prod-image-build-line-7)">(>3.8< | 3.9 | 3.10 | 3.11)                           & [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-7)">│</text><text class="breeze-prod-image-build-r7" x="402.6" y="190.8" textLength="732" clip-path="url(#breeze-prod-image-build-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                        &# [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-8)">│</text><text class="breeze-prod-image-build-r5" x="402.6" y="215.2" textLength="732" clip-path="url(#breeze-prod-image-build-line-8)">[default: 3.8]                                   [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-9)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-9)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-9)">-install</text><text class="breeze-prod-image-build-r4" x="134.2" y="239.6" textLength="195 [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-10)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-10)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="264" textLength="73.2" clip-path="url(#breeze-prod-image-build-line-10)">-image</text><text class="breeze-prod-image-build-r4" x="109.8" y="264" textLength="48.8" clip [...]
@@ -387,7 +387,7 @@
</text><text class="breeze-prod-image-build-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-24)">│</text><text class="breeze-prod-image-build-r7" x="378.2" y="605.6" textLength="915" clip-path="url(#breeze-prod-image-build-line-24)">(INTEGER RANGE)                                   [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-25)">│</text><text class="breeze-prod-image-build-r5" x="378.2" y="630" textLength="915" clip-path="url(#breeze-prod-image-build-line-25)">[default: 4; 1<=x<=8]                                 [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-26)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-26)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="654.4" textLength="85.4" clip-path="url(#breeze-prod-image-build-line-26)">-python</text><text class="breeze-prod-image-build-r4" x="122" y="654.4" textLength="109 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-27)">│</text><text class="breeze-prod-image-build-r5" x="378.2" y="678.8" textLength="951.6" clip-path="url(#breeze-prod-image-build-line-27)">[default: 3.8 3.9 3.10 3.11]                              [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-27)">│</text><text class="breeze-prod-image-build-r5" x="378.2" y="678.8" textLength="951.6" clip-path="url(#breeze-prod-image-build-line-27)">[default: 3.8 3.9 3.10 3.11 3.12]                           &# [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-28)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-28)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="703.2" textLength="61" clip-path="url(#breeze-prod-image-build-line-28)">-skip</text><text class="breeze-prod-image-build-r4" x="97.6" y="703.2" textLength="97.6" [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-29)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-29)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="727.6" textLength="73.2" clip-path="url(#breeze-prod-image-build-line-29)">-debug</text><text class="breeze-prod-image-build-r4" x="109.8" y="727.6" textLength="12 [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-30)">│</text><text class="breeze-prod-image-build-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-prod-image-build-line-30)">-</text><text class="breeze-prod-image-build-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-prod-image-build-line-30)">-include</text><text class="breeze-prod-image-build-r4" x="134.2" y="752" textLength="195.2" c [...]
diff --git a/dev/breeze/doc/images/output_prod-image_build.txt b/dev/breeze/doc/images/output_prod-image_build.txt
index dbfb23f9c0..f4d0258c24 100644
--- a/dev/breeze/doc/images/output_prod-image_build.txt
+++ b/dev/breeze/doc/images/output_prod-image_build.txt
@@ -1 +1 @@
-e3ed45363576b9bb3eb1cf5e3a2c08df
+0b273681fd6b7421fa4237ad79b6a881
diff --git a/dev/breeze/doc/images/output_prod-image_pull.svg b/dev/breeze/doc/images/output_prod-image_pull.svg
index 6d0dbf446e..f192beecf8 100644
--- a/dev/breeze/doc/images/output_prod-image_pull.svg
+++ b/dev/breeze/doc/images/output_prod-image_pull.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 904.0" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-prod-image-pull-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="828.5999999999999" />
+ <rect x="0" y="0" width="1463.0" height="853.0" />
</clipPath>
<clipPath id="breeze-prod-image-pull-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -144,9 +144,12 @@
<clipPath id="breeze-prod-image-pull-line-32">
<rect x="0" y="782.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-prod-image-pull-line-33">
+ <rect x="0" y="806.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="877.6" rx="8"/><text class="breeze-prod-image-pull-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: prod-image pull</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="902" rx="8"/><text class="breeze-prod-image-pull-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: prod-image pull</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -163,33 +166,34 @@
</text><text class="breeze-prod-image-pull-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-4)">
</text><text class="breeze-prod-image-pull-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-prod-image-pull-line-5)">╭─</text><text class="breeze-prod-image-pull-r5" x="24.4" y="142" textLength="219.6" clip-path="url(#breeze-prod-image-pull-line-5)"> Pull image flags </text><text class="breeze-prod-image-pull-r5" x="244" y="142" textLength="1195.6" clip-path="url(#breeze-prod-image-pull-line-5)">─────────────────────────────────────────────────────────────── [...]
</text><text class="breeze-prod-image-pull-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-6)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-6)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-prod-image-pull-line-6)">-image</text><text class="breeze-prod-image-pull-r4" x="109.8" y="166.4" textLength="48.8" clip-p [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-7)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-7)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-7)">-python</text><text class="breeze-prod-image-pull-r6" x="244" y="190.8" textLength="24.4" clip-pa [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-8)">│</text><text class="breeze-prod-image-pull-r5" x="292.8" y="215.2" textLength="732" clip-path="url(#breeze-prod-image-pull-line-8)">[default: 3.8]                                   & [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-9)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-9)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="239.6" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-9)">-verify</text><text class="breeze-prod-image-pull-r1" x="292.8" y="239.6" textLength="158.6" clip [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-10)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-10)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="264" textLength="61" clip-path="url(#breeze-prod-image-pull-line-10)">-wait</text><text class="breeze-prod-image-pull-r4" x="97.6" y="264" textLength="122" clip-path="url(# [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-11)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-11)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="288.4" textLength="48.8" clip-path="url(#breeze-prod-image-pull-line-11)">-tag</text><text class="breeze-prod-image-pull-r4" x="85.4" y="288.4" textLength="122" clip-pa [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-12)">│</text><text class="breeze-prod-image-pull-r1" x="292.8" y="312.8" textLength="231.8" clip-path="url(#breeze-prod-image-pull-line-12)">or pull image with </text><text class="breeze-prod-image-pull-r4" x="524.6" y="312.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-12)">-</text><text class="breeze-prod-image-pull-r4" x="53 [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-13)">
-</text><text class="breeze-prod-image-pull-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-prod-image-pull-line-14)">╭─</text><text class="breeze-prod-image-pull-r5" x="24.4" y="361.6" textLength="219.6" clip-path="url(#breeze-prod-image-pull-line-14)"> Parallel running </text><text class="breeze-prod-image-pull-r5" x="244" y="361.6" textLength="1195.6" clip-path="url(#breeze-prod-image-pull-line-14)">─────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-15)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-15)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="386" textLength="48.8" clip-path="url(#breeze-prod-image-pull-line-15)">-run</text><text class="breeze-prod-image-pull-r4" x="85.4" y="386" textLength="146.4" clip-path="ur [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-16)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-16)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="410.4" textLength="146.4" clip-path="url(#breeze-prod-image-pull-line-16)">-parallelism</text><text class="breeze-prod-image-pull-r1" x="378.2" y="410.4" textLength="91 [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-17)">│</text><text class="breeze-prod-image-pull-r7" x="378.2" y="434.8" textLength="915" clip-path="url(#breeze-prod-image-pull-line-17)">(INTEGER RANGE)                                   [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-18)">│</text><text class="breeze-prod-image-pull-r5" x="378.2" y="459.2" textLength="915" clip-path="url(#breeze-prod-image-pull-line-18)">[default: 4; 1<=x<=8]                                 [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-19)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-19)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="483.6" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-19)">-python</text><text class="breeze-prod-image-pull-r4" x="122" y="483.6" textLength="109.8" cli [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-20)">│</text><text class="breeze-prod-image-pull-r5" x="378.2" y="508" textLength="951.6" clip-path="url(#breeze-prod-image-pull-line-20)">[default: 3.8 3.9 3.10 3.11]                              &# [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-21)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-21)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="532.4" textLength="61" clip-path="url(#breeze-prod-image-pull-line-21)">-skip</text><text class="breeze-prod-image-pull-r4" x="97.6" y="532.4" textLength="97.6" clip-pa [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-22)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-22)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="556.8" textLength="73.2" clip-path="url(#breeze-prod-image-pull-line-22)">-debug</text><text class="breeze-prod-image-pull-r4" x="109.8" y="556.8" textLength="122" clip [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-23)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-23)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="581.2" textLength="97.6" clip-path="url(#breeze-prod-image-pull-line-23)">-include</text><text class="breeze-prod-image-pull-r4" x="134.2" y="581.2" textLength="195.2" [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="605.6" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="605.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-24)">
-</text><text class="breeze-prod-image-pull-r5" x="0" y="630" textLength="24.4" clip-path="url(#breeze-prod-image-pull-line-25)">╭─</text><text class="breeze-prod-image-pull-r5" x="24.4" y="630" textLength="280.6" clip-path="url(#breeze-prod-image-pull-line-25)"> Github authentication </text><text class="breeze-prod-image-pull-r5" x="305" y="630" textLength="1134.6" clip-path="url(#breeze-prod-image-pull-line-25)">──────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-26)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-26)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="654.4" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-26)">-github</text><text class="breeze-prod-image-pull-r4" x="122" y="654.4" textLength="134.2" cli [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-27)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-27)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="678.8" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-27)">-github</text><text class="breeze-prod-image-pull-r4" x="122" y="678.8" textLength="73.2" clip [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="703.2" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-28)">
-</text><text class="breeze-prod-image-pull-r5" x="0" y="727.6" textLength="24.4" clip-path="url(#breeze-prod-image-pull-line-29)">╭─</text><text class="breeze-prod-image-pull-r5" x="24.4" y="727.6" textLength="195.2" clip-path="url(#breeze-prod-image-pull-line-29)"> Common options </text><text class="breeze-prod-image-pull-r5" x="219.6" y="727.6" textLength="1220" clip-path="url(#breeze-prod-image-pull-line-29)">───────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-30)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-30)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="752" textLength="97.6" clip-path="url(#breeze-prod-image-pull-line-30)">-verbose</text><text class="breeze-prod-image-pull-r6" x="158.6" y="752" textLength="24.4" clip-path [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-31)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-31)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="776.4" textLength="48.8" clip-path="url(#breeze-prod-image-pull-line-31)">-dry</text><text class="breeze-prod-image-pull-r4" x="85.4" y="776.4" textLength="48.8" clip-p [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-32)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-32)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="800.8" textLength="61" clip-path="url(#breeze-prod-image-pull-line-32)">-help</text><text class="breeze-prod-image-pull-r6" x="158.6" y="800.8" textLength="24.4" clip-p [...]
-</text><text class="breeze-prod-image-pull-r5" x="0" y="825.2" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="825.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-33)">
+</text><text class="breeze-prod-image-pull-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-7)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-7)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-7)">-python</text><text class="breeze-prod-image-pull-r6" x="244" y="190.8" textLength="24.4" clip-pa [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-8)">│</text><text class="breeze-prod-image-pull-r7" x="292.8" y="215.2" textLength="732" clip-path="url(#breeze-prod-image-pull-line-8)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-9)">│</text><text class="breeze-prod-image-pull-r5" x="292.8" y="239.6" textLength="732" clip-path="url(#breeze-prod-image-pull-line-9)">[default: 3.8]                                   & [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-10)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-10)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="264" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-10)">-verify</text><text class="breeze-prod-image-pull-r1" x="292.8" y="264" textLength="158.6" clip-path [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-11)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-11)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="288.4" textLength="61" clip-path="url(#breeze-prod-image-pull-line-11)">-wait</text><text class="breeze-prod-image-pull-r4" x="97.6" y="288.4" textLength="122" clip-pat [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-12)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-12)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-prod-image-pull-line-12)">-tag</text><text class="breeze-prod-image-pull-r4" x="85.4" y="312.8" textLength="122" clip-pa [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-13)">│</text><text class="breeze-prod-image-pull-r1" x="292.8" y="337.2" textLength="231.8" clip-path="url(#breeze-prod-image-pull-line-13)">or pull image with </text><text class="breeze-prod-image-pull-r4" x="524.6" y="337.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-13)">-</text><text class="breeze-prod-image-pull-r4" x="53 [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-14)">
+</text><text class="breeze-prod-image-pull-r5" x="0" y="386" textLength="24.4" clip-path="url(#breeze-prod-image-pull-line-15)">╭─</text><text class="breeze-prod-image-pull-r5" x="24.4" y="386" textLength="219.6" clip-path="url(#breeze-prod-image-pull-line-15)"> Parallel running </text><text class="breeze-prod-image-pull-r5" x="244" y="386" textLength="1195.6" clip-path="url(#breeze-prod-image-pull-line-15)">───────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-16)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-16)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="410.4" textLength="48.8" clip-path="url(#breeze-prod-image-pull-line-16)">-run</text><text class="breeze-prod-image-pull-r4" x="85.4" y="410.4" textLength="146.4" clip- [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-17)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-17)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="434.8" textLength="146.4" clip-path="url(#breeze-prod-image-pull-line-17)">-parallelism</text><text class="breeze-prod-image-pull-r1" x="378.2" y="434.8" textLength="91 [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-18)">│</text><text class="breeze-prod-image-pull-r7" x="378.2" y="459.2" textLength="915" clip-path="url(#breeze-prod-image-pull-line-18)">(INTEGER RANGE)                                   [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-19)">│</text><text class="breeze-prod-image-pull-r5" x="378.2" y="483.6" textLength="915" clip-path="url(#breeze-prod-image-pull-line-19)">[default: 4; 1<=x<=8]                                 [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-20)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-20)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="508" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-20)">-python</text><text class="breeze-prod-image-pull-r4" x="122" y="508" textLength="109.8" clip-path=" [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-21)">│</text><text class="breeze-prod-image-pull-r5" x="378.2" y="532.4" textLength="951.6" clip-path="url(#breeze-prod-image-pull-line-21)">[default: 3.8 3.9 3.10 3.11 3.12]                             [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-22)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-22)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="556.8" textLength="61" clip-path="url(#breeze-prod-image-pull-line-22)">-skip</text><text class="breeze-prod-image-pull-r4" x="97.6" y="556.8" textLength="97.6" clip-pa [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-23)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-23)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="581.2" textLength="73.2" clip-path="url(#breeze-prod-image-pull-line-23)">-debug</text><text class="breeze-prod-image-pull-r4" x="109.8" y="581.2" textLength="122" clip [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-24)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-24)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="605.6" textLength="97.6" clip-path="url(#breeze-prod-image-pull-line-24)">-include</text><text class="breeze-prod-image-pull-r4" x="134.2" y="605.6" textLength="195.2" [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="630" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-25)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="630" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-25)">
+</text><text class="breeze-prod-image-pull-r5" x="0" y="654.4" textLength="24.4" clip-path="url(#breeze-prod-image-pull-line-26)">╭─</text><text class="breeze-prod-image-pull-r5" x="24.4" y="654.4" textLength="280.6" clip-path="url(#breeze-prod-image-pull-line-26)"> Github authentication </text><text class="breeze-prod-image-pull-r5" x="305" y="654.4" textLength="1134.6" clip-path="url(#breeze-prod-image-pull-line-26)">────────────────────────────────────────────────────── [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-27)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-27)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="678.8" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-27)">-github</text><text class="breeze-prod-image-pull-r4" x="122" y="678.8" textLength="134.2" cli [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-28)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-28)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="703.2" textLength="85.4" clip-path="url(#breeze-prod-image-pull-line-28)">-github</text><text class="breeze-prod-image-pull-r4" x="122" y="703.2" textLength="73.2" clip [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-29)">
+</text><text class="breeze-prod-image-pull-r5" x="0" y="752" textLength="24.4" clip-path="url(#breeze-prod-image-pull-line-30)">╭─</text><text class="breeze-prod-image-pull-r5" x="24.4" y="752" textLength="195.2" clip-path="url(#breeze-prod-image-pull-line-30)"> Common options </text><text class="breeze-prod-image-pull-r5" x="219.6" y="752" textLength="1220" clip-path="url(#breeze-prod-image-pull-line-30)">─────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-31)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-31)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="776.4" textLength="97.6" clip-path="url(#breeze-prod-image-pull-line-31)">-verbose</text><text class="breeze-prod-image-pull-r6" x="158.6" y="776.4" textLength="24.4" c [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-32)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-32)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="800.8" textLength="48.8" clip-path="url(#breeze-prod-image-pull-line-32)">-dry</text><text class="breeze-prod-image-pull-r4" x="85.4" y="800.8" textLength="48.8" clip-p [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-33)">│</text><text class="breeze-prod-image-pull-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-33)">-</text><text class="breeze-prod-image-pull-r4" x="36.6" y="825.2" textLength="61" clip-path="url(#breeze-prod-image-pull-line-33)">-help</text><text class="breeze-prod-image-pull-r6" x="158.6" y="825.2" textLength="24.4" clip-p [...]
+</text><text class="breeze-prod-image-pull-r5" x="0" y="849.6" textLength="1464" clip-path="url(#breeze-prod-image-pull-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-prod-image-pull-r1" x="1464" y="849.6" textLength="12.2" clip-path="url(#breeze-prod-image-pull-line-34)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_prod-image_pull.txt b/dev/breeze/doc/images/output_prod-image_pull.txt
index 7efde9b404..2a3753775f 100644
--- a/dev/breeze/doc/images/output_prod-image_pull.txt
+++ b/dev/breeze/doc/images/output_prod-image_pull.txt
@@ -1 +1 @@
-3817ef211b023b76df84ee1110ef64dd
+cc93e1715ab169931a87c1d6b1157ddb
diff --git a/dev/breeze/doc/images/output_prod-image_verify.svg b/dev/breeze/doc/images/output_prod-image_verify.svg
index 5633e0226c..96321fe25d 100644
--- a/dev/breeze/doc/images/output_prod-image_verify.svg
+++ b/dev/breeze/doc/images/output_prod-image_verify.svg
@@ -160,7 +160,7 @@
</text><text class="breeze-prod-image-verify-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-4)">
</text><text class="breeze-prod-image-verify-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-prod-image-verify-line-5)">╭─</text><text class="breeze-prod-image-verify-r5" x="24.4" y="142" textLength="244" clip-path="url(#breeze-prod-image-verify-line-5)"> Verify image flags </text><text class="breeze-prod-image-verify-r5" x="268.4" y="142" textLength="1171.2" clip-path="url(#breeze-prod-image-verify-line-5)">───────────────────────────────────────────────── [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-6)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-6)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="166.4" textLength="73.2" clip-path="url(#breeze-prod-image-verify-line-6)">-image</text><text class="breeze-prod-image-verify-r4" x="109.8" y="166.4" textLength [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-7)">-python</text><text class="breeze-prod-image-verify-r6" x="195.2" y="190.8" textLengt [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-7)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-7)">-python</text><text class="breeze-prod-image-verify-r6" x="195.2" y="190.8" textLengt [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-8)">│</text><text class="breeze-prod-image-verify-r5" x="244" y="215.2" textLength="732" clip-path="url(#breeze-prod-image-verify-line-8)">[default: 3.8]                                  & [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-9)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-9)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="239.6" textLength="61" clip-path="url(#breeze-prod-image-verify-line-9)">-slim</text><text class="breeze-prod-image-verify-r4" x="97.6" y="239.6" textLength="73 [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-10)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-10)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="264" textLength="73.2" clip-path="url(#breeze-prod-image-verify-line-10)">-image</text><text class="breeze-prod-image-verify-r4" x="109.8" y="264" textLength="48. [...]
@@ -172,7 +172,7 @@
</text><text class="breeze-prod-image-verify-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-16)">│</text><text class="breeze-prod-image-verify-r7" x="378.2" y="410.4" textLength="915" clip-path="url(#breeze-prod-image-verify-line-16)">(INTEGER RANGE)                                 &# [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-17)">│</text><text class="breeze-prod-image-verify-r5" x="378.2" y="434.8" textLength="915" clip-path="url(#breeze-prod-image-verify-line-17)">[default: 4; 1<=x<=8]                               [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-18)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-18)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="459.2" textLength="85.4" clip-path="url(#breeze-prod-image-verify-line-18)">-python</text><text class="breeze-prod-image-verify-r4" x="122" y="459.2" textLeng [...]
-</text><text class="breeze-prod-image-verify-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-19)">│</text><text class="breeze-prod-image-verify-r5" x="378.2" y="483.6" textLength="951.6" clip-path="url(#breeze-prod-image-verify-line-19)">[default: 3.8 3.9 3.10 3.11]                            &# [...]
+</text><text class="breeze-prod-image-verify-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-19)">│</text><text class="breeze-prod-image-verify-r5" x="378.2" y="483.6" textLength="951.6" clip-path="url(#breeze-prod-image-verify-line-19)">[default: 3.8 3.9 3.10 3.11 3.12]                           [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-20)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-20)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="508" textLength="61" clip-path="url(#breeze-prod-image-verify-line-20)">-skip</text><text class="breeze-prod-image-verify-r4" x="97.6" y="508" textLength="97.6" c [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-21)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-21)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="532.4" textLength="73.2" clip-path="url(#breeze-prod-image-verify-line-21)">-debug</text><text class="breeze-prod-image-verify-r4" x="109.8" y="532.4" textLen [...]
</text><text class="breeze-prod-image-verify-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-22)">│</text><text class="breeze-prod-image-verify-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-prod-image-verify-line-22)">-</text><text class="breeze-prod-image-verify-r4" x="36.6" y="556.8" textLength="97.6" clip-path="url(#breeze-prod-image-verify-line-22)">-include</text><text class="breeze-prod-image-verify-r4" x="134.2" y="556.8" textL [...]
diff --git a/dev/breeze/doc/images/output_prod-image_verify.txt b/dev/breeze/doc/images/output_prod-image_verify.txt
index 8301a9d978..ba10a9b94c 100644
--- a/dev/breeze/doc/images/output_prod-image_verify.txt
+++ b/dev/breeze/doc/images/output_prod-image_verify.txt
@@ -1 +1 @@
-3d7fdd3877862ce9bfad8018a5282745
+5f5c03c80a4e23ddc088d5e59f914dfe
diff --git a/dev/breeze/doc/images/output_release-management_generate-constraints.svg b/dev/breeze/doc/images/output_release-management_generate-constraints.svg
index e00db31f3f..6042318b20 100644
--- a/dev/breeze/doc/images/output_release-management_generate-constraints.svg
+++ b/dev/breeze/doc/images/output_release-management_generate-constraints.svg
@@ -172,7 +172,7 @@
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-7)">│</text><text class="breeze-release-management-generate-constraints-r6" x="414.8" y="190.8" textLength="963.8" clip-path="url(#breeze-release-management-generate-constraints-line-7)">(TEXT)                      [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-8)">│</text><text class="breeze-release-management-generate-constraints-r5" x="414.8" y="215.2" textLength="963.8" clip-path="url(#breeze-release-management-generate-constraints-line-8)">[default: latest]                  &# [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-9)">│</text><text class="breeze-release-management-generate-constraints-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-9)">-</text><text class="breeze-release-management-generate-constraints-r4" x="36.6" y="239.6" textLength="85.4" clip-path="url(#breeze-re [...]
-</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-10)">│</text><text class="breeze-release-management-generate-constraints-r6" x="414.8" y="264" textLength="732" clip-path="url(#breeze-release-management-generate-constraints-line-10)">(>3.8< | 3.9 | 3.10 | 3.11)            & [...]
+</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-10)">│</text><text class="breeze-release-management-generate-constraints-r6" x="414.8" y="264" textLength="732" clip-path="url(#breeze-release-management-generate-constraints-line-10)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)         &# [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-11)">│</text><text class="breeze-release-management-generate-constraints-r5" x="414.8" y="288.4" textLength="732" clip-path="url(#breeze-release-management-generate-constraints-line-11)">[default: 3.8]                    [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-12)">│</text><text class="breeze-release-management-generate-constraints-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-12)">-</text><text class="breeze-release-management-generate-constraints-r4" x="36.6" y="312.8" textLength="97.6" clip-path="url(#breeze- [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-13)">│</text><text class="breeze-release-management-generate-constraints-r6" x="414.8" y="337.2" textLength="866.2" clip-path="url(#breeze-release-management-generate-constraints-line-13)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class="breeze-release-mana [...]
@@ -188,7 +188,7 @@
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-23)">│</text><text class="breeze-release-management-generate-constraints-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-23)">-</text><text class="breeze-release-management-generate-constraints-r4" x="36.6" y="581.2" textLength="146.4" clip-path="url(#breeze [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-24)">│</text><text class="breeze-release-management-generate-constraints-r5" x="280.6" y="605.6" textLength="915" clip-path="url(#breeze-release-management-generate-constraints-line-24)">[default: 4; 1<=x<=8]                 [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-25)">│</text><text class="breeze-release-management-generate-constraints-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-25)">-</text><text class="breeze-release-management-generate-constraints-r4" x="36.6" y="630" textLength="85.4" clip-path="url(#breeze-releas [...]
-</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-26)">│</text><text class="breeze-release-management-generate-constraints-r5" x="280.6" y="654.4" textLength="951.6" clip-path="url(#breeze-release-management-generate-constraints-line-26)">[default: 3.8 3.9 3.10 3.11]              [...]
+</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-26)">│</text><text class="breeze-release-management-generate-constraints-r5" x="280.6" y="654.4" textLength="951.6" clip-path="url(#breeze-release-management-generate-constraints-line-26)">[default: 3.8 3.9 3.10 3.11 3.12]             [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-27)">│</text><text class="breeze-release-management-generate-constraints-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-27)">-</text><text class="breeze-release-management-generate-constraints-r4" x="36.6" y="678.8" textLength="61" clip-path="url(#breeze-re [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-28)">│</text><text class="breeze-release-management-generate-constraints-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-28)">-</text><text class="breeze-release-management-generate-constraints-r4" x="36.6" y="703.2" textLength="73.2" clip-path="url(#breeze- [...]
</text><text class="breeze-release-management-generate-constraints-r5" x="0" y="727.6" textLength="1464" clip-path="url(#breeze-release-management-generate-constraints-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-constraints-r1" x="1464" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-constraints-line-29)">
diff --git a/dev/breeze/doc/images/output_release-management_generate-constraints.txt b/dev/breeze/doc/images/output_release-management_generate-constraints.txt
index 37b035c8d5..cd80b5b1c2 100644
--- a/dev/breeze/doc/images/output_release-management_generate-constraints.txt
+++ b/dev/breeze/doc/images/output_release-management_generate-constraints.txt
@@ -1 +1 @@
-587c21578af75c3c8fb9b4629e3577e1
+351d39f3b01d1c54a83097a7bfb6c7dc
diff --git a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg
index 87d1e03692..0617bbea02 100644
--- a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg
+++ b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg
@@ -101,7 +101,7 @@
</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-generate-providers-metadata-line-5)">╭─</text><text class="breeze-release-management-generate-providers-metadata-r5" x="24.4" y="142" textLength="427" clip-path="url(#breeze-release-management-generate-providers-metadata-line-5)"> Generate providers metadata flags </text><text class="breeze-release-management-gene [...]
</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-6)">│</text><text class="breeze-release-management-generate-providers-metadata-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-6)">-</text><text class="breeze-release-management-generate-providers-metadata-r4" x="36.6" y="166.4" textLeng [...]
</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-7)">│</text><text class="breeze-release-management-generate-providers-metadata-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-7)">-</text><text class="breeze-release-management-generate-providers-metadata-r4" x="36.6" y="190.8" textLeng [...]
-</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-8)">│</text><text class="breeze-release-management-generate-providers-metadata-r6" x="329.4" y="215.2" textLength="976" clip-path="url(#breeze-release-management-generate-providers-metadata-line-8)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11)   & [...]
+</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-8)">│</text><text class="breeze-release-management-generate-providers-metadata-r6" x="329.4" y="215.2" textLength="976" clip-path="url(#breeze-release-management-generate-providers-metadata-line-8)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12)&# [...]
</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="239.6" textLength="1464" clip-path="url(#breeze-release-management-generate-providers-metadata-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-generate-providers-metadata-r1" x="1464" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metad [...]
</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="264" textLength="24.4" clip-path="url(#breeze-release-management-generate-providers-metadata-line-10)">╭─</text><text class="breeze-release-management-generate-providers-metadata-r5" x="24.4" y="264" textLength="195.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-10)"> Common options </text><text class="breeze-release-management-generate-providers-metadata-r [...]
</text><text class="breeze-release-management-generate-providers-metadata-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-11)">│</text><text class="breeze-release-management-generate-providers-metadata-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-generate-providers-metadata-line-11)">-</text><text class="breeze-release-management-generate-providers-metadata-r4" x="36.6" y="288.4" textLe [...]
diff --git a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt
index 875f0c598e..a7a955ae17 100644
--- a/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt
+++ b/dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt
@@ -1 +1 @@
-d4e8e5cfaa024e3963af02d7a873048d
+1677df1d9992caf2709c5fa9cd4668b2
diff --git a/dev/breeze/doc/images/output_release-management_install-provider-packages.svg b/dev/breeze/doc/images/output_release-management_install-provider-packages.svg
index dd728de859..bbb0e32e79 100644
--- a/dev/breeze/doc/images/output_release-management_install-provider-packages.svg
+++ b/dev/breeze/doc/images/output_release-management_install-provider-packages.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 1587.1999999999998" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-release-management-install-provider-packages-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1511.8" />
+ <rect x="0" y="0" width="1463.0" height="1536.1999999999998" />
</clipPath>
<clipPath id="breeze-release-management-install-provider-packages-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -228,9 +228,12 @@
<clipPath id="breeze-release-management-install-provider-packages-line-60">
<rect x="0" y="1465.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-61">
+ <rect x="0" y="1489.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="1560.8" rx="8"/><text class="breeze-release-management-install-provider-packages-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management install-provider-packages</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="breeze-release-management-install-provider-packages-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management install-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"/>
@@ -246,62 +249,63 @@
</text><text class="breeze-release-management-install-provider-packages-r1" x="12.2" y="93.2" textLength="646.6" clip-path="url(#breeze-release-management-install-provider-packages-line-3)">Installs provider packages that can be found in dist.</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-3)">
</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-4)">
</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-5)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="142" textLength="353.8" clip-path="url(#breeze-release-management-install-provider-packages-line-5)"> Provider installation flags </text><text class="breeze-release-management-install-provider-pack [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-6)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-6)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="166.4" textLength="85.4" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-7)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="329.4" y="190.8" textLength="732" clip-path="url(#breeze-release-management-install-provider-packages-line-7)">[default: 3.8]                 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-8)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-8)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="215.2" textLength="73.2" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-9)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="329.4" y="239.6" textLength="1110.2" clip-path="url(#breeze-release-management-install-provider-packages-line-9)">selected).                  [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-10)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="329.4" y="264" textLength="1110.2" clip-path="url(#breeze-release-management-install-provider-packages-line-10)">(selected | all | skip | remove)         [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-11)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="329.4" y="288.4" textLength="1110.2" clip-path="url(#breeze-release-management-install-provider-packages-line-11)">[default: selected]              & [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-12)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-12)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="312.8" textLength="85.4 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-13)">
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-14)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="361.6" textLength="512.4" clip-path="url(#breeze-release-management-install-provider-packages-line-14)"> Installing packages after entering shell </text><text class="breeze-release-man [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-15)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-15)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="386" textLength="97.6" clip [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-16)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="410.4" textLength="902.8" clip-path="url(#breeze-release-management-install-provider-packages-line-16)">(TEXT)                 &# [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-17)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-17)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="434.8" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-18)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="459.2" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-18)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class= [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-19)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="483.6" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-19)">[default: constraints-source-providers]            [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-20)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-20)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="508" textLength="97.6" clip [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-21)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="532.4" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-21)">constraints URL).               [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-22)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="556.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-22)">(TEXT)                 &# [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-23)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-23)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="581.2" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-24)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-24)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="605.6" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-25)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-25)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="630" textLength="97.6" clip [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-26)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="475.8" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-26)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="488" y="654.4" textLength="48.8 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-27)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="678.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-27)">(TEXT)                 &# [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-28)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-28)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="703.2" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-29)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="727.6" textLength="658.8" clip-path="url(#breeze-release-management-install-provider-packages-line-29)">[default: wheel]                [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-30)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-30)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="752" textLength="122" clip- [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-31)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="776.4" textLength="927.2" clip-path="url(#breeze-release-management-install-provider-packages-line-31)">(TEXT)                 &# [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-32)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-32)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="800.8" textLength="122" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-33)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="825.2" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-33)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class= [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-34)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="849.6" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-34)">[default: constraints-source-providers]            [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-35)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-35)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="874" textLength="122" clip- [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-36)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="898.4" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-36)">constraints URL). Can be 'default' in which case the de [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-37)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="922.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-37)">constraints-reference is used.            [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-38)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="947.2" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-38)">(TEXT)                 &# [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-39)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-39)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="971.6" textLength="122" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-40)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-40)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="996" textLength="48.8" clip [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-41)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1020.4" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-41)">install from PyPI), `none`, `wheel`, or `sdist` to install from [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-42)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1044.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-42)">or VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/) [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-43)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1069.2" textLength="97.6" clip-path="url(#breeze-release-management-install-provider-packages-line-43)">Implies </text><text class="breeze-release-management-install-provider-packages-r4" x="573.4" y="1069.2" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-44)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-44)">(none | wheel | sdist | <airflow_version>)      [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-45)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-45)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1118" textLength="48.8" c [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-46)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1142.4" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-46)">folder when entering breeze.            [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1166.8" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="1166.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-l [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1191.2" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-48)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="1191.2" textLength="219.6" clip-path="url(#breeze-release-management-install-provider-packages-line-48)"> Parallel running </text><text class="breeze-release-management-install-provider-packages-r5" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-49)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-49)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1215.6" textLength="4 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-50)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-50)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1240" textLength="146.4" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-51)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="378.2" y="1264.4" textLength="915" clip-path="url(#breeze-release-management-install-provider-packages-line-51)">(INTEGER RANGE)                [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-52)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="378.2" y="1288.8" textLength="915" clip-path="url(#breeze-release-management-install-provider-packages-line-52)">[default: 4; 1<=x<=8]            & [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-53)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-53)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1313.2" textLength="6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-54)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-54)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1337.6" textLength="9 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-55)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-55)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1362" textLength="73.2" c [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1386.4" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-56)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="1386.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-l [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1410.8" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-57)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="1410.8" textLength="195.2" clip-path="url(#breeze-release-management-install-provider-packages-line-57)"> Common options </text><text class="breeze-release-management-install-provider-packages-r5" x [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-58)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-58)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1435.2" textLength="4 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-59)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-59)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1459.6" textLength="9 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-60)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-60)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1484" textLength="61" cli [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1508.4" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="1508.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-l [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-6)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-6)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="166.4" textLength="85.4" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-7)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="329.4" y="190.8" textLength="732" clip-path="url(#breeze-release-management-install-provider-packages-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)      [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-8)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="329.4" y="215.2" textLength="732" clip-path="url(#breeze-release-management-install-provider-packages-line-8)">[default: 3.8]                 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-9)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-9)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="239.6" textLength="73.2" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-10)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="329.4" y="264" textLength="1110.2" clip-path="url(#breeze-release-management-install-provider-packages-line-10)">selected).                 & [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-11)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="329.4" y="288.4" textLength="1110.2" clip-path="url(#breeze-release-management-install-provider-packages-line-11)">(selected | all | skip | remove)         [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-12)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="329.4" y="312.8" textLength="1110.2" clip-path="url(#breeze-release-management-install-provider-packages-line-12)">[default: selected]              & [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-13)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-13)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="337.2" textLength="85.4 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-14)">
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="386" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-15)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="386" textLength="512.4" clip-path="url(#breeze-release-management-install-provider-packages-line-15)"> Installing packages after entering shell </text><text class="breeze-release-managem [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-16)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-16)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="410.4" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-17)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="434.8" textLength="902.8" clip-path="url(#breeze-release-management-install-provider-packages-line-17)">(TEXT)                 &# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-18)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-18)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="459.2" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-19)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="483.6" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-19)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class= [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-20)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="508" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-20)">[default: constraints-source-providers]            [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-21)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-21)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="532.4" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-22)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="556.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-22)">constraints URL).               [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-23)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="581.2" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-23)">(TEXT)                 &# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-24)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-24)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="605.6" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-25)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-25)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="630" textLength="97.6" clip [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-26)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-26)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="654.4" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-27)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="475.8" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-27)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="488" y="678.8" textLength="48.8 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-28)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="703.2" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-28)">(TEXT)                 &# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-29)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-29)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="727.6" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-30)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="752" textLength="658.8" clip-path="url(#breeze-release-management-install-provider-packages-line-30)">[default: wheel]                [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-31)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-31)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="776.4" textLength="122" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-32)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="800.8" textLength="927.2" clip-path="url(#breeze-release-management-install-provider-packages-line-32)">(TEXT)                 &# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-33)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-33)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="825.2" textLength="122" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-34)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="849.6" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-34)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class= [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-35)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="475.8" y="874" textLength="866.2" clip-path="url(#breeze-release-management-install-provider-packages-line-35)">[default: constraints-source-providers]            [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-36)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-36)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="898.4" textLength="122" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-37)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="922.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-37)">constraints URL). Can be 'default' in which case the de [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-38)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="947.2" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-38)">constraints-reference is used.            [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-39)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="971.6" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-39)">(TEXT)                 &# [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-40)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-40)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="996" textLength="122" clip- [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-41)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-41)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1020.4" textLength="4 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-42)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1044.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-42)">install from PyPI), `none`, `wheel`, or `sdist` to install from [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-43)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-43)">or VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/) [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-44)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1093.6" textLength="97.6" clip-path="url(#breeze-release-management-install-provider-packages-line-44)">Implies </text><text class="breeze-release-management-install-provider-packages-r4" x="573.4" y="1093.6" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-45)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="475.8" y="1118" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-45)">(none | wheel | sdist | <airflow_version>)      [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-46)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-46)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1142.4" textLength="4 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-47)">│</text><text class="breeze-release-management-install-provider-packages-r1" x="475.8" y="1166.8" textLength="963.8" clip-path="url(#breeze-release-management-install-provider-packages-line-47)">folder when entering breeze.            [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1191.2" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="1191.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-l [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1215.6" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-49)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="1215.6" textLength="219.6" clip-path="url(#breeze-release-management-install-provider-packages-line-49)"> Parallel running </text><text class="breeze-release-management-install-provider-packages-r5" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-50)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-50)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1240" textLength="48.8" c [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-51)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-51)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1264.4" textLength="1 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-52)">│</text><text class="breeze-release-management-install-provider-packages-r7" x="378.2" y="1288.8" textLength="915" clip-path="url(#breeze-release-management-install-provider-packages-line-52)">(INTEGER RANGE)                [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-53)">│</text><text class="breeze-release-management-install-provider-packages-r5" x="378.2" y="1313.2" textLength="915" clip-path="url(#breeze-release-management-install-provider-packages-line-53)">[default: 4; 1<=x<=8]            & [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-54)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-54)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1337.6" textLength="6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-55)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-55)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1362" textLength="97.6" c [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-56)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-56)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1386.4" textLength="7 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1410.8" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="1410.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-l [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1435.2" textLength="24.4" clip-path="url(#breeze-release-management-install-provider-packages-line-58)">╭─</text><text class="breeze-release-management-install-provider-packages-r5" x="24.4" y="1435.2" textLength="195.2" clip-path="url(#breeze-release-management-install-provider-packages-line-58)"> Common options </text><text class="breeze-release-management-install-provider-packages-r5" x [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-59)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-59)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1459.6" textLength="4 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-60)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-60)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1484" textLength="97.6" c [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-61)">│</text><text class="breeze-release-management-install-provider-packages-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-line-61)">-</text><text class="breeze-release-management-install-provider-packages-r4" x="36.6" y="1508.4" textLength="6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" x="0" y="1532.8" textLength="1464" clip-path="url(#breeze-release-management-install-provider-packages-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-install-provider-packages-r1" x="1464" y="1532.8" textLength="12.2" clip-path="url(#breeze-release-management-install-provider-packages-l [...]
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_release-management_install-provider-packages.txt b/dev/breeze/doc/images/output_release-management_install-provider-packages.txt
index cd480d68e4..0126dd0c7a 100644
--- a/dev/breeze/doc/images/output_release-management_install-provider-packages.txt
+++ b/dev/breeze/doc/images/output_release-management_install-provider-packages.txt
@@ -1 +1 @@
-aba68f434b87d954ad27f594031bb919
+5074c71f3f66e53ed0d5cb923a50663d
diff --git a/dev/breeze/doc/images/output_release-management_release-prod-images.svg b/dev/breeze/doc/images/output_release-management_release-prod-images.svg
index 5d958a3d3e..43999a87ec 100644
--- a/dev/breeze/doc/images/output_release-management_release-prod-images.svg
+++ b/dev/breeze/doc/images/output_release-management_release-prod-images.svg
@@ -157,7 +157,7 @@
</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-8)">│</text><text class="breeze-release-management-release-prod-images-r4" x="61" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-8)">-</text><text class="breeze-release-management-release-prod-images-r4" x="73.2" y="215.2" textLength="61" clip-path="url(#breeze-release-man [...]
</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-9)">│</text><text class="breeze-release-management-release-prod-images-r4" x="61" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-9)">-</text><text class="breeze-release-management-release-prod-images-r4" x="73.2" y="239.6" textLength="73.2" clip-path="url(#breeze-release-m [...]
</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-10)">│</text><text class="breeze-release-management-release-prod-images-r1" x="390.4" y="264" textLength="1049.2" clip-path="url(#breeze-release-management-release-prod-images-line-10)">all available python versions)               &# [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-11)">│</text><text class="breeze-release-management-release-prod-images-r7" x="390.4" y="288.4" textLength="1049.2" clip-path="url(#breeze-release-management-release-prod-images-line-11)">(3.8 | 3.9 | 3.10 | 3.11)              [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-11)">│</text><text class="breeze-release-management-release-prod-images-r7" x="390.4" y="288.4" textLength="1049.2" clip-path="url(#breeze-release-management-release-prod-images-line-11)">(3.8 | 3.9 | 3.10 | 3.11 | 3.12)          & [...]
</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-12)">│</text><text class="breeze-release-management-release-prod-images-r4" x="61" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-12)">-</text><text class="breeze-release-management-release-prod-images-r4" x="73.2" y="312.8" textLength="73.2" clip-path="url(#breeze-release [...]
</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-13)">│</text><text class="breeze-release-management-release-prod-images-r1" x="390.4" y="337.2" textLength="1049.2" clip-path="url(#breeze-release-management-release-prod-images-line-13)">built.                     & [...]
</text><text class="breeze-release-management-release-prod-images-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-release-prod-images-line-14)">│</text><text class="breeze-release-management-release-prod-images-r7" x="390.4" y="361.6" textLength="1049.2" clip-path="url(#breeze-release-management-release-prod-images-line-14)">(linux/amd64 | linux/arm64 | linux/amd64,linux/arm64)           [...]
diff --git a/dev/breeze/doc/images/output_release-management_release-prod-images.txt b/dev/breeze/doc/images/output_release-management_release-prod-images.txt
index 96ce03643f..234805fc79 100644
--- a/dev/breeze/doc/images/output_release-management_release-prod-images.txt
+++ b/dev/breeze/doc/images/output_release-management_release-prod-images.txt
@@ -1 +1 @@
-7df532d7f563185a27b49f18286d2572
+1543e401dd6e88b24479a08c2f6c8967
diff --git a/dev/breeze/doc/images/output_release-management_verify-provider-packages.svg b/dev/breeze/doc/images/output_release-management_verify-provider-packages.svg
index 71011b5580..48470ed57c 100644
--- a/dev/breeze/doc/images/output_release-management_verify-provider-packages.svg
+++ b/dev/breeze/doc/images/output_release-management_verify-provider-packages.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1343.1999999999998" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1367.6" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-release-management-verify-provider-packages-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1292.1999999999998" />
+ <rect x="0" y="0" width="1463.0" height="1316.6" />
</clipPath>
<clipPath id="breeze-release-management-verify-provider-packages-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -201,9 +201,12 @@
<clipPath id="breeze-release-management-verify-provider-packages-line-51">
<rect x="0" y="1245.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-release-management-verify-provider-packages-line-52">
+ <rect x="0" y="1270.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="1341.2" rx="8"/><text class="breeze-release-management-verify-provider-packages-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management verify-provider-packages</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1365.6" rx="8"/><text class="breeze-release-management-verify-provider-packages-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management 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"/>
@@ -219,53 +222,54 @@
</text><text class="breeze-release-management-verify-provider-packages-r1" x="12.2" y="93.2" textLength="854" clip-path="url(#breeze-release-management-verify-provider-packages-line-3)">Verifies if all provider code is following expectations for providers.</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-3)">
</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-4)">
</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-5)">╭─</text><text class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="142" textLength="353.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-5)"> Provider verification flags </text><text class="breeze-release-management-verify-provider-packages- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="166.4" textLength="85.4" clip- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="329.4" y="190.8" textLength="732" clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">[default: 3.8]                 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="215.2" textLength="73.2" clip- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="329.4" y="239.6" textLength="1110.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">selected).                  [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="329.4" y="264" textLength="1110.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">(selected | all | skip | remove)         & [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="329.4" y="288.4" textLength="1110.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">[default: selected]                [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="312.8" textLength="85.4" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="337.2" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="361.6" textLength="24.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">╭─</text><text class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="361.6" textLength="512.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)"> Installing packages after entering shell </text><text class="breeze-release-managem [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="386" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="386" textLength="97.6" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="410.4" textLength="902.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">(TEXT)                   [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="434.8" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="459.2" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class="bre [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="483.6" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">[default: constraints-source-providers]            [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="508" textLength="97.6" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="532.4" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">constraints URL).               &# [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="556.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">(TEXT)                   [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="581.2" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="605.6" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="630" textLength="97.6" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="475.8" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="488" y="654.4" textLength="48.8" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="678.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">(TEXT)                   [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="703.2" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="727.6" textLength="658.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">[default: wheel]                [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="752" textLength="122" clip-path= [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="776.4" textLength="927.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">(TEXT)                   [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-32)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-32)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="800.8" textLength="122" clip [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-33)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="825.2" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-33)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class="bre [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-34)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="849.6" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-34)">[default: constraints-source-providers]            [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-35)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-35)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="874" textLength="122" clip-path= [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-36)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="898.4" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-36)">constraints URL). Can be 'default' in which case the defaul [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-37)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="922.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-37)">constraints-reference is used.            &# [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-38)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="947.2" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-38)">(TEXT)                   [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-39)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-39)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="971.6" textLength="122" clip [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-40)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-40)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="996" textLength="48.8" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-41)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1020.4" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-41)">install from PyPI), `none`, `wheel`, or `sdist` to install from [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-42)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1044.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-42)">or VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/).</t [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-43)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1069.2" textLength="97.6" clip-path="url(#breeze-release-management-verify-provider-packages-line-43)">Implies </text><text class="breeze-release-management-verify-provider-packages-r4" x="573.4" y="1069.2" text [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-44)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="1093.6" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-44)">(none | wheel | sdist | <airflow_version>)      [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-45)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-45)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1118" textLength="48.8" clip-p [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-46)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1142.4" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-46)">folder when entering breeze.            [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1166.8" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="1166.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-47)">
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1191.2" textLength="24.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-48)">╭─</text><text class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="1191.2" textLength="195.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-48)"> Common options </text><text class="breeze-release-management-verify-provider-packages-r5" x="219 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-49)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-49)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1215.6" textLength="48.8" [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-50)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-50)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1240" textLength="97.6" clip-p [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-51)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-51)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1264.4" textLength="61" cl [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1288.8" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-52)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="1288.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-52)">
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="166.4" textLength="85.4" clip- [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="329.4" y="190.8" textLength="732" clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)      &# [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="329.4" y="215.2" textLength="732" clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">[default: 3.8]                 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="239.6" textLength="73.2" clip- [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="329.4" y="264" textLength="1110.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">selected).                   [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="329.4" y="288.4" textLength="1110.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">(selected | all | skip | remove)         [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="329.4" y="312.8" textLength="1110.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">[default: selected]                [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="337.2" textLength="85.4" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="386" textLength="24.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">╭─</text><text class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="386" textLength="512.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-15)"> Installing packages after entering shell </text><text class="breeze-release-management- [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="410.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="410.4" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="434.8" textLength="902.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">(TEXT)                   [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="459.2" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="483.6" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class="bre [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="508" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">[default: constraints-source-providers]            &# [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="532.4" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="556.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">constraints URL).               &# [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="581.2" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">(TEXT)                   [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="605.6" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="630" textLength="97.6" clip-path [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="654.4" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="475.8" y="678.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="488" y="678.8" textLength="48.8" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="703.2" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">(TEXT)                   [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="727.6" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="752" textLength="658.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">[default: wheel]                & [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="776.4" textLength="122" clip [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-32)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="800.8" textLength="927.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-32)">(TEXT)                   [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-33)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="825.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-33)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="825.2" textLength="122" clip [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-34)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="849.6" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-34)">(constraints-source-providers | constraints | constraints-no-providers)</text><text class="bre [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-35)">│</text><text class="breeze-release-management-verify-provider-packages-r5" x="475.8" y="874" textLength="866.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-35)">[default: constraints-source-providers]            &# [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-36)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-36)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="898.4" textLength="122" clip [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-37)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="922.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-37)">constraints URL). Can be 'default' in which case the defaul [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-38)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="947.2" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-38)">constraints-reference is used.            &# [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-39)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="971.6" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-39)">(TEXT)                   [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-40)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-40)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="996" textLength="122" clip-path= [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-41)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-41)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1020.4" textLength="48.8" [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-42)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1044.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-42)">install from PyPI), `none`, `wheel`, or `sdist` to install from [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-43)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1069.2" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-43)">or VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/).</t [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-44)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1093.6" textLength="97.6" clip-path="url(#breeze-release-management-verify-provider-packages-line-44)">Implies </text><text class="breeze-release-management-verify-provider-packages-r4" x="573.4" y="1093.6" text [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-45)">│</text><text class="breeze-release-management-verify-provider-packages-r7" x="475.8" y="1118" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-45)">(none | wheel | sdist | <airflow_version>)      &# [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-46)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-46)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1142.4" textLength="48.8" [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-47)">│</text><text class="breeze-release-management-verify-provider-packages-r1" x="475.8" y="1166.8" textLength="963.8" clip-path="url(#breeze-release-management-verify-provider-packages-line-47)">folder when entering breeze.            [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1191.2" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="1191.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-48)">
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1215.6" textLength="24.4" clip-path="url(#breeze-release-management-verify-provider-packages-line-49)">╭─</text><text class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="1215.6" textLength="195.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-49)"> Common options </text><text class="breeze-release-management-verify-provider-packages-r5" x="219 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-50)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-50)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1240" textLength="48.8" clip-p [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-51)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-51)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1264.4" textLength="97.6" [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-52)">│</text><text class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-52)">-</text><text class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="1288.8" textLength="61" cl [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" x="0" y="1313.2" textLength="1464" clip-path="url(#breeze-release-management-verify-provider-packages-line-53)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-verify-provider-packages-r1" x="1464" y="1313.2" textLength="12.2" clip-path="url(#breeze-release-management-verify-provider-packages-line-53)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt b/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt
index 9ea71c96db..6c5372caed 100644
--- a/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt
+++ b/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt
@@ -1 +1 @@
-2d128022c661ad702c6236dd75dd8531
+d8552dfdc53d1e8312e79e2d532c1cd7
diff --git a/dev/breeze/doc/images/output_sbom_build-all-airflow-images.svg b/dev/breeze/doc/images/output_sbom_build-all-airflow-images.svg
index 76e5648299..3bef68d4e7 100644
--- a/dev/breeze/doc/images/output_sbom_build-all-airflow-images.svg
+++ b/dev/breeze/doc/images/output_sbom_build-all-airflow-images.svg
@@ -133,7 +133,7 @@
</text><text class="breeze-sbom-build-all-airflow-images-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-4)">
</text><text class="breeze-sbom-build-all-airflow-images-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-sbom-build-all-airflow-images-line-5)">╭─</text><text class="breeze-sbom-build-all-airflow-images-r5" x="24.4" y="142" textLength="427" clip-path="url(#breeze-sbom-build-all-airflow-images-line-5)"> Generate all airflow images flags </text><text class="breeze-sbom-build-all-airflow-images-r5" x="451.4" y="142" textLength="988.2" clip-path="url( [...]
</text><text class="breeze-sbom-build-all-airflow-images-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-6)">│</text><text class="breeze-sbom-build-all-airflow-images-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-6)">-</text><text class="breeze-sbom-build-all-airflow-images-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-sbom-build-all-airflow-images-line-6)">-python</text [...]
-</text><text class="breeze-sbom-build-all-airflow-images-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-7)">│</text><text class="breeze-sbom-build-all-airflow-images-r6" x="170.8" y="190.8" textLength="976" clip-path="url(#breeze-sbom-build-all-airflow-images-line-7)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11)               [...]
+</text><text class="breeze-sbom-build-all-airflow-images-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-7)">│</text><text class="breeze-sbom-build-all-airflow-images-r6" x="170.8" y="190.8" textLength="976" clip-path="url(#breeze-sbom-build-all-airflow-images-line-7)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12)            [...]
</text><text class="breeze-sbom-build-all-airflow-images-r5" x="0" y="215.2" textLength="1464" clip-path="url(#breeze-sbom-build-all-airflow-images-line-8)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-sbom-build-all-airflow-images-r1" x="1464" y="215.2" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-8)">
</text><text class="breeze-sbom-build-all-airflow-images-r5" x="0" y="239.6" textLength="24.4" clip-path="url(#breeze-sbom-build-all-airflow-images-line-9)">╭─</text><text class="breeze-sbom-build-all-airflow-images-r5" x="24.4" y="239.6" textLength="219.6" clip-path="url(#breeze-sbom-build-all-airflow-images-line-9)"> Parallel running </text><text class="breeze-sbom-build-all-airflow-images-r5" x="244" y="239.6" textLength="1195.6" clip-path="url(#breeze-sbom-build-all-ai [...]
</text><text class="breeze-sbom-build-all-airflow-images-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-10)">│</text><text class="breeze-sbom-build-all-airflow-images-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-sbom-build-all-airflow-images-line-10)">-</text><text class="breeze-sbom-build-all-airflow-images-r4" x="36.6" y="264" textLength="48.8" clip-path="url(#breeze-sbom-build-all-airflow-images-line-10)">-run</text><text [...]
diff --git a/dev/breeze/doc/images/output_sbom_build-all-airflow-images.txt b/dev/breeze/doc/images/output_sbom_build-all-airflow-images.txt
index dbf59286ff..88751cb912 100644
--- a/dev/breeze/doc/images/output_sbom_build-all-airflow-images.txt
+++ b/dev/breeze/doc/images/output_sbom_build-all-airflow-images.txt
@@ -1 +1 @@
-32f8acade299c2b112e986bae99846db
+fbf15f8f21cdda9f815a801d9e266b61
diff --git a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg
index dbc947ad26..2d0ad30ead 100644
--- a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg
+++ b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg
@@ -181,7 +181,7 @@
</text><text class="breeze-sbom-generate-providers-requirements-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-4)">
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-sbom-generate-providers-requirements-line-5)">╭─</text><text class="breeze-sbom-generate-providers-requirements-r5" x="24.4" y="142" textLength="463.6" clip-path="url(#breeze-sbom-generate-providers-requirements-line-5)"> Generate provider requirements flags </text><text class="breeze-sbom-generate-providers-requirements-r5" x="488" y="142" t [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-6)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-6)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-sbom-generate-pro [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-7)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="190.8" textLength="976" clip-path="url(#breeze-sbom-generate-providers-requirements-line-7)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11)           [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-7)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="190.8" textLength="976" clip-path="url(#breeze-sbom-generate-providers-requirements-line-7)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12)        [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-8)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-8)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="215.2" textLength="109.8" clip-path="url(#breeze-sbom-generate-pr [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="239.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">(airbyte | alibaba | amazon | apache.beam | apache.cassandra | apache.drill | apach [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="264" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">apache.flink | apache.hdfs | apache.hive | apache.impala | apache.kafka | apache.kylin |&# [...]
diff --git a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt
index 56eadeec24..b7e22d5eb2 100644
--- a/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt
+++ b/dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt
@@ -1 +1 @@
-84d46887b3f47bc209014ec5cb26406c
+f915c5be6e506b2f10efba88916cde57
diff --git a/dev/breeze/doc/images/output_sbom_update-sbom-information.svg b/dev/breeze/doc/images/output_sbom_update-sbom-information.svg
index 802927e439..7e5e5fcacf 100644
--- a/dev/breeze/doc/images/output_sbom_update-sbom-information.svg
+++ b/dev/breeze/doc/images/output_sbom_update-sbom-information.svg
@@ -170,7 +170,7 @@
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-9)">│</text><text class="breeze-sbom-update-sbom-information-r7" x="488" y="239.6" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-9)">(TEXT)                             [...]
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-10)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="61" y="264" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-10)">-</text><text class="breeze-sbom-update-sbom-information-r4" x="73.2" y="264" textLength="85.4" clip-path="url(#breeze-sbom-update-sbom-information-line-10)">-python</text><text clas [...]
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-11)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="288.4" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-11)">versions)                             [...]
-</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-12)">│</text><text class="breeze-sbom-update-sbom-information-r7" x="488" y="312.8" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-12)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11)                [...]
+</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-12)">│</text><text class="breeze-sbom-update-sbom-information-r7" x="488" y="312.8" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-12)">(3.6 | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | 3.12)             [...]
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-13)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="61" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-13)">-</text><text class="breeze-sbom-update-sbom-information-r4" x="73.2" y="337.2" textLength="97.6" clip-path="url(#breeze-sbom-update-sbom-information-line-13)">-include</text><te [...]
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-14)">│</text><text class="breeze-sbom-update-sbom-information-r4" x="61" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-14)">-</text><text class="breeze-sbom-update-sbom-information-r4" x="73.2" y="361.6" textLength="97.6" clip-path="url(#breeze-sbom-update-sbom-information-line-14)">-package</text><te [...]
</text><text class="breeze-sbom-update-sbom-information-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-sbom-update-sbom-information-line-15)">│</text><text class="breeze-sbom-update-sbom-information-r1" x="488" y="386" textLength="951.6" clip-path="url(#breeze-sbom-update-sbom-information-line-15)">`apache-airflow-providers` to consider all the providers.                &# [...]
diff --git a/dev/breeze/doc/images/output_sbom_update-sbom-information.txt b/dev/breeze/doc/images/output_sbom_update-sbom-information.txt
index e31da63f35..33bdc4a9bc 100644
--- a/dev/breeze/doc/images/output_sbom_update-sbom-information.txt
+++ b/dev/breeze/doc/images/output_sbom_update-sbom-information.txt
@@ -1 +1 @@
-e49cf33ae18ab7d16af7ef3b73035a10
+fb9b765666346217c8c3d2248952269b
diff --git a/dev/breeze/doc/images/output_setup_config.svg b/dev/breeze/doc/images/output_setup_config.svg
index 933c626444..862cc49edf 100644
--- a/dev/breeze/doc/images/output_setup_config.svg
+++ b/dev/breeze/doc/images/output_setup_config.svg
@@ -130,7 +130,7 @@
</text><text class="breeze-setup-config-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-4)">
</text><text class="breeze-setup-config-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-setup-config-line-5)">╭─</text><text class="breeze-setup-config-r5" x="24.4" y="142" textLength="170.8" clip-path="url(#breeze-setup-config-line-5)"> Config flags </text><text class="breeze-setup-config-r5" x="195.2" y="142" textLength="1244.4" clip-path="url(#breeze-setup-config-line-5)">──────────────────────────────────────────────────────────────────────────────────────── [...]
</text><text class="breeze-setup-config-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-6)">│</text><text class="breeze-setup-config-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-setup-config-line-6)">-</text><text class="breeze-setup-config-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-setup-config-line-6)">-python</text><text class="breeze-setup-config-r6" x="390.4" y="166.4" textLength="24.4" clip-path="url(#breeze-set [...]
-</text><text class="breeze-setup-config-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-7)">│</text><text class="breeze-setup-config-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#breeze-setup-config-line-7)">(>3.8< | 3.9 | 3.10 | 3.11)                               [...]
+</text><text class="breeze-setup-config-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-setup-config-line-7)">│</text><text class="breeze-setup-config-r7" x="475.8" y="190.8" textLength="732" clip-path="url(#breeze-setup-config-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text [...]
</text><text class="breeze-setup-config-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-setup-config-line-8)">│</text><text class="breeze-setup-config-r5" x="475.8" y="215.2" textLength="732" clip-path="url(#breeze-setup-config-line-8)">[default: 3.8]                                     & [...]
</text><text class="breeze-setup-config-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-9)">│</text><text class="breeze-setup-config-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-setup-config-line-9)">-</text><text class="breeze-setup-config-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-setup-config-line-9)">-backend</text><text class="breeze-setup-config-r6" x="390.4" y="239.6" textLength="24.4" clip-path="url(#breeze-se [...]
</text><text class="breeze-setup-config-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-setup-config-line-10)">│</text><text class="breeze-setup-config-r1" x="475.8" y="264" textLength="963.8" clip-path="url(#breeze-setup-config-line-10)">configuration and no database and any attempts to connect to Airflow DB will   </text><text class="breeze-setup-config-r5" x="1451.8" y="264" textLength="12.2" clip-pa [...]
diff --git a/dev/breeze/doc/images/output_setup_config.txt b/dev/breeze/doc/images/output_setup_config.txt
index 2023adf97b..5681b109cc 100644
--- a/dev/breeze/doc/images/output_setup_config.txt
+++ b/dev/breeze/doc/images/output_setup_config.txt
@@ -1 +1 @@
-641efaa287c0e410a119d048b54b022a
+f59e1732fcaa9b00e19f763e2a25ae0f
diff --git a/dev/breeze/doc/images/output_shell.svg b/dev/breeze/doc/images/output_shell.svg
index ff0289a6c7..6354c251bb 100644
--- a/dev/breeze/doc/images/output_shell.svg
+++ b/dev/breeze/doc/images/output_shell.svg
@@ -427,7 +427,7 @@
</text><text class="breeze-shell-r1" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-shell-line-4)">
</text><text class="breeze-shell-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-shell-line-5)">╭─</text><text class="breeze-shell-r5" x="24.4" y="142" textLength="195.2" clip-path="url(#breeze-shell-line-5)"> Execution mode </text><text class="breeze-shell-r5" x="219.6" y="142" textLength="1220" clip-path="url(#breeze-shell-line-5)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="breeze-she [...]
</text><text class="breeze-shell-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-shell-line-6)">│</text><text class="breeze-shell-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-shell-line-6)">-</text><text class="breeze-shell-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-shell-line-6)">-python</text><text class="breeze-shell-r6" x="366" y="166.4" textLength="24.4" clip-path="url(#breeze-shell-line-6)">-p</text><text class="breeze-shell-r1" [...]
-</text><text class="breeze-shell-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-shell-line-7)">│</text><text class="breeze-shell-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#breeze-shell-line-7)">(>3.8< | 3.9 | 3.10 | 3.11)                                 </text><t [...]
+</text><text class="breeze-shell-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-shell-line-7)">│</text><text class="breeze-shell-r7" x="414.8" y="190.8" textLength="732" clip-path="url(#breeze-shell-line-7)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </text><text class="breeze-shell-r [...]
</text><text class="breeze-shell-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-shell-line-8)">│</text><text class="breeze-shell-r5" x="414.8" y="215.2" textLength="732" clip-path="url(#breeze-shell-line-8)">[default: 3.8]                                           [...]
</text><text class="breeze-shell-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-shell-line-9)">│</text><text class="breeze-shell-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-shell-line-9)">-</text><text class="breeze-shell-r4" x="36.6" y="239.6" textLength="146.4" clip-path="url(#breeze-shell-line-9)">-integration</text><text class="breeze-shell-r1" x="414.8" y="239.6" textLength="1024.8" clip-path="url(#breeze-shell-line-9)">Integration(s) to e [...]
</text><text class="breeze-shell-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-shell-line-10)">│</text><text class="breeze-shell-r7" x="414.8" y="264" textLength="1024.8" clip-path="url(#breeze-shell-line-10)">(all | all-testable | cassandra | celery | kafka | kerberos | mongo | openlineage | </text><text class="breeze-shell-r5" x="1451.8" y="264" textLength="12.2" clip-path="url(#breeze-shell-li [...]
diff --git a/dev/breeze/doc/images/output_shell.txt b/dev/breeze/doc/images/output_shell.txt
index ca43ac6ab7..0aac3edb13 100644
--- a/dev/breeze/doc/images/output_shell.txt
+++ b/dev/breeze/doc/images/output_shell.txt
@@ -1 +1 @@
-7658b53f007e54deb8da7c69edd878c3
+5c0ef1f5a583dcf145629eaa8cc8b0ae
diff --git a/dev/breeze/doc/images/output_start-airflow.svg b/dev/breeze/doc/images/output_start-airflow.svg
index 18922ae8f7..fb6cb6d8d1 100644
--- a/dev/breeze/doc/images/output_start-airflow.svg
+++ b/dev/breeze/doc/images/output_start-airflow.svg
@@ -383,7 +383,7 @@
</text><text class="breeze-start-airflow-r1" x="1464" y="142" textLength="12.2" clip-path="url(#breeze-start-airflow-line-5)">
</text><text class="breeze-start-airflow-r5" x="0" y="166.4" textLength="24.4" clip-path="url(#breeze-start-airflow-line-6)">╭─</text><text class="breeze-start-airflow-r5" x="24.4" y="166.4" textLength="195.2" clip-path="url(#breeze-start-airflow-line-6)"> Execution mode </text><text class="breeze-start-airflow-r5" x="219.6" y="166.4" textLength="1220" clip-path="url(#breeze-start-airflow-line-6)">──────────────────────────────────────────────────────────────────────────── [...]
</text><text class="breeze-start-airflow-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-7)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-start-airflow-line-7)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="190.8" textLength="85.4" clip-path="url(#breeze-start-airflow-line-7)">-python</text><text class="breeze-start-airflow-r6" x="366" y="190.8" textLength="24.4" clip-path="url(#breez [...]
-</text><text class="breeze-start-airflow-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-8)">│</text><text class="breeze-start-airflow-r7" x="414.8" y="215.2" textLength="732" clip-path="url(#breeze-start-airflow-line-8)">(>3.8< | 3.9 | 3.10 | 3.11)                             & [...]
+</text><text class="breeze-start-airflow-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-start-airflow-line-8)">│</text><text class="breeze-start-airflow-r7" x="414.8" y="215.2" textLength="732" clip-path="url(#breeze-start-airflow-line-8)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </ [...]
</text><text class="breeze-start-airflow-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-start-airflow-line-9)">│</text><text class="breeze-start-airflow-r5" x="414.8" y="239.6" textLength="732" clip-path="url(#breeze-start-airflow-line-9)">[default: 3.8]                                     [...]
</text><text class="breeze-start-airflow-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-start-airflow-line-10)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-start-airflow-line-10)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="264" textLength="109.8" clip-path="url(#breeze-start-airflow-line-10)">-platform</text><text class="breeze-start-airflow-r1" x="414.8" y="264" textLength="329.4" clip-path="url(#bree [...]
</text><text class="breeze-start-airflow-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-11)">│</text><text class="breeze-start-airflow-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-start-airflow-line-11)">-</text><text class="breeze-start-airflow-r4" x="36.6" y="288.4" textLength="146.4" clip-path="url(#breeze-start-airflow-line-11)">-integration</text><text class="breeze-start-airflow-r1" x="414.8" y="288.4" textLength="1024.8" clip-pat [...]
diff --git a/dev/breeze/doc/images/output_start-airflow.txt b/dev/breeze/doc/images/output_start-airflow.txt
index d8b5dd0f70..6fe4df06c3 100644
--- a/dev/breeze/doc/images/output_start-airflow.txt
+++ b/dev/breeze/doc/images/output_start-airflow.txt
@@ -1 +1 @@
-1664c1bda5204995062f50c4e97b087d
+99f969fe52d8735b20524bbab2f12c9b
diff --git a/dev/breeze/doc/images/output_testing_db-tests.svg b/dev/breeze/doc/images/output_testing_db-tests.svg
index 84d78fe979..a4bc3c875a 100644
--- a/dev/breeze/doc/images/output_testing_db-tests.svg
+++ b/dev/breeze/doc/images/output_testing_db-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1831.1999999999998" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1855.6" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-testing-db-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1780.1999999999998" />
+ <rect x="0" y="0" width="1463.0" height="1804.6" />
</clipPath>
<clipPath id="breeze-testing-db-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -261,9 +261,12 @@
<clipPath id="breeze-testing-db-tests-line-71">
<rect x="0" y="1733.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-db-tests-line-72">
+ <rect x="0" y="1758.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="1829.2" rx="8"/><text class="breeze-testing-db-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing db-tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1853.6" rx="8"/><text class="breeze-testing-db-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing db-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"/>
@@ -307,45 +310,46 @@
</text><text class="breeze-testing-db-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-31)">│</text><text class="breeze-testing-db-tests-r1" x="353.8" y="776.4" textLength="1085.8" clip-path="url(#breeze-testing-db-tests-line-31)">configuration and no database and any attempts to connect to Airflow DB will fail.       </text><text class="breeze-testi [...]
</text><text class="breeze-testing-db-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-32)">│</text><text class="breeze-testing-db-tests-r6" x="353.8" y="800.8" textLength="1085.8" clip-path="url(#breeze-testing-db-tests-line-32)">(>sqlite< | mysql | postgres | none)                          [...]
</text><text class="breeze-testing-db-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-33)">│</text><text class="breeze-testing-db-tests-r5" x="353.8" y="825.2" textLength="1085.8" clip-path="url(#breeze-testing-db-tests-line-33)">[default: sqlite]                                 & [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-34)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-34)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="849.6" textLength="85.4" clip-path="url(#breeze-testing-db-tests-line-34)">-python</text><text class="breeze-testing-db-tests-r7" x="305" y="849.6" textLength="24. [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-35)">│</text><text class="breeze-testing-db-tests-r5" x="353.8" y="874" textLength="732" clip-path="url(#breeze-testing-db-tests-line-35)">[default: 3.8]                                    [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-36)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-36)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="898.4" textLength="109.8" clip-path="url(#breeze-testing-db-tests-line-36)">-postgres</text><text class="breeze-testing-db-tests-r4" x="146.4" y="898.4" textLength [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-37)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-37)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="922.8" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-37)">-mysql</text><text class="breeze-testing-db-tests-r4" x="109.8" y="922.8" textLength="97 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-38)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-38)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="947.2" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-38)">-forward</text><text class="breeze-testing-db-tests-r4" x="134.2" y="947.2" textLength=" [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="971.6" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-39)">
-</text><text class="breeze-testing-db-tests-r5" x="0" y="996" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-40)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="996" textLength="439.2" clip-path="url(#breeze-testing-db-tests-line-40)"> Options for parallel test commands </text><text class="breeze-testing-db-tests-r5" x="463.6" y="996" textLength="976" clip-path="url(#breeze-testing-db-tests-line-40)">─────────────────────────── [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-41)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-41)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1020.4" textLength="146.4" clip-path="url(#breeze-testing-db-tests-line-41)">-parallelism</text><text class="breeze-testing-db-tests-r1" x="378.2" y="1020.4" tex [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-42)">│</text><text class="breeze-testing-db-tests-r6" x="378.2" y="1044.8" textLength="915" clip-path="url(#breeze-testing-db-tests-line-42)">(INTEGER RANGE)                                  [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-43)">│</text><text class="breeze-testing-db-tests-r5" x="378.2" y="1069.2" textLength="915" clip-path="url(#breeze-testing-db-tests-line-43)">[default: 4; 1<=x<=8]                                [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-44)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-44)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1093.6" textLength="61" clip-path="url(#breeze-testing-db-tests-line-44)">-skip</text><text class="breeze-testing-db-tests-r4" x="97.6" y="1093.6" textLength="97 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-45)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-45)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1118" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-45)">-debug</text><text class="breeze-testing-db-tests-r4" x="109.8" y="1118" textLength="122" c [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-46)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-46)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1142.4" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-46)">-include</text><text class="breeze-testing-db-tests-r4" x="134.2" y="1142.4" textLeng [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1166.8" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-47)">
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1191.2" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-48)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="1191.2" textLength="402.6" clip-path="url(#breeze-testing-db-tests-line-48)"> Advanced flag for tests command </text><text class="breeze-testing-db-tests-r5" x="427" y="1191.2" textLength="1012.6" clip-path="url(#breeze-testing-db-tests-line-48)">──────────────────── [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-49)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-49)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1215.6" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-49)">-image</text><text class="breeze-testing-db-tests-r4" x="109.8" y="1215.6" textLength [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-50)">│</text><text class="breeze-testing-db-tests-r6" x="414.8" y="1240" textLength="963.8" clip-path="url(#breeze-testing-db-tests-line-50)">(TEXT)                                    &# [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-51)">│</text><text class="breeze-testing-db-tests-r5" x="414.8" y="1264.4" textLength="963.8" clip-path="url(#breeze-testing-db-tests-line-51)">[default: latest]                                  [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-52)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-52)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1288.8" textLength="85.4" clip-path="url(#breeze-testing-db-tests-line-52)">-github</text><text class="breeze-testing-db-tests-r4" x="122" y="1288.8" textLength= [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-53)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-53)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1313.2" textLength="48.8" clip-path="url(#breeze-testing-db-tests-line-53)">-use</text><text class="breeze-testing-db-tests-r4" x="85.4" y="1313.2" textLength="1 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-54)">│</text><text class="breeze-testing-db-tests-r1" x="414.8" y="1337.6" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-54)">install from PyPI), `none`, `wheel`, or `sdist` to install from `dist` folder, or   </text><text class="breeze-testing-db-tests-r5" x="1451.8" y [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-55)">│</text><text class="breeze-testing-db-tests-r1" x="414.8" y="1362" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-55)">VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/). Implies</text><text class="breeze-testing-db-tests-r5" x="1451.8" y="1362" textLength="12.2" clip-path="url(#breeze- [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-56)">│</text><text class="breeze-testing-db-tests-r4" x="414.8" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-56)">-</text><text class="breeze-testing-db-tests-r4" x="427" y="1386.4" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-56)">-mount</text><text class="breeze-testing-db-tests-r4" x="500.2" y="1386.4" textLength [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-57)">│</text><text class="breeze-testing-db-tests-r6" x="414.8" y="1410.8" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-57)">(none | wheel | sdist | <airflow_version>)                        [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-58)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-58)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1435.2" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-58)">-mount</text><text class="breeze-testing-db-tests-r4" x="109.8" y="1435.2" textLength [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-59)">│</text><text class="breeze-testing-db-tests-r1" x="414.8" y="1459.6" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-59)">selected).                                    [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-60)">│</text><text class="breeze-testing-db-tests-r6" x="414.8" y="1484" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-60)">(selected | all | skip | remove)                            [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-61)">│</text><text class="breeze-testing-db-tests-r5" x="414.8" y="1508.4" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-61)">[default: selected]                                 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-62)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-62)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1532.8" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-62)">-upgrade</text><text class="breeze-testing-db-tests-r4" x="134.2" y="1532.8" textLeng [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-63)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-63)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1557.2" textLength="122" clip-path="url(#breeze-testing-db-tests-line-63)">-downgrade</text><text class="breeze-testing-db-tests-r4" x="158.6" y="1557.2" textLen [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-64)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-64)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1581.6" textLength="122" clip-path="url(#breeze-testing-db-tests-line-64)">-downgrade</text><text class="breeze-testing-db-tests-r4" x="158.6" y="1581.6" textLen [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-65)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1606" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-65)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1606" textLength="85.4" clip-path="url(#breeze-testing-db-tests-line-65)">-remove</text><text class="breeze-testing-db-tests-r4" x="122" y="1606" textLength="158.6" [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-66)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-66)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1630.4" textLength="61" clip-path="url(#breeze-testing-db-tests-line-66)">-skip</text><text class="breeze-testing-db-tests-r4" x="97.6" y="1630.4" textLength="24 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1654.8" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1654.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-67)">
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1679.2" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-68)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="1679.2" textLength="195.2" clip-path="url(#breeze-testing-db-tests-line-68)"> Common options </text><text class="breeze-testing-db-tests-r5" x="219.6" y="1679.2" textLength="1220" clip-path="url(#breeze-testing-db-tests-line-68)">──────────────────────────────────────────────────── [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-69)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-69)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1703.6" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-69)">-verbose</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1703.6" textLeng [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-70)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1728" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-70)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1728" textLength="48.8" clip-path="url(#breeze-testing-db-tests-line-70)">-dry</text><text class="breeze-testing-db-tests-r4" x="85.4" y="1728" textLength="48.8" cli [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-71)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-71)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1752.4" textLength="61" clip-path="url(#breeze-testing-db-tests-line-71)">-help</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1752.4" textLength="2 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1776.8" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-72)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1776.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-72)">
+</text><text class="breeze-testing-db-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-34)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-34)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="849.6" textLength="85.4" clip-path="url(#breeze-testing-db-tests-line-34)">-python</text><text class="breeze-testing-db-tests-r7" x="305" y="849.6" textLength="24. [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-35)">│</text><text class="breeze-testing-db-tests-r6" x="353.8" y="874" textLength="732" clip-path="url(#breeze-testing-db-tests-line-35)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                         [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-36)">│</text><text class="breeze-testing-db-tests-r5" x="353.8" y="898.4" textLength="732" clip-path="url(#breeze-testing-db-tests-line-36)">[default: 3.8]                                  & [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-37)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-37)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="922.8" textLength="109.8" clip-path="url(#breeze-testing-db-tests-line-37)">-postgres</text><text class="breeze-testing-db-tests-r4" x="146.4" y="922.8" textLength [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-38)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-38)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="947.2" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-38)">-mysql</text><text class="breeze-testing-db-tests-r4" x="109.8" y="947.2" textLength="97 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-39)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-39)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="971.6" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-39)">-forward</text><text class="breeze-testing-db-tests-r4" x="134.2" y="971.6" textLength=" [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="996" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-40)">
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1020.4" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-41)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="1020.4" textLength="439.2" clip-path="url(#breeze-testing-db-tests-line-41)"> Options for parallel test commands </text><text class="breeze-testing-db-tests-r5" x="463.6" y="1020.4" textLength="976" clip-path="url(#breeze-testing-db-tests-line-41)">────────────────── [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-42)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-42)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1044.8" textLength="146.4" clip-path="url(#breeze-testing-db-tests-line-42)">-parallelism</text><text class="breeze-testing-db-tests-r1" x="378.2" y="1044.8" tex [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-43)">│</text><text class="breeze-testing-db-tests-r6" x="378.2" y="1069.2" textLength="915" clip-path="url(#breeze-testing-db-tests-line-43)">(INTEGER RANGE)                                  [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-44)">│</text><text class="breeze-testing-db-tests-r5" x="378.2" y="1093.6" textLength="915" clip-path="url(#breeze-testing-db-tests-line-44)">[default: 4; 1<=x<=8]                                [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-45)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-45)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1118" textLength="61" clip-path="url(#breeze-testing-db-tests-line-45)">-skip</text><text class="breeze-testing-db-tests-r4" x="97.6" y="1118" textLength="97.6" clip [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-46)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-46)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1142.4" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-46)">-debug</text><text class="breeze-testing-db-tests-r4" x="109.8" y="1142.4" textLength [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-47)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-47)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1166.8" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-47)">-include</text><text class="breeze-testing-db-tests-r4" x="134.2" y="1166.8" textLeng [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1191.2" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-48)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-48)">
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1215.6" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-49)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="1215.6" textLength="402.6" clip-path="url(#breeze-testing-db-tests-line-49)"> Advanced flag for tests command </text><text class="breeze-testing-db-tests-r5" x="427" y="1215.6" textLength="1012.6" clip-path="url(#breeze-testing-db-tests-line-49)">──────────────────── [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-50)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1240" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-50)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1240" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-50)">-image</text><text class="breeze-testing-db-tests-r4" x="109.8" y="1240" textLength="48.8" [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-51)">│</text><text class="breeze-testing-db-tests-r6" x="414.8" y="1264.4" textLength="963.8" clip-path="url(#breeze-testing-db-tests-line-51)">(TEXT)                                    [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-52)">│</text><text class="breeze-testing-db-tests-r5" x="414.8" y="1288.8" textLength="963.8" clip-path="url(#breeze-testing-db-tests-line-52)">[default: latest]                                  [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-53)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-53)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1313.2" textLength="85.4" clip-path="url(#breeze-testing-db-tests-line-53)">-github</text><text class="breeze-testing-db-tests-r4" x="122" y="1313.2" textLength= [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-54)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-54)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1337.6" textLength="48.8" clip-path="url(#breeze-testing-db-tests-line-54)">-use</text><text class="breeze-testing-db-tests-r4" x="85.4" y="1337.6" textLength="1 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-55)">│</text><text class="breeze-testing-db-tests-r1" x="414.8" y="1362" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-55)">install from PyPI), `none`, `wheel`, or `sdist` to install from `dist` folder, or   </text><text class="breeze-testing-db-tests-r5" x="1451.8" y="13 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-56)">│</text><text class="breeze-testing-db-tests-r1" x="414.8" y="1386.4" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-56)">VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/). Implies</text><text class="breeze-testing-db-tests-r5" x="1451.8" y="1386.4" textLength="12.2" clip-path="url(#b [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-57)">│</text><text class="breeze-testing-db-tests-r4" x="414.8" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-57)">-</text><text class="breeze-testing-db-tests-r4" x="427" y="1410.8" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-57)">-mount</text><text class="breeze-testing-db-tests-r4" x="500.2" y="1410.8" textLength [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-58)">│</text><text class="breeze-testing-db-tests-r6" x="414.8" y="1435.2" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-58)">(none | wheel | sdist | <airflow_version>)                        [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-59)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-59)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1459.6" textLength="73.2" clip-path="url(#breeze-testing-db-tests-line-59)">-mount</text><text class="breeze-testing-db-tests-r4" x="109.8" y="1459.6" textLength [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-60)">│</text><text class="breeze-testing-db-tests-r1" x="414.8" y="1484" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-60)">selected).                                    [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-61)">│</text><text class="breeze-testing-db-tests-r6" x="414.8" y="1508.4" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-61)">(selected | all | skip | remove)                          & [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-62)">│</text><text class="breeze-testing-db-tests-r5" x="414.8" y="1532.8" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-62)">[default: selected]                                 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-63)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-63)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1557.2" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-63)">-upgrade</text><text class="breeze-testing-db-tests-r4" x="134.2" y="1557.2" textLeng [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-64)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-64)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1581.6" textLength="122" clip-path="url(#breeze-testing-db-tests-line-64)">-downgrade</text><text class="breeze-testing-db-tests-r4" x="158.6" y="1581.6" textLen [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-65)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1606" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-65)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1606" textLength="122" clip-path="url(#breeze-testing-db-tests-line-65)">-downgrade</text><text class="breeze-testing-db-tests-r4" x="158.6" y="1606" textLength="109 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-66)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-66)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1630.4" textLength="85.4" clip-path="url(#breeze-testing-db-tests-line-66)">-remove</text><text class="breeze-testing-db-tests-r4" x="122" y="1630.4" textLength= [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1654.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-67)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-67)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1654.8" textLength="61" clip-path="url(#breeze-testing-db-tests-line-67)">-skip</text><text class="breeze-testing-db-tests-r4" x="97.6" y="1654.8" textLength="24 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1679.2" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-68)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1679.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-68)">
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1703.6" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-69)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="1703.6" textLength="195.2" clip-path="url(#breeze-testing-db-tests-line-69)"> Common options </text><text class="breeze-testing-db-tests-r5" x="219.6" y="1703.6" textLength="1220" clip-path="url(#breeze-testing-db-tests-line-69)">──────────────────────────────────────────────────── [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-70)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1728" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-70)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1728" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-70)">-verbose</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1728" textLength="24.4 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-71)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-71)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1752.4" textLength="48.8" clip-path="url(#breeze-testing-db-tests-line-71)">-dry</text><text class="breeze-testing-db-tests-r4" x="85.4" y="1752.4" textLength="4 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1776.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-72)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-72)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1776.8" textLength="61" clip-path="url(#breeze-testing-db-tests-line-72)">-help</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1776.8" textLength="2 [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1801.2" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-73)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1801.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-73)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_testing_db-tests.txt b/dev/breeze/doc/images/output_testing_db-tests.txt
index 4261903509..c5980e5128 100644
--- a/dev/breeze/doc/images/output_testing_db-tests.txt
+++ b/dev/breeze/doc/images/output_testing_db-tests.txt
@@ -1 +1 @@
-84a01e74d1bf3acee4870bbe41bbbae5
+60f0be71d0e15086b8afab814235b0f5
diff --git a/dev/breeze/doc/images/output_testing_docker-compose-tests.svg b/dev/breeze/doc/images/output_testing_docker-compose-tests.svg
index ee0fa7fbba..dde6e12967 100644
--- a/dev/breeze/doc/images/output_testing_docker-compose-tests.svg
+++ b/dev/breeze/doc/images/output_testing_docker-compose-tests.svg
@@ -131,7 +131,7 @@
</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-8)">│</text><text class="breeze-testing-docker-compose-tests-r7" x="463.6" y="215.2" textLength="963.8" clip-path="url(#breeze-testing-docker-compose-tests-line-8)">(TEXT)                            &# [...]
</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-9)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="463.6" y="239.6" textLength="963.8" clip-path="url(#breeze-testing-docker-compose-tests-line-9)">[default: latest]                          [...]
</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="264" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="264" textLength="85.4" clip-path="url(#breeze-testing-docker-compose-tests-line-10)">-python</text><text cl [...]
-</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">│</text><text class="breeze-testing-docker-compose-tests-r7" x="463.6" y="288.4" textLength="732" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">(>3.8< | 3.9 | 3.10 | 3.11)                    [...]
+</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">│</text><text class="breeze-testing-docker-compose-tests-r7" x="463.6" y="288.4" textLength="732" clip-path="url(#breeze-testing-docker-compose-tests-line-11)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                 [...]
</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-12)">│</text><text class="breeze-testing-docker-compose-tests-r5" x="463.6" y="312.8" textLength="732" clip-path="url(#breeze-testing-docker-compose-tests-line-12)">[default: 3.8]                          & [...]
</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="337.2" textLength="61" clip-path="url(#breeze-testing-docker-compose-tests-line-13)">-skip</text><text [...]
</text><text class="breeze-testing-docker-compose-tests-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">│</text><text class="breeze-testing-docker-compose-tests-r4" x="24.4" y="361.6" textLength="12.2" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-</text><text class="breeze-testing-docker-compose-tests-r4" x="36.6" y="361.6" textLength="85.4" clip-path="url(#breeze-testing-docker-compose-tests-line-14)">-github</text><t [...]
diff --git a/dev/breeze/doc/images/output_testing_docker-compose-tests.txt b/dev/breeze/doc/images/output_testing_docker-compose-tests.txt
index 9c1ea2f222..4261d7d7af 100644
--- a/dev/breeze/doc/images/output_testing_docker-compose-tests.txt
+++ b/dev/breeze/doc/images/output_testing_docker-compose-tests.txt
@@ -1 +1 @@
-fd154a058082fcfda12eb877a9a89338
+5b7689bb2cd766a1ba08b52fa70af9d1
diff --git a/dev/breeze/doc/images/output_testing_integration-tests.svg b/dev/breeze/doc/images/output_testing_integration-tests.svg
index 35beec897b..b6645f1196 100644
--- a/dev/breeze/doc/images/output_testing_integration-tests.svg
+++ b/dev/breeze/doc/images/output_testing_integration-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1074.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1099.2" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-testing-integration-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1023.8" />
+ <rect x="0" y="0" width="1463.0" height="1048.2" />
</clipPath>
<clipPath id="breeze-testing-integration-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -168,9 +168,12 @@
<clipPath id="breeze-testing-integration-tests-line-40">
<rect x="0" y="977.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-integration-tests-line-41">
+ <rect x="0" y="1001.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="1072.8" rx="8"/><text class="breeze-testing-integration-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing integration-tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1097.2" rx="8"/><text class="breeze-testing-integration-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing integration-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"/>
@@ -202,26 +205,27 @@
</text><text class="breeze-testing-integration-tests-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-19)">│</text><text class="breeze-testing-integration-tests-r1" x="353.8" y="483.6" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-19)">configuration and no database and any attempts to connect to Airflow DB will fail.      &# [...]
</text><text class="breeze-testing-integration-tests-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-20)">│</text><text class="breeze-testing-integration-tests-r6" x="353.8" y="508" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-20)">(>sqlite< | mysql | postgres | none)                    [...]
</text><text class="breeze-testing-integration-tests-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-21)">│</text><text class="breeze-testing-integration-tests-r5" x="353.8" y="532.4" textLength="1085.8" clip-path="url(#breeze-testing-integration-tests-line-21)">[default: sqlite]                           & [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-22)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-22)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="556.8" textLength="85.4" clip-path="url(#breeze-testing-integration-tests-line-22)">-python</text><text class="breeze- [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-23)">│</text><text class="breeze-testing-integration-tests-r5" x="353.8" y="581.2" textLength="732" clip-path="url(#breeze-testing-integration-tests-line-23)">[default: 3.8]                            & [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-24)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-24)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="605.6" textLength="109.8" clip-path="url(#breeze-testing-integration-tests-line-24)">-postgres</text><text class="bree [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-25)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-25)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="630" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-25)">-mysql</text><text class="breeze-testing [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-26)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-26)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="654.4" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-26)">-forward</text><text class="breeze [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r1" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-27)">
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="703.2" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-28)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="703.2" textLength="549" clip-path="url(#breeze-testing-integration-tests-line-28)"> Advanced flag for integration tests command </text><text class="breeze-testing-integration-tests-r5" x="573.4" y="703.2" textLength="866.2" clip-path="u [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-29)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-29)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="727.6" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-29)">-image</text><text class="breeze-t [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-30)">│</text><text class="breeze-testing-integration-tests-r5" x="329.4" y="752" textLength="963.8" clip-path="url(#breeze-testing-integration-tests-line-30)">[default: latest]                             [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-31)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-31)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="776.4" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-31)">-mount</text><text class="breeze-t [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-32)">│</text><text class="breeze-testing-integration-tests-r1" x="329.4" y="800.8" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-32)">selected).                             & [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-33)">│</text><text class="breeze-testing-integration-tests-r6" x="329.4" y="825.2" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-33)">(selected | all | skip | remove)                     [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-34)">│</text><text class="breeze-testing-integration-tests-r5" x="329.4" y="849.6" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-34)">[default: selected]                            [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-35)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-35)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="874" textLength="85.4" clip-path="url(#breeze-testing-integration-tests-line-35)">-github</text><text class="breeze-testin [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="898.4" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-36)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r1" x="1464" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-36)">
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="922.8" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-37)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="922.8" textLength="195.2" clip-path="url(#breeze-testing-integration-tests-line-37)"> Common options </text><text class="breeze-testing-integration-tests-r5" x="219.6" y="922.8" textLength="1220" clip-path="url(#breeze-testing-integration-tests-line-37)">─ [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-38)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-38)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="947.2" textLength="48.8" clip-path="url(#breeze-testing-integration-tests-line-38)">-dry</text><text class="breeze-tes [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-39)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-39)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="971.6" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-39)">-verbose</text><text class="breeze [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-40)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-40)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="996" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-40)">-help</text><text class="breeze-testing-in [...]
-</text><text class="breeze-testing-integration-tests-r5" x="0" y="1020.4" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r1" x="1464" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-41)">
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-22)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="556.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-22)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="556.8" textLength="85.4" clip-path="url(#breeze-testing-integration-tests-line-22)">-python</text><text class="breeze- [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-23)">│</text><text class="breeze-testing-integration-tests-r6" x="353.8" y="581.2" textLength="732" clip-path="url(#breeze-testing-integration-tests-line-23)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                   [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-24)">│</text><text class="breeze-testing-integration-tests-r5" x="353.8" y="605.6" textLength="732" clip-path="url(#breeze-testing-integration-tests-line-24)">[default: 3.8]                            & [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="630" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-25)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="630" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-25)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="630" textLength="109.8" clip-path="url(#breeze-testing-integration-tests-line-25)">-postgres</text><text class="breeze-tes [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-26)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-26)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="654.4" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-26)">-mysql</text><text class="breeze-t [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-27)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-27)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="678.8" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-27)">-forward</text><text class="breeze [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="703.2" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r1" x="1464" y="703.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-28)">
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="727.6" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-29)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="727.6" textLength="549" clip-path="url(#breeze-testing-integration-tests-line-29)"> Advanced flag for integration tests command </text><text class="breeze-testing-integration-tests-r5" x="573.4" y="727.6" textLength="866.2" clip-path="u [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-30)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-30)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="752" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-30)">-image</text><text class="breeze-testing [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-31)">│</text><text class="breeze-testing-integration-tests-r5" x="329.4" y="776.4" textLength="963.8" clip-path="url(#breeze-testing-integration-tests-line-31)">[default: latest]                           &# [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-32)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-32)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="800.8" textLength="73.2" clip-path="url(#breeze-testing-integration-tests-line-32)">-mount</text><text class="breeze-t [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-33)">│</text><text class="breeze-testing-integration-tests-r1" x="329.4" y="825.2" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-33)">selected).                             & [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-34)">│</text><text class="breeze-testing-integration-tests-r6" x="329.4" y="849.6" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-34)">(selected | all | skip | remove)                     [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-35)">│</text><text class="breeze-testing-integration-tests-r5" x="329.4" y="874" textLength="1110.2" clip-path="url(#breeze-testing-integration-tests-line-35)">[default: selected]                            [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-36)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-36)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="898.4" textLength="85.4" clip-path="url(#breeze-testing-integration-tests-line-36)">-github</text><text class="breeze- [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="922.8" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-37)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r1" x="1464" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-37)">
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="947.2" textLength="24.4" clip-path="url(#breeze-testing-integration-tests-line-38)">╭─</text><text class="breeze-testing-integration-tests-r5" x="24.4" y="947.2" textLength="195.2" clip-path="url(#breeze-testing-integration-tests-line-38)"> Common options </text><text class="breeze-testing-integration-tests-r5" x="219.6" y="947.2" textLength="1220" clip-path="url(#breeze-testing-integration-tests-line-38)">─ [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-39)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-39)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="971.6" textLength="48.8" clip-path="url(#breeze-testing-integration-tests-line-39)">-dry</text><text class="breeze-tes [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-40)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-40)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="996" textLength="97.6" clip-path="url(#breeze-testing-integration-tests-line-40)">-verbose</text><text class="breeze-testi [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-41)">│</text><text class="breeze-testing-integration-tests-r4" x="24.4" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-41)">-</text><text class="breeze-testing-integration-tests-r4" x="36.6" y="1020.4" textLength="61" clip-path="url(#breeze-testing-integration-tests-line-41)">-help</text><text class="breeze-t [...]
+</text><text class="breeze-testing-integration-tests-r5" x="0" y="1044.8" textLength="1464" clip-path="url(#breeze-testing-integration-tests-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-integration-tests-r1" x="1464" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-integration-tests-line-42)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_testing_integration-tests.txt b/dev/breeze/doc/images/output_testing_integration-tests.txt
index 2270869eb9..215f7163da 100644
--- a/dev/breeze/doc/images/output_testing_integration-tests.txt
+++ b/dev/breeze/doc/images/output_testing_integration-tests.txt
@@ -1 +1 @@
-ae82cfad12e55c5f0f847234992d3877
+ad9510617d80ed6c047411ee7968483b
diff --git a/dev/breeze/doc/images/output_testing_non-db-tests.svg b/dev/breeze/doc/images/output_testing_non-db-tests.svg
index 3d64e0989c..ceaa02eecc 100644
--- a/dev/breeze/doc/images/output_testing_non-db-tests.svg
+++ b/dev/breeze/doc/images/output_testing_non-db-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1660.3999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1684.8" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-testing-non-db-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1609.3999999999999" />
+ <rect x="0" y="0" width="1463.0" height="1633.8" />
</clipPath>
<clipPath id="breeze-testing-non-db-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -240,9 +240,12 @@
<clipPath id="breeze-testing-non-db-tests-line-64">
<rect x="0" y="1563.1" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-non-db-tests-line-65">
+ <rect x="0" y="1587.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="1658.4" rx="8"/><text class="breeze-testing-non-db-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing non-db-tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1682.8" rx="8"/><text class="breeze-testing-non-db-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing non-db-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"/>
@@ -281,43 +284,44 @@
</text><text class="breeze-testing-non-db-tests-r5" x="0" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-26)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="654.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-26)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="654.4" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-26)">-skip</text><text class="breeze-testing-non-db-tests-r4" x="97.6" [...]
</text><text class="breeze-testing-non-db-tests-r5" x="0" y="678.8" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="678.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-27)">
</text><text class="breeze-testing-non-db-tests-r5" x="0" y="703.2" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-28)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="703.2" textLength="219.6" clip-path="url(#breeze-testing-non-db-tests-line-28)"> Test environment </text><text class="breeze-testing-non-db-tests-r5" x="244" y="703.2" textLength="1195.6" clip-path="url(#breeze-testing-non-db-tests-line-28)">───────────────────────────── [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-29)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-29)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="727.6" textLength="85.4" clip-path="url(#breeze-testing-non-db-tests-line-29)">-python</text><text class="breeze-testing-non-db-tests-r7" x="30 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-30)">│</text><text class="breeze-testing-non-db-tests-r5" x="353.8" y="752" textLength="732" clip-path="url(#breeze-testing-non-db-tests-line-30)">[default: 3.8]                                & [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-31)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-31)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="776.4" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-31)">-forward</text><text class="breeze-testing-non-db-tests-r4" x="1 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="800.8" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-32)">
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="825.2" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-33)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="825.2" textLength="439.2" clip-path="url(#breeze-testing-non-db-tests-line-33)"> Options for parallel test commands </text><text class="breeze-testing-non-db-tests-r5" x="463.6" y="825.2" textLength="976" clip-path="url(#breeze-testing-non-db-tests-line-33 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-34)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="849.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-34)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="849.6" textLength="146.4" clip-path="url(#breeze-testing-non-db-tests-line-34)">-parallelism</text><text class="breeze-testing-non-db-tests-r1" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-35)">│</text><text class="breeze-testing-non-db-tests-r6" x="378.2" y="874" textLength="915" clip-path="url(#breeze-testing-non-db-tests-line-35)">(INTEGER RANGE)                                 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-36)">│</text><text class="breeze-testing-non-db-tests-r5" x="378.2" y="898.4" textLength="915" clip-path="url(#breeze-testing-non-db-tests-line-36)">[default: 4; 1<=x<=8]                             [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-37)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-37)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="922.8" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-37)">-skip</text><text class="breeze-testing-non-db-tests-r4" x="97.6" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-38)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-38)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="947.2" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-38)">-debug</text><text class="breeze-testing-non-db-tests-r4" x="109 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-39)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-39)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="971.6" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-39)">-include</text><text class="breeze-testing-non-db-tests-r4" x="1 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="996" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="996" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-40)">
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1020.4" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-41)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="1020.4" textLength="402.6" clip-path="url(#breeze-testing-non-db-tests-line-41)"> Advanced flag for tests command </text><text class="breeze-testing-non-db-tests-r5" x="427" y="1020.4" textLength="1012.6" clip-path="url(#breeze-testing-non-db-tests-line-4 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-42)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-42)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1044.8" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-42)">-image</text><text class="breeze-testing-non-db-tests-r4" x=" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-43)">│</text><text class="breeze-testing-non-db-tests-r6" x="414.8" y="1069.2" textLength="963.8" clip-path="url(#breeze-testing-non-db-tests-line-43)">(TEXT)                                  [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-44)">│</text><text class="breeze-testing-non-db-tests-r5" x="414.8" y="1093.6" textLength="963.8" clip-path="url(#breeze-testing-non-db-tests-line-44)">[default: latest]                              &# [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-45)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1118" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-45)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1118" textLength="85.4" clip-path="url(#breeze-testing-non-db-tests-line-45)">-github</text><text class="breeze-testing-non-db-tests-r4" x="122" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-46)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-46)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#breeze-testing-non-db-tests-line-46)">-use</text><text class="breeze-testing-non-db-tests-r4" x="85 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-47)">│</text><text class="breeze-testing-non-db-tests-r1" x="414.8" y="1166.8" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-47)">install from PyPI), `none`, `wheel`, or `sdist` to install from `dist` folder, or   </text><text class="breeze-testing-non-db-te [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-48)">│</text><text class="breeze-testing-non-db-tests-r1" x="414.8" y="1191.2" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-48)">VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/). Implies</text><text class="breeze-testing-non-db-tests-r5" x="1451.8" y="1191.2" textLength="12. [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-49)">│</text><text class="breeze-testing-non-db-tests-r4" x="414.8" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-49)">-</text><text class="breeze-testing-non-db-tests-r4" x="427" y="1215.6" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-49)">-mount</text><text class="breeze-testing-non-db-tests-r4" x=" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-50)">│</text><text class="breeze-testing-non-db-tests-r6" x="414.8" y="1240" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-50)">(none | wheel | sdist | <airflow_version>)                      [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-51)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-51)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1264.4" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-51)">-mount</text><text class="breeze-testing-non-db-tests-r4" x=" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-52)">│</text><text class="breeze-testing-non-db-tests-r1" x="414.8" y="1288.8" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-52)">selected).                                & [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-53)">│</text><text class="breeze-testing-non-db-tests-r6" x="414.8" y="1313.2" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-53)">(selected | all | skip | remove)                        [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-54)">│</text><text class="breeze-testing-non-db-tests-r5" x="414.8" y="1337.6" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-54)">[default: selected]                               [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-55)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1362" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-55)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1362" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-55)">-upgrade</text><text class="breeze-testing-non-db-tests-r4" x="134. [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-56)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-56)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1386.4" textLength="122" clip-path="url(#breeze-testing-non-db-tests-line-56)">-downgrade</text><text class="breeze-testing-non-db-tests-r4" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-57)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-57)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1410.8" textLength="122" clip-path="url(#breeze-testing-non-db-tests-line-57)">-downgrade</text><text class="breeze-testing-non-db-tests-r4" [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-58)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-58)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1435.2" textLength="85.4" clip-path="url(#breeze-testing-non-db-tests-line-58)">-remove</text><text class="breeze-testing-non-db-tests-r4" x= [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-59)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-59)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1459.6" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-59)">-skip</text><text class="breeze-testing-non-db-tests-r4" x="97. [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1484" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-60)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1484" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-60)">
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1508.4" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-61)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="1508.4" textLength="195.2" clip-path="url(#breeze-testing-non-db-tests-line-61)"> Common options </text><text class="breeze-testing-non-db-tests-r5" x="219.6" y="1508.4" textLength="1220" clip-path="url(#breeze-testing-non-db-tests-line-61)">──────────────────────────── [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-62)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-62)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1532.8" textLength="48.8" clip-path="url(#breeze-testing-non-db-tests-line-62)">-dry</text><text class="breeze-testing-non-db-tests-r4" x="85 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-63)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-63)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1557.2" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-63)">-verbose</text><text class="breeze-testing-non-db-tests-r7" x [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-64)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-64)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1581.6" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-64)">-help</text><text class="breeze-testing-non-db-tests-r7" x="158 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1606" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1606" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-65)">
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-29)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-29)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="727.6" textLength="85.4" clip-path="url(#breeze-testing-non-db-tests-line-29)">-python</text><text class="breeze-testing-non-db-tests-r7" x="30 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="752" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-30)">│</text><text class="breeze-testing-non-db-tests-r6" x="353.8" y="752" textLength="732" clip-path="url(#breeze-testing-non-db-tests-line-30)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                       [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="776.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-31)">│</text><text class="breeze-testing-non-db-tests-r5" x="353.8" y="776.4" textLength="732" clip-path="url(#breeze-testing-non-db-tests-line-31)">[default: 3.8]                                [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-32)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="800.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-32)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="800.8" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-32)">-forward</text><text class="breeze-testing-non-db-tests-r4" x="1 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="825.2" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="825.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-33)">
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="849.6" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-34)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="849.6" textLength="439.2" clip-path="url(#breeze-testing-non-db-tests-line-34)"> Options for parallel test commands </text><text class="breeze-testing-non-db-tests-r5" x="463.6" y="849.6" textLength="976" clip-path="url(#breeze-testing-non-db-tests-line-34 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="874" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-35)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="874" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-35)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="874" textLength="146.4" clip-path="url(#breeze-testing-non-db-tests-line-35)">-parallelism</text><text class="breeze-testing-non-db-tests-r1" x="37 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="898.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-36)">│</text><text class="breeze-testing-non-db-tests-r6" x="378.2" y="898.4" textLength="915" clip-path="url(#breeze-testing-non-db-tests-line-36)">(INTEGER RANGE)                               &# [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="922.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-37)">│</text><text class="breeze-testing-non-db-tests-r5" x="378.2" y="922.8" textLength="915" clip-path="url(#breeze-testing-non-db-tests-line-37)">[default: 4; 1<=x<=8]                             [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-38)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="947.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-38)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="947.2" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-38)">-skip</text><text class="breeze-testing-non-db-tests-r4" x="97.6" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-39)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="971.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-39)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="971.6" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-39)">-debug</text><text class="breeze-testing-non-db-tests-r4" x="109 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="996" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-40)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="996" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-40)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="996" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-40)">-include</text><text class="breeze-testing-non-db-tests-r4" x="134.2" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1020.4" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1020.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-41)">
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1044.8" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-42)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="1044.8" textLength="402.6" clip-path="url(#breeze-testing-non-db-tests-line-42)"> Advanced flag for tests command </text><text class="breeze-testing-non-db-tests-r5" x="427" y="1044.8" textLength="1012.6" clip-path="url(#breeze-testing-non-db-tests-line-4 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-43)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1069.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-43)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1069.2" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-43)">-image</text><text class="breeze-testing-non-db-tests-r4" x=" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1093.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-44)">│</text><text class="breeze-testing-non-db-tests-r6" x="414.8" y="1093.6" textLength="963.8" clip-path="url(#breeze-testing-non-db-tests-line-44)">(TEXT)                                  [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1118" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-45)">│</text><text class="breeze-testing-non-db-tests-r5" x="414.8" y="1118" textLength="963.8" clip-path="url(#breeze-testing-non-db-tests-line-45)">[default: latest]                                [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-46)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-46)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1142.4" textLength="85.4" clip-path="url(#breeze-testing-non-db-tests-line-46)">-github</text><text class="breeze-testing-non-db-tests-r4" x= [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-47)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-47)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1166.8" textLength="48.8" clip-path="url(#breeze-testing-non-db-tests-line-47)">-use</text><text class="breeze-testing-non-db-tests-r4" x="85 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-48)">│</text><text class="breeze-testing-non-db-tests-r1" x="414.8" y="1191.2" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-48)">install from PyPI), `none`, `wheel`, or `sdist` to install from `dist` folder, or   </text><text class="breeze-testing-non-db-te [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-49)">│</text><text class="breeze-testing-non-db-tests-r1" x="414.8" y="1215.6" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-49)">VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/). Implies</text><text class="breeze-testing-non-db-tests-r5" x="1451.8" y="1215.6" textLength="12. [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-50)">│</text><text class="breeze-testing-non-db-tests-r4" x="414.8" y="1240" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-50)">-</text><text class="breeze-testing-non-db-tests-r4" x="427" y="1240" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-50)">-mount</text><text class="breeze-testing-non-db-tests-r4" x="500.2" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-51)">│</text><text class="breeze-testing-non-db-tests-r6" x="414.8" y="1264.4" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-51)">(none | wheel | sdist | <airflow_version>)                      [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-52)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-52)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1288.8" textLength="73.2" clip-path="url(#breeze-testing-non-db-tests-line-52)">-mount</text><text class="breeze-testing-non-db-tests-r4" x=" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-53)">│</text><text class="breeze-testing-non-db-tests-r1" x="414.8" y="1313.2" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-53)">selected).                                & [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-54)">│</text><text class="breeze-testing-non-db-tests-r6" x="414.8" y="1337.6" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-54)">(selected | all | skip | remove)                        [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1362" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-55)">│</text><text class="breeze-testing-non-db-tests-r5" x="414.8" y="1362" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-55)">[default: selected]                               [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-56)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-56)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1386.4" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-56)">-upgrade</text><text class="breeze-testing-non-db-tests-r4" x [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-57)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-57)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1410.8" textLength="122" clip-path="url(#breeze-testing-non-db-tests-line-57)">-downgrade</text><text class="breeze-testing-non-db-tests-r4" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-58)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-58)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1435.2" textLength="122" clip-path="url(#breeze-testing-non-db-tests-line-58)">-downgrade</text><text class="breeze-testing-non-db-tests-r4" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-59)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-59)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1459.6" textLength="85.4" clip-path="url(#breeze-testing-non-db-tests-line-59)">-remove</text><text class="breeze-testing-non-db-tests-r4" x= [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-60)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1484" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-60)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1484" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-60)">-skip</text><text class="breeze-testing-non-db-tests-r4" x="97.6" y=" [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1508.4" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-61)">
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1532.8" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-62)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="1532.8" textLength="195.2" clip-path="url(#breeze-testing-non-db-tests-line-62)"> Common options </text><text class="breeze-testing-non-db-tests-r5" x="219.6" y="1532.8" textLength="1220" clip-path="url(#breeze-testing-non-db-tests-line-62)">──────────────────────────── [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-63)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-63)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1557.2" textLength="48.8" clip-path="url(#breeze-testing-non-db-tests-line-63)">-dry</text><text class="breeze-testing-non-db-tests-r4" x="85 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-64)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-64)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1581.6" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-64)">-verbose</text><text class="breeze-testing-non-db-tests-r7" x [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-65)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1606" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-65)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1606" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-65)">-help</text><text class="breeze-testing-non-db-tests-r7" x="158.6" y= [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1630.4" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-66)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_testing_non-db-tests.txt b/dev/breeze/doc/images/output_testing_non-db-tests.txt
index 7d9ef31069..7916a46052 100644
--- a/dev/breeze/doc/images/output_testing_non-db-tests.txt
+++ b/dev/breeze/doc/images/output_testing_non-db-tests.txt
@@ -1 +1 @@
-8aa7803c0bbff622175c01d94d22290b
+0180d5f7ce41cf3b14ce5ec086e27bd7
diff --git a/dev/breeze/doc/images/output_testing_tests.svg b/dev/breeze/doc/images/output_testing_tests.svg
index ff52a515a7..6ff11c1d36 100644
--- a/dev/breeze/doc/images/output_testing_tests.svg
+++ b/dev/breeze/doc/images/output_testing_tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2246.0" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2270.4" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-testing-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="2195.0" />
+ <rect x="0" y="0" width="1463.0" height="2219.4" />
</clipPath>
<clipPath id="breeze-testing-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -312,9 +312,12 @@
<clipPath id="breeze-testing-tests-line-88">
<rect x="0" y="2148.7" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-tests-line-89">
+ <rect x="0" y="2173.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="2244" rx="8"/><text class="breeze-testing-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2268.4" rx="8"/><text class="breeze-testing-tests-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: testing 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"/>
@@ -373,47 +376,48 @@
</text><text class="breeze-testing-tests-r5" x="0" y="1142.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-46)">│</text><text class="breeze-testing-tests-r1" x="353.8" y="1142.4" textLength="1085.8" clip-path="url(#breeze-testing-tests-line-46)">configuration and no database and any attempts to connect to Airflow DB will fail.       </text><text class="breeze-testing-tests-r [...]
</text><text class="breeze-testing-tests-r5" x="0" y="1166.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-47)">│</text><text class="breeze-testing-tests-r7" x="353.8" y="1166.8" textLength="1085.8" clip-path="url(#breeze-testing-tests-line-47)">(>sqlite< | mysql | postgres | none)                           [...]
</text><text class="breeze-testing-tests-r5" x="0" y="1191.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-48)">│</text><text class="breeze-testing-tests-r5" x="353.8" y="1191.2" textLength="1085.8" clip-path="url(#breeze-testing-tests-line-48)">[default: sqlite]                                    [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#breeze-testing-tests-line-49)">-python</text><text class="breeze-testing-tests-r6" x="305" y="1215.6" textLength="24.4" clip-path="url [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-tests-line-50)">│</text><text class="breeze-testing-tests-r5" x="353.8" y="1240" textLength="732" clip-path="url(#breeze-testing-tests-line-50)">[default: 3.8]                                     [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-51)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-51)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1264.4" textLength="109.8" clip-path="url(#breeze-testing-tests-line-51)">-postgres</text><text class="breeze-testing-tests-r4" x="146.4" y="1264.4" textLength="97.6" clip-path [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-52)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-52)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1288.8" textLength="73.2" clip-path="url(#breeze-testing-tests-line-52)">-mysql</text><text class="breeze-testing-tests-r4" x="109.8" y="1288.8" textLength="97.6" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-53)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-53)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#breeze-testing-tests-line-53)">-forward</text><text class="breeze-testing-tests-r4" x="134.2" y="1313.2" textLength="146.4" clip-path= [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1337.6" textLength="1464" clip-path="url(#breeze-testing-tests-line-54)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-54)">
-</text><text class="breeze-testing-tests-r5" x="0" y="1362" textLength="24.4" clip-path="url(#breeze-testing-tests-line-55)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="1362" textLength="439.2" clip-path="url(#breeze-testing-tests-line-55)"> Options for parallel test commands </text><text class="breeze-testing-tests-r5" x="463.6" y="1362" textLength="976" clip-path="url(#breeze-testing-tests-line-55)">────────────────────────────────────────── [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-56)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1386.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-56)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1386.4" textLength="48.8" clip-path="url(#breeze-testing-tests-line-56)">-run</text><text class="breeze-testing-tests-r4" x="85.4" y="1386.4" textLength="146.4" clip-path="url( [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-57)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-57)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1410.8" textLength="48.8" clip-path="url(#breeze-testing-tests-line-57)">-use</text><text class="breeze-testing-tests-r4" x="85.4" y="1410.8" textLength="73.2" clip-path="url(# [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-58)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-58)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1435.2" textLength="146.4" clip-path="url(#breeze-testing-tests-line-58)">-parallelism</text><text class="breeze-testing-tests-r1" x="378.2" y="1435.2" textLength="915" clip-pa [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-59)">│</text><text class="breeze-testing-tests-r7" x="378.2" y="1459.6" textLength="915" clip-path="url(#breeze-testing-tests-line-59)">(INTEGER RANGE)                                    [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-testing-tests-line-60)">│</text><text class="breeze-testing-tests-r5" x="378.2" y="1484" textLength="915" clip-path="url(#breeze-testing-tests-line-60)">[default: 4; 1<=x<=8]                                  [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-61)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-61)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1508.4" textLength="61" clip-path="url(#breeze-testing-tests-line-61)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="1508.4" textLength="97.6" clip-path="url(#b [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-62)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-62)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1532.8" textLength="73.2" clip-path="url(#breeze-testing-tests-line-62)">-debug</text><text class="breeze-testing-tests-r4" x="109.8" y="1532.8" textLength="122" clip-path="url [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-63)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-63)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1557.2" textLength="97.6" clip-path="url(#breeze-testing-tests-line-63)">-include</text><text class="breeze-testing-tests-r4" x="134.2" y="1557.2" textLength="195.2" clip-path= [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1581.6" textLength="1464" clip-path="url(#breeze-testing-tests-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-64)">
-</text><text class="breeze-testing-tests-r5" x="0" y="1606" textLength="24.4" clip-path="url(#breeze-testing-tests-line-65)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="1606" textLength="402.6" clip-path="url(#breeze-testing-tests-line-65)"> Advanced flag for tests command </text><text class="breeze-testing-tests-r5" x="427" y="1606" textLength="1012.6" clip-path="url(#breeze-testing-tests-line-65)">──────────────────────────────────────────── [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-66)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-66)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1630.4" textLength="73.2" clip-path="url(#breeze-testing-tests-line-66)">-image</text><text class="breeze-testing-tests-r4" x="109.8" y="1630.4" textLength="48.8" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1654.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-67)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1654.8" textLength="963.8" clip-path="url(#breeze-testing-tests-line-67)">(TEXT)                                      [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-68)">│</text><text class="breeze-testing-tests-r5" x="414.8" y="1679.2" textLength="963.8" clip-path="url(#breeze-testing-tests-line-68)">[default: latest]                                    [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-69)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-69)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1703.6" textLength="85.4" clip-path="url(#breeze-testing-tests-line-69)">-github</text><text class="breeze-testing-tests-r4" x="122" y="1703.6" textLength="134.2" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-testing-tests-line-70)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1728" textLength="12.2" clip-path="url(#breeze-testing-tests-line-70)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1728" textLength="48.8" clip-path="url(#breeze-testing-tests-line-70)">-use</text><text class="breeze-testing-tests-r4" x="85.4" y="1728" textLength="195.2" clip-path="url(#breeze- [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-71)">│</text><text class="breeze-testing-tests-r1" x="414.8" y="1752.4" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-71)">install from PyPI), `none`, `wheel`, or `sdist` to install from `dist` folder, or   </text><text class="breeze-testing-tests-r5" x="1451.8" y="1752.4" textL [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1776.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-72)">│</text><text class="breeze-testing-tests-r1" x="414.8" y="1776.8" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-72)">VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/). Implies</text><text class="breeze-testing-tests-r5" x="1451.8" y="1776.8" textLength="12.2" clip-path="url(#breeze-testing-t [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-73)">│</text><text class="breeze-testing-tests-r4" x="414.8" y="1801.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-73)">-</text><text class="breeze-testing-tests-r4" x="427" y="1801.2" textLength="73.2" clip-path="url(#breeze-testing-tests-line-73)">-mount</text><text class="breeze-testing-tests-r4" x="500.2" y="1801.2" textLength="97.6" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-74)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1825.6" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-74)">(none | wheel | sdist | <airflow_version>)                          [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1850" textLength="12.2" clip-path="url(#breeze-testing-tests-line-75)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1850" textLength="12.2" clip-path="url(#breeze-testing-tests-line-75)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1850" textLength="73.2" clip-path="url(#breeze-testing-tests-line-75)">-mount</text><text class="breeze-testing-tests-r4" x="109.8" y="1850" textLength="97.6" clip-path="url(#breez [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1874.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-76)">│</text><text class="breeze-testing-tests-r1" x="414.8" y="1874.4" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-76)">selected).                                      [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1898.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-77)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1898.8" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-77)">(selected | all | skip | remove)                            & [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1923.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-78)">│</text><text class="breeze-testing-tests-r5" x="414.8" y="1923.2" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-78)">[default: selected]                                   [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1947.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-79)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-79)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1947.6" textLength="97.6" clip-path="url(#breeze-testing-tests-line-79)">-upgrade</text><text class="breeze-testing-tests-r4" x="134.2" y="1947.6" textLength="61" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1972" textLength="12.2" clip-path="url(#breeze-testing-tests-line-80)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1972" textLength="12.2" clip-path="url(#breeze-testing-tests-line-80)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1972" textLength="122" clip-path="url(#breeze-testing-tests-line-80)">-downgrade</text><text class="breeze-testing-tests-r4" x="158.6" y="1972" textLength="134.2" clip-path="url(#b [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="1996.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-81)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1996.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-81)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1996.4" textLength="122" clip-path="url(#breeze-testing-tests-line-81)">-downgrade</text><text class="breeze-testing-tests-r4" x="158.6" y="1996.4" textLength="109.8" clip-path [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2020.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-82)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2020.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-82)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2020.8" textLength="85.4" clip-path="url(#breeze-testing-tests-line-82)">-remove</text><text class="breeze-testing-tests-r4" x="122" y="2020.8" textLength="158.6" clip-path="ur [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2045.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-83)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2045.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-83)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2045.2" textLength="61" clip-path="url(#breeze-testing-tests-line-83)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="2045.2" textLength="244" clip-path="url(#br [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2069.6" textLength="1464" clip-path="url(#breeze-testing-tests-line-84)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2069.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-84)">
-</text><text class="breeze-testing-tests-r5" x="0" y="2094" textLength="24.4" clip-path="url(#breeze-testing-tests-line-85)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="2094" textLength="195.2" clip-path="url(#breeze-testing-tests-line-85)"> Common options </text><text class="breeze-testing-tests-r5" x="219.6" y="2094" textLength="1220" clip-path="url(#breeze-testing-tests-line-85)">──────────────────────────────────────────────────────────────────────────── [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2118.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-86)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2118.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-86)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2118.4" textLength="97.6" clip-path="url(#breeze-testing-tests-line-86)">-verbose</text><text class="breeze-testing-tests-r6" x="158.6" y="2118.4" textLength="24.4" clip-path=" [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2142.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-87)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2142.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-87)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2142.8" textLength="48.8" clip-path="url(#breeze-testing-tests-line-87)">-dry</text><text class="breeze-testing-tests-r4" x="85.4" y="2142.8" textLength="48.8" clip-path="url(# [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2167.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-88)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2167.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-88)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2167.2" textLength="61" clip-path="url(#breeze-testing-tests-line-88)">-help</text><text class="breeze-testing-tests-r6" x="158.6" y="2167.2" textLength="24.4" clip-path="url(# [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2191.6" textLength="1464" clip-path="url(#breeze-testing-tests-line-89)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2191.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-89)">
+</text><text class="breeze-testing-tests-r5" x="0" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1215.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-49)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1215.6" textLength="85.4" clip-path="url(#breeze-testing-tests-line-49)">-python</text><text class="breeze-testing-tests-r6" x="305" y="1215.6" textLength="24.4" clip-path="url [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1240" textLength="12.2" clip-path="url(#breeze-testing-tests-line-50)">│</text><text class="breeze-testing-tests-r7" x="353.8" y="1240" textLength="732" clip-path="url(#breeze-testing-tests-line-50)">(>3.8< | 3.9 | 3.10 | 3.11 | 3.12)                          </ [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1264.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-51)">│</text><text class="breeze-testing-tests-r5" x="353.8" y="1264.4" textLength="732" clip-path="url(#breeze-testing-tests-line-51)">[default: 3.8]                                     [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-52)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1288.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-52)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1288.8" textLength="109.8" clip-path="url(#breeze-testing-tests-line-52)">-postgres</text><text class="breeze-testing-tests-r4" x="146.4" y="1288.8" textLength="97.6" clip-path [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-53)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-53)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1313.2" textLength="73.2" clip-path="url(#breeze-testing-tests-line-53)">-mysql</text><text class="breeze-testing-tests-r4" x="109.8" y="1313.2" textLength="97.6" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-54)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-54)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1337.6" textLength="97.6" clip-path="url(#breeze-testing-tests-line-54)">-forward</text><text class="breeze-testing-tests-r4" x="134.2" y="1337.6" textLength="146.4" clip-path= [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1362" textLength="1464" clip-path="url(#breeze-testing-tests-line-55)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="1362" textLength="12.2" clip-path="url(#breeze-testing-tests-line-55)">
+</text><text class="breeze-testing-tests-r5" x="0" y="1386.4" textLength="24.4" clip-path="url(#breeze-testing-tests-line-56)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="1386.4" textLength="439.2" clip-path="url(#breeze-testing-tests-line-56)"> Options for parallel test commands </text><text class="breeze-testing-tests-r5" x="463.6" y="1386.4" textLength="976" clip-path="url(#breeze-testing-tests-line-56)">──────────────────────────────────── [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-57)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-57)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1410.8" textLength="48.8" clip-path="url(#breeze-testing-tests-line-57)">-run</text><text class="breeze-testing-tests-r4" x="85.4" y="1410.8" textLength="146.4" clip-path="url( [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-58)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-58)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1435.2" textLength="48.8" clip-path="url(#breeze-testing-tests-line-58)">-use</text><text class="breeze-testing-tests-r4" x="85.4" y="1435.2" textLength="73.2" clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-59)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1459.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-59)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1459.6" textLength="146.4" clip-path="url(#breeze-testing-tests-line-59)">-parallelism</text><text class="breeze-testing-tests-r1" x="378.2" y="1459.6" textLength="915" clip-pa [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1484" textLength="12.2" clip-path="url(#breeze-testing-tests-line-60)">│</text><text class="breeze-testing-tests-r7" x="378.2" y="1484" textLength="915" clip-path="url(#breeze-testing-tests-line-60)">(INTEGER RANGE)                                    &# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-61)">│</text><text class="breeze-testing-tests-r5" x="378.2" y="1508.4" textLength="915" clip-path="url(#breeze-testing-tests-line-61)">[default: 4; 1<=x<=8]                                  [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-62)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-62)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1532.8" textLength="61" clip-path="url(#breeze-testing-tests-line-62)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="1532.8" textLength="97.6" clip-path="url(#b [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-63)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-63)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1557.2" textLength="73.2" clip-path="url(#breeze-testing-tests-line-63)">-debug</text><text class="breeze-testing-tests-r4" x="109.8" y="1557.2" textLength="122" clip-path="url [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-64)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-64)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1581.6" textLength="97.6" clip-path="url(#breeze-testing-tests-line-64)">-include</text><text class="breeze-testing-tests-r4" x="134.2" y="1581.6" textLength="195.2" clip-path= [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1606" textLength="1464" clip-path="url(#breeze-testing-tests-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="1606" textLength="12.2" clip-path="url(#breeze-testing-tests-line-65)">
+</text><text class="breeze-testing-tests-r5" x="0" y="1630.4" textLength="24.4" clip-path="url(#breeze-testing-tests-line-66)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="1630.4" textLength="402.6" clip-path="url(#breeze-testing-tests-line-66)"> Advanced flag for tests command </text><text class="breeze-testing-tests-r5" x="427" y="1630.4" textLength="1012.6" clip-path="url(#breeze-testing-tests-line-66)">────────────────────────────────────── [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1654.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-67)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1654.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-67)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1654.8" textLength="73.2" clip-path="url(#breeze-testing-tests-line-67)">-image</text><text class="breeze-testing-tests-r4" x="109.8" y="1654.8" textLength="48.8" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-68)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1679.2" textLength="963.8" clip-path="url(#breeze-testing-tests-line-68)">(TEXT)                                      [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-69)">│</text><text class="breeze-testing-tests-r5" x="414.8" y="1703.6" textLength="963.8" clip-path="url(#breeze-testing-tests-line-69)">[default: latest]                                    [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-testing-tests-line-70)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1728" textLength="12.2" clip-path="url(#breeze-testing-tests-line-70)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1728" textLength="85.4" clip-path="url(#breeze-testing-tests-line-70)">-github</text><text class="breeze-testing-tests-r4" x="122" y="1728" textLength="134.2" clip-path="url(#breez [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-71)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-71)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1752.4" textLength="48.8" clip-path="url(#breeze-testing-tests-line-71)">-use</text><text class="breeze-testing-tests-r4" x="85.4" y="1752.4" textLength="195.2" clip-path="url( [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1776.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-72)">│</text><text class="breeze-testing-tests-r1" x="414.8" y="1776.8" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-72)">install from PyPI), `none`, `wheel`, or `sdist` to install from `dist` folder, or   </text><text class="breeze-testing-tests-r5" x="1451.8" y="1776.8" textL [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-73)">│</text><text class="breeze-testing-tests-r1" x="414.8" y="1801.2" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-73)">VCS URL to install from (https://pip.pypa.io/en/stable/topics/vcs-support/). Implies</text><text class="breeze-testing-tests-r5" x="1451.8" y="1801.2" textLength="12.2" clip-path="url(#breeze-testing-t [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-74)">│</text><text class="breeze-testing-tests-r4" x="414.8" y="1825.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-74)">-</text><text class="breeze-testing-tests-r4" x="427" y="1825.6" textLength="73.2" clip-path="url(#breeze-testing-tests-line-74)">-mount</text><text class="breeze-testing-tests-r4" x="500.2" y="1825.6" textLength="97.6" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1850" textLength="12.2" clip-path="url(#breeze-testing-tests-line-75)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1850" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-75)">(none | wheel | sdist | <airflow_version>)                          & [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1874.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-76)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1874.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-76)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1874.4" textLength="73.2" clip-path="url(#breeze-testing-tests-line-76)">-mount</text><text class="breeze-testing-tests-r4" x="109.8" y="1874.4" textLength="97.6" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1898.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-77)">│</text><text class="breeze-testing-tests-r1" x="414.8" y="1898.8" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-77)">selected).                                      [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1923.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-78)">│</text><text class="breeze-testing-tests-r7" x="414.8" y="1923.2" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-78)">(selected | all | skip | remove)                            & [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1947.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-79)">│</text><text class="breeze-testing-tests-r5" x="414.8" y="1947.6" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-79)">[default: selected]                                   [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1972" textLength="12.2" clip-path="url(#breeze-testing-tests-line-80)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1972" textLength="12.2" clip-path="url(#breeze-testing-tests-line-80)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1972" textLength="97.6" clip-path="url(#breeze-testing-tests-line-80)">-upgrade</text><text class="breeze-testing-tests-r4" x="134.2" y="1972" textLength="61" clip-path="url(#breez [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="1996.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-81)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="1996.4" textLength="12.2" clip-path="url(#breeze-testing-tests-line-81)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1996.4" textLength="122" clip-path="url(#breeze-testing-tests-line-81)">-downgrade</text><text class="breeze-testing-tests-r4" x="158.6" y="1996.4" textLength="134.2" clip-path [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2020.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-82)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2020.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-82)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2020.8" textLength="122" clip-path="url(#breeze-testing-tests-line-82)">-downgrade</text><text class="breeze-testing-tests-r4" x="158.6" y="2020.8" textLength="109.8" clip-path [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2045.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-83)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2045.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-83)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2045.2" textLength="85.4" clip-path="url(#breeze-testing-tests-line-83)">-remove</text><text class="breeze-testing-tests-r4" x="122" y="2045.2" textLength="158.6" clip-path="ur [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2069.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-84)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2069.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-84)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2069.6" textLength="61" clip-path="url(#breeze-testing-tests-line-84)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="2069.6" textLength="244" clip-path="url(#br [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2094" textLength="1464" clip-path="url(#breeze-testing-tests-line-85)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2094" textLength="12.2" clip-path="url(#breeze-testing-tests-line-85)">
+</text><text class="breeze-testing-tests-r5" x="0" y="2118.4" textLength="24.4" clip-path="url(#breeze-testing-tests-line-86)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="2118.4" textLength="195.2" clip-path="url(#breeze-testing-tests-line-86)"> Common options </text><text class="breeze-testing-tests-r5" x="219.6" y="2118.4" textLength="1220" clip-path="url(#breeze-testing-tests-line-86)">────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2142.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-87)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2142.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-87)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2142.8" textLength="97.6" clip-path="url(#breeze-testing-tests-line-87)">-verbose</text><text class="breeze-testing-tests-r6" x="158.6" y="2142.8" textLength="24.4" clip-path=" [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2167.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-88)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2167.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-88)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2167.2" textLength="48.8" clip-path="url(#breeze-testing-tests-line-88)">-dry</text><text class="breeze-testing-tests-r4" x="85.4" y="2167.2" textLength="48.8" clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2191.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-89)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2191.6" textLength="12.2" clip-path="url(#breeze-testing-tests-line-89)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2191.6" textLength="61" clip-path="url(#breeze-testing-tests-line-89)">-help</text><text class="breeze-testing-tests-r6" x="158.6" y="2191.6" textLength="24.4" clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2216" textLength="1464" clip-path="url(#breeze-testing-tests-line-90)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2216" textLength="12.2" clip-path="url(#breeze-testing-tests-line-90)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_testing_tests.txt b/dev/breeze/doc/images/output_testing_tests.txt
index 0b631fb981..95adc3a4db 100644
--- a/dev/breeze/doc/images/output_testing_tests.txt
+++ b/dev/breeze/doc/images/output_testing_tests.txt
@@ -1 +1 @@
-ebfb809a4ef0e366f21b39495a20c7dd
+b2a0ef32d45aaa40f0192208b7b8a8f6
diff --git a/dev/breeze/pyproject.toml b/dev/breeze/pyproject.toml
index 214f5e6478..7b14a6558d 100644
--- a/dev/breeze/pyproject.toml
+++ b/dev/breeze/pyproject.toml
@@ -80,7 +80,7 @@ name = "airflow_breeze"
[tool.black]
line-length = 110
-target-version = ['py37', 'py38', 'py39', 'py310']
+target-version = ['py37', 'py38', 'py39', 'py310', 'py311', 'py312']
[tool.pytest.ini_options]
addopts = "-rasl --verbosity=2 -p no:flaky -p no:nose -p no:legacypath"
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py
index 2ccd3bb0dd..185b6f2960 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -42,7 +42,7 @@ ANSWER = ""
APACHE_AIRFLOW_GITHUB_REPOSITORY = "apache/airflow"
# Checked before putting in build cache
-ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS = ["3.8", "3.9", "3.10", "3.11"]
+ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS = ["3.8", "3.9", "3.10", "3.11", "3.12"]
DEFAULT_PYTHON_MAJOR_MINOR_VERSION = ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[0]
ALLOWED_ARCHITECTURES = [Architecture.X86_64, Architecture.ARM]
# Database Backends used when starting Breeze. The "none" value means that invalid configuration
@@ -193,7 +193,7 @@ ALLOWED_PLATFORMS = [*SINGLE_PLATFORMS, MULTI_PLATFORM]
ALLOWED_USE_AIRFLOW_VERSIONS = ["none", "wheel", "sdist"]
-ALL_HISTORICAL_PYTHON_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11"]
+ALL_HISTORICAL_PYTHON_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
def get_default_platform_machine() -> str:
@@ -219,7 +219,7 @@ SQLITE_URL = "sqlite:////root/airflow/sqlite/airflow.db"
PYTHONDONTWRITEBYTECODE = True
PRODUCTION_IMAGE = False
-ALL_PYTHON_MAJOR_MINOR_VERSIONS = ["3.8", "3.9", "3.10", "3.11"]
+ALL_PYTHON_MAJOR_MINOR_VERSIONS = ["3.8", "3.9", "3.10", "3.11", "3.12"]
CURRENT_PYTHON_MAJOR_MINOR_VERSIONS = ALL_PYTHON_MAJOR_MINOR_VERSIONS
CURRENT_POSTGRES_VERSIONS = ["12", "13", "14", "15", "16"]
DEFAULT_POSTGRES_VERSION = CURRENT_POSTGRES_VERSIONS[0]
@@ -267,6 +267,7 @@ AIRFLOW_PYTHON_COMPATIBILITY_MATRIX = {
"2.7.1": ["3.8", "3.9", "3.10", "3.11"],
"2.7.2": ["3.8", "3.9", "3.10", "3.11"],
"2.7.3": ["3.8", "3.9", "3.10", "3.11"],
+ "2.8.0": ["3.8", "3.9", "3.10", "3.11"],
}
DB_RESET = False
diff --git a/dev/breeze/src/airflow_breeze/utils/cdxgen.py b/dev/breeze/src/airflow_breeze/utils/cdxgen.py
index 3bcb4cd21f..2f31a5fe07 100644
--- a/dev/breeze/src/airflow_breeze/utils/cdxgen.py
+++ b/dev/breeze/src/airflow_breeze/utils/cdxgen.py
@@ -282,6 +282,7 @@ def build_all_airflow_versions_base_image(
"3.9": "e698dbfe25da10d09c5810938f586535633928a4",
"3.10": "e698dbfe25da10d09c5810938f586535633928a4",
"3.11": "e698dbfe25da10d09c5810938f586535633928a4",
+ "3.12": "e698dbfe25da10d09c5810938f586535633928a4",
}
"""
image_name = get_all_airflow_versions_image_name(python_version=python_version)
diff --git a/dev/breeze/tests/test_cache.py b/dev/breeze/tests/test_cache.py
index 7032a21593..52ba6ada1e 100644
--- a/dev/breeze/tests/test_cache.py
+++ b/dev/breeze/tests/test_cache.py
@@ -36,8 +36,8 @@ AIRFLOW_SOURCES = Path(__file__).parents[3].resolve()
[
("backend", "mysql", (True, ["sqlite", "mysql", "postgres", "none"]), None),
("backend", "xxx", (False, ["sqlite", "mysql", "postgres", "none"]), None),
- ("python_major_minor_version", "3.8", (True, ["3.8", "3.9", "3.10", "3.11"]), None),
- ("python_major_minor_version", "3.7", (False, ["3.8", "3.9", "3.10", "3.11"]), None),
+ ("python_major_minor_version", "3.8", (True, ["3.8", "3.9", "3.10", "3.11", "3.12"]), None),
+ ("python_major_minor_version", "3.7", (False, ["3.8", "3.9", "3.10", "3.11", "3.12"]), None),
("missing", "value", None, AttributeError),
],
)
diff --git a/dev/breeze/tests/test_packages.py b/dev/breeze/tests/test_packages.py
index 017a71e9d6..7beb1b7d1f 100644
--- a/dev/breeze/tests/test_packages.py
+++ b/dev/breeze/tests/test_packages.py
@@ -376,7 +376,7 @@ def test_provider_jinja_context():
"VERSION_SUFFIX": ".rc1",
"PROVIDER_DESCRIPTION": "Amazon integration (including `Amazon Web Services (AWS) <https://aws.amazon.com/>`__).\n",
"CHANGELOG_RELATIVE_PATH": "../../airflow/providers/amazon",
- "SUPPORTED_PYTHON_VERSIONS": ["3.8", "3.9", "3.10", "3.11"],
+ "SUPPORTED_PYTHON_VERSIONS": ["3.8", "3.9", "3.10", "3.11", "3.12"],
"PLUGINS": [],
"MIN_AIRFLOW_VERSION": "2.6.0",
"PROVIDER_REMOVED": False,
diff --git a/dev/breeze/tests/test_selective_checks.py b/dev/breeze/tests/test_selective_checks.py
index f3b48c6224..df458863c6 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -429,10 +429,10 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str):
("pyproject.toml",),
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
- "python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
+ "python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"needs-helm-tests": "true",
@@ -455,10 +455,10 @@ def assert_outputs_are_printed(expected_outputs: dict[str, str], stderr: str):
("generated/provider_dependencies.json",),
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
- "python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
+ "python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"needs-helm-tests": "true",
@@ -605,10 +605,10 @@ def test_expected_output_pull_request_main(
"main",
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
- "python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
+ "python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"run-tests": "true",
@@ -634,10 +634,10 @@ def test_expected_output_pull_request_main(
"main",
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
- "python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
+ "python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"run-tests": "true",
@@ -661,10 +661,10 @@ def test_expected_output_pull_request_main(
"main",
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
- "python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
+ "python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"run-tests": "true",
@@ -688,10 +688,10 @@ def test_expected_output_pull_request_main(
"v2-7-stable",
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
- "python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
+ "python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"run-tests": "true",
@@ -1037,8 +1037,8 @@ def test_expected_output_pull_request_target(
"main",
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"needs-helm-tests": "true",
@@ -1059,8 +1059,8 @@ def test_expected_output_pull_request_target(
"v2-3-stable",
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"needs-helm-tests": "false",
@@ -1083,8 +1083,8 @@ def test_expected_output_pull_request_target(
"main",
{
"affected-providers-list-as-string": ALL_PROVIDERS_AFFECTED,
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"needs-helm-tests": "true",
@@ -1137,8 +1137,8 @@ def test_no_commit_provided_trigger_full_build_for_any_event_type(github_event):
)
assert_outputs_are_printed(
{
- "all-python-versions": "['3.8', '3.9', '3.10', '3.11']",
- "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11",
+ "all-python-versions": "['3.8', '3.9', '3.10', '3.11', '3.12']",
+ "all-python-versions-list-as-string": "3.8 3.9 3.10 3.11 3.12",
"ci-image-build": "true",
"prod-image-build": "true",
"needs-helm-tests": "true",
diff --git a/dev/retag_docker_images.py b/dev/retag_docker_images.py
index bbf63fab13..208e8eeb30 100755
--- a/dev/retag_docker_images.py
+++ b/dev/retag_docker_images.py
@@ -32,7 +32,7 @@ import subprocess
import rich_click as click
-PYTHON_VERSIONS = ["3.8", "3.9", "3.10", "3.11"]
+PYTHON_VERSIONS = ["3.8", "3.9", "3.10", "3.11", "3.12"]
GHCR_IO_PREFIX = "ghcr.io"
diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json
index d69a2ab0c8..54cfc2cd0a 100644
--- a/generated/provider_dependencies.json
+++ b/generated/provider_dependencies.json
@@ -76,7 +76,9 @@
"cross-providers-deps": [
"google"
],
- "excluded-python-versions": [],
+ "excluded-python-versions": [
+ "3.12"
+ ],
"state": "ready"
},
"apache.cassandra": {
@@ -86,7 +88,9 @@
],
"devel-deps": [],
"cross-providers-deps": [],
- "excluded-python-versions": [],
+ "excluded-python-versions": [
+ "3.12"
+ ],
"state": "ready"
},
"apache.drill": {
@@ -879,7 +883,9 @@
],
"devel-deps": [],
"cross-providers-deps": [],
- "excluded-python-versions": [],
+ "excluded-python-versions": [
+ "3.12"
+ ],
"state": "ready"
},
"pgvector": {
diff --git a/pyproject.toml b/pyproject.toml
index a8384e675f..ee6ca8ab8a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -285,7 +285,8 @@ devel-devscripts = [
"twine>=4.0.2",
]
devel-duckdb = [
- "duckdb>=0.9.0",
+ # TODO: duckdb dev wheels are produced in a strange way with 3.12 support (they are missing for linux now)
+ "duckdb>=0.9.0; python_version < '3.12'",
]
# Mypy 0.900 and above ships only with stubs from stdlib so if we need other stubs, we need to install them
# manually as `types-*`. See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
@@ -344,6 +345,7 @@ devel-tests = [
"pytest>=7.4.4,<8.0",
"requests_mock>=1.11.0",
"time-machine>=2.13.0",
+ "wheel>=0.42.0",
]
# END OF devel extras
# START OF doc extras
@@ -554,11 +556,11 @@ amazon = [ # source: airflow/providers/amazon/provider.yaml
"s3fs>=2023.10.0",
]
apache-beam = [ # source: airflow/providers/apache/beam/provider.yaml
- "apache-beam>=2.53.0",
- "pyarrow>=14.0.1",
+ "apache-beam>=2.53.0;python_version != \"3.12\"",
+ "pyarrow>=14.0.1;python_version != \"3.12\"",
]
apache-cassandra = [ # source: airflow/providers/apache/cassandra/provider.yaml
- "cassandra-driver>=3.13.0",
+ "cassandra-driver>=3.13.0;python_version != \"3.12\"",
]
apache-drill = [ # source: airflow/providers/apache/drill/provider.yaml
"apache-airflow[common_sql]",
@@ -853,9 +855,9 @@ pagerduty = [ # source: airflow/providers/pagerduty/provider.yaml
"pdpyras>=4.1.2",
]
papermill = [ # source: airflow/providers/papermill/provider.yaml
- "ipykernel",
- "papermill[all]>=2.4.0",
- "scrapbook[all]",
+ "ipykernel;python_version != \"3.12\"",
+ "papermill[all]>=2.4.0;python_version != \"3.12\"",
+ "scrapbook[all];python_version != \"3.12\"",
]
pgvector = [ # source: airflow/providers/pgvector/provider.yaml
"apache-airflow[postgres]",
@@ -1203,6 +1205,13 @@ platforms = ["linux", "macos"]
description = "Environment with Python 3.11. No devel installed"
features = []
+[tool.hatch.envs.airflow-312]
+python = "3.12"
+platforms = ["linux", "macos"]
+description = "Environment with Python 3.12. No devel installed"
+features = []
+
+
[tool.hatch.version]
path = "airflow/__init__.py"
@@ -1246,7 +1255,7 @@ artifacts = [
[tool.black]
line-length = 110
-target-version = ['py38', 'py39', 'py310', 'py311']
+target-version = ['py38', 'py39', 'py310', 'py311', 'py312']
[tool.ruff]
target-version = "py38"
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index b26d47626b..6baea3591c 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -278,11 +278,20 @@ function check_run_tests() {
fi
}
+# TODO: Remove me after universal pathlib with Python 3.12 support is released
+function check_install_universal_pathlib() {
+ echo
+ echo "${COLOR_BLUE}Installing universal python pathlib from PR url${COLOR_RESET}"
+ echo
+ pip install --root-user-action ignore git+https://github.com/ap--/universal_pathlib/@improve-subclassing-for-py312#egg=universal-pathlib
+}
+
determine_airflow_to_use
environment_initialization
check_boto_upgrade
check_download_sqlalchemy
check_download_pendulum
+check_install_universal_pathlib
check_run_tests "${@}"
# If we are not running tests - just exec to bash shell
diff --git a/tests/always/test_example_dags.py b/tests/always/test_example_dags.py
index aadf4e5f91..d0dd9f604a 100644
--- a/tests/always/test_example_dags.py
+++ b/tests/always/test_example_dags.py
@@ -17,6 +17,7 @@
from __future__ import annotations
import os
+import sys
from glob import glob
from pathlib import Path
@@ -49,14 +50,34 @@ def get_suspended_providers_folders() -> list[str]:
return suspended_providers
-def example_not_suspended_dags():
+def get_python_excluded_providers_folders() -> list[str]:
+ """
+ Returns a list of providers folders that should be excluded for current Python version and
+ skipped when running tests (without any prefix - for example apache/beam, yandex, google etc.).
+ """
+ excluded_providers = []
+ current_python_version = f"{sys.version_info.major}.{sys.version_info.minor}"
+ for provider_path in AIRFLOW_PROVIDERS_ROOT.rglob("provider.yaml"):
+ provider_yaml = yaml.safe_load(provider_path.read_text())
+ excluded_python_versions = provider_yaml.get("excluded-python-versions", [])
+ if current_python_version in excluded_python_versions:
+ excluded_providers.append(
+ provider_path.parent.relative_to(AIRFLOW_SOURCES_ROOT)
+ .as_posix()
+ .replace("airflow/providers/", "")
+ )
+ return excluded_providers
+
+
+def example_not_excluded_dags():
example_dirs = ["airflow/**/example_dags/example_*.py", "tests/system/providers/**/example_*.py"]
- suspended_providers_folders = get_suspended_providers_folders()
+ excluded_providers_folders = get_suspended_providers_folders()
+ excluded_providers_folders.extend(get_python_excluded_providers_folders())
possible_prefixes = ["airflow/providers/", "tests/system/providers/"]
suspended_providers_folders = [
AIRFLOW_SOURCES_ROOT.joinpath(prefix, provider).as_posix()
for prefix in possible_prefixes
- for provider in suspended_providers_folders
+ for provider in excluded_providers_folders
]
for example_dir in example_dirs:
candidates = glob(f"{AIRFLOW_SOURCES_ROOT.as_posix()}/{example_dir}", recursive=True)
@@ -68,7 +89,7 @@ def example_not_suspended_dags():
def example_dags_except_db_exception():
return [
dag_file
- for dag_file in example_not_suspended_dags()
+ for dag_file in example_not_excluded_dags()
if not dag_file.endswith(tuple(NO_DB_QUERY_EXCEPTION))
]
@@ -78,7 +99,7 @@ def relative_path(path):
@pytest.mark.db_test
-@pytest.mark.parametrize("example", example_not_suspended_dags(), ids=relative_path)
+@pytest.mark.parametrize("example", example_not_excluded_dags(), ids=relative_path)
def test_should_be_importable(example):
dagbag = DagBag(
dag_folder=example,
diff --git a/tests/integration/providers/apache/cassandra/hooks/test_cassandra.py b/tests/integration/providers/apache/cassandra/hooks/test_cassandra.py
index c27b72d369..14552c81d2 100644
--- a/tests/integration/providers/apache/cassandra/hooks/test_cassandra.py
+++ b/tests/integration/providers/apache/cassandra/hooks/test_cassandra.py
@@ -21,17 +21,21 @@ import re
from unittest import mock
import pytest
-from cassandra.cluster import Cluster
-from cassandra.policies import (
+
+cassandra = pytest.importorskip("cassandra")
+
+
+from cassandra.cluster import Cluster # noqa: E402
+from cassandra.policies import ( # noqa: E402
DCAwareRoundRobinPolicy,
RoundRobinPolicy,
TokenAwarePolicy,
WhiteListRoundRobinPolicy,
)
-from airflow.models import Connection
-from airflow.providers.apache.cassandra.hooks.cassandra import CassandraHook
-from airflow.utils import db
+from airflow.models import Connection # noqa: E402
+from airflow.providers.apache.cassandra.hooks.cassandra import CassandraHook # noqa: E402
+from airflow.utils import db # noqa: E402
@pytest.mark.integration("cassandra")
diff --git a/tests/providers/amazon/aws/executors/ecs/test_ecs_executor.py b/tests/providers/amazon/aws/executors/ecs/test_ecs_executor.py
index 04e7774555..f8bea330a7 100644
--- a/tests/providers/amazon/aws/executors/ecs/test_ecs_executor.py
+++ b/tests/providers/amazon/aws/executors/ecs/test_ecs_executor.py
@@ -1141,7 +1141,7 @@ class TestEcsExecutorConfig:
task_kwargs = ecs_executor_config.build_task_kwargs()
assert "launchType" not in task_kwargs
assert "capacityProviderStrategy" not in task_kwargs
- assert mock_conn.describe_clusters.called_once()
+ mock_conn.describe_clusters.assert_called_once()
@mock.patch.object(EcsHook, "conn")
def test_providing_no_capacity_provider_no_lunch_type_no_cluster_default(self, mock_conn, set_env_vars):
diff --git a/tests/providers/apache/cassandra/sensors/test_record.py b/tests/providers/apache/cassandra/sensors/test_record.py
index 309c168af2..2bb8c623ef 100644
--- a/tests/providers/apache/cassandra/sensors/test_record.py
+++ b/tests/providers/apache/cassandra/sensors/test_record.py
@@ -19,7 +19,11 @@ from __future__ import annotations
from unittest.mock import patch
-from airflow.providers.apache.cassandra.sensors.record import CassandraRecordSensor
+import pytest
+
+cassandra = pytest.importorskip("cassandra")
+
+from airflow.providers.apache.cassandra.sensors.record import CassandraRecordSensor # noqa: E402
TEST_CASSANDRA_CONN_ID = "cassandra_default"
TEST_CASSANDRA_TABLE = "t"
diff --git a/tests/providers/apache/cassandra/sensors/test_table.py b/tests/providers/apache/cassandra/sensors/test_table.py
index 9f02f0413b..f4da4bad15 100644
--- a/tests/providers/apache/cassandra/sensors/test_table.py
+++ b/tests/providers/apache/cassandra/sensors/test_table.py
@@ -19,7 +19,11 @@ from __future__ import annotations
from unittest.mock import patch
-from airflow.providers.apache.cassandra.sensors.table import CassandraTableSensor
+import pytest
+
+cassandra = pytest.importorskip("cassandra")
+
+from airflow.providers.apache.cassandra.sensors.table import CassandraTableSensor # noqa: E402
TEST_CASSANDRA_CONN_ID = "cassandra_default"
TEST_CASSANDRA_TABLE = "t"
diff --git a/tests/providers/google/cloud/transfers/test_cassandra_to_gcs.py b/tests/providers/google/cloud/transfers/test_cassandra_to_gcs.py
index 68a3155cf3..8e707d2afa 100644
--- a/tests/providers/google/cloud/transfers/test_cassandra_to_gcs.py
+++ b/tests/providers/google/cloud/transfers/test_cassandra_to_gcs.py
@@ -22,7 +22,9 @@ from unittest.mock import call
import pytest
-from airflow.providers.google.cloud.transfers.cassandra_to_gcs import CassandraToGCSOperator
+cassandra = pytest.importorskip("cassandra")
+
+from airflow.providers.google.cloud.transfers.cassandra_to_gcs import CassandraToGCSOperator # noqa: E402
TMP_FILE_NAME = "temp-file"
TEST_BUCKET = "test-bucket"
diff --git a/tests/providers/google/cloud/utils/test_mlengine_prediction_summary.py b/tests/providers/google/cloud/utils/test_mlengine_prediction_summary.py
index 0bf647399d..eb06759e86 100644
--- a/tests/providers/google/cloud/utils/test_mlengine_prediction_summary.py
+++ b/tests/providers/google/cloud/utils/test_mlengine_prediction_summary.py
@@ -23,11 +23,14 @@ from unittest import mock
import dill
import pytest
-try:
+from airflow import PY312
+
+if not PY312:
from airflow.providers.google.cloud.utils import mlengine_prediction_summary
-except ImportError as e:
- if "apache_beam" in str(e):
- pytestmark = pytest.mark.skip(f"package apache_beam not present. Skipping all tests in {__name__}")
+else:
+ pytestmark = pytest.mark.skip(
+ f"package apache_beam is not available for PY312. Skipping all tests in {__name__}"
+ )
class TestJsonCode:
@@ -84,23 +87,28 @@ class TestMakeSummary:
]
)
- @mock.patch.object(mlengine_prediction_summary.beam.pipeline, "PipelineOptions")
- @mock.patch.object(mlengine_prediction_summary.beam, "Pipeline")
- @mock.patch.object(mlengine_prediction_summary.beam.io, "ReadFromText")
def test_run_should_not_fail_with_valid_fn(self, io_mock, pipeline_obj_mock, pipeline_mock):
- def metric_function():
- return 1
-
- fn_enc = base64.b64encode(dill.dumps(metric_function)).decode("utf-8")
-
- mlengine_prediction_summary.run(
- [
- "--prediction_path=some/path",
- "--metric_fn_encoded=" + fn_enc,
- "--metric_keys=a",
- ]
- )
-
- pipeline_mock.assert_called_once_with([])
- pipeline_obj_mock.assert_called_once()
- io_mock.assert_called_once()
+ with mock.patch.object(
+ mlengine_prediction_summary.beam.pipeline, "PipelineOptions"
+ ) as pipeline_mock, mock.patch.object(
+ mlengine_prediction_summary.beam, "Pipeline"
+ ) as pipeline_obj_mock, mock.patch.object(
+ mlengine_prediction_summary.beam.io, "ReadFromText"
+ ) as io_mock:
+
+ def metric_function():
+ return 1
+
+ fn_enc = base64.b64encode(dill.dumps(metric_function)).decode("utf-8")
+
+ mlengine_prediction_summary.run(
+ [
+ "--prediction_path=some/path",
+ "--metric_fn_encoded=" + fn_enc,
+ "--metric_keys=a",
+ ]
+ )
+
+ pipeline_mock.assert_called_once_with([])
+ pipeline_obj_mock.assert_called_once()
+ io_mock.assert_called_once()
diff --git a/tests/providers/microsoft/azure/hooks/test_adx.py b/tests/providers/microsoft/azure/hooks/test_adx.py
index d919ce699a..55936bce8f 100644
--- a/tests/providers/microsoft/azure/hooks/test_adx.py
+++ b/tests/providers/microsoft/azure/hooks/test_adx.py
@@ -20,7 +20,7 @@ from __future__ import annotations
from unittest import mock
import pytest
-from azure.kusto.data import ClientRequestProperties, KustoClient, KustoConnectionStringBuilder
+from azure.kusto.data import ClientRequestProperties, KustoClient
from packaging.version import Version
from airflow.exceptions import AirflowException
@@ -97,11 +97,12 @@ class TestAzureDataExplorerHook:
def test_conn_method_aad_creds(self, mock_init, mocked_connection):
mock_init.return_value = None
AzureDataExplorerHook(azure_data_explorer_conn_id=mocked_connection.conn_id).get_conn()
- assert mock_init.called_with(
- KustoConnectionStringBuilder.with_aad_user_password_authentication(
- "https://help.kusto.windows.net", "client_id", "client secret", "tenant"
- )
- )
+ mock_init.assert_called()
+ args = mock_init.call_args
+ assert args[0][0].data_source == "https://help.kusto.windows.net"
+ assert args[0][0].aad_user_id == "client_id"
+ assert args[0][0].password == "client secret"
+ assert args[0][0].authority_id == "tenant"
@pytest.mark.parametrize(
"mocked_connection",
@@ -166,11 +167,12 @@ class TestAzureDataExplorerHook:
def test_conn_method_aad_app(self, mock_init, mocked_connection):
mock_init.return_value = None
AzureDataExplorerHook(azure_data_explorer_conn_id=mocked_connection.conn_id).get_conn()
- assert mock_init.called_with(
- KustoConnectionStringBuilder.with_aad_application_key_authentication(
- "https://help.kusto.windows.net", "app_id", "app key", "tenant"
- )
- )
+ mock_init.assert_called()
+ arg = mock_init.call_args
+ assert arg[0][0].data_source == "https://help.kusto.windows.net"
+ assert arg[0][0].application_client_id == "app_id"
+ assert arg[0][0].application_key == "app key"
+ assert arg[0][0].authority_id == "tenant"
@pytest.mark.parametrize(
"mocked_connection",
@@ -193,11 +195,13 @@ class TestAzureDataExplorerHook:
def test_conn_method_aad_app_cert(self, mock_init, mocked_connection):
mock_init.return_value = None
AzureDataExplorerHook(azure_data_explorer_conn_id=mocked_connection.conn_id).get_conn()
- assert mock_init.called_with(
- KustoConnectionStringBuilder.with_aad_application_certificate_authentication(
- "https://help.kusto.windows.net", "client_id", "PEM", "thumbprint", "tenant"
- )
- )
+ mock_init.assert_called()
+ arg = mock_init.call_args
+ assert arg[0][0].data_source == "https://help.kusto.windows.net"
+ assert arg[0][0].application_client_id == "app_id"
+ assert arg[0][0].application_key == "app key"
+ assert arg[0][0].aad_federated_security
+ assert arg[0][0].authority_id == "tenant"
@pytest.mark.parametrize(
"mocked_connection",
@@ -215,9 +219,9 @@ class TestAzureDataExplorerHook:
def test_conn_method_aad_device(self, mock_init, mocked_connection):
mock_init.return_value = None
AzureDataExplorerHook(azure_data_explorer_conn_id=mocked_connection.conn_id).get_conn()
- assert mock_init.called_with(
- KustoConnectionStringBuilder.with_aad_device_authentication("https://help.kusto.windows.net")
- )
+ mock_init.assert_called()
+ arg = mock_init.call_args
+ assert arg[0][0].data_source == "https://help.kusto.windows.net"
@pytest.mark.parametrize(
"mocked_connection",
@@ -240,13 +244,14 @@ class TestAzureDataExplorerHook:
def test_conn_method_azure_token_cred(self, mock_init, mock_default_azure_credential, mocked_connection):
mock_init.return_value = None
AzureDataExplorerHook(azure_data_explorer_conn_id=mocked_connection.conn_id).get_conn()
- assert mock_default_azure_credential.called_with("test_id", "test_tenant_id")
- assert mock_init.called_with(
- KustoConnectionStringBuilder.with_azure_token_credential(
- connection_string="https://help.kusto.windows.net",
- credential=mock_default_azure_credential,
- )
- )
+ mock_init.assert_called()
+ args = mock_init.call_args
+ assert args[0][0].data_source == "https://help.kusto.windows.net"
+
+ mock_default_azure_credential.assert_called()
+ args = mock_default_azure_credential.call_args
+ assert args[1]["managed_identity_client_id"] == "test_id"
+ assert args[1]["workload_identity_tenant_id"] == "test_tenant_id"
@pytest.mark.parametrize(
"mocked_connection",
@@ -267,7 +272,11 @@ class TestAzureDataExplorerHook:
hook.run_query("Database", "Logs | schema", options={"option1": "option_value"})
properties = ClientRequestProperties()
properties.set_option("option1", "option_value")
- assert mock_execute.called_with("Database", "Logs | schema", properties=properties)
+ mock_execute.assert_called()
+ args = mock_execute.call_args
+ assert args[0][0] == "Logs | schema"
+ assert args[0][1] == "Database"
+ assert args[1]["properties"]._options["option1"] == "option_value"
@pytest.mark.parametrize(
"mocked_connection",
diff --git a/tests/providers/microsoft/azure/hooks/test_wasb.py b/tests/providers/microsoft/azure/hooks/test_wasb.py
index 887fc7df38..7fb4d7d8f9 100644
--- a/tests/providers/microsoft/azure/hooks/test_wasb.py
+++ b/tests/providers/microsoft/azure/hooks/test_wasb.py
@@ -188,9 +188,12 @@ class TestWasbHook:
)
def test_managed_identity(self, mocked_default_azure_credential, mocked_blob_service_client):
- assert mocked_default_azure_credential.called_with(None, None)
+ mocked_default_azure_credential.assert_not_called()
mocked_default_azure_credential.return_value = "foo-bar"
WasbHook(wasb_conn_id=self.managed_identity_conn_id).get_conn()
+ mocked_default_azure_credential.assert_called_with(
+ managed_identity_client_id=None, workload_identity_tenant_id=None
+ )
mocked_blob_service_client.assert_called_once_with(
account_url="https://None.blob.core.windows.net/",
credential="foo-bar",
diff --git a/tests/providers/papermill/hooks/test_kernel.py b/tests/providers/papermill/hooks/test_kernel.py
index 4266d5fcb7..b6e1eb10b2 100644
--- a/tests/providers/papermill/hooks/test_kernel.py
+++ b/tests/providers/papermill/hooks/test_kernel.py
@@ -18,8 +18,17 @@ from __future__ import annotations
from unittest.mock import patch
-from airflow.models import Connection
-from airflow.providers.papermill.hooks.kernel import KernelHook
+import pytest
+
+from airflow import PY312
+
+pytestmark = pytest.mark.skipif(
+ PY312,
+ reason="PapermillOperator is not supported on Python 3.12",
+)
+
+from airflow.models import Connection # noqa: E402
+from airflow.providers.papermill.hooks.kernel import KernelHook # noqa: E402
class TestKernelHook:
diff --git a/tests/providers/papermill/operators/test_papermill.py b/tests/providers/papermill/operators/test_papermill.py
index e734bb8ed6..b748b3a042 100644
--- a/tests/providers/papermill/operators/test_papermill.py
+++ b/tests/providers/papermill/operators/test_papermill.py
@@ -21,15 +21,14 @@ from unittest.mock import MagicMock, patch
import pytest
-from airflow.providers.papermill.hooks.kernel import (
- JUPYTER_KERNEL_CONTROL_PORT,
- JUPYTER_KERNEL_HB_PORT,
- JUPYTER_KERNEL_IOPUB_PORT,
- JUPYTER_KERNEL_SHELL_PORT,
- JUPYTER_KERNEL_STDIN_PORT,
+from airflow import PY312
+
+pytestmark = pytest.mark.skipif(
+ PY312,
+ reason="PapermillOperator is not supported on Python 3.12",
)
-from airflow.providers.papermill.operators.papermill import REMOTE_KERNEL_ENGINE, NoteBook, PapermillOperator
-from airflow.utils import timezone
+
+from airflow.utils import timezone # noqa: E402
DEFAULT_DATE = timezone.datetime(2021, 1, 1)
TEST_INPUT_URL = "/foo/bar"
@@ -40,6 +39,8 @@ class TestNoteBook:
"""Test NoteBook object."""
def test_templated_fields(self):
+ from airflow.providers.papermill.operators.papermill import NoteBook
+
assert hasattr(NoteBook, "template_fields")
assert "parameters" in NoteBook.template_fields
@@ -50,35 +51,50 @@ class TestPapermillOperator:
def test_mandatory_attributes(self):
"""Test missing Input or Output notebooks."""
with pytest.raises(ValueError, match="Input notebook is not specified"):
+ from airflow.providers.papermill.operators.papermill import PapermillOperator
+
PapermillOperator(task_id="missing_input_nb", output_nb="foo-bar")
with pytest.raises(ValueError, match="Output notebook is not specified"):
PapermillOperator(task_id="missing_input_nb", input_nb="foo-bar")
@pytest.mark.parametrize(
- "output_nb",
+ "output_nb_url, output_as_object",
[
- pytest.param(TEST_OUTPUT_URL, id="output-as-string"),
- pytest.param(NoteBook(TEST_OUTPUT_URL), id="output-as-notebook-object"),
+ pytest.param(TEST_OUTPUT_URL, False, id="output-as-string"),
+ pytest.param(TEST_OUTPUT_URL, True, id="output-as-notebook-object"),
],
)
@pytest.mark.parametrize(
- "input_nb",
+ "input_nb_url, input_as_object",
[
- pytest.param(TEST_INPUT_URL, id="input-as-string"),
- pytest.param(NoteBook(TEST_INPUT_URL), id="input-as-notebook-object"),
+ pytest.param(TEST_INPUT_URL, False, id="input-as-string"),
+ pytest.param(TEST_INPUT_URL, True, id="input-as-notebook-object"),
],
)
@patch("airflow.providers.papermill.operators.papermill.pm")
@patch("airflow.providers.papermill.operators.papermill.PapermillOperator.hook")
- def test_notebooks_objects(self, mock_papermill, mock_hook, input_nb, output_nb):
+ def test_notebooks_objects(
+ self,
+ mock_papermill,
+ mock_hook,
+ input_nb_url: str,
+ output_nb_url: str,
+ input_as_object: bool,
+ output_as_object: bool,
+ ):
"""Test different type of Input/Output notebooks arguments."""
+ from airflow.providers.papermill.operators.papermill import NoteBook, PapermillOperator
+
+ input_nb: NoteBook | str = NoteBook(input_nb_url) if input_as_object else input_nb_url
+ output_nb: NoteBook | str = NoteBook(output_nb_url) if output_as_object else output_nb_url
+
op = PapermillOperator(task_id="test_notebooks_objects", input_nb=input_nb, output_nb=output_nb)
- op.execute(None)
+ op.execute(context={})
- assert op.input_nb.url == TEST_INPUT_URL
- assert op.output_nb.url == TEST_OUTPUT_URL
+ assert op.input_nb.url == TEST_INPUT_URL # type: ignore
+ assert op.output_nb.url == TEST_OUTPUT_URL # type: ignore
# Test render Lineage inlets/outlets
assert op.inlets[0] == op.input_nb
@@ -92,6 +108,8 @@ class TestPapermillOperator:
language_name = "python"
parameters = {"msg": "hello_world", "train": 1}
+ from airflow.providers.papermill.operators.papermill import PapermillOperator
+
op = PapermillOperator(
input_nb=in_nb,
output_nb=out_nb,
@@ -128,6 +146,8 @@ class TestPapermillOperator:
conn.extra_dejson = {"session_key": "notebooks"}
kernel_hook.return_value = conn
+ from airflow.providers.papermill.operators.papermill import PapermillOperator
+
op = PapermillOperator(
input_nb=in_nb,
output_nb=out_nb,
@@ -141,6 +161,15 @@ class TestPapermillOperator:
op.execute(context={})
+ from airflow.providers.papermill.hooks.kernel import (
+ JUPYTER_KERNEL_CONTROL_PORT,
+ JUPYTER_KERNEL_HB_PORT,
+ JUPYTER_KERNEL_IOPUB_PORT,
+ JUPYTER_KERNEL_SHELL_PORT,
+ JUPYTER_KERNEL_STDIN_PORT,
+ REMOTE_KERNEL_ENGINE,
+ )
+
mock_papermill.execute_notebook.assert_called_once_with(
in_nb,
out_nb,
@@ -162,6 +191,8 @@ class TestPapermillOperator:
@pytest.mark.db_test
def test_render_template(self, create_task_instance_of_operator):
"""Test rendering fields."""
+ from airflow.providers.papermill.operators.papermill import PapermillOperator
+
ti = create_task_instance_of_operator(
PapermillOperator,
input_nb="/tmp/{{ dag.dag_id }}.ipynb",
diff --git a/tests/www/api/experimental/test_endpoints.py b/tests/www/api/experimental/test_endpoints.py
index f645134a48..807456fd60 100644
--- a/tests/www/api/experimental/test_endpoints.py
+++ b/tests/www/api/experimental/test_endpoints.py
@@ -26,7 +26,7 @@ from urllib.parse import quote_plus
import pytest
-from airflow import settings
+from airflow import PY312, settings
from airflow.api.common.experimental.trigger_dag import trigger_dag
from airflow.models import DagBag, DagRun, Pool, TaskInstance
from airflow.models.serialized_dag import SerializedDagModel
@@ -334,6 +334,9 @@ class TestLineageApiExperimental(TestBase):
dag.sync_to_db()
SerializedDagModel.write_dag(dag)
+ @pytest.mark.skipif(
+ PY312, reason="Skipped as papermill used with experimental lineage is not Python 3.12 compatible"
+ )
@mock.patch("airflow.settings.DAGS_FOLDER", PAPERMILL_EXAMPLE_DAGS)
def test_lineage_info(self):
url_template = "/api/experimental/lineage/{}/{}"
diff --git a/tests/www/test_security.py b/tests/www/test_security.py
index ef1f90f51d..bdeb09164e 100644
--- a/tests/www/test_security.py
+++ b/tests/www/test_security.py
@@ -1082,7 +1082,7 @@ def test_update_user_auth_stat_first_successful_auth(mock_security_manager, new_
assert new_user.login_count == 1
assert new_user.fail_login_count == 0
assert new_user.last_login == datetime.datetime(1985, 11, 5, 1, 24, 0)
- assert mock_security_manager.update_user.called_once
+ mock_security_manager.update_user.assert_called_once_with(new_user)
@time_machine.travel(datetime.datetime(1985, 11, 5, 1, 24, 0), tick=False)
@@ -1092,7 +1092,7 @@ def test_update_user_auth_stat_subsequent_successful_auth(mock_security_manager,
assert old_user.login_count == 43
assert old_user.fail_login_count == 0
assert old_user.last_login == datetime.datetime(1985, 11, 5, 1, 24, 0)
- assert mock_security_manager.update_user.called_once
+ mock_security_manager.update_user.assert_called_once_with(old_user)
@time_machine.travel(datetime.datetime(1985, 11, 5, 1, 24, 0), tick=False)
@@ -1102,7 +1102,7 @@ def test_update_user_auth_stat_first_unsuccessful_auth(mock_security_manager, ne
assert new_user.login_count == 0
assert new_user.fail_login_count == 1
assert new_user.last_login is None
- assert mock_security_manager.update_user.called_once
+ mock_security_manager.update_user.assert_called_once_with(new_user)
@time_machine.travel(datetime.datetime(1985, 11, 5, 1, 24, 0), tick=False)
@@ -1112,7 +1112,7 @@ def test_update_user_auth_stat_subsequent_unsuccessful_auth(mock_security_manage
assert old_user.login_count == 42
assert old_user.fail_login_count == 10
assert old_user.last_login == datetime.datetime(1984, 12, 1, 0, 0, 0)
- assert mock_security_manager.update_user.called_once
+ mock_security_manager.update_user.assert_called_once_with(old_user)
def test_users_can_be_found(app, security_manager, session, caplog):