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

eladkal pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 2563442e5f Reorganize command options in Breeze (#36152)
2563442e5f is described below

commit 2563442e5fd118ea9feb3e3eb67fcf13f7954ea4
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Dec 10 19:24:21 2023 +0100

    Reorganize command options in Breeze (#36152)
    
    The command options in breeze have been rather badly organized. The
    "common_option" in utils package was misplaced and it contained
    a lot of options that were not really "common" - only used in
    one or two commands.
    
    This PR reorganizes those options by making a bit more reasonable
    decisions where options are placed:
    
    * when options are used by a single command - they are defined in that
      command
    * when options are used by more comnands in the same command module,
      they are defined in that command module - at the tops
    * in cases of "image" and "package_installation" optins - they are
      used by several modules only and they have their own "common_"*"
      modules
    * only in case a command is used in multiple modules, they are
      put in "common_options".
    * the "common_options" module has been moved to "commands" package
      (it makes much more sense to be there - together with all commands
    * the command options are sorted alphabetically in their corresponding
      files.
    * Fixed missing default for "--platform" flag
---
 .../src/airflow_breeze/commands/ci_commands.py     |  12 +-
 .../airflow_breeze/commands/ci_image_commands.py   |  92 ++-
 .../commands/common_image_options.py               | 206 +++++
 .../src/airflow_breeze/commands/common_options.py  | 347 +++++++++
 .../common_package_installation_options.py         | 107 +++
 .../airflow_breeze/commands/developer_commands.py  | 148 +++-
 .../airflow_breeze/commands/kubernetes_commands.py | 110 ++-
 .../src/airflow_breeze/commands/main_command.py    |  10 +-
 .../commands/minor_release_command.py              |   2 +-
 .../commands/production_image_commands.py          |  52 +-
 .../commands/release_candidate_command.py          |   2 +-
 .../src/airflow_breeze/commands/release_command.py |   2 +-
 .../commands/release_management_commands.py        | 119 ++-
 .../src/airflow_breeze/commands/sbom_commands.py   |  22 +-
 .../src/airflow_breeze/commands/setup_commands.py  |   8 +-
 .../airflow_breeze/commands/testing_commands.py    | 103 ++-
 .../src/airflow_breeze/utils/common_options.py     | 844 ---------------------
 17 files changed, 1110 insertions(+), 1076 deletions(-)

diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py 
b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index ed9864b4c0..3a86869907 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -30,6 +30,12 @@ from typing import Any, Iterable, NamedTuple
 
 import click
 
+from airflow_breeze.commands.common_options import (
+    option_answer,
+    option_dry_run,
+    option_github_repository,
+    option_verbose,
+)
 from airflow_breeze.global_constants import (
     DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
     RUNS_ON_PUBLIC_RUNNER,
@@ -39,12 +45,6 @@ from airflow_breeze.global_constants import (
 )
 from airflow_breeze.params.shell_params import ShellParams
 from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
-    option_answer,
-    option_dry_run,
-    option_github_repository,
-    option_verbose,
-)
 from airflow_breeze.utils.confirm import Answer, user_confirm
 from airflow_breeze.utils.console import get_console
 from airflow_breeze.utils.custom_param_types import BetterChoice
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py 
b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index bc0ef5ac4f..b0a6d12447 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -29,58 +29,57 @@ from typing import TYPE_CHECKING, Any, Callable
 
 import click
 
-from airflow_breeze.params.build_ci_params import BuildCiParams
-from airflow_breeze.utils.ci_group import ci_group
-from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
+from airflow_breeze.commands.common_image_options import (
     option_additional_airflow_extras,
     option_additional_dev_apt_command,
     option_additional_dev_apt_deps,
     option_additional_dev_apt_env,
     option_additional_pip_install_flags,
     option_additional_python_deps,
-    option_airflow_constraints_location,
-    option_airflow_constraints_mode_ci,
     option_airflow_constraints_reference_build,
-    option_answer,
     option_build_progress,
-    option_build_timeout_minutes,
-    option_builder,
-    option_commit_sha,
     option_debian_version,
-    option_debug_resources,
     option_dev_apt_command,
     option_dev_apt_deps,
     option_docker_cache,
-    option_docker_host,
-    option_dry_run,
-    option_eager_upgrade_additional_requirements,
-    option_github_repository,
-    option_github_token,
-    option_image_name,
     option_image_tag_for_building,
     option_image_tag_for_pulling,
     option_image_tag_for_verifying,
-    option_include_success_outputs,
     option_install_providers_from_sources,
-    option_parallelism,
     option_platform_multiple,
     option_prepare_buildx_cache,
     option_pull,
     option_push,
-    option_python,
     option_python_image,
+    option_tag_as_latest,
+    option_verify,
+    option_wait_for_image,
+)
+from airflow_breeze.commands.common_options import (
+    option_answer,
+    option_builder,
+    option_commit_sha,
+    option_debug_resources,
+    option_docker_host,
+    option_dry_run,
+    option_github_repository,
+    option_github_token,
+    option_image_name,
+    option_include_success_outputs,
+    option_parallelism,
+    option_python,
     option_python_versions,
     option_run_in_parallel,
     option_skip_cleanup,
-    option_tag_as_latest,
-    option_upgrade_on_failure,
-    option_upgrade_to_newer_dependencies,
     option_verbose,
-    option_verify,
-    option_version_suffix_for_pypi_ci,
-    option_wait_for_image,
 )
+from airflow_breeze.commands.common_package_installation_options import (
+    option_airflow_constraints_location,
+    option_airflow_constraints_mode_ci,
+)
+from airflow_breeze.params.build_ci_params import BuildCiParams
+from airflow_breeze.utils.ci_group import ci_group
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.confirm import STANDARD_TIMEOUT, Answer, user_confirm
 from airflow_breeze.utils.console import Output, get_console
 from airflow_breeze.utils.docker_command_utils import (
@@ -235,6 +234,47 @@ def get_exitcode(status: int) -> int:
         return 1
 
 
+option_build_timeout_minutes = click.option(
+    "--build-timeout-minutes",
+    required=False,
+    type=int,
+    envvar="BUILD_TIMEOUT_MINUTES",
+    help="Optional timeout for the build in minutes. Useful to detect `pip` 
backtracking problems.",
+)
+
+option_eager_upgrade_additional_requirements = click.option(
+    "--eager-upgrade-additional-requirements",
+    required=False,
+    type=str,
+    envvar="EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS",
+    help="Optional additional requirements to upgrade eagerly to avoid 
backtracking "
+    "(see `breeze ci find-backtracking-candidates`).",
+)
+
+option_upgrade_to_newer_dependencies = click.option(
+    "-u",
+    "--upgrade-to-newer-dependencies",
+    is_flag=True,
+    help="When set, upgrade all PIP packages to latest.",
+    envvar="UPGRADE_TO_NEWER_DEPENDENCIES",
+)
+
+option_upgrade_on_failure = click.option(
+    "--upgrade-on-failure",
+    is_flag=True,
+    help="When set, attempt to run upgrade to newer dependencies when regular 
build fails.",
+    envvar="UPGRADE_ON_FAILURE",
+)
+
+option_version_suffix_for_pypi_ci = click.option(
+    "--version-suffix-for-pypi",
+    help="Version suffix used for PyPI packages (alpha, beta, rc1, etc.).",
+    default="dev0",
+    show_default=True,
+    envvar="VERSION_SUFFIX_FOR_PYPI",
+)
+
+
 @ci_image.command(name="build")
 @option_additional_airflow_extras
 @option_additional_dev_apt_command
diff --git a/dev/breeze/src/airflow_breeze/commands/common_image_options.py 
b/dev/breeze/src/airflow_breeze/commands/common_image_options.py
new file mode 100644
index 0000000000..a86e2a4431
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/common_image_options.py
@@ -0,0 +1,206 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+import click
+
+from airflow_breeze.branch_defaults import DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
+from airflow_breeze.global_constants import (
+    ALLOWED_BUILD_CACHE,
+    ALLOWED_BUILD_PROGRESS,
+    ALLOWED_DEBIAN_VERSIONS,
+    ALLOWED_PLATFORMS,
+    DOCKER_DEFAULT_PLATFORM,
+)
+from airflow_breeze.utils.custom_param_types import BetterChoice
+from airflow_breeze.utils.recording import generating_command_images
+
+option_additional_dev_apt_command = click.option(
+    "--additional-dev-apt-command",
+    help="Additional command executed before dev apt deps are installed.",
+    envvar="ADDITIONAL_DEV_APT_COMMAND",
+)
+option_additional_dev_apt_deps = click.option(
+    "--additional-dev-apt-deps",
+    help="Additional apt dev dependencies to use when building the images.",
+    envvar="ADDITIONAL_DEV_APT_DEPS",
+)
+option_additional_dev_apt_env = click.option(
+    "--additional-dev-apt-env",
+    help="Additional environment variables set when adding dev dependencies.",
+    envvar="ADDITIONAL_DEV_APT_ENV",
+)
+option_additional_airflow_extras = click.option(
+    "--additional-airflow-extras",
+    help="Additional extra package while installing Airflow in the image.",
+    envvar="ADDITIONAL_AIRFLOW_EXTRAS",
+)
+option_additional_python_deps = click.option(
+    "--additional-python-deps",
+    help="Additional python dependencies to use when building the images.",
+    envvar="ADDITIONAL_PYTHON_DEPS",
+)
+option_additional_pip_install_flags = click.option(
+    "--additional-pip-install-flags",
+    help="Additional flags added to `pip install` commands (except 
reinstalling `pip` itself).",
+    envvar="ADDITIONAL_PIP_INSTALL_FLAGS",
+)
+option_additional_runtime_apt_command = click.option(
+    "--additional-runtime-apt-command",
+    help="Additional command executed before runtime apt deps are installed.",
+    envvar="ADDITIONAL_RUNTIME_APT_COMMAND",
+)
+option_additional_runtime_apt_deps = click.option(
+    "--additional-runtime-apt-deps",
+    help="Additional apt runtime dependencies to use when building the 
images.",
+    envvar="ADDITIONAL_RUNTIME_APT_DEPS",
+)
+option_additional_runtime_apt_env = click.option(
+    "--additional-runtime-apt-env",
+    help="Additional environment variables set when adding runtime 
dependencies.",
+    envvar="ADDITIONAL_RUNTIME_APT_ENV",
+)
+option_airflow_constraints_reference_build = click.option(
+    "--airflow-constraints-reference",
+    default=DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH,
+    help="Constraint reference to use when building the image.",
+    envvar="AIRFLOW_CONSTRAINTS_REFERENCE",
+)
+option_build_progress = click.option(
+    "--build-progress",
+    help="Build progress.",
+    type=BetterChoice(ALLOWED_BUILD_PROGRESS),
+    envvar="BUILD_PROGRESS",
+    show_default=True,
+    default=ALLOWED_BUILD_PROGRESS[0],
+)
+option_debian_version = click.option(
+    "--debian-version",
+    type=BetterChoice(ALLOWED_DEBIAN_VERSIONS),
+    default=ALLOWED_DEBIAN_VERSIONS[0],
+    show_default=True,
+    help="Debian version used in Airflow image as base for building images.",
+    envvar="DEBIAN_VERSION",
+)
+option_dev_apt_command = click.option(
+    "--dev-apt-command",
+    help="Command executed before dev apt deps are installed.",
+    envvar="DEV_APT_COMMAND",
+)
+option_dev_apt_deps = click.option(
+    "--dev-apt-deps",
+    help="Apt dev dependencies to use when building the images.",
+    envvar="DEV_APT_DEPS",
+)
+option_docker_cache = click.option(
+    "-c",
+    "--docker-cache",
+    help="Cache option for image used during the build.",
+    default=ALLOWED_BUILD_CACHE[0],
+    show_default=True,
+    type=BetterChoice(ALLOWED_BUILD_CACHE),
+)
+option_image_tag_for_pulling = click.option(
+    "-t",
+    "--image-tag",
+    help="Tag of the image which is used to pull the image.",
+    show_default=True,
+    default="latest",
+    envvar="IMAGE_TAG",
+)
+option_image_tag_for_building = click.option(
+    "--image-tag",
+    help="Tag the image after building it.",
+    show_default=True,
+    default="latest",
+    envvar="IMAGE_TAG",
+)
+option_image_tag_for_verifying = click.option(
+    "-t",
+    "--image-tag",
+    help="Tag of the image when verifying it.",
+    show_default=True,
+    default="latest",
+    envvar="IMAGE_TAG",
+)
+option_install_providers_from_sources = click.option(
+    "--install-providers-from-sources",
+    help="Install providers from sources when installing.",
+    is_flag=True,
+    envvar="INSTALL_PROVIDERS_FROM_SOURCES",
+)
+option_platform_multiple = click.option(
+    "--platform",
+    help="Platform for Airflow image.",
+    default=DOCKER_DEFAULT_PLATFORM if not generating_command_images() else 
ALLOWED_PLATFORMS[0],
+    envvar="PLATFORM",
+    type=BetterChoice(ALLOWED_PLATFORMS),
+)
+option_prepare_buildx_cache = click.option(
+    "--prepare-buildx-cache",
+    help="Prepares build cache (this is done as separate per-platform steps 
instead of building the image).",
+    is_flag=True,
+    envvar="PREPARE_BUILDX_CACHE",
+)
+option_pull = click.option(
+    "--pull",
+    help="Pull image is missing before attempting to verify it.",
+    is_flag=True,
+    envvar="PULL",
+)
+option_push = click.option(
+    "--push",
+    help="Push image after building it.",
+    is_flag=True,
+    envvar="PUSH",
+)
+option_python_image = click.option(
+    "--python-image",
+    help="If specified this is the base python image used to build the image. "
+    "Should be something like: python:VERSION-slim-bookworm.",
+    envvar="PYTHON_IMAGE",
+)
+option_runtime_apt_command = click.option(
+    "--runtime-apt-command",
+    help="Command executed before runtime apt deps are installed.",
+    envvar="RUNTIME_APT_COMMAND",
+)
+option_runtime_apt_deps = click.option(
+    "--runtime-apt-deps",
+    help="Apt runtime dependencies to use when building the images.",
+    envvar="RUNTIME_APT_DEPS",
+)
+option_tag_as_latest = click.option(
+    "--tag-as-latest",
+    help="Tags the image as latest and update checksum of all files after 
pulling. "
+    "Useful when you build or pull image with --image-tag.",
+    is_flag=True,
+    envvar="TAG_AS_LATEST",
+)
+option_verify = click.option(
+    "--verify",
+    help="Verify image.",
+    is_flag=True,
+    envvar="VERIFY",
+)
+option_wait_for_image = click.option(
+    "--wait-for-image",
+    help="Wait until image is available.",
+    is_flag=True,
+    envvar="WAIT_FOR_IMAGE",
+)
diff --git a/dev/breeze/src/airflow_breeze/commands/common_options.py 
b/dev/breeze/src/airflow_breeze/commands/common_options.py
new file mode 100644
index 0000000000..41652b7b12
--- /dev/null
+++ b/dev/breeze/src/airflow_breeze/commands/common_options.py
@@ -0,0 +1,347 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+import multiprocessing as mp
+
+import click
+
+from airflow_breeze.global_constants import (
+    ALL_HISTORICAL_PYTHON_VERSIONS,
+    ALLOWED_BACKENDS,
+    ALLOWED_DOCKER_COMPOSE_PROJECTS,
+    ALLOWED_INSTALLATION_PACKAGE_FORMATS,
+    ALLOWED_MOUNT_OPTIONS,
+    ALLOWED_MSSQL_VERSIONS,
+    ALLOWED_MYSQL_VERSIONS,
+    ALLOWED_POSTGRES_VERSIONS,
+    ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
+    ALLOWED_USE_AIRFLOW_VERSIONS,
+    APACHE_AIRFLOW_GITHUB_REPOSITORY,
+    AUTOCOMPLETE_INTEGRATIONS,
+)
+from airflow_breeze.utils.custom_param_types import (
+    AnswerChoice,
+    BetterChoice,
+    CacheableChoice,
+    CacheableDefault,
+    DryRunOption,
+    MySQLBackendVersionType,
+    NotVerifiedBetterChoice,
+    UseAirflowVersionType,
+    VerboseOption,
+)
+from airflow_breeze.utils.packages import get_available_packages
+from airflow_breeze.utils.recording import generating_command_images
+
+
+def _set_default_from_parent(ctx: click.core.Context, option: 
click.core.Option, value):
+    from click.core import ParameterSource
+
+    if (
+        ctx.parent
+        and option.name in ctx.parent.params
+        and ctx.get_parameter_source(option.name)
+        in (
+            ParameterSource.DEFAULT,
+            ParameterSource.DEFAULT_MAP,
+        )
+    ):
+        # Current value is the default, use the parent's value (i.e. for 
`breeze
+        # # -v static-checks` respect the "global" option)
+        value = ctx.parent.params[option.name]
+    return value
+
+
+argument_doc_packages = click.argument(
+    "doc_packages",
+    nargs=-1,
+    required=False,
+    type=NotVerifiedBetterChoice(
+        get_available_packages(include_non_provider_doc_packages=True, 
include_all_providers=True)
+    ),
+)
+option_airflow_extras = click.option(
+    "--airflow-extras",
+    help="Airflow extras to install when --use-airflow-version is used",
+    default="",
+    show_default=True,
+    envvar="AIRFLOW_EXTRAS",
+)
+option_answer = click.option(
+    "-a",
+    "--answer",
+    type=AnswerChoice(["y", "n", "q", "yes", "no", "quit"]),
+    help="Force answer to questions.",
+    envvar="ANSWER",
+    expose_value=False,
+    callback=_set_default_from_parent,
+)
+option_backend = click.option(
+    "-b",
+    "--backend",
+    type=CacheableChoice(ALLOWED_BACKENDS),
+    default=CacheableDefault(value=ALLOWED_BACKENDS[0]),
+    show_default=True,
+    help="Database backend to use. If 'none' is selected, breeze starts with 
invalid DB configuration "
+    "and no database and any attempts to connect to Airflow DB will fail.",
+    envvar="BACKEND",
+)
+option_builder = click.option(
+    "--builder",
+    help="Buildx builder used to perform `docker buildx build` commands.",
+    envvar="BUILDER",
+    show_default=True,
+    default="autodetect",
+)
+option_commit_sha = click.option(
+    "--commit-sha",
+    show_default=True,
+    envvar="COMMIT_SHA",
+    help="Commit SHA that is used to build the images.",
+)
+option_db_reset = click.option(
+    "-d",
+    "--db-reset",
+    help="Reset DB when entering the container.",
+    is_flag=True,
+    envvar="DB_RESET",
+)
+option_debug_resources = click.option(
+    "--debug-resources",
+    is_flag=True,
+    help="Whether to show resource information while running in parallel.",
+    envvar="DEBUG_RESOURCES",
+)
+option_database_isolation = click.option(
+    "--database-isolation",
+    help="Run airflow in database isolation mode.",
+    is_flag=True,
+    envvar="DATABASE_ISOLATION",
+)
+option_docker_host = click.option(
+    "--docker-host",
+    help="Optional - docker host to use when running docker commands. "
+    "When set, the `--builder` option is ignored when building images.",
+    envvar="DOCKER_HOST",
+)
+option_downgrade_sqlalchemy = click.option(
+    "--downgrade-sqlalchemy",
+    help="Downgrade SQLAlchemy to minimum supported version.",
+    is_flag=True,
+    envvar="DOWNGRADE_SQLALCHEMY",
+)
+option_dry_run = click.option(
+    "-D",
+    "--dry-run",
+    is_flag=True,
+    help="If dry-run is set, commands are only printed, not executed.",
+    envvar="DRY_RUN",
+    metavar="BOOLEAN",
+    expose_value=False,
+    type=DryRunOption(),
+    callback=_set_default_from_parent,
+)
+option_forward_credentials = click.option(
+    "-f", "--forward-credentials", help="Forward local credentials to 
container when running.", is_flag=True
+)
+option_github_token = click.option(
+    "--github-token",
+    help="The token used to authenticate to GitHub.",
+    envvar="GITHUB_TOKEN",
+)
+option_github_repository = click.option(
+    "-g",
+    "--github-repository",
+    help="GitHub repository used to pull, push run images.",
+    default=APACHE_AIRFLOW_GITHUB_REPOSITORY,
+    show_default=True,
+    envvar="GITHUB_REPOSITORY",
+    callback=_set_default_from_parent,
+)
+option_historical_python_version = click.option(
+    "--python",
+    type=BetterChoice(ALL_HISTORICAL_PYTHON_VERSIONS),
+    required=False,
+    envvar="PYTHON_VERSION",
+    help="Python version to update sbom from. (defaults to all historical 
python versions)",
+)
+option_include_success_outputs = click.option(
+    "--include-success-outputs",
+    help="Whether to include outputs of successful parallel runs (skipped by 
default).",
+    is_flag=True,
+    envvar="INCLUDE_SUCCESS_OUTPUTS",
+)
+option_integration = click.option(
+    "--integration",
+    help="Integration(s) to enable when running (can be more than one).",
+    type=BetterChoice(AUTOCOMPLETE_INTEGRATIONS),
+    multiple=True,
+)
+option_image_name = click.option(
+    "-n", "--image-name", help="Name of the image to verify (overrides 
--python and --image-tag)."
+)
+option_image_tag_for_running = click.option(
+    "--image-tag",
+    help="Tag of the image which is used to run the image (implies 
--mount-sources=skip).",
+    show_default=True,
+    default="latest",
+    envvar="IMAGE_TAG",
+)
+option_max_time = click.option(
+    "--max-time",
+    help="Maximum time that the command should take - if it takes longer, the 
command will fail.",
+    type=click.IntRange(min=1),
+    envvar="MAX_TIME",
+    callback=_set_default_from_parent,
+)
+option_mount_sources = click.option(
+    "--mount-sources",
+    type=BetterChoice(ALLOWED_MOUNT_OPTIONS),
+    default=ALLOWED_MOUNT_OPTIONS[0],
+    show_default=True,
+    envvar="MOUNT_SOURCES",
+    help="Choose scope of local sources that should be mounted, skipped, or 
removed (default = selected).",
+)
+option_mssql_version = click.option(
+    "-S",
+    "--mssql-version",
+    help="Version of MsSQL used.",
+    type=CacheableChoice(ALLOWED_MSSQL_VERSIONS),
+    default=CacheableDefault(ALLOWED_MSSQL_VERSIONS[0]),
+    show_default=True,
+)
+option_mysql_version = click.option(
+    "-M",
+    "--mysql-version",
+    help="Version of MySQL used.",
+    type=MySQLBackendVersionType(ALLOWED_MYSQL_VERSIONS),
+    default=CacheableDefault(ALLOWED_MYSQL_VERSIONS[0]),
+    show_default=True,
+)
+option_installation_package_format = click.option(
+    "--package-format",
+    type=BetterChoice(ALLOWED_INSTALLATION_PACKAGE_FORMATS),
+    help="Format of packages that should be installed from dist.",
+    default=ALLOWED_INSTALLATION_PACKAGE_FORMATS[0],
+    show_default=True,
+    envvar="PACKAGE_FORMAT",
+)
+option_parallelism = click.option(
+    "--parallelism",
+    help="Maximum number of processes to use while running the operation in 
parallel.",
+    type=click.IntRange(1, mp.cpu_count() * 3 if not 
generating_command_images() else 8),
+    default=mp.cpu_count() if not generating_command_images() else 4,
+    envvar="PARALLELISM",
+    show_default=True,
+)
+option_postgres_version = click.option(
+    "-P",
+    "--postgres-version",
+    type=CacheableChoice(ALLOWED_POSTGRES_VERSIONS),
+    default=CacheableDefault(ALLOWED_POSTGRES_VERSIONS[0]),
+    show_default=True,
+    help="Version of Postgres used.",
+)
+option_project_name = click.option(
+    "--project-name",
+    help="Name of the docker-compose project to bring down. "
+    "The `docker-compose` is for legacy breeze project name and you can use "
+    "`breeze down --project-name docker-compose` to stop all containers 
belonging to it.",
+    show_default=True,
+    type=NotVerifiedBetterChoice(ALLOWED_DOCKER_COMPOSE_PROJECTS),
+    default=ALLOWED_DOCKER_COMPOSE_PROJECTS[0],
+    envvar="PROJECT_NAME",
+)
+option_python = click.option(
+    "-p",
+    "--python",
+    type=CacheableChoice(ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS),
+    default=CacheableDefault(value=ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[0]),
+    show_default=True,
+    help="Python major/minor version used in Airflow image for images.",
+    envvar="PYTHON_MAJOR_MINOR_VERSION",
+)
+option_python_versions = click.option(
+    "--python-versions",
+    help="Space separated list of python versions used for build with multiple 
versions.",
+    default=" ".join(ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS),
+    show_default=True,
+    envvar="PYTHON_VERSIONS",
+)
+option_run_db_tests_only = click.option(
+    "--run-db-tests-only",
+    help="Only runs tests that require a database",
+    is_flag=True,
+    envvar="run_db_tests_only",
+)
+option_run_in_parallel = click.option(
+    "--run-in-parallel",
+    help="Run the operation in parallel on all or selected subset of 
parameters.",
+    is_flag=True,
+    envvar="RUN_IN_PARALLEL",
+)
+option_skip_cleanup = click.option(
+    "--skip-cleanup",
+    help="Skip cleanup of temporary files created during parallel run.",
+    is_flag=True,
+    envvar="SKIP_CLEANUP",
+)
+option_skip_db_tests = click.option(
+    "--skip-db-tests",
+    help="Skip tests that require a database",
+    is_flag=True,
+    envvar="SKIP_DB_TESTS",
+)
+option_standalone_dag_processor = click.option(
+    "--standalone-dag-processor",
+    help="Run standalone dag processor for start-airflow.",
+    is_flag=True,
+    envvar="STANDALONE_DAG_PROCESSOR",
+)
+option_upgrade_boto = click.option(
+    "--upgrade-boto",
+    help="Remove aiobotocore and upgrade botocore and boto to the latest 
version.",
+    is_flag=True,
+    envvar="UPGRADE_BOTO",
+)
+option_use_airflow_version = click.option(
+    "--use-airflow-version",
+    help="Use (reinstall at entry) Airflow version from PyPI. It can also be 
version (to install from PyPI), "
+    "`none`, `wheel`, or `sdist` to install from `dist` folder, or VCS URL to 
install from "
+    "(https://pip.pypa.io/en/stable/topics/vcs-support/). Implies 
--mount-sources `remove`.",
+    type=UseAirflowVersionType(ALLOWED_USE_AIRFLOW_VERSIONS),
+    envvar="USE_AIRFLOW_VERSION",
+)
+option_verbose = click.option(
+    "-v",
+    "--verbose",
+    is_flag=True,
+    help="Print verbose information about performed steps.",
+    envvar="VERBOSE",
+    metavar="BOOLEAN",
+    expose_value=False,
+    type=VerboseOption(),
+    callback=_set_default_from_parent,
+)
+option_version_suffix_for_pypi = click.option(
+    "--version-suffix-for-pypi",
+    help="Version suffix used for PyPI packages (alpha, beta, rc1, etc.).",
+    envvar="VERSION_SUFFIX_FOR_PYPI",
+    default="",
+)
diff --git 
a/dev/breeze/src/airflow_breeze/commands/common_package_installation_options.py 
b/dev/breeze/src/airflow_breeze/commands/common_package_installation_options.py
new file mode 100644
index 0000000000..5a5d428886
--- /dev/null
+++ 
b/dev/breeze/src/airflow_breeze/commands/common_package_installation_options.py
@@ -0,0 +1,107 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+import click
+
+from airflow_breeze.global_constants import ALLOWED_CONSTRAINTS_MODES_CI, 
ALLOWED_CONSTRAINTS_MODES_PROD
+from airflow_breeze.utils.custom_param_types import BetterChoice
+
+option_airflow_constraints_reference = click.option(
+    "--airflow-constraints-reference",
+    help="Constraint reference to use for airflow installation (used in 
calculated constraints URL). "
+    "Can be 'default' in which case the default constraints-reference is 
used.",
+    envvar="AIRFLOW_CONSTRAINTS_REFERENCE",
+)
+option_airflow_constraints_location = click.option(
+    "--airflow-constraints-location",
+    type=str,
+    help="Location of airflow constraints to use (remote URL or local context 
file).",
+    envvar="AIRFLOW_CONSTRAINTS_LOCATION",
+)
+option_airflow_constraints_mode_update = click.option(
+    "--airflow-constraints-mode",
+    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_CI),
+    required=False,
+    help="Limit constraint update to only selected constraint mode - if 
selected.",
+)
+option_airflow_constraints_mode_prod = click.option(
+    "--airflow-constraints-mode",
+    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_PROD),
+    default=ALLOWED_CONSTRAINTS_MODES_PROD[0],
+    show_default=True,
+    help="Mode of constraints for Airflow for PROD image building.",
+)
+option_airflow_constraints_mode_ci = click.option(
+    "--airflow-constraints-mode",
+    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_CI),
+    default=ALLOWED_CONSTRAINTS_MODES_CI[0],
+    show_default=True,
+    help="Mode of constraints for Airflow for CI image building.",
+)
+option_airflow_skip_constraints = click.option(
+    "--airflow-skip-constraints",
+    is_flag=True,
+    help="Do not use constraints when installing airflow.",
+    envvar="AIRFLOW_SKIP_CONSTRAINTS",
+)
+option_install_selected_providers = click.option(
+    "--install-selected-providers",
+    help="Comma-separated list of providers selected to be installed (implies 
--use-packages-from-dist).",
+    envvar="INSTALL_SELECTED_PROVIDERS",
+    default="",
+)
+option_providers_constraints_reference = click.option(
+    "--providers-constraints-reference",
+    help="Constraint reference to use for providers installation (used in 
calculated constraints URL). "
+    "Can be 'default' in which case the default constraints-reference is 
used.",
+    envvar="PROVIDERS_CONSTRAINTS_REFERENCE",
+)
+option_providers_constraints_location = click.option(
+    "--providers-constraints-location",
+    type=str,
+    help="Location of providers constraints to use (remote URL or local 
context file).",
+    envvar="PROVIDERS_CONSTRAINTS_LOCATION",
+)
+option_providers_constraints_mode_prod = click.option(
+    "--providers-constraints-mode",
+    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_PROD),
+    default=ALLOWED_CONSTRAINTS_MODES_PROD[0],
+    show_default=True,
+    help="Mode of constraints for Providers for PROD image building.",
+)
+option_providers_constraints_mode_ci = click.option(
+    "--providers-constraints-mode",
+    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_CI),
+    default=ALLOWED_CONSTRAINTS_MODES_CI[0],
+    show_default=True,
+    help="Mode of constraints for Providers for CI image building.",
+)
+option_providers_skip_constraints = click.option(
+    "--providers-skip-constraints",
+    is_flag=True,
+    help="Do not use constraints when installing providers.",
+    envvar="PROVIDERS_SKIP_CONSTRAINTS",
+)
+option_use_packages_from_dist = click.option(
+    "--use-packages-from-dist",
+    is_flag=True,
+    help="Install all found packages (--package-format determines type) from 
'dist' folder "
+    "when entering breeze.",
+    envvar="USE_PACKAGES_FROM_DIST",
+)
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py 
b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 050bc02271..2e347f73c0 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -30,69 +30,66 @@ import click
 
 from airflow_breeze.branch_defaults import DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
 from airflow_breeze.commands.ci_image_commands import 
