This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new ace97c0f0b Run matrix of compatibility checks for providers (#36061)
ace97c0f0b is described below
commit ace97c0f0b64bd003bafa50e02cdfc10a8303936
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
---
.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 bf2f73b5db..17896a65d9 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: release-management install-provider-packages</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1072.8" rx="8"/><text
class="breeze-release-management-install-provider-packages-title"
fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: release-management install-provider-packages</text>
<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 provider packages that can be found in dist.</text><text
class="breeze-release-management-install-provider-packages-r1" x="1464"
y="93.2" textLength="12.2"
clip-path="url(#breeze-release-management-install-provider-packages-line-3)">
</text><text class="breeze-release-management-install-provider-packages-r1"
x="1464" y="117.6" textLength="12.2"
clip-path="url(#breeze-release-management-install-provider-packages-line-4)">
</text><text class="breeze-release-management-install-provider-packages-r5"
x="0" y="142" textLength="24.4"
clip-path="url(#breeze-release-management-install-provider-packages-line-5)">╭─</text><text
class="breeze-release-management-install-provider-packages-r5" x="24.4"
y="142" textLength="353.8"
clip-path="url(#breeze-release-management-install-provider-packages-line-5)"> Provider installation flags </text><text
class="breeze-release-management-install-provider-pack [...]
-</text><text class="breeze-release-management-install-provider-packages-r5"
x="0" y="166.4" textLength="12.2"
clip-path="url(#breeze-release-management-install-provider-packages-line-6)">│</text><text
class="breeze-release-management-install-provider-packages-r4" x="24.4"
y="166.4" textLength="12.2"
clip-path="url(#breeze-release-management-install-provider-packages-line-6)">-</text><text
class="breeze-release-management-install-provider-packages-r4" x="36.6"
y="166.4" textLength="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`, or `sdist` if Airflow should be removed, installed from
[...]
-</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 sdist packages available in dist folder respectively. Implies &#
[...]
-</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 | wheel | sdist | <airflow_version>)      
[...]
-</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)                 &#
[...]
-</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 constraints for the installed version and to find newer 
[...]
-</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)                 &#
[...]
-</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: wheel]               
[...]
-</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: apache/airflow]             &#
[...]
-</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)"> Parallel running </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 RANGE)               &#
[...]
-</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: 4; 1<=x<=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="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)"> Common options </text><text
class="breeze-release-management-install-provider-packages-r5" x=" [...]
-</text><text class="breeze-release-management-install-provider-packages-r5"
x="0" y="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)">(>3.8< | 3.9 | 3.10 | 3.11)        
[...]
+</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: 3.8]                
[...]
+</text><text class="breeze-release-management-install-provider-packages-r5"
x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-release-management-install-provider-packages-line-9)">│</text><text
class="breeze-release-management-install-provider-packages-r4" x="24.4"
y="239.6" textLength="12.2"
clip-path="url(#breeze-release-management-install-provider-packages-line-9)">-</text><text
class="breeze-release-management-install-provider-packages-r4" x="36.6"
y="239.6" textLength="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`, or `sdist` if Airflow should be removed, installed from 
[...]
+</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 sdist packages available in dist folder respectively. Implies 
[...]
+</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 | wheel | sdist | <airflow_version>)     &#
[...]
+</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)                 &#
[...]
+</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 constraints for the installed version and to find 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)                 &#
[...]
+</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: wheel]               
[...]
+</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: apache/airflow]             &#
[...]
+</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)"> Parallel running </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 RANGE)               &#
[...]
+</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: 4; 1<=x<=8]            
[...]
+</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)"> Common options </text><text
class="breeze-release-management-install-provider-packages-r5" x=" [...]
+</text><text class="breeze-release-management-install-provider-packages-r5"
x="0" y="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 47f58a6341..2a243d3699 100644
--- a/images/breeze/output_release-management_install-provider-packages.txt
+++ b/images/breeze/output_release-management_install-provider-packages.txt
@@ -1 +1 @@
-34c38aca17d23dbb454fe7a6bfd8e630
+b0b61cd54ababa10f73db4ec16b9b676
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: release-management verify-provider-packages</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="902" rx="8"/><text
class="breeze-release-management-verify-provider-packages-title" fill="#c5c8c6"
text-anchor="middle" x="740"
y="27">Command: release-management verify-provider-packages</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -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 if all provider code is following expectations for providers.</text><text
class="breeze-release-management-verify-provider-packages-r1" x="1464"
y="93.2" textLength="12.2"
clip-path="url(#breeze-release-management-verify-provider-packages-line-3)">
</text><text class="breeze-release-management-verify-provider-packages-r1"
x="1464" y="117.6" textLength="12.2"
clip-path="url(#breeze-release-management-verify-provider-packages-line-4)">
</text><text class="breeze-release-management-verify-provider-packages-r5"
x="0" y="142" textLength="24.4"
clip-path="url(#breeze-release-management-verify-provider-packages-line-5)">╭─</text><text
class="breeze-release-management-verify-provider-packages-r5" x="24.4" y="142"
textLength="353.8"
clip-path="url(#breeze-release-management-verify-provider-packages-line-5)"> Provider verification flags </text><text
class="breeze-release-management-verify-provider-packages- [...]
-</text><text class="breeze-release-management-verify-provider-packages-r5"
x="0" y="166.4" textLength="12.2"
clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">│</text><text
class="breeze-release-management-verify-provider-packages-r4" x="24.4"
y="166.4" textLength="12.2"
clip-path="url(#breeze-release-management-verify-provider-packages-line-6)">-</text><text
class="breeze-release-management-verify-provider-packages-r4" x="36.6"
y="166.4" textLength="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`, or `sdist` if Airflow should be removed, installed from 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 sdist packages available in dist folder respectively. Implies  
[...]
-</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 | wheel | sdist | <airflow_version>)      
[...]
-</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)                  
[...]
-</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 constraints for the installed version and to find newer 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)                  
[...]
-</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 when entering breeze.            
[...]
-</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: wheel]               
[...]
-</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: apache/airflow]              
[...]
-</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)"> Common options </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)">(>3.8< | 3.9 | 3.10 | 3.11)         &
[...]
+</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: 3.8]                
[...]
+</text><text class="breeze-release-management-verify-provider-packages-r5"
x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">│</text><text
class="breeze-release-management-verify-provider-packages-r4" x="24.4"
y="239.6" textLength="12.2"
clip-path="url(#breeze-release-management-verify-provider-packages-line-9)">-</text><text
class="breeze-release-management-verify-provider-packages-r4" x="36.6"
y="239.6" textLength="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`, or `sdist` if Airflow should be removed, installed from 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 sdist packages available in dist folder respectively. Implies 
[...]
+</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 | wheel | sdist | <airflow_version>)      
[...]
+</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)                  
[...]
+</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 constraints for the installed version and to find newer 
[...]
+</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)                  
[...]
+</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 when entering breeze.            
[...]
+</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: wheel]               
[...]
+</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: apache/airflow]              
[...]
+</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)"> Common options </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 88ef90c79e..c0bde83073 100644
--- a/images/breeze/output_release-management_verify-provider-packages.txt
+++ b/images/breeze/output_release-management_verify-provider-packages.txt
@@ -1 +1 @@
-13083dc08dc69b40015b61f8be607918
+676cf3cf34af14a090f003621e00cef2
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}"