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

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

commit 9c0409b0c99ee5d01f0b4cebf784733be9cd8dc3
Author: Jarek Potiuk <[email protected]>
AuthorDate: Tue Dec 5 22:36:34 2023 +0100

    Run matrix of compatibility checks for providers (#36061)
    
    Provider's compatibility checks have been run for one Python version
    and one Airflow version. However provider compatibility is a bit more
    nuanced:
    
    * some providers are 2.5.0+, some are 2.6.0+, some are 2.7.0+
    * some proivders do not work on Python 3.8 (cohere for importlib
      incompatibility reasons) and we need to run the checks on Python 3.9
    
    This PR adds the following capabilities:
    
    * adds option to install airflow from github URL (finally not used
      in this PR but good to leave it in)
    * the non-default Python checks are only run in case we already build CI
      imagese for those Python versions are already built
    * builds Airflow vith dev0 version to account for `pip` comparision
      not allowing for selective `-pre` flags
    
    (cherry picked from commit ace97c0f0b64bd003bafa50e02cdfc10a8303936)
---
 .github/workflows/ci.yml                           |  77 +++++-----
 airflow/providers/MANAGING_PROVIDERS_LIFECYCLE.rst | 157 ++++++++++++---------
 dev/README_RELEASE_AIRFLOW.md                      |   5 +
 dev/README_RELEASE_PROVIDER_PACKAGES.md            |   4 +-
 .../commands/release_management_commands.py        |  66 +++++----
 .../commands/release_management_commands_config.py |   2 +
 dev/breeze/src/airflow_breeze/global_constants.py  |  35 +++++
 .../src/airflow_breeze/utils/custom_param_types.py |   2 +
 .../src/airflow_breeze/utils/selective_checks.py   |  15 +-
 dev/breeze/tests/test_selective_checks.py          |  42 +++++-
 ...elease-management_install-provider-packages.svg |  88 +++++++-----
 ...elease-management_install-provider-packages.txt |   2 +-
 ...release-management_verify-provider-packages.svg |  74 ++++++----
 ...release-management_verify-provider-packages.txt |   2 +-
 scripts/in_container/_in_container_utils.sh        |  52 ++++++-
 15 files changed, 407 insertions(+), 216 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index aafe2da30d..0aa2e89ae3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -113,6 +113,7 @@ jobs:
       default-constraints-branch: ${{ 
steps.selective-checks.outputs.default-constraints-branch }}
       docs-list-as-string: ${{ 
steps.selective-checks.outputs.docs-list-as-string }}
       skip-pre-commits: ${{ steps.selective-checks.outputs.skip-pre-commits }}
+      providers-compatibility-checks: ${{ 
steps.selective-checks.outputs.providers-compatibility-checks }}
       helm-test-packages: ${{ 
steps.selective-checks.outputs.helm-test-packages }}
       debug-resources: ${{ steps.selective-checks.outputs.debug-resources }}
       runs-on: ${{steps.selective-checks.outputs.runs-on}}
@@ -780,70 +781,68 @@ jobs:
           breeze release-management prepare-provider-packages --skip-tag-check
           --package-format wheel ${{ 
needs.build-info.outputs.affected-providers-list-as-string }}
 
-  provider-airflow-compatibility-check:
+  providers-compatibility-checks:
     timeout-minutes: 80
-    name: "Providers Airflow 2.5 compatibility check"
+    name: >
+      Compat ${{matrix.airflow-version}}:P${{matrix.python-version}} provider 
check
     runs-on: ${{fromJSON(needs.build-info.outputs.runs-on)}}
     needs: [build-info, wait-for-ci-images]
+    strategy:
+      fail-fast: false
+      matrix:
+        include: 
${{fromJson(needs.build-info.outputs.providers-compatibility-checks)}}
     env:
       RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
-      PYTHON_MAJOR_MINOR_VERSION: 
"${{needs.build-info.outputs.default-python-version}}"
+      PYTHON_MAJOR_MINOR_VERSION: "${{matrix.python-version}}"
+      VERSION_SUFFIX_FOR_PYPI: "dev0"
     if: needs.build-info.outputs.skip-provider-tests != 'true'
     steps:
       - name: Cleanup repo
         run: docker run -v "${GITHUB_WORKSPACE}:/workspace" -u 0:0 bash -c "rm 
-rf /workspace/*"
+        if: 
contains(fromJson(needs.build-info.outputs.python-versions),matrix.python-version)
       - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
         uses: actions/checkout@v4
         with:
           persist-credentials: false
       - name: >
-          Prepare breeze & CI image: 
${{needs.build-info.outputs.default-python-version}}:${{env.IMAGE_TAG}}
+          Prepare breeze & CI image: 
${{matrix.python-version}}:${{env.IMAGE_TAG}}
         uses: ./.github/actions/prepare_breeze_and_image
       - name: "Cleanup dist files"
         run: rm -fv ./dist/*
       - name: "Prepare provider packages: wheel"
         run: >
-          breeze release-management prepare-provider-packages 
--version-suffix-for-pypi dev0
+          breeze release-management prepare-provider-packages
           --package-format wheel ${{ 
needs.build-info.outputs.affected-providers-list-as-string }}
-      - name: "Fix incompatible 2.5 provider packages"
+      - name: >
+          Remove incompatible Airflow
+          ${{matrix.airflow-version}}:Python ${{matrix.python-version}} 
provider packages
         run: |
-          # This step should remove the provider packages that are not 
compatible with 2.5
-          # or replace them with 2.5 compatible versions. Sometimes we have 
good reasons to bump
-          # the min airflow versions for some providers and then we need to 
add exclusions here.
-          #
-          # The Removal can be done with:
-          #
-          # rm -vf dist/apache_airflow_providers_<PROVIDER>*.whl
-          #
-          # Then it can be followed by downloading a compatible version from 
PyPI in case other
-          # providers depend on it and fail with import errors (you need to 
download compatible version):
-          #
-          # pip download --no-deps --dest dist 
apache-airflow-providers-<PROVIDER>==3.1.0
-          #
-          rm -vf dist/apache_airflow_providers_openlineage*.whl
-          rm -rf dist/apache_airflow_providers_common_io*.whl
-      - name: "Get all provider extras as AIRFLOW_EXTRAS env variable"
-        # Extras might be different on S3 so rather than relying on "all" we 
should get the list of
-        # packages to be installed from the current provider_dependencies.json 
file
+          rm -vf ${{ matrix.remove-providers }}
+        working-directory: ./dist
+        if: matrix.remove-providers != ''
+      - name: "Checkout ${{matrix.airflow-version}} of Airflow"
+        uses: actions/checkout@v4
+        with:
+          persist-credentials: false
+          ref: ${{matrix.airflow-version}}
+          path: old-airflow
+      - name: "Prepare airflow package: wheel"
         run: |
-          python -c 'from pathlib import Path; import json
-          providers = 
json.loads(Path("generated/provider_dependencies.json").read_text())
-          provider_keys = ",".join(providers.keys())
-          print("AIRFLOW_EXTRAS={}".format(provider_keys))' >> $GITHUB_ENV
-      - name: "Install and verify all provider packages and airflow on Airflow 
2.5 files"
+          pip install pip==23.3.1 wheel==0.36.2 gitpython==3.1.40
+          python setup.py egg_info --tag-build ".dev0" bdist_wheel -d ../dist
+        working-directory: ./old-airflow
+      - name: >
+          Install and verify all provider packages and airflow on
+          Airflow ${{matrix.airflow-version}}:Python ${{matrix.python-version}}
         run: >
-          breeze release-management verify-provider-packages 
--use-airflow-version 2.5.0
-          --use-packages-from-dist --airflow-constraints-reference 
constraints-2.5.0
+          breeze release-management verify-provider-packages 
--use-packages-from-dist
         if: needs.build-info.outputs.affected-providers-list-as-string == ''
-      - name: "Install affected provider packages and airflow on Airflow 2.5 
files"
+      - name: >
+          Install affected provider packages and airflow on
+          Airflow ${{matrix.airflow-version}}:Python ${{matrix.python-version}}
         run: >
-          breeze release-management install-provider-packages 
--use-airflow-version 2.5.0
-          --airflow-constraints-reference constraints-2.5.0 --run-in-parallel
-        # Make sure to skip the run if the only provider to be installed has 
been removed
-        # in the previous step
-        if: >
-          needs.build-info.outputs.affected-providers-list-as-string != '' &&
-          needs.build-info.outputs.affected-providers-list-as-string != 
'openlineage'
+          breeze release-management install-provider-packages --run-in-parallel
+        if: needs.build-info.outputs.affected-providers-list-as-string != ''
 
   prepare-install-provider-packages-sdist:
     timeout-minutes: 80
diff --git a/airflow/providers/MANAGING_PROVIDERS_LIFECYCLE.rst 
b/airflow/providers/MANAGING_PROVIDERS_LIFECYCLE.rst
index 40cbd5ff61..28a7587827 100644
--- a/airflow/providers/MANAGING_PROVIDERS_LIFECYCLE.rst
+++ b/airflow/providers/MANAGING_PROVIDERS_LIFECYCLE.rst
@@ -113,15 +113,47 @@ Adding chicken-egg providers
 ----------------------------
 
 Sometimes we want to release provider that depends on the version of airflow 
that has not yet been released
-- for example when we released ``common.io`` provider it had 
``apache-airflow>=2.8.0`` dependency. This
-creates problem when generating constraints and building docker image for 
pre-release versions of
-Airflow - because ``pip`` does not recognize the ``.dev0`` or ``.b1`` suffixes 
of those packages as
-valid in the ``>=X.Y.Z`` comparison. So when you want to install a provider 
package with
-``apache-airflow>=2.8.0`` requirement and you have ``2.8.0.dev0`` airflow 
package, ``pip`` will not
-install the package, because it does not recognize ``2.8.0.dev0`` as a valid 
version for ``>=2.8.0``
-dependency. This is because ``pip`` currently implements the minimum version 
selection algorithm
-requirement specified in packaging as described in the packaging version 
specification
+- for example when we released ``common.io`` provider it had 
``apache-airflow>=2.8.0`` dependency.
+
+Add chicken-egg-provider to compatibility checks
+................................................
+
+Providers that have "min-airflow-version" set to the new, upcoming versions 
should be excluded in
+all previous versions of compatibility check matrix in 
``BASE_PROVIDERS_COMPATIBILITY_CHECKS`` in
+``src/airflow_breeze/global_constants.py``. Please add it to all previous 
versions
+
+Add chicken-egg-provider to constraint generation
+..................................................
+
+This is controlled by ``chicken_egg_providers`` property in Selective Checks - 
and our CI will automatically
+build and use those chicken-egg providers during the CI process if pre-release 
version of Airflow is built.
+
+The short provider id (``common.io`` for example) for such a provider should 
be added
+to ``CHICKEN_EGG_PROVIDERS`` list in 
``src/airflow_breeze/utils/selective_checks.py``:
+
+This list will be kept here until the official version of Airflow the 
chicken-egg-providers depend on
+is released and the version of airflow is updated in the ``main`` and 
``v2-X-Y`` branch to ``2.X+1.0.dev0``
+and ``2.X.1.dev0`` respectively. After that the chicken-egg providers will be 
correctly installed because
+both ``2.X.1.dev0`` and ``2.X+1.0.dev0`` are considered by ``pip`` as 
``>2.X.0`` (unlike ``2.X.0.dev0``).
+
+The release process for Airflow includes cleaning the list after Airflow 
release is published, so the
+provider will be removed from the list by release manager.
+
+
+Why do we need to add chicken-egg providers to constraints generation
+.....................................................................
+
+The problem when generating constraints with chicken-eggo providers and 
building docker image for
+pre-release versions of Airflow - because ``pip`` does not recognize the 
``.dev0`` or ``.b1``
+suffixes of those packages as valid in the ``>=X.Y.Z`` comparison.
+
+When you want to install a provider package with ``apache-airflow>=2.8.0`` 
requirement and you have
+``2.8.0.dev0`` airflow package, ``pip`` will not install the package, because 
it does not recognize
+``2.8.0.dev0`` as a valid version for ``>=2.8.0`` dependency. This is because 
``pip``
+currently implements the minimum version selection algorithm requirement 
specified in packaging as
+described in the packaging version specification
 
https://packaging.python.org/en/latest/specifications/version-specifiers/#handling-of-pre-releases
+
 Currently ``pip`` only allows to include pre-release versions for all 
installed packages using ``--pre``
 flag, but it does not have the possibility of selectively using this flag to 
only one package.
 In order to implement our desired behaviour, we need the case where only 
``apache-airflow`` is considered
@@ -133,27 +165,11 @@ are providers that are released together with the version 
of Airflow they depend
 with the same version number as the Airflow version they depend on, but with a 
different suffix. For example
 ``apache-airflow-providers-common-io==2.8.0.dev0`` is a chicken-egg provider 
for ``apache-airflow==2.8.0.dev0``.
 
-However - we should not release those providers to ``pypi``, so in order to 
allow our CI to work with
-pre-release versions and perform both - constraint generation and image 
releasing, we introduced workarounds
-in our tooling where in case we build a pre-release version of Airflow, we 
will locally build the
-chicken-egg providers from sources and they are installed from local directory 
instead of from PyPI.
-
-This is controlled by ``chicken_egg_providers`` property in Selective Checks - 
and our CI will automatically
-build and use those chicken-egg providers during the CI process if pre-release 
version of Airflow is built.
-
-The code responsible for that is in 
``src/airflow_breeze/utils/selective_checks.py``:
-
-.. code-block:: python
-
-    @cached_property
-    def chicken_egg_providers(self) -> str:
-        """Space separated list of providers with chicken-egg problem and 
should be built from sources."""
-        return "common.io"
-
-This list should be kept here until the official version of Airflow the 
chicken-egg-providers depend on
-is released and the version of airflow is updated in the ``main`` and 
``v2-X-Y`` branch to ``2.X+1.0.dev0``
-and ``2.X.1.dev0`` respectively. After that the chicken-egg providers will be 
correctly installed because
-both ``2.X.1.dev0`` and ``2.X+1.0.dev0`` are considered by ``pip`` as 
``>2.X.0`` (unlike ``2.X.0.dev0``).
+However - we should not release providers with such exclusion to ``pypi``, so 
in order to allow our
+CI to work with pre-release versions and perform both - constraint generation 
and image releasing,
+we introduced workarounds in our tooling where in case we build a pre-release 
version of Airflow,
+we will locally build the chicken-egg providers from sources and they are 
installed from local
+directory instead of from PyPI.
 
 This workaround might be removed if ``pip`` implements the possibility of 
selectively using ``--pre`` flag
 for only one package (Which is foreseen as a possibility in the packaging 
specification but not implemented
@@ -343,43 +359,6 @@ main Airflow documentation that involves some steps with 
the providers is also w
     breeze build-docs --package-filter apache-airflow-providers-<NEW_PROVIDER>
     breeze build-docs --package-filter apache-airflow
 
-
-Suspending providers
-====================
-
-As of April 2023, we have the possibility to suspend individual providers, so 
that they are not holding
-back dependencies for Airflow and other providers. The process of suspending 
providers is described
-in `description of the process 
<https://github.com/apache/airflow/blob/main/PROVIDERS.rst#suspending-releases-for-providers>`_
-
-Technically, suspending a provider is done by setting ``suspended : true``, in 
the provider.yaml of the
-provider. This should be followed by committing the change and either 
automatically or manually running
-pre-commit checks that will either update derived configuration files or ask 
you to update them manually.
-Note that you might need to run pre-commit several times until all the static 
checks pass,
-because modification from one pre-commit might impact other pre-commits.
-
-If you have pre-commit installed, pre-commit will be run automatically on 
commit. If you want to run it
-manually after commit, you can run it via ``breeze static-checks 
--last-commit`` some of the tests might fail
-because suspension of the provider might cause changes in the dependencies, so 
if you see errors about
-missing dependencies imports, non-usable classes etc., you will need to build 
the CI image locally
-via ``breeze build-image --python 3.8 --upgrade-to-newer-dependencies`` after 
the first pre-commit run
-and then run the static checks again.
-
-If you want to be absolutely sure to run all static checks you can always do 
this via
-``pre-commit run --all-files`` or ``breeze static-checks --all-files``.
-
-Some of the manual modifications you will have to do (in both cases 
``pre-commit`` will guide you on what
-to do.
-
-* You will have to run  ``breeze setup regenerate-command-images`` to 
regenerate breeze help files
-* you will need to update ``extra-packages-ref.rst`` and in some cases - when 
mentioned there explicitly -
-  ``setup.py`` to remove the provider from list of dependencies.
-
-What happens under-the-hood as a result, is that ``generated/providers.json`` 
file is updated with
-the information about available providers and their dependencies and it is 
used by our tooling to
-exclude suspended providers from all relevant parts of the build and CI system 
(such as building CI image
-with dependencies, building documentation, running tests, etc.)
-
-
 Additional changes needed for cross-dependent providers
 =======================================================
 
@@ -470,6 +449,52 @@ The fix for that is to turn the feature into an optional 
provider feature (in th
   Those tests should be adjusted (but this is not very likely to happen, 
because the tests are using only
   the most common providers that we will not be likely to suspend).
 
+Bumping min airflow version
+===========================
+
+We regularly bump min airflow version for all providers we release. This bump 
is done according to our
+`Provider policies 
<https://github.com/apache/airflow/blob/main/PROVIDERS.rst>`_ and it is only 
applied
+to non-suspended/removed providers. We are running basic import compatibility 
checks in our CI and
+the compatibility checks should be updated when min airflow version is updated.
+
+Details on how this should be done are described in
+`Provider policies 
<https://github.com/apache/airflow/blob/main/dev/README_RELEASE_PROVIDER_PACKAGES.md>`_
+
+Suspending providers
+====================
+
+As of April 2023, we have the possibility to suspend individual providers, so 
that they are not holding
+back dependencies for Airflow and other providers. The process of suspending 
providers is described
+in `description of the process 
<https://github.com/apache/airflow/blob/main/PROVIDERS.rst#suspending-releases-for-providers>`_
+
+Technically, suspending a provider is done by setting ``suspended : true``, in 
the provider.yaml of the
+provider. This should be followed by committing the change and either 
automatically or manually running
+pre-commit checks that will either update derived configuration files or ask 
you to update them manually.
+Note that you might need to run pre-commit several times until all the static 
checks pass,
+because modification from one pre-commit might impact other pre-commits.
+
+If you have pre-commit installed, pre-commit will be run automatically on 
commit. If you want to run it
+manually after commit, you can run it via ``breeze static-checks 
--last-commit`` some of the tests might fail
+because suspension of the provider might cause changes in the dependencies, so 
if you see errors about
+missing dependencies imports, non-usable classes etc., you will need to build 
the CI image locally
+via ``breeze build-image --python 3.8 --upgrade-to-newer-dependencies`` after 
the first pre-commit run
+and then run the static checks again.
+
+If you want to be absolutely sure to run all static checks you can always do 
this via
+``pre-commit run --all-files`` or ``breeze static-checks --all-files``.
+
+Some of the manual modifications you will have to do (in both cases 
``pre-commit`` will guide you on what
+to do.
+
+* You will have to run  ``breeze setup regenerate-command-images`` to 
regenerate breeze help files
+* you will need to update ``extra-packages-ref.rst`` and in some cases - when 
mentioned there explicitly -
+  ``setup.py`` to remove the provider from list of dependencies.
+
+What happens under-the-hood as a result, is that ``generated/providers.json`` 
file is updated with
+the information about available providers and their dependencies and it is 
used by our tooling to
+exclude suspended providers from all relevant parts of the build and CI system 
(such as building CI image
+with dependencies, building documentation, running tests, etc.)
+
 
 Resuming providers
 ==================
diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md
index b060aa345e..2074e88995 100644
--- a/dev/README_RELEASE_AIRFLOW.md
+++ b/dev/README_RELEASE_AIRFLOW.md
@@ -258,6 +258,9 @@ The Release Candidate artifacts we vote upon should be the 
exact ones we vote ag
 - Set your version in `airflow/__init__.py`, 
`airflow/api_connexion/openapi/v1.yaml` and `docs/` (without the RC tag).
 - Add supported Airflow version to 
`./scripts/ci/pre_commit/pre_commit_supported_versions.py` and let pre-commit 
do the job.
 - Replace the version in `README.md` and verify that installation instructions 
work fine.
+- Add entry for default python version to 
`BASE_PROVIDERS_COMPATIBILITY_CHECKS` in 
`src/airflow_breeze/global_constants.py`
+  with the new Airflow version, and empty exclusion for providers. This list 
should be updated later when providers
+  with minimum version for the next version of Airflow will be added in the 
future.
 - Check `Apache Airflow is tested with` (stable version) in `README.md` has 
the same tested versions as in the tip of
   the stable branch in `dev/breeze/src/airflow_breeze/global_constants.py`
 - Build the release notes:
@@ -977,6 +980,8 @@ This includes:
 - Sync `RELEASE_NOTES.rst` (including deleting relevant `newsfragments`) and 
`README.md` changes.
 - Updating `Dockerfile` with the new version.
 - Updating `airflow_bug_report.yml` issue template in 
`.github/ISSUE_TEMPLATE/` with the new version.
+- For the first MINOR (X.Y.0) release - remove all providers from 
``CHICKEN_EGG_PROVIDERS`` list
+  in ``src/airflow_breeze/global_constants.py`` that have >= ``X.Y.0`` in the 
corresponding provider.yaml file.
 
 ## Update default Airflow version in the helm chart
 
diff --git a/dev/README_RELEASE_PROVIDER_PACKAGES.md 
b/dev/README_RELEASE_PROVIDER_PACKAGES.md
index 1f116212cd..6a7e25f150 100644
--- a/dev/README_RELEASE_PROVIDER_PACKAGES.md
+++ b/dev/README_RELEASE_PROVIDER_PACKAGES.md
@@ -79,8 +79,8 @@ You can read more about the command line tools used to 
generate the packages in
 
 # Bump min Airflow version for providers
 
-1. Update `provider-airflow-compatibility-check` in `.github/workflows/ci.yml` 
to check
-compatibility with the new minimum version.
+1. Update `BASE_PROVIDERS_COMPATIBILITY_CHECKS` in 
`src/airflow_breeze/global_constants.py` to remove
+the versions of Airflow that are not applicable any more.
 
 2. Check if Breeze unit tests in `dev/breeze/tests/test_packages.py` need 
adjustments. This is done by simply
 searching and replacing old version occurrences with newer one. For example 
2.5.0 to 2.6.0
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 ad77e97b79..3a679360ea 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -862,35 +862,37 @@ SDIST_INSTALL_PROGRESS_REGEXP = r"Processing 
.*|Requirement already satisfied:.*
     name="install-provider-packages",
     help="Installs provider packages that can be found in dist.",
 )
-@option_use_airflow_version
-@option_airflow_extras
 @option_airflow_constraints_reference
-@option_skip_constraints
-@option_install_selected_providers
-@option_installation_package_format
+@option_airflow_extras
 @option_debug_release_management
-@option_github_repository
-@option_verbose
+@option_debug_resources
 @option_dry_run
+@option_github_repository
+@option_include_success_outputs
+@option_install_selected_providers
+@option_installation_package_format
+@option_parallelism
+@option_python
 @option_run_in_parallel
 @option_skip_cleanup
-@option_parallelism
-@option_debug_resources
-@option_include_success_outputs
+@option_skip_constraints
+@option_use_airflow_version
+@option_verbose
 def install_provider_packages(
-    use_airflow_version: str | None,
     airflow_constraints_reference: str,
-    skip_constraints: bool,
-    install_selected_providers: str,
     airflow_extras: str,
     debug: bool,
-    package_format: str,
+    debug_resources: bool,
     github_repository: str,
+    include_success_outputs: bool,
+    install_selected_providers: str,
+    package_format: str,
+    python: str,
+    parallelism: int,
     run_in_parallel: bool,
     skip_cleanup: bool,
-    parallelism: int,
-    debug_resources: bool,
-    include_success_outputs: bool,
+    skip_constraints: bool,
+    use_airflow_version: str | None,
 ):
     perform_environment_checks()
     fix_ownership_using_docker()
@@ -898,7 +900,7 @@ def install_provider_packages(
     shell_params = ShellParams(
         mount_sources=MOUNT_SELECTED,
         github_repository=github_repository,
-        python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+        python=python,
         use_airflow_version=use_airflow_version,
         airflow_extras=airflow_extras,
         airflow_constraints_reference=airflow_constraints_reference,
@@ -992,27 +994,29 @@ def install_provider_packages(
     name="verify-provider-packages",
     help="Verifies if all provider code is following expectations for 
providers.",
 )
-@option_use_airflow_version
-@option_airflow_extras
 @option_airflow_constraints_reference
-@option_skip_constraints
-@option_use_packages_from_dist
-@option_install_selected_providers
-@option_installation_package_format
+@option_airflow_extras
 @option_debug_release_management
+@option_dry_run
 @option_github_repository
+@option_install_selected_providers
+@option_installation_package_format
+@option_python
+@option_skip_constraints
+@option_use_airflow_version
+@option_use_packages_from_dist
 @option_verbose
-@option_dry_run
 def verify_provider_packages(
-    use_airflow_version: str | None,
     airflow_constraints_reference: str,
-    skip_constraints: bool,
-    install_selected_providers: str,
     airflow_extras: str,
-    use_packages_from_dist: bool,
     debug: bool,
-    package_format: str,
     github_repository: str,
+    install_selected_providers: str,
+    package_format: str,
+    python: str,
+    skip_constraints: bool,
+    use_airflow_version: str | None,
+    use_packages_from_dist: bool,
 ):
     if install_selected_providers and not use_packages_from_dist:
         get_console().print("Forcing use_packages_from_dist as installing 
selected_providers is set")
@@ -1025,7 +1029,7 @@ def verify_provider_packages(
         executor="SequentialExecutor",
         mount_sources=MOUNT_SELECTED,
         github_repository=github_repository,
-        python=DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+        python=python,
         use_airflow_version=use_airflow_version,
         airflow_extras=airflow_extras,
         airflow_constraints_reference=airflow_constraints_reference,
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
index 207b02f63e..ea9ec8daa9 100644
--- 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
+++ 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -64,6 +64,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | 
list[str]]]] = {
         {
             "name": "Provider verification flags",
             "options": [
+                "--python",
                 "--use-airflow-version",
                 "--install-selected-providers",
                 "--airflow-constraints-reference",
@@ -80,6 +81,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str | 
list[str]]]] = {
         {
             "name": "Provider installation flags",
             "options": [
+                "--python",
                 "--use-airflow-version",
                 "--install-selected-providers",
                 "--airflow-constraints-reference",
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py 
b/dev/breeze/src/airflow_breeze/global_constants.py
index 874de94618..e61abf822e 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -24,6 +24,7 @@ import platform
 from enum import Enum
 from functools import lru_cache
 from pathlib import Path
+from typing import Iterable
 
 from airflow_breeze.utils.host_info_utils import Architecture
 from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
@@ -449,6 +450,40 @@ DEFAULT_EXTRAS = [
     # END OF EXTRAS LIST UPDATED BY PRE COMMIT
 ]
 
+CHICKEN_EGG_PROVIDERS = " ".join(
+    [
+        "common.io",
+    ]
+)
+
+
+def _exclusion(providers: Iterable[str]) -> str:
+    return " ".join([f"apache_airflow_providers_{provider.replace('.', '_')}*" 
for provider in providers])
+
+
+BASE_PROVIDERS_COMPATIBILITY_CHECKS: list[dict[str, str]] = [
+    {
+        "python-version": "3.8",
+        "airflow-version": "2.5.0",
+        "remove-providers": _exclusion(["openlineage", "common.io"]),
+    },
+    {
+        "python-version": "3.8",
+        "airflow-version": "2.6.0",
+        "remove-providers": _exclusion(["openlineage", "common.io", "cohere"]),
+    },
+    {
+        "python-version": "3.9",
+        "airflow-version": "2.6.0",
+        "remove-providers": _exclusion(["openlineage", "common.io"]),
+    },
+    {
+        "python-version": "3.8",
+        "airflow-version": "2.7.1",
+        "remove-providers": _exclusion(["common.io"]),
+    },
+]
+
 
 class GithubEvents(Enum):
     PULL_REQUEST = "pull_request"
diff --git a/dev/breeze/src/airflow_breeze/utils/custom_param_types.py 
b/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
index bd2d35146b..033fe99eca 100644
--- a/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
+++ b/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
@@ -225,4 +225,6 @@ class UseAirflowVersionType(BetterChoice):
     def convert(self, value, param, ctx):
         if re.match(r"^\d*\.\d*\.\d*\S*$", value):
             return value
+        if re.match(r"^https://.*$";, value):
+            return value
         return super().convert(value, param, ctx)
diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py 
b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
index eba3023a6c..dba6000902 100644
--- a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
+++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
@@ -27,6 +27,8 @@ from typing import Any, Dict, List, TypeVar
 from airflow_breeze.global_constants import (
     ALL_PYTHON_MAJOR_MINOR_VERSIONS,
     APACHE_AIRFLOW_GITHUB_REPOSITORY,
+    BASE_PROVIDERS_COMPATIBILITY_CHECKS,
+    CHICKEN_EGG_PROVIDERS,
     COMMITTERS,
     CURRENT_KUBERNETES_VERSIONS,
     CURRENT_MSSQL_VERSIONS,
@@ -1023,4 +1025,15 @@ class SelectiveChecks:
     @cached_property
     def chicken_egg_providers(self) -> str:
         """Space separated list of providers with chicken-egg problem and 
should be built from sources."""
-        return "common.io"
+        return CHICKEN_EGG_PROVIDERS
+
+    @cached_property
+    def providers_compatibility_checks(self) -> str:
+        """Provider compatibility input checks for the current run. Filter out 
python versions not built"""
+        return json.dumps(
+            [
+                check
+                for check in BASE_PROVIDERS_COMPATIBILITY_CHECKS
+                if check["python-version"] in self.python_versions
+            ]
+        )
diff --git a/dev/breeze/tests/test_selective_checks.py 
b/dev/breeze/tests/test_selective_checks.py
index d7b5dce4cf..6198cc59cd 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -16,6 +16,7 @@
 # under the License.
 from __future__ import annotations
 
+import json
 import re
 from functools import lru_cache
 from typing import Any
@@ -23,7 +24,12 @@ from typing import Any
 import pytest
 from rich.console import Console
 
-from airflow_breeze.global_constants import COMMITTERS, GithubEvents
+from airflow_breeze.global_constants import (
+    BASE_PROVIDERS_COMPATIBILITY_CHECKS,
+    COMMITTERS,
+    DEFAULT_PYTHON_MAJOR_MINOR_VERSION,
+    GithubEvents,
+)
 from airflow_breeze.utils.selective_checks import ALL_CI_SELECTIVE_TEST_TYPES, 
SelectiveChecks
 
 ANSI_COLORS_MATCHER = re.compile(r"(?:\x1B[@-_]|[\x80-\x9F])[0-?]*[ -/]*[@-~]")
@@ -1490,3 +1496,37 @@ def test_has_migrations(files: tuple[str, ...], 
has_migrations: bool):
         )
     )
     assert_outputs_are_printed({"has-migrations": 
str(has_migrations).lower()}, str(stderr))
+
+
[email protected](
+    "labels, expected_outputs,",
+    [
+        pytest.param(
+            (),
+            {
+                "providers-compatibility-checks": json.dumps(
+                    [
+                        check
+                        for check in BASE_PROVIDERS_COMPATIBILITY_CHECKS
+                        if check["python-version"] == 
DEFAULT_PYTHON_MAJOR_MINOR_VERSION
+                    ]
+                ),
+            },
+            id="Regular tests",
+        ),
+        pytest.param(
+            ("full tests needed",),
+            {"providers-compatibility-checks": 
json.dumps(BASE_PROVIDERS_COMPATIBILITY_CHECKS)},
+            id="full tests",
+        ),
+    ],
+)
+def test_provider_compatibility_checks(labels: tuple[str, ...], 
expected_outputs: dict[str, str]):
+    stderr = SelectiveChecks(
+        files=(),
+        commit_ref="HEAD",
+        github_event=GithubEvents.PULL_REQUEST,
+        pr_labels=labels,
+        default_branch="main",
+    )
+    assert_outputs_are_printed(expected_outputs, str(stderr))
diff --git 
a/images/breeze/output_release-management_install-provider-packages.svg 
b/images/breeze/output_release-management_install-provider-packages.svg
index c0eb8ff044..ed5d42f8d9 100644
--- a/images/breeze/output_release-management_install-provider-packages.svg
+++ b/images/breeze/output_release-management_install-provider-packages.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1001.5999999999999" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 1074.8" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -37,13 +37,13 @@
 .breeze-release-management-install-provider-packages-r3 { fill: 
#c5c8c6;font-weight: bold }
 .breeze-release-management-install-provider-packages-r4 { fill: 
#68a0b3;font-weight: bold }
 .breeze-release-management-install-provider-packages-r5 { fill: #868887 }
-.breeze-release-management-install-provider-packages-r6 { fill: #8d7b39 }
-.breeze-release-management-install-provider-packages-r7 { fill: 
#98a84b;font-weight: bold }
+.breeze-release-management-install-provider-packages-r6 { fill: 
#98a84b;font-weight: bold }
+.breeze-release-management-install-provider-packages-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
     <clipPath 
id="breeze-release-management-install-provider-packages-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="950.5999999999999" />
+      <rect x="0" y="0" width="1463.0" height="1023.8" />
     </clipPath>
     <clipPath id="breeze-release-management-install-provider-packages-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -159,9 +159,18 @@
 <clipPath id="breeze-release-management-install-provider-packages-line-37">
     <rect x="0" y="904.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-38">
+    <rect x="0" y="928.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-39">
+    <rect x="0" y="953.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-install-provider-packages-line-40">
+    <rect x="0" y="977.5" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="999.6" rx="8"/><text 
class="breeze-release-management-install-provider-packages-title" 
fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;install-provider-packages</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="1072.8" rx="8"/><text 
class="breeze-release-management-install-provider-packages-title" 
fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;install-provider-packages</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -177,39 +186,42 @@
 </text><text class="breeze-release-management-install-provider-packages-r1" 
x="12.2" y="93.2" textLength="646.6" 
clip-path="url(#breeze-release-management-install-provider-packages-line-3)">Installs&#160;provider&#160;packages&#160;that&#160;can&#160;be&#160;found&#160;in&#160;dist.</text><text
 class="breeze-release-management-install-provider-packages-r1" x="1464" 
y="93.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-3)">
 </text><text class="breeze-release-management-install-provider-packages-r1" 
x="1464" y="117.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-4)">
 </text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="142" textLength="24.4" 
clip-path="url(#breeze-release-management-install-provider-packages-line-5)">╭─</text><text
 class="breeze-release-management-install-provider-packages-r5" x="24.4" 
y="142" textLength="353.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-5)">&#160;Provider&#160;installation&#160;flags&#160;</text><text
 class="breeze-release-management-install-provider-pack [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-6)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-6)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="166.4" textLength="48.8"  [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-7)">│</text><text
 class="breeze-release-management-install-provider-packages-r1" x="475.8" 
y="190.8" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#1
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-8)">│</text><text
 class="breeze-release-management-install-provider-packages-r1" x="475.8" 
y="215.2" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;&#
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-9)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="475.8" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-9)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="488" 
y="239.6" textLength="73.2"  [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-10)">│</text><text
 class="breeze-release-management-install-provider-packages-r6" x="475.8" 
y="264" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-11)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-11)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="288.4" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-12)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="475.8" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-12)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="488" 
y="312.8" textLength="48.8 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-13)">│</text><text
 class="breeze-release-management-install-provider-packages-r6" x="475.8" 
y="337.2" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-13)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-14)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-14)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="361.6" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-15)">│</text><text
 class="breeze-release-management-install-provider-packages-r1" x="475.8" 
y="386" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-15)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="410.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-16)">│</text><text
 class="breeze-release-management-install-provider-packages-r6" x="475.8" 
y="410.4" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-16)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-17)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-17)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="434.8" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-18)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-18)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="459.2" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="483.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-19)">│</text><text
 class="breeze-release-management-install-provider-packages-r5" x="475.8" 
y="483.6" textLength="658.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-19)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="508" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-20)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="508" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-20)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="508" textLength="61" clip-p [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-21)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-21)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="532.4" textLength="73.2 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-22)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-22)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="556.8" textLength="85.4 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-23)">│</text><text
 class="breeze-release-management-install-provider-packages-r5" x="475.8" 
y="581.2" textLength="585.6" 
clip-path="url(#breeze-release-management-install-provider-packages-line-23)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="605.6" textLength="1464" 
clip-path="url(#breeze-release-management-install-provider-packages-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-install-provider-packages-r1" x="1464" 
y="605.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-24)">
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="630" textLength="24.4" 
clip-path="url(#breeze-release-management-install-provider-packages-line-25)">╭─</text><text
 class="breeze-release-management-install-provider-packages-r5" x="24.4" 
y="630" textLength="219.6" 
clip-path="url(#breeze-release-management-install-provider-packages-line-25)">&#160;Parallel&#160;running&#160;</text><text
 class="breeze-release-management-install-provider-packages-r5" x="24 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="654.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-26)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="654.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-26)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="654.4" textLength="48.8 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="678.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-27)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="678.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-27)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="678.8" textLength="146. [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="703.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-28)">│</text><text
 class="breeze-release-management-install-provider-packages-r6" x="378.2" 
y="703.2" textLength="915" 
clip-path="url(#breeze-release-management-install-provider-packages-line-28)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="727.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-29)">│</text><text
 class="breeze-release-management-install-provider-packages-r5" x="378.2" 
y="727.6" textLength="915" 
clip-path="url(#breeze-release-management-install-provider-packages-line-29)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="752" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-30)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="752" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-30)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="752" textLength="61" clip-p [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-31)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-31)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="776.4" textLength="97.6 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="800.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-32)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="800.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-32)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="800.8" textLength="73.2 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="825.2" textLength="1464" 
clip-path="url(#breeze-release-management-install-provider-packages-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-install-provider-packages-r1" x="1464" 
y="825.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-33)">
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="849.6" textLength="24.4" 
clip-path="url(#breeze-release-management-install-provider-packages-line-34)">╭─</text><text
 class="breeze-release-management-install-provider-packages-r5" x="24.4" 
y="849.6" textLength="195.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-34)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-install-provider-packages-r5" x=" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="874" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-35)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="874" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-35)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="874" textLength="97.6" clip [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="898.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-36)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="898.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-36)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="898.4" textLength="48.8 [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="922.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-37)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="922.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-37)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="922.8" textLength="61"  [...]
-</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="947.2" textLength="1464" 
clip-path="url(#breeze-release-management-install-provider-packages-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-install-provider-packages-r1" x="1464" 
y="947.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-38)">
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-6)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-6)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="166.4" textLength="85.4"  [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-7)">│</text><text
 class="breeze-release-management-install-provider-packages-r7" x="475.8" 
y="190.8" textLength="732" 
clip-path="url(#breeze-release-management-install-provider-packages-line-7)">(&gt;3.8&lt;&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-8)">│</text><text
 class="breeze-release-management-install-provider-packages-r5" x="475.8" 
y="215.2" textLength="732" 
clip-path="url(#breeze-release-management-install-provider-packages-line-8)">[default:&#160;3.8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-9)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-9)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="239.6" textLength="48.8"  [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-10)">│</text><text
 class="breeze-release-management-install-provider-packages-r1" x="475.8" 
y="264" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-10)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-11)">│</text><text
 class="breeze-release-management-install-provider-packages-r1" x="475.8" 
y="288.4" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-11)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-12)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="475.8" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-12)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="488" 
y="312.8" textLength="73.2 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-13)">│</text><text
 class="breeze-release-management-install-provider-packages-r7" x="475.8" 
y="337.2" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-13)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-14)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-14)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="361.6" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-15)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="475.8" 
y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-15)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="488" y="386" 
textLength="48.8" clip [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="410.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-16)">│</text><text
 class="breeze-release-management-install-provider-packages-r7" x="475.8" 
y="410.4" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-16)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-17)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-17)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="434.8" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-18)">│</text><text
 class="breeze-release-management-install-provider-packages-r1" x="475.8" 
y="459.2" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-18)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="483.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-19)">│</text><text
 class="breeze-release-management-install-provider-packages-r7" x="475.8" 
y="483.6" textLength="963.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-19)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="508" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-20)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="508" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-20)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="508" textLength="97.6" clip [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-21)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-21)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="532.4" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-22)">│</text><text
 class="breeze-release-management-install-provider-packages-r5" x="475.8" 
y="556.8" textLength="658.8" 
clip-path="url(#breeze-release-management-install-provider-packages-line-22)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-23)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-23)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="581.2" textLength="61"  [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="605.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-24)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="605.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-24)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="605.6" textLength="73.2 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="630" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-25)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="630" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-25)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="630" textLength="85.4" clip [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="654.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-26)">│</text><text
 class="breeze-release-management-install-provider-packages-r5" x="475.8" 
y="654.4" textLength="585.6" 
clip-path="url(#breeze-release-management-install-provider-packages-line-26)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="678.8" textLength="1464" 
clip-path="url(#breeze-release-management-install-provider-packages-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-install-provider-packages-r1" x="1464" 
y="678.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-27)">
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="703.2" textLength="24.4" 
clip-path="url(#breeze-release-management-install-provider-packages-line-28)">╭─</text><text
 class="breeze-release-management-install-provider-packages-r5" x="24.4" 
y="703.2" textLength="219.6" 
clip-path="url(#breeze-release-management-install-provider-packages-line-28)">&#160;Parallel&#160;running&#160;</text><text
 class="breeze-release-management-install-provider-packages-r5" x [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="727.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-29)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="727.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-29)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="727.6" textLength="48.8 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="752" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-30)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="752" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-30)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="752" textLength="146.4" cli [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-31)">│</text><text
 class="breeze-release-management-install-provider-packages-r7" x="378.2" 
y="776.4" textLength="915" 
clip-path="url(#breeze-release-management-install-provider-packages-line-31)">(INTEGER&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="800.8" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-32)">│</text><text
 class="breeze-release-management-install-provider-packages-r5" x="378.2" 
y="800.8" textLength="915" 
clip-path="url(#breeze-release-management-install-provider-packages-line-32)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="825.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-33)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="825.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-33)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="825.2" textLength="61"  [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="849.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-34)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="849.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-34)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="849.6" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="874" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-35)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="874" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-35)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="874" textLength="73.2" clip [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="898.4" textLength="1464" 
clip-path="url(#breeze-release-management-install-provider-packages-line-36)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-install-provider-packages-r1" x="1464" 
y="898.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-36)">
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="922.8" textLength="24.4" 
clip-path="url(#breeze-release-management-install-provider-packages-line-37)">╭─</text><text
 class="breeze-release-management-install-provider-packages-r5" x="24.4" 
y="922.8" textLength="195.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-37)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-install-provider-packages-r5" x=" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="947.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-38)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="947.2" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-38)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="947.2" textLength="48.8 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="971.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-39)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="971.6" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-39)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="971.6" textLength="97.6 [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="996" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-40)">│</text><text
 class="breeze-release-management-install-provider-packages-r4" x="24.4" 
y="996" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-line-40)">-</text><text
 class="breeze-release-management-install-provider-packages-r4" x="36.6" 
y="996" textLength="61" clip-p [...]
+</text><text class="breeze-release-management-install-provider-packages-r5" 
x="0" y="1020.4" textLength="1464" 
clip-path="url(#breeze-release-management-install-provider-packages-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-install-provider-packages-r1" x="1464" 
y="1020.4" textLength="12.2" 
clip-path="url(#breeze-release-management-install-provider-packages-l [...]
 </text>
     </g>
     </g>
diff --git 
a/images/breeze/output_release-management_install-provider-packages.txt 
b/images/breeze/output_release-management_install-provider-packages.txt
index b36dc86e24..1eee16ae07 100644
--- a/images/breeze/output_release-management_install-provider-packages.txt
+++ b/images/breeze/output_release-management_install-provider-packages.txt
@@ -1 +1 @@
-05ff214ada04958a95f2aedc1953079e
+ac0c99803b194f779cce535861eeb5b5
diff --git 
a/images/breeze/output_release-management_verify-provider-packages.svg 
b/images/breeze/output_release-management_verify-provider-packages.svg
index 6e51a80184..e0d38b4d9d 100644
--- a/images/breeze/output_release-management_verify-provider-packages.svg
+++ b/images/breeze/output_release-management_verify-provider-packages.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 830.8" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 904.0" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -37,13 +37,13 @@
 .breeze-release-management-verify-provider-packages-r3 { fill: 
#c5c8c6;font-weight: bold }
 .breeze-release-management-verify-provider-packages-r4 { fill: 
#68a0b3;font-weight: bold }
 .breeze-release-management-verify-provider-packages-r5 { fill: #868887 }
-.breeze-release-management-verify-provider-packages-r6 { fill: #8d7b39 }
-.breeze-release-management-verify-provider-packages-r7 { fill: 
#98a84b;font-weight: bold }
+.breeze-release-management-verify-provider-packages-r6 { fill: 
#98a84b;font-weight: bold }
+.breeze-release-management-verify-provider-packages-r7 { fill: #8d7b39 }
     </style>
 
     <defs>
     <clipPath 
id="breeze-release-management-verify-provider-packages-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="779.8" />
+      <rect x="0" y="0" width="1463.0" height="853.0" />
     </clipPath>
     <clipPath id="breeze-release-management-verify-provider-packages-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -138,9 +138,18 @@
 <clipPath id="breeze-release-management-verify-provider-packages-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-verify-provider-packages-line-31">
+    <rect x="0" y="757.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-verify-provider-packages-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-verify-provider-packages-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="828.8" rx="8"/><text 
class="breeze-release-management-verify-provider-packages-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;verify-provider-packages</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="902" rx="8"/><text 
class="breeze-release-management-verify-provider-packages-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;verify-provider-packages</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -156,32 +165,35 @@
 </text><text class="breeze-release-management-verify-provider-packages-r1" 
x="12.2" y="93.2" textLength="854" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-3)">Verifies&#160;if&#160;all&#160;provider&#160;code&#160;is&#160;following&#160;expectations&#160;for&#160;providers.</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="1464" 
y="93.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-3)">
 </text><text class="breeze-release-management-verify-provider-packages-r1" 
x="1464" y="117.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-4)">
 </text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="142" textLength="24.4" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-5)">╭─</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="142" 
textLength="353.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-5)">&#160;Provider&#160;verification&#160;flags&#160;</text><text
 class="breeze-release-management-verify-provider-packages- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="166.4" textLength="48.8" clip- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="190.8" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;w
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="215.2" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;&#160;
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="475.8" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="488" 
y="239.6" textLength="73.2" clip- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">│</text><text
 class="breeze-release-management-verify-provider-packages-r6" x="475.8" 
y="264" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="288.4" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="475.8" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="488" 
y="312.8" textLength="48.8" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">│</text><text
 class="breeze-release-management-verify-provider-packages-r6" x="475.8" 
y="337.2" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="361.6" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="386" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;depe
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="410.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">│</text><text
 class="breeze-release-management-verify-provider-packages-r6" x="475.8" 
y="410.4" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="434.8" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="459.2" textLength="48.8" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="483.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="483.6" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="508" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="508" 
textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="508" 
textLength="97.6" clip-path [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">│</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="475.8" 
y="532.4" textLength="658.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="556.8" textLength="61" clip- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="581.2" textLength="73.2" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="605.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="605.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="605.6" textLength="85.4" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="630" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">│</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="475.8" 
y="630" textLength="585.6" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="654.4" textLength="1464" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="1464" 
y="654.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="678.8" textLength="24.4" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">╭─</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="24.4" 
y="678.8" textLength="195.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="219.6 [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="703.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="703.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="703.2" textLength="97.6" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="727.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="727.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="727.6" textLength="48.8" cli [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="752" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="752" 
textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="752" 
textLength="61" clip-path=" [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="776.4" textLength="1464" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="1464" 
y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="166.4" textLength="85.4" clip- [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">│</text><text
 class="breeze-release-management-verify-provider-packages-r7" x="475.8" 
y="190.8" textLength="732" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-7)">(&gt;3.8&lt;&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">│</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="475.8" 
y="215.2" textLength="732" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-8)">[default:&#160;3.8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="239.6" textLength="48.8" clip- [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="264" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-10)">`wheel`,&#160;or&#160;`sdist`&#160;if&#160;Airflow&#160;should&#160;be&#160;removed,&#160;installed&#160;from&#160;whe
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="288.4" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-11)">or&#160;sdist&#160;packages&#160;available&#160;in&#160;dist&#160;folder&#160;respectively.&#160;Implies&#160;&#16
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="475.8" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-12)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="488" 
y="312.8" textLength="73.2" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">│</text><text
 class="breeze-release-management-verify-provider-packages-r7" x="475.8" 
y="337.2" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-13)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-14)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="361.6" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="475.8" 
y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-15)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="488" y="386" 
textLength="48.8" clip-path [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="410.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">│</text><text
 class="breeze-release-management-verify-provider-packages-r7" x="475.8" 
y="410.4" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-16)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-17)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="434.8" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="459.2" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-18)">specify&#160;constraints&#160;for&#160;the&#160;installed&#160;version&#160;and&#160;to&#160;find&#160;newer&#160;
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="483.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">│</text><text
 class="breeze-release-management-verify-provider-packages-r7" x="475.8" 
y="483.6" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-19)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="508" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="508" 
textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-20)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="508" 
textLength="97.6" clip-path [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-21)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="532.4" textLength="48.8" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">│</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="475.8" 
y="556.8" textLength="963.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-22)">folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-23)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="581.2" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="605.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">│</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="475.8" 
y="605.6" textLength="658.8" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-24)">[default:&#160;wheel]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="630" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" y="630" 
textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-25)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" y="630" 
textLength="61" clip-path=" [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="654.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="654.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-26)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="654.4" textLength="73.2" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="678.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="678.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-27)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="678.8" textLength="85.4" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="703.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">│</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="475.8" 
y="703.2" textLength="585.6" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-28)">[default:&#160;apache/airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="727.6" textLength="1464" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="1464" 
y="727.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-29)">
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="752" textLength="24.4" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">╭─</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="752" 
textLength="195.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-30)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-verify-provider-packages-r5" x="219.6" y= 
[...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="776.4" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-31)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="776.4" textLength="48.8" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="800.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-32)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="800.8" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-32)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="800.8" textLength="97.6" cli [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="825.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-33)">│</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="24.4" 
y="825.2" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-33)">-</text><text
 class="breeze-release-management-verify-provider-packages-r4" x="36.6" 
y="825.2" textLength="61" clip- [...]
+</text><text class="breeze-release-management-verify-provider-packages-r5" 
x="0" y="849.6" textLength="1464" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-verify-provider-packages-r1" x="1464" 
y="849.6" textLength="12.2" 
clip-path="url(#breeze-release-management-verify-provider-packages-line-34)">
 </text>
     </g>
     </g>
diff --git 
a/images/breeze/output_release-management_verify-provider-packages.txt 
b/images/breeze/output_release-management_verify-provider-packages.txt
index 20070bef37..d2df831f20 100644
--- a/images/breeze/output_release-management_verify-provider-packages.txt
+++ b/images/breeze/output_release-management_verify-provider-packages.txt
@@ -1 +1 @@
-f7fe0f6356904e7c8ca2a3bdbe841f6e
+0069813e3c7aa12e6728d350d48b442e
diff --git a/scripts/in_container/_in_container_utils.sh 
b/scripts/in_container/_in_container_utils.sh
index a321469dc1..289d346403 100644
--- a/scripts/in_container/_in_container_utils.sh
+++ b/scripts/in_container/_in_container_utils.sh
@@ -192,13 +192,53 @@ function install_released_airflow_version() {
     local constraints_reference
     constraints_reference="${2:-}"
     rm -rf "${AIRFLOW_SOURCES}"/*.egg-info
+    if [[ ${AIRFLOW_EXTRAS} != "" ]]; then
+        bracketed_airflow_extras="[${AIRFLOW_EXTRAS}]"
+    else
+        bracketed_airflow_extras=""
+    fi
+    if [[ ${version} != https://* ]]; then
+        airflow_package="apache-airflow"
+        airflow_version="==${version}"
+    else
+        airflow_package="${version}"
+        airflow_version=""
+    fi
+    if [[ ${constraints_reference} == "none" ]]; then
+        pip install 
"${airflow_package}${bracketed_airflow_extras}${airflow_version}"
+    else
+        local dependency_fix=""
+        # The pyopenssl is needed to downgrade pyopenssl for older airflow 
versions when using constraints
+        # Flask app builder has an optional pyopenssl transitive dependency, 
that causes import error when
+        # Pyopenssl is installed in a wrong version for Flask App Builder 4.1 
and older. Adding PyOpenSSL
+        # directly as the dependency, forces downgrading of pyopenssl to the 
right version. Our constraint
+        # version has it pinned to the right version, but since it is not 
directly required, it is not
+        # downgraded when installing airflow and it is already installed in a 
newer version
+        if [[ ${USE_AIRFLOW_VERSION=} != "" ]]; then
+            dependency_fix="pyopenssl"
+        fi
+        if [[ ${constraints_reference} == "" ]]; then
+            
constraints_location="https://raw.githubusercontent.com/${CONSTRAINTS_GITHUB_REPOSITORY}/constraints-${version}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt";
+        else
+            
constraints_location="https://raw.githubusercontent.com/${CONSTRAINTS_GITHUB_REPOSITORY}/${constraints_reference}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt";
+        fi
+        pip install 
"${airflow_package}${bracketed_airflow_extras}${airflow_version}" 
${dependency_fix} \
+            --constraint "${constraints_location}"
+    fi
+}
+
+function install_github_airflow_version() {
+    local url="${1}"
+    local constraints_reference
+    constraints_reference="${2:-}"
+    rm -rf "${AIRFLOW_SOURCES}"/*.egg-info
     if [[ ${AIRFLOW_EXTRAS} != "" ]]; then
         BRACKETED_AIRFLOW_EXTRAS="[${AIRFLOW_EXTRAS}]"
     else
         BRACKETED_AIRFLOW_EXTRAS=""
     fi
     if [[ ${constraints_reference} == "none" ]]; then
-        pip install "${airflow_package}${extras}"
+        pip install "${url}${extras}"
     else
         local dependency_fix=""
         # The pyopenssl is needed to downgrade pyopenssl for older airflow 
versions when using constraints
@@ -210,12 +250,14 @@ function install_released_airflow_version() {
         if [[ ${USE_AIRFLOW_VERSION=} != "" ]]; then
             dependency_fix="pyopenssl"
         fi
-
-        pip install "apache-airflow${BRACKETED_AIRFLOW_EXTRAS}==${version}" 
${dependency_fix} \
-            --constraint 
"https://raw.githubusercontent.com/${CONSTRAINTS_GITHUB_REPOSITORY}/constraints-${version}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt";
+        if [[ ${constraints_reference} == "" ]]; then
+            
constraints_location="https://raw.githubusercontent.com/${CONSTRAINTS_GITHUB_REPOSITORY}/constraints-${version}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt";
+        else
+            
constraints_location="https://raw.githubusercontent.com/${CONSTRAINTS_GITHUB_REPOSITORY}/${constraints_reference}/constraints-${PYTHON_MAJOR_MINOR_VERSION}.txt";
+        fi
+        pip install "${url}${BRACKETED_AIRFLOW_EXTRAS}" ${dependency_fix} 
--constraint "${constraints_location}"
     fi
 }
-
 function install_local_airflow_with_eager_upgrade() {
     local extras
     extras="${1}"

Reply via email to