rebuild_or_pull_ci_image_if_needed
-from airflow_breeze.commands.main_command import main
-from airflow_breeze.global_constants import (
-    ALLOWED_TTY,
-    DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
-)
-from airflow_breeze.params.build_ci_params import BuildCiParams
-from airflow_breeze.params.doc_build_params import DocBuildParams
-from airflow_breeze.params.shell_params import ShellParams
-from airflow_breeze.pre_commit_ids import PRE_COMMIT_LIST
-from airflow_breeze.utils.coertions import one_or_none_set
-from airflow_breeze.utils.common_options import (
+from airflow_breeze.commands.common_options import (
     argument_doc_packages,
-    option_airflow_constraints_location,
-    option_airflow_constraints_mode_ci,
-    option_airflow_constraints_reference,
     option_airflow_extras,
-    option_airflow_skip_constraints,
     option_answer,
     option_backend,
     option_builder,
-    option_celery_broker,
-    option_celery_flower,
     option_database_isolation,
     option_db_reset,
     option_docker_host,
     option_downgrade_sqlalchemy,
     option_dry_run,
-    option_executor_shell,
-    option_executor_start_airflow,
-    option_force_build,
     option_forward_credentials,
     option_github_repository,
     option_image_tag_for_running,
-    option_include_mypy_volume,
-    option_install_selected_providers,
     option_installation_package_format,
     option_integration,
-    option_load_default_connection,
-    option_load_example_dags,
     option_max_time,
     option_mount_sources,
     option_mssql_version,
     option_mysql_version,
-    option_platform_single,
     option_postgres_version,
     option_project_name,
-    option_providers_constraints_location,
-    option_providers_constraints_mode_ci,
-    option_providers_constraints_reference,
-    option_providers_skip_constraints,
     option_python,
-    option_restart,
     option_run_db_tests_only,
     option_skip_db_tests,
-    option_skip_environment_initialization,
-    option_skip_image_upgrade_check,
     option_standalone_dag_processor,
     option_upgrade_boto,
     option_use_airflow_version,
-    option_use_packages_from_dist,
     option_verbose,
-    option_warn_image_upgrade_needed,
 )
+from airflow_breeze.commands.common_package_installation_options import (
+    option_airflow_constraints_location,
+    option_airflow_constraints_mode_ci,
+    option_airflow_constraints_reference,
+    option_airflow_skip_constraints,
+    option_install_selected_providers,
+    option_providers_constraints_location,
+    option_providers_constraints_mode_ci,
+    option_providers_constraints_reference,
+    option_providers_skip_constraints,
+    option_use_packages_from_dist,
+)
+from airflow_breeze.commands.main_command import main
+from airflow_breeze.global_constants import (
+    ALLOWED_CELERY_BROKERS,
+    ALLOWED_EXECUTORS,
+    ALLOWED_TTY,
+    DEFAULT_ALLOWED_EXECUTOR,
+    DEFAULT_CELERY_BROKER,
+    DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+    DOCKER_DEFAULT_PLATFORM,
+    SINGLE_PLATFORMS,
+    START_AIRFLOW_ALLOWED_EXECUTORS,
+    START_AIRFLOW_DEFAULT_ALLOWED_EXECUTOR,
+)
+from airflow_breeze.params.build_ci_params import BuildCiParams
+from airflow_breeze.params.doc_build_params import DocBuildParams
+from airflow_breeze.params.shell_params import ShellParams
+from airflow_breeze.pre_commit_ids import PRE_COMMIT_LIST
+from airflow_breeze.utils.coertions import one_or_none_set
 from airflow_breeze.utils.console import get_console
 from airflow_breeze.utils.custom_param_types import BetterChoice
 from airflow_breeze.utils.docker_command_utils import (
@@ -108,6 +105,7 @@ from airflow_breeze.utils.path_utils import (
     AIRFLOW_SOURCES_ROOT,
     cleanup_python_generated_files,
 )
+from airflow_breeze.utils.recording import generating_command_images
 from airflow_breeze.utils.run_utils import (
     assert_pre_commit_installed,
     run_command,
@@ -158,6 +156,63 @@ class TimerThread(threading.Thread):
 # Args it should have the same parameters.
 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+option_celery_broker = click.option(
+    "--celery-broker",
+    type=click.Choice(ALLOWED_CELERY_BROKERS, case_sensitive=False),
+    help="Specify the celery message broker",
+    default=DEFAULT_CELERY_BROKER,
+    show_default=True,
+)
+option_celery_flower = click.option("--celery-flower", help="Start celery 
flower", is_flag=True)
+option_executor_shell = click.option(
+    "--executor",
+    type=click.Choice(ALLOWED_EXECUTORS, case_sensitive=False),
+    help="Specify the executor to use with shell command.",
+    default=DEFAULT_ALLOWED_EXECUTOR,
+    show_default=True,
+)
+option_force_build = click.option(
+    "--force-build", help="Force image build no matter if it is determined as 
needed.", is_flag=True
+)
+option_include_mypy_volume = click.option(
+    "--include-mypy-volume",
+    help="Whether to include mounting of the mypy volume (useful for debugging 
mypy).",
+    is_flag=True,
+    envvar="INCLUDE_MYPY_VOLUME",
+)
+option_platform_single = click.option(
+    "--platform",
+    help="Platform for Airflow image.",
+    default=DOCKER_DEFAULT_PLATFORM if not generating_command_images() else 
SINGLE_PLATFORMS[0],
+    envvar="PLATFORM",
+    type=BetterChoice(SINGLE_PLATFORMS),
+)
+option_restart = click.option(
+    "--restart",
+    "--remove-orphans",
+    help="Restart all containers before entering shell (also removes orphan 
containers).",
+    is_flag=True,
+    envvar="RESTART",
+)
+option_skip_environment_initialization = click.option(
+    "--skip-environment-initialization",
+    help="Skip running breeze entrypoint initialization - no user output, no 
db checks.",
+    is_flag=True,
+    envvar="SKIP_ENVIRONMENT_INITIALIZATION",
+)
+option_skip_image_upgrade_check = click.option(
+    "--skip-image-upgrade-check",
+    help="Skip checking if the CI image is up to date.",
+    is_flag=True,
+    envvar="SKIP_IMAGE_UPGRADE_CHECK",
+)
+option_warn_image_upgrade_needed = click.option(
+    "--warn-image-upgrade-needed",
+    help="Warn when image upgrade is needed even if --skip-upgrade-check is 
used.",
+    is_flag=True,
+    envvar="WARN_IMAGE_UPGRADE_NEEDED",
+)
+
 
 @main.command()
 @click.argument("extra-args", nargs=-1, type=click.UNPROCESSED)
@@ -339,6 +394,31 @@ def shell(
     sys.exit(result.returncode)
 
 
+option_load_example_dags = click.option(
+    "-e",
+    "--load-example-dags",
+    help="Enable configuration to load example DAGs when starting Airflow.",
+    is_flag=True,
+    envvar="LOAD_EXAMPLES",
+)
+
+option_load_default_connection = click.option(
+    "-c",
+    "--load-default-connections",
+    help="Enable configuration to load default connections when starting 
Airflow.",
+    is_flag=True,
+    envvar="LOAD_DEFAULT_CONNECTIONS",
+)
+
+option_executor_start_airflow = click.option(
+    "--executor",
+    type=click.Choice(START_AIRFLOW_ALLOWED_EXECUTORS, case_sensitive=False),
+    help="Specify the executor to use with start-airflow command.",
+    default=START_AIRFLOW_DEFAULT_ALLOWED_EXECUTOR,
+    show_default=True,
+)
+
+
 @main.command(name="start-airflow")
 @click.option(
     "--skip-asset-compilation",
diff --git a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py 
b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
index d90a856d25..ce8924c9b0 100644
--- a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
@@ -28,12 +28,7 @@ from shlex import quote
 
 import click
 
-from airflow_breeze.commands.production_image_commands import 
run_build_production_image
-from airflow_breeze.global_constants import ALLOWED_EXECUTORS, 
ALLOWED_KUBERNETES_VERSIONS
-from airflow_breeze.params.build_prod_params import BuildProdParams
-from airflow_breeze.utils.ci_group import ci_group
-from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
+from airflow_breeze.commands.common_options import (
     option_debug_resources,
     option_dry_run,
     option_include_success_outputs,
@@ -44,6 +39,11 @@ from airflow_breeze.utils.common_options import (
     option_skip_cleanup,
     option_verbose,
 )
+from airflow_breeze.commands.production_image_commands import 
run_build_production_image
+from airflow_breeze.global_constants import ALLOWED_EXECUTORS, 
ALLOWED_KUBERNETES_VERSIONS
+from airflow_breeze.params.build_prod_params import BuildProdParams
+from airflow_breeze.utils.ci_group import ci_group
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.console import Output, get_console
 from airflow_breeze.utils.custom_param_types import CacheableChoice, 
CacheableDefault
 from airflow_breeze.utils.kubernetes_utils import (
@@ -111,92 +111,80 @@ option_executor = click.option(
     default=CacheableDefault(ALLOWED_EXECUTORS[0]),
     envvar="EXECUTOR",
 )
-
-option_kubernetes_version = click.option(
-    "--kubernetes-version",
-    help="Kubernetes version used to create the KinD cluster of.",
-    type=CacheableChoice(ALLOWED_KUBERNETES_VERSIONS),
-    show_default=True,
-    default=CacheableDefault(ALLOWED_KUBERNETES_VERSIONS[0]),
-    envvar="KUBERNETES_VERSION",
-)
-
-option_image_tag = click.option(
-    "-t",
-    "--image-tag",
-    help="Image tag used to build K8S image from.",
-    default="latest",
-    show_default=True,
-    envvar="IMAGE_TAG",
-)
-
-option_wait_time_in_seconds = click.option(
-    "--wait-time-in-seconds",
-    help="Wait for Airflow webserver for specified number of seconds.",
-    type=click.IntRange(0),
-    default=120,
-    envvar="WAIT_TIME_IN_SECONDS",
-)
-
-option_wait_time_in_seconds_0_default = click.option(
-    "--wait-time-in-seconds",
-    help="Wait for Airflow webserver for specified number of seconds.",
-    type=click.IntRange(0),
-    default=0,
-    envvar="WAIT_TIME_IN_SECONDS",
-)
-
 option_force_recreate_cluster = click.option(
     "--force-recreate-cluster",
     help="Force recreation of the cluster even if it is already created.",
     is_flag=True,
     envvar="FORCE_RECREATE_CLUSTER",
 )
-
 option_force_venv_setup = click.option(
     "--force-venv-setup",
     help="Force recreation of the virtualenv.",
     is_flag=True,
     envvar="FORCE_VENV_SETUP",
 )
-
-option_use_standard_naming = click.option(
-    "--use-standard-naming",
-    help="Use standard naming.",
-    is_flag=True,
-    envvar="USE_STANDARD_NAMING",
+option_image_tag = click.option(
+    "-t",
+    "--image-tag",
+    help="Image tag used to build K8S image from.",
+    default="latest",
+    show_default=True,
+    envvar="IMAGE_TAG",
+)
+option_kubernetes_version = click.option(
+    "--kubernetes-version",
+    help="Kubernetes version used to create the KinD cluster of.",
+    type=CacheableChoice(ALLOWED_KUBERNETES_VERSIONS),
+    show_default=True,
+    default=CacheableDefault(ALLOWED_KUBERNETES_VERSIONS[0]),
+    envvar="KUBERNETES_VERSION",
+)
+option_kubernetes_versions = click.option(
+    "--kubernetes-versions",
+    help="Kubernetes versions used to run in parallel (space separated).",
+    type=str,
+    show_default=True,
+    default=" ".join(ALLOWED_KUBERNETES_VERSIONS),
+    envvar="KUBERNETES_VERSIONS",
 )
-
 option_multi_namespace_mode = click.option(
     "--multi-namespace-mode",
     help="Use multi namespace mode.",
     is_flag=True,
     envvar="MULTI_NAMESPACE_MODE",
 )
-
 option_rebuild_base_image = click.option(
     "--rebuild-base-image",
     help="Rebuilds base Airflow image before building K8S image.",
     is_flag=True,
     envvar="REBUILD_BASE_IMAGE",
 )
-
-option_kubernetes_versions = click.option(
-    "--kubernetes-versions",
-    help="Kubernetes versions used to run in parallel (space separated).",
-    type=str,
-    show_default=True,
-    default=" ".join(ALLOWED_KUBERNETES_VERSIONS),
-    envvar="KUBERNETES_VERSIONS",
-)
-
 option_upgrade = click.option(
     "--upgrade",
     help="Upgrade Helm Chart rather than installing it.",
     is_flag=True,
     envvar="UPGRADE",
 )
-
+option_use_standard_naming = click.option(
+    "--use-standard-naming",
+    help="Use standard naming.",
+    is_flag=True,
+    envvar="USE_STANDARD_NAMING",
+)
+option_wait_time_in_seconds = click.option(
+    "--wait-time-in-seconds",
+    help="Wait for Airflow webserver for specified number of seconds.",
+    type=click.IntRange(0),
+    default=120,
+    envvar="WAIT_TIME_IN_SECONDS",
+)
+option_wait_time_in_seconds_0_default = click.option(
+    "--wait-time-in-seconds",
+    help="Wait for Airflow webserver for specified number of seconds.",
+    type=click.IntRange(0),
+    default=0,
+    envvar="WAIT_TIME_IN_SECONDS",
+)
 option_parallelism_cluster = click.option(
     "--parallelism",
     help="Maximum number of processes to use while running the operation in 
parallel for cluster operations.",
diff --git a/dev/breeze/src/airflow_breeze/commands/main_command.py 
b/dev/breeze/src/airflow_breeze/commands/main_command.py
index b931ed36dc..9e09056948 100644
--- a/dev/breeze/src/airflow_breeze/commands/main_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/main_command.py
@@ -23,11 +23,7 @@ import sys
 from typing import TYPE_CHECKING, Any
 
 from airflow_breeze.commands.ci_image_commands import ci_image
-from airflow_breeze.commands.production_image_commands import prod_image
-from airflow_breeze.commands.testing_commands import group_for_testing
-from airflow_breeze.configure_rich_click import click
-from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
+from airflow_breeze.commands.common_options import (
     option_answer,
     option_backend,
     option_builder,
@@ -47,6 +43,10 @@ from airflow_breeze.utils.common_options import (
     option_standalone_dag_processor,
     option_verbose,
 )
+from airflow_breeze.commands.production_image_commands import prod_image
+from airflow_breeze.commands.testing_commands import group_for_testing
+from airflow_breeze.configure_rich_click import click
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.confirm import Answer, user_confirm
 from airflow_breeze.utils.console import get_console
 from airflow_breeze.utils.docker_command_utils import remove_docker_networks
diff --git a/dev/breeze/src/airflow_breeze/commands/minor_release_command.py 
b/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
index 2fcbd621ac..fe43ecc7e6 100644
--- a/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/minor_release_command.py
@@ -20,8 +20,8 @@ import os
 
 import click
 
+from airflow_breeze.commands.common_options import option_answer
 from airflow_breeze.commands.release_management_group import release_management
-from airflow_breeze.utils.common_options import option_answer
 from airflow_breeze.utils.confirm import confirm_action
 from airflow_breeze.utils.console import console_print
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
diff --git 
a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py 
b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
index 45e6bb8c75..b9bb0f8de8 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -21,11 +21,7 @@ from copy import deepcopy
 
 import click
 
-from airflow_breeze.global_constants import ALLOWED_INSTALLATION_METHODS, 
DEFAULT_EXTRAS
-from airflow_breeze.params.build_prod_params import BuildProdParams
-from airflow_breeze.utils.ci_group import ci_group
-from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
+from airflow_breeze.commands.common_image_options import (
     option_additional_airflow_extras,
     option_additional_dev_apt_command,
     option_additional_dev_apt_deps,
@@ -35,46 +31,54 @@ from airflow_breeze.utils.common_options import (
     option_additional_runtime_apt_command,
     option_additional_runtime_apt_deps,
     option_additional_runtime_apt_env,
-    option_airflow_constraints_location,
-    option_airflow_constraints_mode_prod,
     option_airflow_constraints_reference_build,
-    option_answer,
     option_build_progress,
-    option_builder,
-    option_commit_sha,
     option_debian_version,
-    option_debug_resources,
     option_dev_apt_command,
     option_dev_apt_deps,
     option_docker_cache,
-    option_docker_host,
-    option_dry_run,
-    option_github_repository,
-    option_github_token,
-    option_image_name,
     option_image_tag_for_building,
     option_image_tag_for_pulling,
     option_image_tag_for_verifying,
-    option_include_success_outputs,
     option_install_providers_from_sources,
-    option_parallelism,
     option_platform_multiple,
     option_prepare_buildx_cache,
     option_pull,
     option_push,
-    option_python,
     option_python_image,
-    option_python_versions,
-    option_run_in_parallel,
     option_runtime_apt_command,
     option_runtime_apt_deps,
-    option_skip_cleanup,
     option_tag_as_latest,
-    option_verbose,
     option_verify,
-    option_version_suffix_for_pypi,
     option_wait_for_image,
 )
+from airflow_breeze.commands.common_options import (
+    option_answer,
+    option_builder,
+    option_commit_sha,
+    option_debug_resources,
+    option_docker_host,
+    option_dry_run,
+    option_github_repository,
+    option_github_token,
+    option_image_name,
+    option_include_success_outputs,
+    option_parallelism,
+    option_python,
+    option_python_versions,
+    option_run_in_parallel,
+    option_skip_cleanup,
+    option_verbose,
+    option_version_suffix_for_pypi,
+)
+from airflow_breeze.commands.common_package_installation_options import (
+    option_airflow_constraints_location,
+    option_airflow_constraints_mode_prod,
+)
+from airflow_breeze.global_constants import ALLOWED_INSTALLATION_METHODS, 
DEFAULT_EXTRAS
+from airflow_breeze.params.build_prod_params import BuildProdParams
+from airflow_breeze.utils.ci_group import ci_group
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.console import Output, get_console
 from airflow_breeze.utils.custom_param_types import BetterChoice
 from airflow_breeze.utils.docker_command_utils import (
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py 
b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
index 5fba66b5fd..f88388a22a 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_candidate_command.py
@@ -20,8 +20,8 @@ import os
 
 import click
 
+from airflow_breeze.commands.common_options import option_answer
 from airflow_breeze.commands.release_management_group import release_management
-from airflow_breeze.utils.common_options import option_answer
 from airflow_breeze.utils.confirm import confirm_action
 from airflow_breeze.utils.console import console_print
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
diff --git a/dev/breeze/src/airflow_breeze/commands/release_command.py 
b/dev/breeze/src/airflow_breeze/commands/release_command.py
index a7ccfa1d6c..4e2531332e 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_command.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_command.py
@@ -20,8 +20,8 @@ import os
 
 import click
 
+from airflow_breeze.commands.common_options import option_answer
 from airflow_breeze.commands.release_management_group import release_management
-from airflow_breeze.utils.common_options import option_answer
 from airflow_breeze.utils.confirm import confirm_action
 from airflow_breeze.utils.console import console_print
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index ff3f9bf9c7..8eb7038694 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -36,9 +36,45 @@ from rich.progress import Progress
 from rich.syntax import Syntax
 
 from airflow_breeze.commands.ci_image_commands import 
rebuild_or_pull_ci_image_if_needed
+from airflow_breeze.commands.common_options import (
+    argument_doc_packages,
+    option_airflow_extras,
+    option_answer,
+    option_commit_sha,
+    option_debug_resources,
+    option_dry_run,
+    option_github_repository,
+    option_historical_python_version,
+    option_image_tag_for_running,
+    option_include_success_outputs,
+    option_installation_package_format,
+    option_mount_sources,
+    option_parallelism,
+    option_python,
+    option_python_versions,
+    option_run_in_parallel,
+    option_skip_cleanup,
+    option_use_airflow_version,
+    option_verbose,
+    option_version_suffix_for_pypi,
+)
+from airflow_breeze.commands.common_package_installation_options import (
+    option_airflow_constraints_location,
+    option_airflow_constraints_mode_ci,
+    option_airflow_constraints_mode_update,
+    option_airflow_constraints_reference,
+    option_airflow_skip_constraints,
+    option_install_selected_providers,
+    option_providers_constraints_location,
+    option_providers_constraints_mode_ci,
+    option_providers_constraints_reference,
+    option_providers_skip_constraints,
+    option_use_packages_from_dist,
+)
 from airflow_breeze.commands.release_management_group import release_management
 from airflow_breeze.global_constants import (
     ALLOWED_DEBIAN_VERSIONS,
+    ALLOWED_PACKAGE_FORMATS,
     ALLOWED_PLATFORMS,
     ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
     APACHE_AIRFLOW_GITHUB_REPOSITORY,
@@ -63,47 +99,9 @@ from airflow_breeze.utils.add_back_references import (
     start_generating_back_references,
 )
 from airflow_breeze.utils.ci_group import ci_group
-from airflow_breeze.utils.common_options import (
-    argument_doc_packages,
-    argument_provider_packages,
-    option_airflow_constraints_location,
-    option_airflow_constraints_mode_ci,
-    option_airflow_constraints_mode_update,
-    option_airflow_constraints_reference,
-    option_airflow_extras,
-    option_airflow_site_directory,
-    option_airflow_skip_constraints,
-    option_answer,
-    option_chicken_egg_providers,
-    option_commit_sha,
-    option_debug_resources,
-    option_directory,
-    option_dry_run,
-    option_github_repository,
-    option_historical_python_version,
-    option_image_tag_for_running,
-    option_include_success_outputs,
-    option_install_selected_providers,
-    option_installation_package_format,
-    option_mount_sources,
-    option_package_format,
-    option_parallelism,
-    option_providers_constraints_location,
-    option_providers_constraints_mode_ci,
-    option_providers_constraints_reference,
-    option_providers_skip_constraints,
-    option_python,
-    option_python_versions,
-    option_run_in_parallel,
-    option_skip_cleanup,
-    option_use_airflow_version,
-    option_use_packages_from_dist,
-    option_verbose,
-    option_version_suffix_for_pypi,
-)
 from airflow_breeze.utils.confirm import Answer, user_confirm
 from airflow_breeze.utils.console import MessageType, Output, get_console
-from airflow_breeze.utils.custom_param_types import BetterChoice
+from airflow_breeze.utils.custom_param_types import BetterChoice, 
NotVerifiedBetterChoice
 from airflow_breeze.utils.docker_command_utils import (
     check_remote_ghcr_io_commands,
     execute_command_in_shell,
@@ -150,6 +148,49 @@ from airflow_breeze.utils.run_utils import (
 from airflow_breeze.utils.shared_options import get_dry_run, get_verbose
 from airflow_breeze.utils.versions import is_pre_release
 
+argument_provider_packages = click.argument(
+    "provider_packages",
+    nargs=-1,
+    required=False,
+    type=NotVerifiedBetterChoice(get_available_packages()),
+)
+option_airflow_site_directory = click.option(
+    "-a",
+    "--airflow-site-directory",
+    envvar="AIRFLOW_SITE_DIRECTORY",
+    type=click.Path(exists=True, file_okay=False, dir_okay=True, 
resolve_path=True),
+    help="Local directory path of cloned airflow-site repo.",
+    required=True,
+)
+option_chicken_egg_providers = click.option(
+    "--chicken-egg-providers",
+    default="",
+    help="List of chicken-egg provider packages - "
+    "those that have airflow_version >= current_version and should "
+    "be installed in CI from locally built packages with >= 
current_version.dev0 ",
+    envvar="CHICKEN_EGG_PROVIDERS",
+)
+option_debug_release_management = click.option(
+    "--debug",
+    is_flag=True,
+    help="Drop user in shell instead of running the command. Useful for 
debugging.",
+    envvar="DEBUG",
+)
+option_directory = click.option(
+    "--directory",
+    type=click.Path(exists=True, file_okay=False, dir_okay=True, 
resolve_path=True),
+    required=True,
+    help="Directory to clean the provider artifacts from.",
+)
+option_package_format = click.option(
+    "--package-format",
+    type=BetterChoice(ALLOWED_PACKAGE_FORMATS),
+    help="Format of packages.",
+    default=ALLOWED_PACKAGE_FORMATS[0],
+    show_default=True,
+    envvar="PACKAGE_FORMAT",
+)
+
 if TYPE_CHECKING:
     from packaging.version import Version
 
diff --git a/dev/breeze/src/airflow_breeze/commands/sbom_commands.py 
b/dev/breeze/src/airflow_breeze/commands/sbom_commands.py
index ef53479659..92c3720039 100644
--- a/dev/breeze/src/airflow_breeze/commands/sbom_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/sbom_commands.py
@@ -24,6 +24,17 @@ from pathlib import Path
 
 import click
 
+from airflow_breeze.commands.common_options import (
+    option_answer,
+    option_debug_resources,
+    option_dry_run,
+    option_historical_python_version,
+    option_include_success_outputs,
+    option_parallelism,
+    option_run_in_parallel,
+    option_skip_cleanup,
+    option_verbose,
+)
 from airflow_breeze.global_constants import (
     AIRFLOW_PYTHON_COMPATIBILITY_MATRIX,
     ALL_HISTORICAL_PYTHON_VERSIONS,
@@ -41,17 +52,6 @@ from airflow_breeze.utils.cdxgen import (
 )
 from airflow_breeze.utils.ci_group import ci_group
 from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
-    option_answer,
-    option_debug_resources,
-    option_dry_run,
-    option_historical_python_version,
-    option_include_success_outputs,
-    option_parallelism,
-    option_run_in_parallel,
-    option_skip_cleanup,
-    option_verbose,
-)
 from airflow_breeze.utils.confirm import Answer, user_confirm
 from airflow_breeze.utils.console import get_console
 from airflow_breeze.utils.custom_param_types import BetterChoice
diff --git a/dev/breeze/src/airflow_breeze/commands/setup_commands.py 
b/dev/breeze/src/airflow_breeze/commands/setup_commands.py
index d7d1e2db9d..e9dbd670b3 100644
--- a/dev/breeze/src/airflow_breeze/commands/setup_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/setup_commands.py
@@ -31,10 +31,7 @@ from click import Context
 from rich.console import Console
 
 from airflow_breeze import NAME, VERSION
-from airflow_breeze.commands.main_command import main
-from airflow_breeze.utils.cache import check_if_cache_exists, delete_cache, 
touch_cache_file
-from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
+from airflow_breeze.commands.common_options import (
     option_answer,
     option_backend,
     option_dry_run,
@@ -44,6 +41,9 @@ from airflow_breeze.utils.common_options import (
     option_python,
     option_verbose,
 )
+from airflow_breeze.commands.main_command import main
+from airflow_breeze.utils.cache import check_if_cache_exists, delete_cache, 
touch_cache_file
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.confirm import STANDARD_TIMEOUT, Answer, user_confirm
 from airflow_breeze.utils.console import get_console, get_stderr_console
 from airflow_breeze.utils.custom_param_types import BetterChoice
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py 
b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 3c07d619bf..c7cb5bdccb 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -25,22 +25,12 @@ import click
 from click import IntRange
 
 from airflow_breeze.commands.ci_image_commands import 
rebuild_or_pull_ci_image_if_needed
-from airflow_breeze.global_constants import (
-    ALLOWED_HELM_TEST_PACKAGES,
-)
-from airflow_breeze.params.build_prod_params import BuildProdParams
-from airflow_breeze.params.shell_params import ShellParams
-from airflow_breeze.utils.ci_group import ci_group
-from airflow_breeze.utils.click_utils import BreezeGroup
-from airflow_breeze.utils.common_options import (
+from airflow_breeze.commands.common_options import (
     option_backend,
-    option_collect_only,
     option_db_reset,
     option_debug_resources,
     option_downgrade_sqlalchemy,
     option_dry_run,
-    option_enable_coverage,
-    option_excluded_parallel_test_types,
     option_github_repository,
     option_image_name,
     option_image_tag_for_running,
@@ -49,26 +39,28 @@ from airflow_breeze.utils.common_options import (
     option_mount_sources,
     option_mssql_version,
     option_mysql_version,
-    option_parallel_test_types,
     option_parallelism,
     option_postgres_version,
     option_python,
-    option_remove_arm_packages,
     option_run_db_tests_only,
     option_run_in_parallel,
     option_skip_cleanup,
     option_skip_db_tests,
-    option_skip_docker_compose_down,
-    option_skip_provider_tests,
-    option_test_timeout,
-    option_test_type,
     option_upgrade_boto,
     option_use_airflow_version,
-    option_use_xdist,
     option_verbose,
 )
+from airflow_breeze.global_constants import (
+    ALLOWED_HELM_TEST_PACKAGES,
+    ALLOWED_PARALLEL_TEST_TYPE_CHOICES,
+    ALLOWED_TEST_TYPE_CHOICES,
+)
+from airflow_breeze.params.build_prod_params import BuildProdParams
+from airflow_breeze.params.shell_params import ShellParams
+from airflow_breeze.utils.ci_group import ci_group
+from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.console import Output, get_console
-from airflow_breeze.utils.custom_param_types import BetterChoice
+from airflow_breeze.utils.custom_param_types import BetterChoice, 
NotVerifiedBetterChoice
 from airflow_breeze.utils.docker_command_utils import (
     fix_ownership_using_docker,
     perform_environment_checks,
@@ -87,6 +79,7 @@ from airflow_breeze.utils.run_tests import (
     run_docker_compose_tests,
 )
 from airflow_breeze.utils.run_utils import get_filesystem_type, run_command
+from airflow_breeze.utils.selective_checks import ALL_CI_SELECTIVE_TEST_TYPES
 
 LOW_MEMORY_CONDITION = 8 * 1024 * 1024 * 1024
 
@@ -371,6 +364,78 @@ def _verify_parallelism_parameters(
         sys.exit(1)
 
 
+option_collect_only = click.option(
+    "--collect-only",
+    help="Collect tests only, do not run them.",
+    is_flag=True,
+    envvar="COLLECT_ONLY",
+)
+option_enable_coverage = click.option(
+    "--enable-coverage",
+    help="Enable coverage capturing for tests in the form of XML files",
+    is_flag=True,
+    envvar="ENABLE_COVERAGE",
+)
+option_excluded_parallel_test_types = click.option(
+    "--excluded-parallel-test-types",
+    help="Space separated list of test types that will be excluded from 
parallel tes runs.",
+    default="",
+    show_default=True,
+    envvar="EXCLUDED_PARALLEL_TEST_TYPES",
+    type=NotVerifiedBetterChoice(ALLOWED_PARALLEL_TEST_TYPE_CHOICES),
+)
+option_parallel_test_types = click.option(
+    "--parallel-test-types",
+    help="Space separated list of test types used for testing in parallel",
+    default=ALL_CI_SELECTIVE_TEST_TYPES,
+    show_default=True,
+    envvar="PARALLEL_TEST_TYPES",
+    type=NotVerifiedBetterChoice(ALLOWED_PARALLEL_TEST_TYPE_CHOICES),
+)
+option_skip_docker_compose_down = click.option(
+    "--skip-docker-compose-down",
+    help="Skips running docker-compose down after tests",
+    is_flag=True,
+    envvar="SKIP_DOCKER_COMPOSE_DOWN",
+)
+option_skip_provider_tests = click.option(
+    "--skip-provider-tests",
+    help="Skip provider tests",
+    is_flag=True,
+    envvar="SKIP_PROVIDER_TESTS",
+)
+option_test_timeout = click.option(
+    "--test-timeout",
+    help="Test timeout in seconds. Set the pytest setup, execution and 
teardown timeouts to this value",
+    default=60,
+    envvar="TEST_TIMEOUT",
+    type=IntRange(min=0),
+    show_default=True,
+)
+option_test_type = click.option(
+    "--test-type",
+    help="Type of test to run. With Providers, you can specify tests of which 
providers "
+    "should be run: `Providers[airbyte,http]` or "
+    "excluded from the full test suite: `Providers[-amazon,google]`",
+    default="Default",
+    envvar="TEST_TYPE",
+    show_default=True,
+    type=NotVerifiedBetterChoice(ALLOWED_TEST_TYPE_CHOICES),
+)
+option_use_xdist = click.option(
+    "--use-xdist",
+    help="Use xdist plugin for pytest",
+    is_flag=True,
+    envvar="USE_XDIST",
+)
+option_remove_arm_packages = click.option(
+    "--remove-arm-packages",
+    help="Removes arm packages from the image to test if ARM collection works",
+    is_flag=True,
+    envvar="REMOVE_ARM_PACKAGES",
+)
+
+
 @group_for_testing.command(
     name="tests",
     help="Run the specified unit tests. This is a low level testing command 
that allows you to run "
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py 
b/dev/breeze/src/airflow_breeze/utils/common_options.py
deleted file mode 100644
index bf6288658e..0000000000
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ /dev/null
@@ -1,844 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-from __future__ import annotations
-
-import multiprocessing as mp
-
-import click
-from click import IntRange
-
-from airflow_breeze.branch_defaults import DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
-from airflow_breeze.global_constants import (
-    ALL_HISTORICAL_PYTHON_VERSIONS,
-    ALLOWED_BACKENDS,
-    ALLOWED_BUILD_CACHE,
-    ALLOWED_BUILD_PROGRESS,
-    ALLOWED_CELERY_BROKERS,
-    ALLOWED_CONSTRAINTS_MODES_CI,
-    ALLOWED_CONSTRAINTS_MODES_PROD,
-    ALLOWED_DEBIAN_VERSIONS,
-    ALLOWED_DOCKER_COMPOSE_PROJECTS,
-    ALLOWED_EXECUTORS,
-    ALLOWED_INSTALLATION_PACKAGE_FORMATS,
-    ALLOWED_MOUNT_OPTIONS,
-    ALLOWED_MSSQL_VERSIONS,
-    ALLOWED_MYSQL_VERSIONS,
-    ALLOWED_PACKAGE_FORMATS,
-    ALLOWED_PARALLEL_TEST_TYPE_CHOICES,
-    ALLOWED_PLATFORMS,
-    ALLOWED_POSTGRES_VERSIONS,
-    ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS,
-    ALLOWED_TEST_TYPE_CHOICES,
-    ALLOWED_USE_AIRFLOW_VERSIONS,
-    APACHE_AIRFLOW_GITHUB_REPOSITORY,
-    AUTOCOMPLETE_INTEGRATIONS,
-    DEFAULT_ALLOWED_EXECUTOR,
-    DEFAULT_CELERY_BROKER,
-    DOCKER_DEFAULT_PLATFORM,
-    SINGLE_PLATFORMS,
-    START_AIRFLOW_ALLOWED_EXECUTORS,
-    START_AIRFLOW_DEFAULT_ALLOWED_EXECUTOR,
-)
-from airflow_breeze.utils.custom_param_types import (
-    AnswerChoice,
-    BetterChoice,
-    CacheableChoice,
-    CacheableDefault,
-    DryRunOption,
-    MySQLBackendVersionType,
-    NotVerifiedBetterChoice,
-    UseAirflowVersionType,
-    VerboseOption,
-)
-from airflow_breeze.utils.packages import get_available_packages
-from airflow_breeze.utils.recording import generating_command_images
-from airflow_breeze.utils.selective_checks import ALL_CI_SELECTIVE_TEST_TYPES
-
-
-def _set_default_from_parent(ctx: click.core.Context, option: 
click.core.Option, value):
-    from click.core import ParameterSource
-
-    if (
-        ctx.parent
-        and option.name in ctx.parent.params
-        and ctx.get_parameter_source(option.name)
-        in (
-            ParameterSource.DEFAULT,
-            ParameterSource.DEFAULT_MAP,
-        )
-    ):
-        # Current value is the default, use the parent's value (i.e. for 
`breeze
-        # # -v static-checks` respect the "global" option)
-        value = ctx.parent.params[option.name]
-    return value
-
-
-option_verbose = click.option(
-    "-v",
-    "--verbose",
-    is_flag=True,
-    help="Print verbose information about performed steps.",
-    envvar="VERBOSE",
-    metavar="BOOLEAN",
-    expose_value=False,
-    type=VerboseOption(),
-    callback=_set_default_from_parent,
-)
-option_dry_run = click.option(
-    "-D",
-    "--dry-run",
-    is_flag=True,
-    help="If dry-run is set, commands are only printed, not executed.",
-    envvar="DRY_RUN",
-    metavar="BOOLEAN",
-    expose_value=False,
-    type=DryRunOption(),
-    callback=_set_default_from_parent,
-)
-option_answer = click.option(
-    "-a",
-    "--answer",
-    type=AnswerChoice(["y", "n", "q", "yes", "no", "quit"]),
-    help="Force answer to questions.",
-    envvar="ANSWER",
-    expose_value=False,
-    callback=_set_default_from_parent,
-)
-option_github_repository = click.option(
-    "-g",
-    "--github-repository",
-    help="GitHub repository used to pull, push run images.",
-    default=APACHE_AIRFLOW_GITHUB_REPOSITORY,
-    show_default=True,
-    envvar="GITHUB_REPOSITORY",
-    callback=_set_default_from_parent,
-)
-option_python = click.option(
-    "-p",
-    "--python",
-    type=CacheableChoice(ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS),
-    default=CacheableDefault(value=ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS[0]),
-    show_default=True,
-    help="Python major/minor version used in Airflow image for images.",
-    envvar="PYTHON_MAJOR_MINOR_VERSION",
-)
-option_debian_version = click.option(
-    "--debian-version",
-    type=BetterChoice(ALLOWED_DEBIAN_VERSIONS),
-    default=ALLOWED_DEBIAN_VERSIONS[0],
-    show_default=True,
-    help="Debian version used in Airflow image as base for building images.",
-    envvar="DEBIAN_VERSION",
-)
-option_backend = click.option(
-    "-b",
-    "--backend",
-    type=CacheableChoice(ALLOWED_BACKENDS),
-    default=CacheableDefault(value=ALLOWED_BACKENDS[0]),
-    show_default=True,
-    help="Database backend to use. If 'none' is selected, breeze starts with 
invalid DB configuration "
-    "and no database and any attempts to connect to Airflow DB will fail.",
-    envvar="BACKEND",
-)
-option_integration = click.option(
-    "--integration",
-    help="Integration(s) to enable when running (can be more than one).",
-    type=BetterChoice(AUTOCOMPLETE_INTEGRATIONS),
-    multiple=True,
-)
-option_postgres_version = click.option(
-    "-P",
-    "--postgres-version",
-    type=CacheableChoice(ALLOWED_POSTGRES_VERSIONS),
-    default=CacheableDefault(ALLOWED_POSTGRES_VERSIONS[0]),
-    show_default=True,
-    help="Version of Postgres used.",
-)
-option_mysql_version = click.option(
-    "-M",
-    "--mysql-version",
-    help="Version of MySQL used.",
-    type=MySQLBackendVersionType(ALLOWED_MYSQL_VERSIONS),
-    default=CacheableDefault(ALLOWED_MYSQL_VERSIONS[0]),
-    show_default=True,
-)
-option_mssql_version = click.option(
-    "-S",
-    "--mssql-version",
-    help="Version of MsSQL used.",
-    type=CacheableChoice(ALLOWED_MSSQL_VERSIONS),
-    default=CacheableDefault(ALLOWED_MSSQL_VERSIONS[0]),
-    show_default=True,
-)
-option_forward_credentials = click.option(
-    "-f", "--forward-credentials", help="Forward local credentials to 
container when running.", is_flag=True
-)
-option_use_airflow_version = click.option(
-    "--use-airflow-version",
-    help="Use (reinstall at entry) Airflow version from PyPI. It can also be 
version (to install from PyPI), "
-    "`none`, `wheel`, or `sdist` to install from `dist` folder, or VCS URL to 
install from "
-    "(https://pip.pypa.io/en/stable/topics/vcs-support/). Implies 
--mount-sources `remove`.",
-    type=UseAirflowVersionType(ALLOWED_USE_AIRFLOW_VERSIONS),
-    envvar="USE_AIRFLOW_VERSION",
-)
-option_airflow_extras = click.option(
-    "--airflow-extras",
-    help="Airflow extras to install when --use-airflow-version is used",
-    default="",
-    show_default=True,
-    envvar="AIRFLOW_EXTRAS",
-)
-option_mount_sources = click.option(
-    "--mount-sources",
-    type=BetterChoice(ALLOWED_MOUNT_OPTIONS),
-    default=ALLOWED_MOUNT_OPTIONS[0],
-    show_default=True,
-    envvar="MOUNT_SOURCES",
-    help="Choose scope of local sources that should be mounted, skipped, or 
removed (default = selected).",
-)
-option_force_build = click.option(
-    "--force-build", help="Force image build no matter if it is determined as 
needed.", is_flag=True
-)
-option_db_reset = click.option(
-    "-d",
-    "--db-reset",
-    help="Reset DB when entering the container.",
-    is_flag=True,
-    envvar="DB_RESET",
-)
-option_use_packages_from_dist = click.option(
-    "--use-packages-from-dist",
-    is_flag=True,
-    help="Install all found packages (--package-format determines type) from 
'dist' folder "
-    "when entering breeze.",
-    envvar="USE_PACKAGES_FROM_DIST",
-)
-option_docker_cache = click.option(
-    "-c",
-    "--docker-cache",
-    help="Cache option for image used during the build.",
-    default=ALLOWED_BUILD_CACHE[0],
-    show_default=True,
-    type=BetterChoice(ALLOWED_BUILD_CACHE),
-)
-option_github_token = click.option(
-    "--github-token",
-    help="The token used to authenticate to GitHub.",
-    envvar="GITHUB_TOKEN",
-)
-option_image_tag_for_pulling = click.option(
-    "-t",
-    "--image-tag",
-    help="Tag of the image which is used to pull the image.",
-    show_default=True,
-    default="latest",
-    envvar="IMAGE_TAG",
-)
-option_image_tag_for_building = click.option(
-    "--image-tag",
-    help="Tag the image after building it.",
-    show_default=True,
-    default="latest",
-    envvar="IMAGE_TAG",
-)
-option_image_tag_for_running = click.option(
-    "--image-tag",
-    help="Tag of the image which is used to run the image (implies 
--mount-sources=skip).",
-    show_default=True,
-    default="latest",
-    envvar="IMAGE_TAG",
-)
-option_image_tag_for_verifying = click.option(
-    "-t",
-    "--image-tag",
-    help="Tag of the image when verifying it.",
-    show_default=True,
-    default="latest",
-    envvar="IMAGE_TAG",
-)
-option_image_name = click.option(
-    "-n", "--image-name", help="Name of the image to verify (overrides 
--python and --image-tag)."
-)
-option_platform_multiple = click.option(
-    "--platform",
-    help="Platform for Airflow image.",
-    envvar="PLATFORM",
-    default=DOCKER_DEFAULT_PLATFORM if not generating_command_images() else 
"linux/amd64",
-    type=BetterChoice(ALLOWED_PLATFORMS),
-)
-option_platform_single = click.option(
-    "--platform",
-    help="Platform for Airflow image.",
-    envvar="PLATFORM",
-    default=DOCKER_DEFAULT_PLATFORM if not generating_command_images() else 
"linux/amd64",
-    type=BetterChoice(SINGLE_PLATFORMS),
-)
-option_upgrade_to_newer_dependencies = click.option(
-    "-u",
-    "--upgrade-to-newer-dependencies",
-    is_flag=True,
-    help="When set, upgrade all PIP packages to latest.",
-    envvar="UPGRADE_TO_NEWER_DEPENDENCIES",
-)
-option_upgrade_on_failure = click.option(
-    "--upgrade-on-failure",
-    is_flag=True,
-    help="When set, attempt to run upgrade to newer dependencies when regular 
build fails.",
-    envvar="UPGRADE_ON_FAILURE",
-)
-option_additional_airflow_extras = click.option(
-    "--additional-airflow-extras",
-    help="Additional extra package while installing Airflow in the image.",
-    envvar="ADDITIONAL_AIRFLOW_EXTRAS",
-)
-option_additional_dev_apt_deps = click.option(
-    "--additional-dev-apt-deps",
-    help="Additional apt dev dependencies to use when building the images.",
-    envvar="ADDITIONAL_DEV_APT_DEPS",
-)
-option_additional_runtime_apt_deps = click.option(
-    "--additional-runtime-apt-deps",
-    help="Additional apt runtime dependencies to use when building the 
images.",
-    envvar="ADDITIONAL_RUNTIME_APT_DEPS",
-)
-option_additional_python_deps = click.option(
-    "--additional-python-deps",
-    help="Additional python dependencies to use when building the images.",
-    envvar="ADDITIONAL_PYTHON_DEPS",
-)
-option_additional_dev_apt_command = click.option(
-    "--additional-dev-apt-command",
-    help="Additional command executed before dev apt deps are installed.",
-    envvar="ADDITIONAL_DEV_APT_COMMAND",
-)
-option_additional_runtime_apt_command = click.option(
-    "--additional-runtime-apt-command",
-    help="Additional command executed before runtime apt deps are installed.",
-    envvar="ADDITIONAL_RUNTIME_APT_COMMAND",
-)
-option_additional_dev_apt_env = click.option(
-    "--additional-dev-apt-env",
-    help="Additional environment variables set when adding dev dependencies.",
-    envvar="ADDITIONAL_DEV_APT_ENV",
-)
-option_additional_runtime_apt_env = click.option(
-    "--additional-runtime-apt-env",
-    help="Additional environment variables set when adding runtime 
dependencies.",
-    envvar="ADDITIONAL_RUNTIME_APT_ENV",
-)
-option_dev_apt_command = click.option(
-    "--dev-apt-command",
-    help="Command executed before dev apt deps are installed.",
-    envvar="DEV_APT_COMMAND",
-)
-option_dev_apt_deps = click.option(
-    "--dev-apt-deps",
-    help="Apt dev dependencies to use when building the images.",
-    envvar="DEV_APT_DEPS",
-)
-option_runtime_apt_command = click.option(
-    "--runtime-apt-command",
-    help="Command executed before runtime apt deps are installed.",
-    envvar="RUNTIME_APT_COMMAND",
-)
-option_runtime_apt_deps = click.option(
-    "--runtime-apt-deps",
-    help="Apt runtime dependencies to use when building the images.",
-    envvar="RUNTIME_APT_DEPS",
-)
-option_prepare_buildx_cache = click.option(
-    "--prepare-buildx-cache",
-    help="Prepares build cache (this is done as separate per-platform steps 
instead of building the image).",
-    is_flag=True,
-    envvar="PREPARE_BUILDX_CACHE",
-)
-option_push = click.option(
-    "--push",
-    help="Push image after building it.",
-    is_flag=True,
-    envvar="PUSH",
-)
-option_wait_for_image = click.option(
-    "--wait-for-image",
-    help="Wait until image is available.",
-    is_flag=True,
-    envvar="WAIT_FOR_IMAGE",
-)
-option_tag_as_latest = click.option(
-    "--tag-as-latest",
-    help="Tags the image as latest and update checksum of all files after 
pulling. "
-    "Useful when you build or pull image with --image-tag.",
-    is_flag=True,
-    envvar="TAG_AS_LATEST",
-)
-option_verify = click.option(
-    "--verify",
-    help="Verify image.",
-    is_flag=True,
-    envvar="VERIFY",
-)
-option_additional_pip_install_flags = click.option(
-    "--additional-pip-install-flags",
-    help="Additional flags added to `pip install` commands (except 
reinstalling `pip` itself).",
-    envvar="ADDITIONAL_PIP_INSTALL_FLAGS",
-)
-
-option_install_providers_from_sources = click.option(
-    "--install-providers-from-sources",
-    help="Install providers from sources when installing.",
-    is_flag=True,
-    envvar="INSTALL_PROVIDERS_FROM_SOURCES",
-)
-option_load_example_dags = click.option(
-    "-e",
-    "--load-example-dags",
-    help="Enable configuration to load example DAGs when starting Airflow.",
-    is_flag=True,
-    envvar="LOAD_EXAMPLES",
-)
-option_load_default_connection = click.option(
-    "-c",
-    "--load-default-connections",
-    help="Enable configuration to load default connections when starting 
Airflow.",
-    is_flag=True,
-    envvar="LOAD_DEFAULT_CONNECTIONS",
-)
-option_version_suffix_for_pypi = click.option(
-    "--version-suffix-for-pypi",
-    help="Version suffix used for PyPI packages (alpha, beta, rc1, etc.).",
-    envvar="VERSION_SUFFIX_FOR_PYPI",
-    default="",
-)
-option_version_suffix_for_pypi_ci = click.option(
-    "--version-suffix-for-pypi",
-    help="Version suffix used for PyPI packages (alpha, beta, rc1, etc.).",
-    default="dev0",
-    show_default=True,
-    envvar="VERSION_SUFFIX_FOR_PYPI",
-)
-option_package_format = click.option(
-    "--package-format",
-    type=BetterChoice(ALLOWED_PACKAGE_FORMATS),
-    help="Format of packages.",
-    default=ALLOWED_PACKAGE_FORMATS[0],
-    show_default=True,
-    envvar="PACKAGE_FORMAT",
-)
-option_installation_package_format = click.option(
-    "--package-format",
-    type=BetterChoice(ALLOWED_INSTALLATION_PACKAGE_FORMATS),
-    help="Format of packages that should be installed from dist.",
-    default=ALLOWED_INSTALLATION_PACKAGE_FORMATS[0],
-    show_default=True,
-    envvar="PACKAGE_FORMAT",
-)
-option_python_versions = click.option(
-    "--python-versions",
-    help="Space separated list of python versions used for build with multiple 
versions.",
-    default=" ".join(ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS),
-    show_default=True,
-    envvar="PYTHON_VERSIONS",
-)
-option_run_in_parallel = click.option(
-    "--run-in-parallel",
-    help="Run the operation in parallel on all or selected subset of 
parameters.",
-    is_flag=True,
-    envvar="RUN_IN_PARALLEL",
-)
-option_parallelism = click.option(
-    "--parallelism",
-    help="Maximum number of processes to use while running the operation in 
parallel.",
-    type=click.IntRange(1, mp.cpu_count() * 3 if not 
generating_command_images() else 8),
-    default=mp.cpu_count() if not generating_command_images() else 4,
-    envvar="PARALLELISM",
-    show_default=True,
-)
-argument_provider_packages = click.argument(
-    "provider_packages",
-    nargs=-1,
-    required=False,
-    type=NotVerifiedBetterChoice(get_available_packages()),
-)
-argument_doc_packages = click.argument(
-    "doc_packages",
-    nargs=-1,
-    required=False,
-    type=NotVerifiedBetterChoice(
-        get_available_packages(include_non_provider_doc_packages=True, 
include_all_providers=True)
-    ),
-)
-option_airflow_constraints_reference = click.option(
-    "--airflow-constraints-reference",
-    help="Constraint reference to use for airflow installation (used in 
calculated constraints URL). "
-    "Can be 'default' in which case the default constraints-reference is 
used.",
-    envvar="AIRFLOW_CONSTRAINTS_REFERENCE",
-)
-option_airflow_constraints_location = click.option(
-    "--airflow-constraints-location",
-    type=str,
-    help="Location of airflow constraints to use (remote URL or local context 
file).",
-    envvar="AIRFLOW_CONSTRAINTS_LOCATION",
-)
-option_airflow_constraints_mode_update = click.option(
-    "--airflow-constraints-mode",
-    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_CI),
-    required=False,
-    help="Limit constraint update to only selected constraint mode - if 
selected.",
-)
-option_airflow_constraints_mode_prod = click.option(
-    "--airflow-constraints-mode",
-    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_PROD),
-    default=ALLOWED_CONSTRAINTS_MODES_PROD[0],
-    show_default=True,
-    help="Mode of constraints for Airflow for PROD image building.",
-)
-option_airflow_constraints_mode_ci = click.option(
-    "--airflow-constraints-mode",
-    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_CI),
-    default=ALLOWED_CONSTRAINTS_MODES_CI[0],
-    show_default=True,
-    help="Mode of constraints for Airflow for CI image building.",
-)
-option_providers_constraints_reference = click.option(
-    "--providers-constraints-reference",
-    help="Constraint reference to use for providers installation (used in 
calculated constraints URL). "
-    "Can be 'default' in which case the default constraints-reference is 
used.",
-    envvar="PROVIDERS_CONSTRAINTS_REFERENCE",
-)
-option_providers_constraints_location = click.option(
-    "--providers-constraints-location",
-    type=str,
-    help="Location of providers constraints to use (remote URL or local 
context file).",
-    envvar="PROVIDERS_CONSTRAINTS_LOCATION",
-)
-option_providers_constraints_mode_prod = click.option(
-    "--providers-constraints-mode",
-    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_PROD),
-    default=ALLOWED_CONSTRAINTS_MODES_PROD[0],
-    show_default=True,
-    help="Mode of constraints for Providers for PROD image building.",
-)
-option_providers_constraints_mode_ci = click.option(
-    "--providers-constraints-mode",
-    type=BetterChoice(ALLOWED_CONSTRAINTS_MODES_CI),
-    default=ALLOWED_CONSTRAINTS_MODES_CI[0],
-    show_default=True,
-    help="Mode of constraints for Providers for CI image building.",
-)
-option_providers_skip_constraints = click.option(
-    "--providers-skip-constraints",
-    is_flag=True,
-    help="Do not use constraints when installing providers.",
-    envvar="PROVIDERS_SKIP_CONSTRAINTS",
-)
-option_airflow_constraints_reference_build = click.option(
-    "--airflow-constraints-reference",
-    default=DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH,
-    help="Constraint reference to use when building the image.",
-    envvar="AIRFLOW_CONSTRAINTS_REFERENCE",
-)
-option_pull = click.option(
-    "--pull",
-    help="Pull image is missing before attempting to verify it.",
-    is_flag=True,
-    envvar="PULL",
-)
-option_python_image = click.option(
-    "--python-image",
-    help="If specified this is the base python image used to build the image. "
-    "Should be something like: python:VERSION-slim-bookworm.",
-    envvar="PYTHON_IMAGE",
-)
-option_docker_host = click.option(
-    "--docker-host",
-    help="Optional - docker host to use when running docker commands. "
-    "When set, the `--builder` option is ignored when building images.",
-    envvar="DOCKER_HOST",
-)
-option_builder = click.option(
-    "--builder",
-    help="Buildx builder used to perform `docker buildx build` commands.",
-    envvar="BUILDER",
-    show_default=True,
-    default="autodetect",
-)
-option_build_progress = click.option(
-    "--build-progress",
-    help="Build progress.",
-    type=BetterChoice(ALLOWED_BUILD_PROGRESS),
-    envvar="BUILD_PROGRESS",
-    show_default=True,
-    default=ALLOWED_BUILD_PROGRESS[0],
-)
-option_include_success_outputs = click.option(
-    "--include-success-outputs",
-    help="Whether to include outputs of successful parallel runs (skipped by 
default).",
-    is_flag=True,
-    envvar="INCLUDE_SUCCESS_OUTPUTS",
-)
-option_skip_cleanup = click.option(
-    "--skip-cleanup",
-    help="Skip cleanup of temporary files created during parallel run.",
-    is_flag=True,
-    envvar="SKIP_CLEANUP",
-)
-
-option_directory = click.option(
-    "--directory",
-    type=click.Path(exists=True, file_okay=False, dir_okay=True, 
resolve_path=True),
-    required=True,
-    help="Directory to clean the provider artifacts from.",
-)
-
-option_include_mypy_volume = click.option(
-    "--include-mypy-volume",
-    help="Whether to include mounting of the mypy volume (useful for debugging 
mypy).",
-    is_flag=True,
-    envvar="INCLUDE_MYPY_VOLUME",
-)
-option_max_time = click.option(
-    "--max-time",
-    help="Maximum time that the command should take - if it takes longer, the 
command will fail.",
-    type=click.IntRange(min=1),
-    envvar="MAX_TIME",
-    callback=_set_default_from_parent,
-)
-option_debug_resources = click.option(
-    "--debug-resources",
-    is_flag=True,
-    help="Whether to show resource information while running in parallel.",
-    envvar="DEBUG_RESOURCES",
-)
-option_executor_start_airflow = click.option(
-    "--executor",
-    type=click.Choice(START_AIRFLOW_ALLOWED_EXECUTORS, case_sensitive=False),
-    help="Specify the executor to use with start-airflow command.",
-    default=START_AIRFLOW_DEFAULT_ALLOWED_EXECUTOR,
-    show_default=True,
-)
-option_executor_shell = click.option(
-    "--executor",
-    type=click.Choice(ALLOWED_EXECUTORS, case_sensitive=False),
-    help="Specify the executor to use with shell command.",
-    default=DEFAULT_ALLOWED_EXECUTOR,
-    show_default=True,
-)
-option_celery_broker = click.option(
-    "--celery-broker",
-    type=click.Choice(ALLOWED_CELERY_BROKERS, case_sensitive=False),
-    help="Specify the celery message broker",
-    default=DEFAULT_CELERY_BROKER,
-    show_default=True,
-)
-option_celery_flower = click.option("--celery-flower", help="Start celery 
flower", is_flag=True)
-option_standalone_dag_processor = click.option(
-    "--standalone-dag-processor",
-    help="Run standalone dag processor for start-airflow.",
-    is_flag=True,
-    envvar="STANDALONE_DAG_PROCESSOR",
-)
-option_database_isolation = click.option(
-    "--database-isolation",
-    help="Run airflow in database isolation mode.",
-    is_flag=True,
-    envvar="DATABASE_ISOLATION",
-)
-option_install_selected_providers = click.option(
-    "--install-selected-providers",
-    help="Comma-separated list of providers selected to be installed (implies 
--use-packages-from-dist).",
-    envvar="INSTALL_SELECTED_PROVIDERS",
-    default="",
-)
-option_airflow_skip_constraints = click.option(
-    "--airflow-skip-constraints",
-    is_flag=True,
-    help="Do not use constraints when installing airflow.",
-    envvar="AIRFLOW_SKIP_CONSTRAINTS",
-)
-option_historical_python_version = click.option(
-    "--python",
-    type=BetterChoice(ALL_HISTORICAL_PYTHON_VERSIONS),
-    required=False,
-    envvar="PYTHON_VERSION",
-    help="Python version to update sbom from. (defaults to all historical 
python versions)",
-)
-option_commit_sha = click.option(
-    "--commit-sha",
-    show_default=True,
-    envvar="COMMIT_SHA",
-    help="Commit SHA that is used to build the images.",
-)
-option_build_timeout_minutes = click.option(
-    "--build-timeout-minutes",
-    required=False,
-    type=int,
-    envvar="BUILD_TIMEOUT_MINUTES",
-    help="Optional timeout for the build in minutes. Useful to detect `pip` 
backtracking problems.",
-)
-option_eager_upgrade_additional_requirements = click.option(
-    "--eager-upgrade-additional-requirements",
-    required=False,
-    type=str,
-    envvar="EAGER_UPGRADE_ADDITIONAL_REQUIREMENTS",
-    help="Optional additional requirements to upgrade eagerly to avoid 
backtracking "
-    "(see `breeze ci find-backtracking-candidates`).",
-)
-option_airflow_site_directory = click.option(
-    "-a",
-    "--airflow-site-directory",
-    envvar="AIRFLOW_SITE_DIRECTORY",
-    type=click.Path(exists=True, file_okay=False, dir_okay=True, 
resolve_path=True),
-    help="Local directory path of cloned airflow-site repo.",
-    required=True,
-)
-option_upgrade_boto = click.option(
-    "--upgrade-boto",
-    help="Remove aiobotocore and upgrade botocore and boto to the latest 
version.",
-    is_flag=True,
-    envvar="UPGRADE_BOTO",
-)
-option_downgrade_sqlalchemy = click.option(
-    "--downgrade-sqlalchemy",
-    help="Downgrade SQLAlchemy to minimum supported version.",
-    is_flag=True,
-    envvar="DOWNGRADE_SQLALCHEMY",
-)
-option_run_db_tests_only = click.option(
-    "--run-db-tests-only",
-    help="Only runs tests that require a database",
-    is_flag=True,
-    envvar="run_db_tests_only",
-)
-option_skip_db_tests = click.option(
-    "--skip-db-tests",
-    help="Skip tests that require a database",
-    is_flag=True,
-    envvar="SKIP_DB_TESTS",
-)
-option_test_timeout = click.option(
-    "--test-timeout",
-    help="Test timeout in seconds. Set the pytest setup, execution and 
teardown timeouts to this value",
-    default=60,
-    envvar="TEST_TIMEOUT",
-    type=IntRange(min=0),
-    show_default=True,
-)
-option_enable_coverage = click.option(
-    "--enable-coverage",
-    help="Enable coverage capturing for tests in the form of XML files",
-    is_flag=True,
-    envvar="ENABLE_COVERAGE",
-)
-option_skip_provider_tests = click.option(
-    "--skip-provider-tests",
-    help="Skip provider tests",
-    is_flag=True,
-    envvar="SKIP_PROVIDER_TESTS",
-)
-option_use_xdist = click.option(
-    "--use-xdist",
-    help="Use xdist plugin for pytest",
-    is_flag=True,
-    envvar="USE_XDIST",
-)
-option_test_type = click.option(
-    "--test-type",
-    help="Type of test to run. With Providers, you can specify tests of which 
providers "
-    "should be run: `Providers[airbyte,http]` or "
-    "excluded from the full test suite: `Providers[-amazon,google]`",
-    default="Default",
-    envvar="TEST_TYPE",
-    show_default=True,
-    type=NotVerifiedBetterChoice(ALLOWED_TEST_TYPE_CHOICES),
-)
-option_parallel_test_types = click.option(
-    "--parallel-test-types",
-    help="Space separated list of test types used for testing in parallel",
-    default=ALL_CI_SELECTIVE_TEST_TYPES,
-    show_default=True,
-    envvar="PARALLEL_TEST_TYPES",
-    type=NotVerifiedBetterChoice(ALLOWED_PARALLEL_TEST_TYPE_CHOICES),
-)
-option_excluded_parallel_test_types = click.option(
-    "--excluded-parallel-test-types",
-    help="Space separated list of test types that will be excluded from 
parallel tes runs.",
-    default="",
-    show_default=True,
-    envvar="EXCLUDED_PARALLEL_TEST_TYPES",
-    type=NotVerifiedBetterChoice(ALLOWED_PARALLEL_TEST_TYPE_CHOICES),
-)
-option_collect_only = click.option(
-    "--collect-only",
-    help="Collect tests only, do not run them.",
-    is_flag=True,
-    envvar="COLLECT_ONLY",
-)
-option_remove_arm_packages = click.option(
-    "--remove-arm-packages",
-    help="Removes arm packages from the image to test if ARM collection works",
-    is_flag=True,
-    envvar="REMOVE_ARM_PACKAGES",
-)
-option_skip_docker_compose_down = click.option(
-    "--skip-docker-compose-down",
-    help="Skips running docker-compose down after tests",
-    is_flag=True,
-    envvar="SKIP_DOCKER_COMPOSE_DOWN",
-)
-option_skip_image_upgrade_check = click.option(
-    "--skip-image-upgrade-check",
-    help="Skip checking if the CI image is up to date.",
-    is_flag=True,
-    envvar="SKIP_IMAGE_UPGRADE_CHECK",
-)
-option_warn_image_upgrade_needed = click.option(
-    "--warn-image-upgrade-needed",
-    help="Warn when image upgrade is needed even if --skip-upgrade-check is 
used.",
-    is_flag=True,
-    envvar="WARN_IMAGE_UPGRADE_NEEDED",
-)
-option_skip_environment_initialization = click.option(
-    "--skip-environment-initialization",
-    help="Skip running breeze entrypoint initialization - no user output, no 
db checks.",
-    is_flag=True,
-    envvar="SKIP_ENVIRONMENT_INITIALIZATION",
-)
-option_project_name = click.option(
-    "--project-name",
-    help="Name of the docker-compose project to bring down. "
-    "The `docker-compose` is for legacy breeze project name and you can use "
-    "`breeze down --project-name docker-compose` to stop all containers 
belonging to it.",
-    show_default=True,
-    type=NotVerifiedBetterChoice(ALLOWED_DOCKER_COMPOSE_PROJECTS),
-    default=ALLOWED_DOCKER_COMPOSE_PROJECTS[0],
-    envvar="PROJECT_NAME",
-)
-option_restart = click.option(
-    "--restart",
-    "--remove-orphans",
-    help="Restart all containers before entering shell (also removes orphan 
containers).",
-    is_flag=True,
-    envvar="RESTART",
-)
-option_chicken_egg_providers = click.option(
-    "--chicken-egg-providers",
-    default="",
-    help="List of chicken-egg provider packages - "
-    "those that have airflow_version >= current_version and should "
-    "be installed in CI from locally built packages with >= 
current_version.dev0 ",
-    envvar="CHICKEN_EGG_PROVIDERS",
-)


Reply via email to