You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ta...@apache.org on 2023/11/22 14:02:14 UTC
(airflow) 01/02: Allow to use pre-release version of `pendulum` in the breeze
This is an automated email from the ASF dual-hosted git repository.
taragolis pushed a commit to branch pendulum-prerelease
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 8da25f1427ea83487030a9b7a5f31a3813364521
Author: Andrey Anshin <An...@taragol.is>
AuthorDate: Wed Oct 4 03:08:22 2023 +0400
Allow to use pre-release version of `pendulum` in the breeze
---
Dockerfile.ci | 7 ++++
.../airflow_breeze/commands/developer_commands.py | 4 ++
.../commands/developer_commands_config.py | 1 +
.../airflow_breeze/commands/testing_commands.py | 6 +++
.../commands/testing_commands_config.py | 3 ++
.../src/airflow_breeze/params/shell_params.py | 1 +
.../src/airflow_breeze/utils/common_options.py | 8 ++++
.../src/airflow_breeze/utils/custom_param_types.py | 17 ++++++++
.../airflow_breeze/utils/docker_command_utils.py | 2 +
images/breeze/output_shell.svg | 46 ++++++++++++----------
images/breeze/output_shell.txt | 2 +-
images/breeze/output_testing_db-tests.svg | 26 ++++++------
images/breeze/output_testing_db-tests.txt | 2 +-
images/breeze/output_testing_non-db-tests.svg | 26 ++++++------
images/breeze/output_testing_non-db-tests.txt | 2 +-
images/breeze/output_testing_tests.svg | 26 ++++++------
images/breeze/output_testing_tests.txt | 2 +-
scripts/ci/docker-compose/_docker.env | 1 +
scripts/ci/docker-compose/base.yml | 1 +
scripts/ci/docker-compose/devcontainer.env | 1 +
scripts/docker/entrypoint_ci.sh | 7 ++++
21 files changed, 133 insertions(+), 58 deletions(-)
diff --git a/Dockerfile.ci b/Dockerfile.ci
index c3e5e2e3a0..333277d4ea 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -1054,6 +1054,13 @@ if [[ ${DOWNGRADE_SQLALCHEMY=} == "true" ]]; then
pip install --root-user-action ignore "sqlalchemy==${min_sqlalchemy_version}"
pip check
fi
+if [[ -n ${USE_PENDULUM_PRERELEASE:=} ]]; then
+ echo
+ echo "${COLOR_BLUE}Replace pendulum by pre-release version: ${USE_PENDULUM_PRERELEASE}${COLOR_RESET}"
+ echo
+ pip install --root-user-action ignore "pendulum==${USE_PENDULUM_PRERELEASE}"
+ pip check
+fi
pip uninstall --root-user-action ignore "pytest-capture-warnings" -y >/dev/null 2>&1 || true
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index a8c257a2df..0b495f80cc 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -78,6 +78,7 @@ from airflow_breeze.utils.common_options import (
option_upgrade_boto,
option_use_airflow_version,
option_use_packages_from_dist,
+ option_use_pendulum_prerelease,
option_verbose,
)
from airflow_breeze.utils.console import get_console
@@ -171,6 +172,7 @@ class TimerThread(threading.Thread):
@option_include_mypy_volume
@option_upgrade_boto
@option_downgrade_sqlalchemy
+@option_use_pendulum_prerelease
@option_run_db_tests_only
@option_skip_db_tests
@option_verbose
@@ -215,6 +217,7 @@ def shell(
run_db_tests_only: bool,
skip_db_tests: bool,
standalone_dag_processor: bool,
+ use_pendulum_prerelease: str,
database_isolation: bool,
):
"""Enter breeze environment. this is the default command use when no other is selected."""
@@ -256,6 +259,7 @@ def shell(
upgrade_boto=upgrade_boto,
downgrade_sqlalchemy=downgrade_sqlalchemy,
standalone_dag_processor=standalone_dag_processor,
+ use_pendulum_prerelease=use_pendulum_prerelease,
database_isolation=database_isolation,
run_db_tests_only=run_db_tests_only,
skip_db_tests=skip_db_tests,
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
index 65af7d0162..a1cdd0d2c6 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands_config.py
@@ -126,6 +126,7 @@ DEVELOPER_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
"options": [
"--upgrade-boto",
"--downgrade-sqlalchemy",
+ "--use-pendulum-prerelease",
],
},
{
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index fdd712087b..81d9e12275 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -64,6 +64,7 @@ from airflow_breeze.utils.common_options import (
option_test_type,
option_upgrade_boto,
option_use_airflow_version,
+ option_use_pendulum_prerelease,
option_use_xdist,
option_verbose,
)
@@ -413,6 +414,7 @@ def _verify_parallelism_parameters(
@option_excluded_parallel_test_types
@option_upgrade_boto
@option_downgrade_sqlalchemy
+@option_use_pendulum_prerelease
@option_collect_only
@option_remove_arm_packages
@option_skip_docker_compose_down
@@ -454,6 +456,7 @@ def command_for_tests(**kwargs):
@option_excluded_parallel_test_types
@option_upgrade_boto
@option_downgrade_sqlalchemy
+@option_use_pendulum_prerelease
@option_collect_only
@option_remove_arm_packages
@option_skip_docker_compose_down
@@ -499,6 +502,7 @@ def command_for_db_tests(**kwargs):
@option_excluded_parallel_test_types
@option_upgrade_boto
@option_downgrade_sqlalchemy
+@option_use_pendulum_prerelease
@option_collect_only
@option_remove_arm_packages
@option_skip_docker_compose_down
@@ -551,6 +555,7 @@ def _run_test_command(
test_type: str,
upgrade_boto: bool,
use_airflow_version: str | None,
+ use_pendulum_prerelease: str,
use_xdist: bool,
mssql_version: str = "",
mysql_version: str = "",
@@ -581,6 +586,7 @@ def _run_test_command(
test_type=test_type,
upgrade_boto=upgrade_boto,
downgrade_sqlalchemy=downgrade_sqlalchemy,
+ use_pendulum_prerelease=use_pendulum_prerelease,
collect_only=collect_only,
remove_arm_packages=remove_arm_packages,
github_repository=github_repository,
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
index 17ecfa52c5..6e4f26a53a 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -78,6 +78,7 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
"--mount-sources",
"--upgrade-boto",
"--downgrade-sqlalchemy",
+ "--use-pendulum-prerelease",
"--remove-arm-packages",
"--skip-docker-compose-down",
],
@@ -124,6 +125,7 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
"--mount-sources",
"--upgrade-boto",
"--downgrade-sqlalchemy",
+ "--use-pendulum-prerelease",
"--remove-arm-packages",
"--skip-docker-compose-down",
],
@@ -174,6 +176,7 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
"--mount-sources",
"--upgrade-boto",
"--downgrade-sqlalchemy",
+ "--use-pendulum-prerelease",
"--remove-arm-packages",
"--skip-docker-compose-down",
],
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py b/dev/breeze/src/airflow_breeze/params/shell_params.py
index 182befccdd..729a4ecbcf 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -123,6 +123,7 @@ class ShellParams:
verbose: bool = False
upgrade_boto: bool = False
downgrade_sqlalchemy: bool = False
+ use_pendulum_prerelease: str = ""
executor: str = START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS
celery_broker: str = DEFAULT_CELERY_BROKER
celery_flower: bool = False
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py
index 249faaafd1..ba6206bdd3 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -57,6 +57,7 @@ from airflow_breeze.utils.custom_param_types import (
DryRunOption,
MySQLBackendVersionType,
NotVerifiedBetterChoice,
+ PreReleaseVersion,
UseAirflowVersionType,
VerboseOption,
)
@@ -659,6 +660,13 @@ option_downgrade_sqlalchemy = click.option(
is_flag=True,
envvar="DOWNGRADE_SQLALCHEMY",
)
+option_use_pendulum_prerelease = click.option(
+ "--use-pendulum-prerelease",
+ help="Use pre-released version of pendulum.",
+ required=False,
+ type=PreReleaseVersion(),
+ envvar="USE_PENDULUM_PRERELEASE",
+)
option_run_db_tests_only = click.option(
"--run-db-tests-only",
help="Only runs tests that require a database",
diff --git a/dev/breeze/src/airflow_breeze/utils/custom_param_types.py b/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
index f4983aa33f..063d9d2477 100644
--- a/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
+++ b/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
@@ -224,3 +224,20 @@ class UseAirflowVersionType(BetterChoice):
if re.match(r"^\d*\.\d*\.\d*\S*$", value):
return value
return super().convert(value, param, ctx)
+
+
+class PreReleaseVersion(ParamType):
+ name = "PreReleaseVersion"
+
+ def convert(self, value, param, ctx):
+ from packaging.version import Version
+
+ if value:
+ try:
+ version = Version(value)
+ except ValueError:
+ self.fail(f"Unable to parse version {value!r}.", param, ctx)
+ else:
+ if not version.is_prerelease:
+ self.fail(f"Expected pre-release version, but got {value!r}.", param, ctx)
+ return super().convert(value, param, ctx)
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index 78a8d69754..e3efbb9b9d 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -575,6 +575,7 @@ def update_expected_environment_variables(env: dict[str, str]) -> None:
set_value_to_default_if_not_set(env, "UPGRADE_BOTO", "false")
set_value_to_default_if_not_set(env, "DOWNGRADE_SQLALCHEMY", "false")
set_value_to_default_if_not_set(env, "UPGRADE_TO_NEWER_DEPENDENCIES", "false")
+ set_value_to_default_if_not_set(env, "USE_PENDULUM_PRERELEASE", "")
set_value_to_default_if_not_set(env, "USE_PACKAGES_FROM_DIST", "false")
set_value_to_default_if_not_set(env, "VERBOSE", "false")
set_value_to_default_if_not_set(env, "VERBOSE_COMMANDS", "false")
@@ -624,6 +625,7 @@ DERIVE_ENV_VARIABLES_FROM_ATTRIBUTES = {
"UPGRADE_BOTO": "upgrade_boto",
"USE_XDIST": "use_xdist",
"DOWNGRADE_SQLALCHEMY": "downgrade_sqlalchemy",
+ "USE_PENDULUM_PRERELEASE": "use_pendulum_prerelease",
"USE_AIRFLOW_VERSION": "use_airflow_version",
"USE_PACKAGES_FROM_DIST": "use_packages_from_dist",
"VERSION_SUFFIX_FOR_PYPI": "version_suffix_for_pypi",
diff --git a/images/breeze/output_shell.svg b/images/breeze/output_shell.svg
index 115a00a3c1..4d51cf9029 100644
--- a/images/breeze/output_shell.svg
+++ b/images/breeze/output_shell.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2050.8" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2075.2" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-shell-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1999.8" />
+ <rect x="0" y="0" width="1463.0" height="2024.1999999999998" />
</clipPath>
<clipPath id="breeze-shell-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -288,9 +288,12 @@
<clipPath id="breeze-shell-line-80">
<rect x="0" y="1953.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-shell-line-81">
+ <rect x="0" y="1977.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="2048.8" rx="8"/><text class="breeze-shell-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: shell</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="2073.2" rx="8"/><text class="breeze-shell-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: 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"/>
@@ -364,24 +367,25 @@
</text><text class="breeze-shell-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-shell-line-61)">│</text><text class="breeze-shell-r5" x="451.4" y="1508.4" textLength="658.8" clip-path="url(#breeze-shell-line-61)">[default: wheel]                                      </text><text cl [...]
</text><text class="breeze-shell-r5" x="0" y="1532.8" textLength="1464" clip-path="url(#breeze-shell-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1532.8" textLength="12.2" clip-path="url(#breeze-shell-line-62)">
</text><text class="breeze-shell-r5" x="0" y="1557.2" textLength="24.4" clip-path="url(#breeze-shell-line-63)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1557.2" textLength="500.2" clip-path="url(#breeze-shell-line-63)"> Upgrading/downgrading selected packages </text><text class="breeze-shell-r5" x="524.6" y="1557.2" textLength="915" clip-path="url(#breeze-shell-line-63)">───────────────────────────────────────────────────────────────────────────</text><text c [...]
-</text><text class="breeze-shell-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-shell-line-64)">│</text><text class="breeze-shell-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-shell-line-64)">-</text><text class="breeze-shell-r4" x="36.6" y="1581.6" textLength="97.6" clip-path="url(#breeze-shell-line-64)">-upgrade</text><text class="breeze-shell-r4" x="134.2" y="1581.6" textLength="61" clip-path="url(#breeze-shell-line-64)">-boto</text><text class="breez [...]
-</text><text class="breeze-shell-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-shell-line-65)">│</text><text class="breeze-shell-r4" x="24.4" y="1606" textLength="12.2" clip-path="url(#breeze-shell-line-65)">-</text><text class="breeze-shell-r4" x="36.6" y="1606" textLength="122" clip-path="url(#breeze-shell-line-65)">-downgrade</text><text class="breeze-shell-r4" x="158.6" y="1606" textLength="134.2" clip-path="url(#breeze-shell-line-65)">-sqlalchemy</text><text class="bre [...]
-</text><text class="breeze-shell-r5" x="0" y="1630.4" textLength="1464" clip-path="url(#breeze-shell-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1630.4" textLength="12.2" clip-path="url(#breeze-shell-line-66)">
-</text><text class="breeze-shell-r5" x="0" y="1654.8" textLength="24.4" clip-path="url(#breeze-shell-line-67)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1654.8" textLength="183" clip-path="url(#breeze-shell-line-67)"> DB test flags </text><text class="breeze-shell-r5" x="207.4" y="1654.8" textLength="1232.2" clip-path="url(#breeze-shell-line-67)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text [...]
-</text><text class="breeze-shell-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-shell-line-68)">│</text><text class="breeze-shell-r4" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#breeze-shell-line-68)">-</text><text class="breeze-shell-r4" x="36.6" y="1679.2" textLength="48.8" clip-path="url(#breeze-shell-line-68)">-run</text><text class="breeze-shell-r4" x="85.4" y="1679.2" textLength="170.8" clip-path="url(#breeze-shell-line-68)">-db-tests-only</text><text class [...]
-</text><text class="breeze-shell-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-shell-line-69)">│</text><text class="breeze-shell-r4" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#breeze-shell-line-69)">-</text><text class="breeze-shell-r4" x="36.6" y="1703.6" textLength="61" clip-path="url(#breeze-shell-line-69)">-skip</text><text class="breeze-shell-r4" x="97.6" y="1703.6" textLength="109.8" clip-path="url(#breeze-shell-line-69)">-db-tests</text><text class="bree [...]
-</text><text class="breeze-shell-r5" x="0" y="1728" textLength="1464" clip-path="url(#breeze-shell-line-70)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1728" textLength="12.2" clip-path="url(#breeze-shell-line-70)">
-</text><text class="breeze-shell-r5" x="0" y="1752.4" textLength="24.4" clip-path="url(#breeze-shell-line-71)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1752.4" textLength="183" clip-path="url(#breeze-shell-line-71)"> Other options </text><text class="breeze-shell-r5" x="207.4" y="1752.4" textLength="1232.2" clip-path="url(#breeze-shell-line-71)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class [...]
-</text><text class="breeze-shell-r5" x="0" y="1776.8" textLength="12.2" clip-path="url(#breeze-shell-line-72)">│</text><text class="breeze-shell-r4" x="24.4" y="1776.8" textLength="12.2" clip-path="url(#breeze-shell-line-72)">-</text><text class="breeze-shell-r4" x="36.6" y="1776.8" textLength="97.6" clip-path="url(#breeze-shell-line-72)">-forward</text><text class="breeze-shell-r4" x="134.2" y="1776.8" textLength="146.4" clip-path="url(#breeze-shell-line-72)">-credentials</text><text cl [...]
-</text><text class="breeze-shell-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-shell-line-73)">│</text><text class="breeze-shell-r4" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#breeze-shell-line-73)">-</text><text class="breeze-shell-r4" x="36.6" y="1801.2" textLength="48.8" clip-path="url(#breeze-shell-line-73)">-max</text><text class="breeze-shell-r4" x="85.4" y="1801.2" textLength="61" clip-path="url(#breeze-shell-line-73)">-time</text><text class="breeze-she [...]
-</text><text class="breeze-shell-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-shell-line-74)">│</text><text class="breeze-shell-r7" x="353.8" y="1825.6" textLength="1049.2" clip-path="url(#breeze-shell-line-74)">(INTEGER RANGE)                                         [...]
-</text><text class="breeze-shell-r5" x="0" y="1850" textLength="1464" clip-path="url(#breeze-shell-line-75)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1850" textLength="12.2" clip-path="url(#breeze-shell-line-75)">
-</text><text class="breeze-shell-r5" x="0" y="1874.4" textLength="24.4" clip-path="url(#breeze-shell-line-76)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1874.4" textLength="195.2" clip-path="url(#breeze-shell-line-76)"> Common options </text><text class="breeze-shell-r5" x="219.6" y="1874.4" textLength="1220" clip-path="url(#breeze-shell-line-76)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class [...]
-</text><text class="breeze-shell-r5" x="0" y="1898.8" textLength="12.2" clip-path="url(#breeze-shell-line-77)">│</text><text class="breeze-shell-r4" x="24.4" y="1898.8" textLength="12.2" clip-path="url(#breeze-shell-line-77)">-</text><text class="breeze-shell-r4" x="36.6" y="1898.8" textLength="97.6" clip-path="url(#breeze-shell-line-77)">-verbose</text><text class="breeze-shell-r6" x="158.6" y="1898.8" textLength="24.4" clip-path="url(#breeze-shell-line-77)">-v</text><text class="breeze [...]
-</text><text class="breeze-shell-r5" x="0" y="1923.2" textLength="12.2" clip-path="url(#breeze-shell-line-78)">│</text><text class="breeze-shell-r4" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#breeze-shell-line-78)">-</text><text class="breeze-shell-r4" x="36.6" y="1923.2" textLength="48.8" clip-path="url(#breeze-shell-line-78)">-dry</text><text class="breeze-shell-r4" x="85.4" y="1923.2" textLength="48.8" clip-path="url(#breeze-shell-line-78)">-run</text><text class="breeze-sh [...]
-</text><text class="breeze-shell-r5" x="0" y="1947.6" textLength="12.2" clip-path="url(#breeze-shell-line-79)">│</text><text class="breeze-shell-r4" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#breeze-shell-line-79)">-</text><text class="breeze-shell-r4" x="36.6" y="1947.6" textLength="85.4" clip-path="url(#breeze-shell-line-79)">-answer</text><text class="breeze-shell-r6" x="158.6" y="1947.6" textLength="24.4" clip-path="url(#breeze-shell-line-79)">-a</text><text class="breeze- [...]
-</text><text class="breeze-shell-r5" x="0" y="1972" textLength="12.2" clip-path="url(#breeze-shell-line-80)">│</text><text class="breeze-shell-r4" x="24.4" y="1972" textLength="12.2" clip-path="url(#breeze-shell-line-80)">-</text><text class="breeze-shell-r4" x="36.6" y="1972" textLength="61" clip-path="url(#breeze-shell-line-80)">-help</text><text class="breeze-shell-r6" x="158.6" y="1972" textLength="24.4" clip-path="url(#breeze-shell-line-80)">-h</text><text class="breeze-shell-r1" x= [...]
-</text><text class="breeze-shell-r5" x="0" y="1996.4" textLength="1464" clip-path="url(#breeze-shell-line-81)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1996.4" textLength="12.2" clip-path="url(#breeze-shell-line-81)">
+</text><text class="breeze-shell-r5" x="0" y="1581.6" textLength="12.2" clip-path="url(#breeze-shell-line-64)">│</text><text class="breeze-shell-r4" x="24.4" y="1581.6" textLength="12.2" clip-path="url(#breeze-shell-line-64)">-</text><text class="breeze-shell-r4" x="36.6" y="1581.6" textLength="97.6" clip-path="url(#breeze-shell-line-64)">-upgrade</text><text class="breeze-shell-r4" x="134.2" y="1581.6" textLength="61" clip-path="url(#breeze-shell-line-64)">-boto</text><text class="breez [...]
+</text><text class="breeze-shell-r5" x="0" y="1606" textLength="12.2" clip-path="url(#breeze-shell-line-65)">│</text><text class="breeze-shell-r4" x="24.4" y="1606" textLength="12.2" clip-path="url(#breeze-shell-line-65)">-</text><text class="breeze-shell-r4" x="36.6" y="1606" textLength="122" clip-path="url(#breeze-shell-line-65)">-downgrade</text><text class="breeze-shell-r4" x="158.6" y="1606" textLength="134.2" clip-path="url(#breeze-shell-line-65)">-sqlalchemy</text><text class="bre [...]
+</text><text class="breeze-shell-r5" x="0" y="1630.4" textLength="12.2" clip-path="url(#breeze-shell-line-66)">│</text><text class="breeze-shell-r4" x="24.4" y="1630.4" textLength="12.2" clip-path="url(#breeze-shell-line-66)">-</text><text class="breeze-shell-r4" x="36.6" y="1630.4" textLength="48.8" clip-path="url(#breeze-shell-line-66)">-use</text><text class="breeze-shell-r4" x="85.4" y="1630.4" textLength="244" clip-path="url(#breeze-shell-line-66)">-pendulum-prerelease</text><text c [...]
+</text><text class="breeze-shell-r5" x="0" y="1654.8" textLength="1464" clip-path="url(#breeze-shell-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1654.8" textLength="12.2" clip-path="url(#breeze-shell-line-67)">
+</text><text class="breeze-shell-r5" x="0" y="1679.2" textLength="24.4" clip-path="url(#breeze-shell-line-68)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1679.2" textLength="183" clip-path="url(#breeze-shell-line-68)"> DB test flags </text><text class="breeze-shell-r5" x="207.4" y="1679.2" textLength="1232.2" clip-path="url(#breeze-shell-line-68)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text [...]
+</text><text class="breeze-shell-r5" x="0" y="1703.6" textLength="12.2" clip-path="url(#breeze-shell-line-69)">│</text><text class="breeze-shell-r4" x="24.4" y="1703.6" textLength="12.2" clip-path="url(#breeze-shell-line-69)">-</text><text class="breeze-shell-r4" x="36.6" y="1703.6" textLength="48.8" clip-path="url(#breeze-shell-line-69)">-run</text><text class="breeze-shell-r4" x="85.4" y="1703.6" textLength="170.8" clip-path="url(#breeze-shell-line-69)">-db-tests-only</text><text class [...]
+</text><text class="breeze-shell-r5" x="0" y="1728" textLength="12.2" clip-path="url(#breeze-shell-line-70)">│</text><text class="breeze-shell-r4" x="24.4" y="1728" textLength="12.2" clip-path="url(#breeze-shell-line-70)">-</text><text class="breeze-shell-r4" x="36.6" y="1728" textLength="61" clip-path="url(#breeze-shell-line-70)">-skip</text><text class="breeze-shell-r4" x="97.6" y="1728" textLength="109.8" clip-path="url(#breeze-shell-line-70)">-db-tests</text><text class="breeze-shell [...]
+</text><text class="breeze-shell-r5" x="0" y="1752.4" textLength="1464" clip-path="url(#breeze-shell-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1752.4" textLength="12.2" clip-path="url(#breeze-shell-line-71)">
+</text><text class="breeze-shell-r5" x="0" y="1776.8" textLength="24.4" clip-path="url(#breeze-shell-line-72)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1776.8" textLength="183" clip-path="url(#breeze-shell-line-72)"> Other options </text><text class="breeze-shell-r5" x="207.4" y="1776.8" textLength="1232.2" clip-path="url(#breeze-shell-line-72)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class [...]
+</text><text class="breeze-shell-r5" x="0" y="1801.2" textLength="12.2" clip-path="url(#breeze-shell-line-73)">│</text><text class="breeze-shell-r4" x="24.4" y="1801.2" textLength="12.2" clip-path="url(#breeze-shell-line-73)">-</text><text class="breeze-shell-r4" x="36.6" y="1801.2" textLength="97.6" clip-path="url(#breeze-shell-line-73)">-forward</text><text class="breeze-shell-r4" x="134.2" y="1801.2" textLength="146.4" clip-path="url(#breeze-shell-line-73)">-credentials</text><text cl [...]
+</text><text class="breeze-shell-r5" x="0" y="1825.6" textLength="12.2" clip-path="url(#breeze-shell-line-74)">│</text><text class="breeze-shell-r4" x="24.4" y="1825.6" textLength="12.2" clip-path="url(#breeze-shell-line-74)">-</text><text class="breeze-shell-r4" x="36.6" y="1825.6" textLength="48.8" clip-path="url(#breeze-shell-line-74)">-max</text><text class="breeze-shell-r4" x="85.4" y="1825.6" textLength="61" clip-path="url(#breeze-shell-line-74)">-time</text><text class="breeze-she [...]
+</text><text class="breeze-shell-r5" x="0" y="1850" textLength="12.2" clip-path="url(#breeze-shell-line-75)">│</text><text class="breeze-shell-r7" x="353.8" y="1850" textLength="1049.2" clip-path="url(#breeze-shell-line-75)">(INTEGER RANGE)                                         & [...]
+</text><text class="breeze-shell-r5" x="0" y="1874.4" textLength="1464" clip-path="url(#breeze-shell-line-76)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="1874.4" textLength="12.2" clip-path="url(#breeze-shell-line-76)">
+</text><text class="breeze-shell-r5" x="0" y="1898.8" textLength="24.4" clip-path="url(#breeze-shell-line-77)">╭─</text><text class="breeze-shell-r5" x="24.4" y="1898.8" textLength="195.2" clip-path="url(#breeze-shell-line-77)"> Common options </text><text class="breeze-shell-r5" x="219.6" y="1898.8" textLength="1220" clip-path="url(#breeze-shell-line-77)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class [...]
+</text><text class="breeze-shell-r5" x="0" y="1923.2" textLength="12.2" clip-path="url(#breeze-shell-line-78)">│</text><text class="breeze-shell-r4" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#breeze-shell-line-78)">-</text><text class="breeze-shell-r4" x="36.6" y="1923.2" textLength="97.6" clip-path="url(#breeze-shell-line-78)">-verbose</text><text class="breeze-shell-r6" x="158.6" y="1923.2" textLength="24.4" clip-path="url(#breeze-shell-line-78)">-v</text><text class="breeze [...]
+</text><text class="breeze-shell-r5" x="0" y="1947.6" textLength="12.2" clip-path="url(#breeze-shell-line-79)">│</text><text class="breeze-shell-r4" x="24.4" y="1947.6" textLength="12.2" clip-path="url(#breeze-shell-line-79)">-</text><text class="breeze-shell-r4" x="36.6" y="1947.6" textLength="48.8" clip-path="url(#breeze-shell-line-79)">-dry</text><text class="breeze-shell-r4" x="85.4" y="1947.6" textLength="48.8" clip-path="url(#breeze-shell-line-79)">-run</text><text class="breeze-sh [...]
+</text><text class="breeze-shell-r5" x="0" y="1972" textLength="12.2" clip-path="url(#breeze-shell-line-80)">│</text><text class="breeze-shell-r4" x="24.4" y="1972" textLength="12.2" clip-path="url(#breeze-shell-line-80)">-</text><text class="breeze-shell-r4" x="36.6" y="1972" textLength="85.4" clip-path="url(#breeze-shell-line-80)">-answer</text><text class="breeze-shell-r6" x="158.6" y="1972" textLength="24.4" clip-path="url(#breeze-shell-line-80)">-a</text><text class="breeze-shell-r1 [...]
+</text><text class="breeze-shell-r5" x="0" y="1996.4" textLength="12.2" clip-path="url(#breeze-shell-line-81)">│</text><text class="breeze-shell-r4" x="24.4" y="1996.4" textLength="12.2" clip-path="url(#breeze-shell-line-81)">-</text><text class="breeze-shell-r4" x="36.6" y="1996.4" textLength="61" clip-path="url(#breeze-shell-line-81)">-help</text><text class="breeze-shell-r6" x="158.6" y="1996.4" textLength="24.4" clip-path="url(#breeze-shell-line-81)">-h</text><text class="breeze-shel [...]
+</text><text class="breeze-shell-r5" x="0" y="2020.8" textLength="1464" clip-path="url(#breeze-shell-line-82)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-shell-r1" x="1464" y="2020.8" textLength="12.2" clip-path="url(#breeze-shell-line-82)">
</text>
</g>
</g>
diff --git a/images/breeze/output_shell.txt b/images/breeze/output_shell.txt
index 7ae7c30c84..b8dd60684f 100644
--- a/images/breeze/output_shell.txt
+++ b/images/breeze/output_shell.txt
@@ -1 +1 @@
-64d63199a5c877a0bf9e1da29de02b67
+5b97e504d471f220741a8f78788689ef
diff --git a/images/breeze/output_testing_db-tests.svg b/images/breeze/output_testing_db-tests.svg
index 734dd26079..6e55fe5650 100644
--- a/images/breeze/output_testing_db-tests.svg
+++ b/images/breeze/output_testing_db-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1782.3999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1806.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-db-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1731.3999999999999" />
+ <rect x="0" y="0" width="1463.0" height="1755.8" />
</clipPath>
<clipPath id="breeze-testing-db-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -255,9 +255,12 @@
<clipPath id="breeze-testing-db-tests-line-69">
<rect x="0" y="1685.1" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-db-tests-line-70">
+ <rect x="0" y="1709.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="1780.4" 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="1804.8" 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"/>
@@ -330,14 +333,15 @@
</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-r5" x="414.8" y="1484" textLength="1024.8" clip-path="url(#breeze-testing-db-tests-line-60)">[default: 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-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-61)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1508.4" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-61)">-upgrade</text><text class="breeze-testing-db-tests-r4" x="134.2" y="1508.4" textLeng [...]
</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="122" clip-path="url(#breeze-testing-db-tests-line-62)">-downgrade</text><text class="breeze-testing-db-tests-r4" x="158.6" y="1532.8" textLen [...]
-</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="85.4" clip-path="url(#breeze-testing-db-tests-line-63)">-remove</text><text class="breeze-testing-db-tests-r4" x="122" y="1557.2" textLength= [...]
-</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="61" clip-path="url(#breeze-testing-db-tests-line-64)">-skip</text><text class="breeze-testing-db-tests-r4" x="97.6" y="1581.6" textLength="24 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1606" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-65)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1606" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-65)">
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1630.4" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-66)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="1630.4" textLength="195.2" clip-path="url(#breeze-testing-db-tests-line-66)"> Common options </text><text class="breeze-testing-db-tests-r5" x="219.6" y="1630.4" textLength="1220" clip-path="url(#breeze-testing-db-tests-line-66)">──────────────────────────────────────────────────── [...]
-</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="97.6" clip-path="url(#breeze-testing-db-tests-line-67)">-verbose</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1654.8" textLeng [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-68)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-68)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1679.2" textLength="48.8" clip-path="url(#breeze-testing-db-tests-line-68)">-dry</text><text class="breeze-testing-db-tests-r4" x="85.4" y="1679.2" textLength="4 [...]
-</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="61" clip-path="url(#breeze-testing-db-tests-line-69)">-help</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1703.6" textLength="2 [...]
-</text><text class="breeze-testing-db-tests-r5" x="0" y="1728" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-70)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1728" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-70)">
+</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="48.8" clip-path="url(#breeze-testing-db-tests-line-63)">-use</text><text class="breeze-testing-db-tests-r4" x="85.4" y="1557.2" textLength="2 [...]
+</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="85.4" clip-path="url(#breeze-testing-db-tests-line-64)">-remove</text><text class="breeze-testing-db-tests-r4" x="122" y="1581.6" textLength= [...]
+</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="61" clip-path="url(#breeze-testing-db-tests-line-65)">-skip</text><text class="breeze-testing-db-tests-r4" x="97.6" y="1606" textLength="244" clip- [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1630.4" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1630.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-66)">
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1654.8" textLength="24.4" clip-path="url(#breeze-testing-db-tests-line-67)">╭─</text><text class="breeze-testing-db-tests-r5" x="24.4" y="1654.8" textLength="195.2" clip-path="url(#breeze-testing-db-tests-line-67)"> Common options </text><text class="breeze-testing-db-tests-r5" x="219.6" y="1654.8" textLength="1220" clip-path="url(#breeze-testing-db-tests-line-67)">──────────────────────────────────────────────────── [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1679.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-68)">│</text><text class="breeze-testing-db-tests-r4" x="24.4" y="1679.2" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-68)">-</text><text class="breeze-testing-db-tests-r4" x="36.6" y="1679.2" textLength="97.6" clip-path="url(#breeze-testing-db-tests-line-68)">-verbose</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1679.2" textLeng [...]
+</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="48.8" clip-path="url(#breeze-testing-db-tests-line-69)">-dry</text><text class="breeze-testing-db-tests-r4" x="85.4" y="1703.6" textLength="4 [...]
+</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="61" clip-path="url(#breeze-testing-db-tests-line-70)">-help</text><text class="breeze-testing-db-tests-r7" x="158.6" y="1728" textLength="24.4" cli [...]
+</text><text class="breeze-testing-db-tests-r5" x="0" y="1752.4" textLength="1464" clip-path="url(#breeze-testing-db-tests-line-71)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-db-tests-r1" x="1464" y="1752.4" textLength="12.2" clip-path="url(#breeze-testing-db-tests-line-71)">
</text>
</g>
</g>
diff --git a/images/breeze/output_testing_db-tests.txt b/images/breeze/output_testing_db-tests.txt
index 9c1af589ad..62af611161 100644
--- a/images/breeze/output_testing_db-tests.txt
+++ b/images/breeze/output_testing_db-tests.txt
@@ -1 +1 @@
-c45075080add9d991477e7f0779c9759
+3a2df90bcf5973892ced65b19739f5c0
diff --git a/images/breeze/output_testing_non-db-tests.svg b/images/breeze/output_testing_non-db-tests.svg
index ff187835fa..c1c1b5b032 100644
--- a/images/breeze/output_testing_non-db-tests.svg
+++ b/images/breeze/output_testing_non-db-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1587.1999999999998" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1611.6" xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-testing-non-db-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1536.1999999999998" />
+ <rect x="0" y="0" width="1463.0" height="1560.6" />
</clipPath>
<clipPath id="breeze-testing-non-db-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -231,9 +231,12 @@
<clipPath id="breeze-testing-non-db-tests-line-61">
<rect x="0" y="1489.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-non-db-tests-line-62">
+ <rect x="0" y="1514.3" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1585.2" rx="8"/><text class="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="1609.6" 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"/>
@@ -298,14 +301,15 @@
</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-r5" x="414.8" y="1288.8" textLength="1024.8" clip-path="url(#breeze-testing-non-db-tests-line-52)">[default: 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-r4" x="24.4" y="1313.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-53)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1313.2" textLength="97.6" clip-path="url(#breeze-testing-non-db-tests-line-53)">-upgrade</text><text class="breeze-testing-non-db-tests-r4" x [...]
</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-r4" x="24.4" y="1337.6" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-54)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1337.6" textLength="122" clip-path="url(#breeze-testing-non-db-tests-line-54)">-downgrade</text><text class="breeze-testing-non-db-tests-r4" [...]
-</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="85.4" clip-path="url(#breeze-testing-non-db-tests-line-55)">-remove</text><text class="breeze-testing-non-db-tests-r4" x="122" [...]
-</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="61" clip-path="url(#breeze-testing-non-db-tests-line-56)">-skip</text><text class="breeze-testing-non-db-tests-r4" x="97. [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1410.8" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-57)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1410.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-57)">
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1435.2" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-58)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="1435.2" textLength="195.2" clip-path="url(#breeze-testing-non-db-tests-line-58)"> Common options </text><text class="breeze-testing-non-db-tests-r5" x="219.6" y="1435.2" textLength="1220" clip-path="url(#breeze-testing-non-db-tests-line-58)">──────────────────────────── [...]
-</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="97.6" clip-path="url(#breeze-testing-non-db-tests-line-59)">-verbose</text><text class="breeze-testing-non-db-tests-r7" 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="48.8" clip-path="url(#breeze-testing-non-db-tests-line-60)">-dry</text><text class="breeze-testing-non-db-tests-r4" x="85.4" y= [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-61)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-61)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1508.4" textLength="61" clip-path="url(#breeze-testing-non-db-tests-line-61)">-help</text><text class="breeze-testing-non-db-tests-r7" x="158 [...]
-</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1532.8" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1532.8" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-62)">
+</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="48.8" clip-path="url(#breeze-testing-non-db-tests-line-55)">-use</text><text class="breeze-testing-non-db-tests-r4" x="85.4" y= [...]
+</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="85.4" clip-path="url(#breeze-testing-non-db-tests-line-56)">-remove</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="61" clip-path="url(#breeze-testing-non-db-tests-line-57)">-skip</text><text class="breeze-testing-non-db-tests-r4" x="97. [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1435.2" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-58)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1435.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-58)">
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1459.6" textLength="24.4" clip-path="url(#breeze-testing-non-db-tests-line-59)">╭─</text><text class="breeze-testing-non-db-tests-r5" x="24.4" y="1459.6" textLength="195.2" clip-path="url(#breeze-testing-non-db-tests-line-59)"> Common options </text><text class="breeze-testing-non-db-tests-r5" x="219.6" y="1459.6" textLength="1220" clip-path="url(#breeze-testing-non-db-tests-line-59)">──────────────────────────── [...]
+</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="97.6" clip-path="url(#breeze-testing-non-db-tests-line-60)">-verbose</text><text class="breeze-testing-non-db-tests-r7" x="158. [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-61)">│</text><text class="breeze-testing-non-db-tests-r4" x="24.4" y="1508.4" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-61)">-</text><text class="breeze-testing-non-db-tests-r4" x="36.6" y="1508.4" textLength="48.8" clip-path="url(#breeze-testing-non-db-tests-line-61)">-dry</text><text class="breeze-testing-non-db-tests-r4" x="85 [...]
+</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="61" clip-path="url(#breeze-testing-non-db-tests-line-62)">-help</text><text class="breeze-testing-non-db-tests-r7" x="158 [...]
+</text><text class="breeze-testing-non-db-tests-r5" x="0" y="1557.2" textLength="1464" clip-path="url(#breeze-testing-non-db-tests-line-63)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-non-db-tests-r1" x="1464" y="1557.2" textLength="12.2" clip-path="url(#breeze-testing-non-db-tests-line-63)">
</text>
</g>
</g>
diff --git a/images/breeze/output_testing_non-db-tests.txt b/images/breeze/output_testing_non-db-tests.txt
index 36452a650f..efd8911103 100644
--- a/images/breeze/output_testing_non-db-tests.txt
+++ b/images/breeze/output_testing_non-db-tests.txt
@@ -1 +1 @@
-ed916603036dd9979b1593c4d088eb40
+67d3975a5ca34ed28b32e7bd66490a8a
diff --git a/images/breeze/output_testing_tests.svg b/images/breeze/output_testing_tests.svg
index f307efb40f..35afeea59c 100644
--- a/images/breeze/output_testing_tests.svg
+++ b/images/breeze/output_testing_tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2197.2" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2221.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-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="2146.2" />
+ <rect x="0" y="0" width="1463.0" height="2170.6" />
</clipPath>
<clipPath id="breeze-testing-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -306,9 +306,12 @@
<clipPath id="breeze-testing-tests-line-86">
<rect x="0" y="2099.9" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-testing-tests-line-87">
+ <rect x="0" y="2124.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="2195.2" 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="2219.6" 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"/>
@@ -398,14 +401,15 @@
</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-r5" x="414.8" y="1898.8" textLength="1024.8" clip-path="url(#breeze-testing-tests-line-77)">[default: 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-r4" x="24.4" y="1923.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-78)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="1923.2" textLength="97.6" clip-path="url(#breeze-testing-tests-line-78)">-upgrade</text><text class="breeze-testing-tests-r4" x="134.2" y="1923.2" textLength="61" clip-path="ur [...]
</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="122" clip-path="url(#breeze-testing-tests-line-79)">-downgrade</text><text class="breeze-testing-tests-r4" x="158.6" y="1947.6" textLength="134.2" clip-path [...]
-</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="85.4" clip-path="url(#breeze-testing-tests-line-80)">-remove</text><text class="breeze-testing-tests-r4" x="122" y="1972" textLength="158.6" 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="61" clip-path="url(#breeze-testing-tests-line-81)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="1996.4" textLength="244" clip-path="url(#br [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2020.8" textLength="1464" clip-path="url(#breeze-testing-tests-line-82)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2020.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-82)">
-</text><text class="breeze-testing-tests-r5" x="0" y="2045.2" textLength="24.4" clip-path="url(#breeze-testing-tests-line-83)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="2045.2" textLength="195.2" clip-path="url(#breeze-testing-tests-line-83)"> Common options </text><text class="breeze-testing-tests-r5" x="219.6" y="2045.2" textLength="1220" clip-path="url(#breeze-testing-tests-line-83)">────────────────────────────────────────────────────────────────────── [...]
-</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="97.6" clip-path="url(#breeze-testing-tests-line-84)">-verbose</text><text class="breeze-testing-tests-r6" x="158.6" y="2069.6" textLength="24.4" clip-path=" [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2094" textLength="12.2" clip-path="url(#breeze-testing-tests-line-85)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2094" textLength="12.2" clip-path="url(#breeze-testing-tests-line-85)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2094" textLength="48.8" clip-path="url(#breeze-testing-tests-line-85)">-dry</text><text class="breeze-testing-tests-r4" x="85.4" y="2094" textLength="48.8" clip-path="url(#breeze-t [...]
-</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="61" clip-path="url(#breeze-testing-tests-line-86)">-help</text><text class="breeze-testing-tests-r6" x="158.6" y="2118.4" textLength="24.4" clip-path="url(# [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="2142.8" textLength="1464" clip-path="url(#breeze-testing-tests-line-87)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2142.8" textLength="12.2" clip-path="url(#breeze-testing-tests-line-87)">
+</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="48.8" clip-path="url(#breeze-testing-tests-line-80)">-use</text><text class="breeze-testing-tests-r4" x="85.4" y="1972" textLength="244" clip-path="url(#breeze-te [...]
+</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="85.4" clip-path="url(#breeze-testing-tests-line-81)">-remove</text><text class="breeze-testing-tests-r4" x="122" y="1996.4" textLength="158.6" clip-path="ur [...]
+</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="61" clip-path="url(#breeze-testing-tests-line-82)">-skip</text><text class="breeze-testing-tests-r4" x="97.6" y="2020.8" textLength="244" clip-path="url(#br [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2045.2" textLength="1464" clip-path="url(#breeze-testing-tests-line-83)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2045.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-83)">
+</text><text class="breeze-testing-tests-r5" x="0" y="2069.6" textLength="24.4" clip-path="url(#breeze-testing-tests-line-84)">╭─</text><text class="breeze-testing-tests-r5" x="24.4" y="2069.6" textLength="195.2" clip-path="url(#breeze-testing-tests-line-84)"> Common options </text><text class="breeze-testing-tests-r5" x="219.6" y="2069.6" textLength="1220" clip-path="url(#breeze-testing-tests-line-84)">────────────────────────────────────────────────────────────────────── [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2094" textLength="12.2" clip-path="url(#breeze-testing-tests-line-85)">│</text><text class="breeze-testing-tests-r4" x="24.4" y="2094" textLength="12.2" clip-path="url(#breeze-testing-tests-line-85)">-</text><text class="breeze-testing-tests-r4" x="36.6" y="2094" textLength="97.6" clip-path="url(#breeze-testing-tests-line-85)">-verbose</text><text class="breeze-testing-tests-r6" x="158.6" y="2094" textLength="24.4" clip-path="url(#bre [...]
+</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="48.8" clip-path="url(#breeze-testing-tests-line-86)">-dry</text><text class="breeze-testing-tests-r4" x="85.4" y="2118.4" textLength="48.8" clip-path="url(# [...]
+</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="61" clip-path="url(#breeze-testing-tests-line-87)">-help</text><text class="breeze-testing-tests-r6" x="158.6" y="2142.8" textLength="24.4" clip-path="url(# [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="2167.2" textLength="1464" clip-path="url(#breeze-testing-tests-line-88)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-testing-tests-r1" x="1464" y="2167.2" textLength="12.2" clip-path="url(#breeze-testing-tests-line-88)">
</text>
</g>
</g>
diff --git a/images/breeze/output_testing_tests.txt b/images/breeze/output_testing_tests.txt
index 49117f9f21..fc813d1a75 100644
--- a/images/breeze/output_testing_tests.txt
+++ b/images/breeze/output_testing_tests.txt
@@ -1 +1 @@
-1620dc0e96578677e8f6ce48cbcd2daa
+935c42956f1bcd1328005ecdb3fa9244
diff --git a/scripts/ci/docker-compose/_docker.env b/scripts/ci/docker-compose/_docker.env
index ae3c567bfd..72d1b643d0 100644
--- a/scripts/ci/docker-compose/_docker.env
+++ b/scripts/ci/docker-compose/_docker.env
@@ -80,6 +80,7 @@ UPGRADE_BOTO
UPGRADE_TO_NEWER_DEPENDENCIES
USE_XDIST
DOWNGRADE_SQLALCHEMY
+USE_PENDULUM_PRERELEASE
VERBOSE
VERBOSE_COMMANDS
VERSION_SUFFIX_FOR_PYPI
diff --git a/scripts/ci/docker-compose/base.yml b/scripts/ci/docker-compose/base.yml
index 76e41adfcf..1ba8c2b6f9 100644
--- a/scripts/ci/docker-compose/base.yml
+++ b/scripts/ci/docker-compose/base.yml
@@ -90,6 +90,7 @@ services:
- USE_XDIST=${USE_XDIST}
- DOWNGRADE_SQLALCHEMY=${DOWNGRADE_SQLALCHEMY}
- UPGRADE_TO_NEWER_DEPENDENCIES=${UPGRADE_TO_NEWER_DEPENDENCIES}
+ - USE_PENDULUM_PRERELEASE=${USE_PENDULUM_PRERELEASE}
- VERBOSE=${VERBOSE}
- VERBOSE_COMMANDS=${VERBOSE_COMMANDS}
- VERSION_SUFFIX_FOR_PYPI=${VERSION_SUFFIX_FOR_PYPI}
diff --git a/scripts/ci/docker-compose/devcontainer.env b/scripts/ci/docker-compose/devcontainer.env
index aa5798beb0..644d195aea 100644
--- a/scripts/ci/docker-compose/devcontainer.env
+++ b/scripts/ci/docker-compose/devcontainer.env
@@ -70,6 +70,7 @@ SUSPENDED_PROVIDERS_FOLDERS=""
TEST_TYPE=
UPGRADE_BOTO="false"
DOWNGRADE_SQLALCHEMY="false"
+USE_PENDULUM_PRERELEASE=
UPGRADE_TO_NEWER_DEPENDENCIES="false"
VERBOSE="false"
VERBOSE_COMMANDS="false"
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index d16134b482..43bfd05475 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -354,6 +354,13 @@ if [[ ${DOWNGRADE_SQLALCHEMY=} == "true" ]]; then
pip install --root-user-action ignore "sqlalchemy==${min_sqlalchemy_version}"
pip check
fi
+if [[ -n ${USE_PENDULUM_PRERELEASE:=} ]]; then
+ echo
+ echo "${COLOR_BLUE}Replace pendulum by pre-release version: ${USE_PENDULUM_PRERELEASE}${COLOR_RESET}"
+ echo
+ pip install --root-user-action ignore "pendulum==${USE_PENDULUM_PRERELEASE}"
+ pip check
+fi
# Just in case uninstall the pytest-capture-warning which we vendored-in
pip uninstall --root-user-action ignore "pytest-capture-warnings" -y >/dev/null 2>&1 || true