This is an automated email from the ASF dual-hosted git repository. potiuk pushed a commit to branch v2-3-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit ef8ec274b3265687c40f2f7a3c846eb0af412bcc Author: Jarek Potiuk <[email protected]> AuthorDate: Fri Jul 29 13:24:56 2022 +0200 Adjust limits when constructing cross-provider dependencies (#25364) When we are constructing cross-provider dependencies, we should adjust the limits to account for some apache-airflow packages that are not yet released. The adjustment is to add ".*" after the version number when dependency is lower-bound with `>=`. It's not explicitly mentioned in PEP 440 - it is only mentioned there that it works for equality, but since `>=` is also part of `equal` it also works there. Example is a common-sql package that might be limited to `>=1.1.0` in google provider as part of the change, but it might not yet be released as it is being released together with the package it is needed by. We need to adjust the version whenever in our providers we refer to other providers with >= install clause because `--pre` flag in `pip` only allows to install direct pre-release (and development) dependencies but it does not modify requirements of those package to also include pre-releases as transitive dependency. Also, we need to remove the limits in `devel` dependencies because the packages are not yet released at the moment we use those dependencies, so the limits in `devel` should be removed, allowing the developers to install Airflow without those devel packages. Also a bug was found that would prevent to generate the dependencies in case provider.yaml file only changed (bad specification of .pre-commit include) (cherry picked from commit 5e423f5fc026a37793ec617a94533aa82a30b4ea) --- .pre-commit-config.yaml | 37 +--- STATIC_CODE_CHECKS.rst | 9 +- dev/breeze/src/airflow_breeze/pre_commit_ids.py | 3 +- dev/provider_packages/prepare_provider_packages.py | 128 ++++++------ images/breeze/output-commands-hash.txt | 2 +- images/breeze/output-static-checks.svg | 224 ++++++++++----------- setup.py | 19 +- 7 files changed, 207 insertions(+), 215 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index af8736c3e7..0142eb6995 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,6 +19,7 @@ default_stages: [commit, push] default_language_version: # force all unspecified python hooks to run python3 python: python3 + node: 18.6.0 minimum_pre_commit_version: "2.0.0" repos: - repo: meta @@ -343,7 +344,7 @@ repos: # This check might be removed when min-airflow-version in providers is 2.2 - id: check-airflow-2-2-compatibility name: Check that providers are 2.2 compatible. - entry: ./scripts/ci/pre_commit/pre_commit_check_2_1_compatibility.py + entry: ./scripts/ci/pre_commit/pre_commit_check_2_2_compatibility.py language: python pass_filenames: true files: ^airflow/providers/.*\.py$ @@ -352,7 +353,7 @@ repos: name: Update output of breeze commands in BREEZE.rst entry: ./scripts/ci/pre_commit/pre_commit_breeze_cmd_line.py language: python - files: ^BREEZE\.rst$|^dev/breeze/.*$ + files: ^BREEZE\.rst$|^dev/breeze/.*$|^\.pre-commit-config\.yml$ pass_filenames: false additional_dependencies: ['rich>=12.4.4', 'rich-click>=1.5'] - id: update-local-yml-file @@ -368,13 +369,6 @@ repos: language: system files: ^setup\.cfg$ pass_filenames: false - - id: update-providers-dependencies - name: Update cross-dependencies for providers packages - entry: ./scripts/ci/pre_commit/pre_commit_build_providers_dependencies.sh - language: python - files: ^airflow/providers/.*\.py$|^tests/providers/.*\.py$ - pass_filenames: false - additional_dependencies: ['setuptools'] - id: update-extras name: Update extras in documentation entry: ./scripts/ci/pre_commit/pre_commit_insert_extras.py @@ -582,14 +576,12 @@ repos: name: stylelint entry: "stylelint" language: node - language_version: 18.6.0 files: ^airflow/www/.*\.(css|scss|sass)$ # Keep dependency versions in sync w/ airflow/www/package.json additional_dependencies: ['[email protected]', '[email protected]'] - id: compile-www-assets name: Compile www assets language: node - language_version: 18.6.0 stages: ['manual'] 'types_or': [javascript, tsx, ts] files: ^airflow/www/ @@ -641,14 +633,6 @@ repos: additional_dependencies: ['pyyaml', 'jinja2', 'black==22.3.0', 'tabulate', 'rich>=12.4.4'] require_serial: true pass_filenames: false - - id: check-airflow-providers-have-extras - name: Checks providers available when declared by extras in setup.py - language: python - entry: ./scripts/ci/pre_commit/pre_commit_check_extras_have_providers.py - files: ^setup\.py$|^airflow/providers/.*\.py$ - pass_filenames: false - require_serial: true - additional_dependencies: ['rich>=12.4.4'] - id: update-breeze-readme-config-hash name: Update Breeze README.md with config files hash language: python @@ -669,7 +653,7 @@ repos: entry: ./scripts/ci/pre_commit/pre_commit_check_system_tests.py language: python files: ^tests/system/.*/example_[^/]*.py$ - exclude: ^tests/system/providers/google/bigquery/example_bigquery_queries\.py$ + exclude: ^tests/system/providers/google/cloud/bigquery/example_bigquery_queries\.py$ pass_filenames: true additional_dependencies: ['rich>=12.4.4'] - id: lint-markdown @@ -677,7 +661,6 @@ repos: description: Checks the style of Markdown files. entry: markdownlint language: node - language_version: 18.6.0 types: [markdown] files: \.(md|mdown|markdown)$ additional_dependencies: ['markdownlint-cli'] @@ -818,18 +801,16 @@ repos: - id: lint-javascript name: ESLint against airflow/ui language: node - language_version: 18.6.0 'types_or': [javascript, tsx, ts] files: ^airflow/ui/ entry: ./scripts/ci/pre_commit/pre_commit_ui_lint.py pass_filenames: false additional_dependencies: ['[email protected]'] - - id: lint-javascript - name: ESLint against current UI JavaScript files + - id: ts-compile-and-lint-javascript + name: TS types generation and ESLint against current UI files language: node - language_version: 18.6.0 - 'types_or': [javascript, tsx, ts] - files: ^airflow/www/static/js/ + 'types_or': [javascript, tsx, ts, yaml] + files: ^airflow/www/static/js/|^airflow/api_connexion/openapi/v1.yaml entry: ./scripts/ci/pre_commit/pre_commit_www_lint.py additional_dependencies: ['[email protected]'] pass_filenames: false @@ -879,5 +860,5 @@ repos: entry: ./scripts/ci/pre_commit/pre_commit_migration_reference.py pass_filenames: false files: ^airflow/migrations/versions/.*\.py$|^docs/apache-airflow/migrations-ref\.rst$ - additional_dependencies: ['rich>=12.4.4', 'inputimeout'] + additional_dependencies: ['rich>=12.4.4', 'inputimeout', 'markdown-it-py'] ## ONLY ADD PRE-COMMITS HERE THAT REQUIRE CI IMAGE diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst index 69cc38ec1b..4b1de0022e 100644 --- a/STATIC_CODE_CHECKS.rst +++ b/STATIC_CODE_CHECKS.rst @@ -140,8 +140,6 @@ require Breeze Docker image to be build locally. +--------------------------------------------------------+------------------------------------------------------------------+---------+ | check-airflow-config-yaml-consistent | Checks for consistency between config.yml and default_config.cfg | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ -| check-airflow-providers-have-extras | Checks providers available when declared by extras in setup.py | | -+--------------------------------------------------------+------------------------------------------------------------------+---------+ | check-apache-license-rat | Check if licenses are OK for Apache | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ | check-base-operator-usage | * Check BaseOperator[Link] core imports | | @@ -254,8 +252,7 @@ require Breeze Docker image to be build locally. +--------------------------------------------------------+------------------------------------------------------------------+---------+ | lint-helm-chart | Lint Helm Chart | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ -| lint-javascript | * ESLint against airflow/ui | | -| | * ESLint against current UI JavaScript files | | +| lint-javascript | ESLint against airflow/ui | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ | lint-json-schema | * Lint JSON Schema files with JSON Schema | | | | * Lint NodePort Service with JSON Schema | | @@ -294,6 +291,8 @@ require Breeze Docker image to be build locally. +--------------------------------------------------------+------------------------------------------------------------------+---------+ | trailing-whitespace | Remove trailing whitespace at end of line | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ +| ts-compile-and-lint-javascript | TS types generation and ESLint against current UI files | | ++--------------------------------------------------------+------------------------------------------------------------------+---------+ | update-breeze-cmd-output | Update output of breeze commands in BREEZE.rst | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ | update-breeze-readme-config-hash | Update Breeze README.md with config files hash | | @@ -308,8 +307,6 @@ require Breeze Docker image to be build locally. +--------------------------------------------------------+------------------------------------------------------------------+---------+ | update-migration-references | Update migration ref doc | * | +--------------------------------------------------------+------------------------------------------------------------------+---------+ -| update-providers-dependencies | Update cross-dependencies for providers packages | | -+--------------------------------------------------------+------------------------------------------------------------------+---------+ | update-setup-cfg-file | Update setup.cfg file with all licenses | | +--------------------------------------------------------+------------------------------------------------------------------+---------+ | update-spelling-wordlist-to-be-sorted | Sort alphabetically and uniquify spelling_wordlist.txt | | diff --git a/dev/breeze/src/airflow_breeze/pre_commit_ids.py b/dev/breeze/src/airflow_breeze/pre_commit_ids.py index 106c3d8969..9d338a6a3b 100644 --- a/dev/breeze/src/airflow_breeze/pre_commit_ids.py +++ b/dev/breeze/src/airflow_breeze/pre_commit_ids.py @@ -27,7 +27,6 @@ PRE_COMMIT_LIST = [ 'blacken-docs', 'check-airflow-2-2-compatibility', 'check-airflow-config-yaml-consistent', - 'check-airflow-providers-have-extras', 'check-apache-license-rat', 'check-base-operator-usage', 'check-boring-cyborg-configuration', @@ -94,6 +93,7 @@ PRE_COMMIT_LIST = [ 'run-shellcheck', 'static-check-autoflake', 'trailing-whitespace', + 'ts-compile-and-lint-javascript', 'update-breeze-cmd-output', 'update-breeze-readme-config-hash', 'update-extras', @@ -101,7 +101,6 @@ PRE_COMMIT_LIST = [ 'update-inlined-dockerfile-scripts', 'update-local-yml-file', 'update-migration-references', - 'update-providers-dependencies', 'update-setup-cfg-file', 'update-spelling-wordlist-to-be-sorted', 'update-supported-versions', diff --git a/dev/provider_packages/prepare_provider_packages.py b/dev/provider_packages/prepare_provider_packages.py index ca979bdc3d..243aaa19e6 100755 --- a/dev/provider_packages/prepare_provider_packages.py +++ b/dev/provider_packages/prepare_provider_packages.py @@ -37,6 +37,7 @@ from enum import Enum from functools import lru_cache from os.path import dirname, relpath from pathlib import Path +from random import choice from shutil import copyfile from typing import Any, Dict, Generator, Iterable, List, NamedTuple, Optional, Set, Tuple, Union @@ -91,19 +92,27 @@ AIRFLOW_PATH = AIRFLOW_SOURCES_ROOT_PATH / "airflow" DIST_PATH = AIRFLOW_SOURCES_ROOT_PATH / "dist" PROVIDERS_PATH = AIRFLOW_PATH / "providers" DOCUMENTATION_PATH = AIRFLOW_SOURCES_ROOT_PATH / "docs" + +DEPENDENCIES_JSON_FILE_PATH = AIRFLOW_SOURCES_ROOT_PATH / "generated" / "provider_dependencies.json" + TARGET_PROVIDER_PACKAGES_PATH = AIRFLOW_SOURCES_ROOT_PATH / "provider_packages" GENERATED_AIRFLOW_PATH = TARGET_PROVIDER_PACKAGES_PATH / "airflow" GENERATED_PROVIDERS_PATH = GENERATED_AIRFLOW_PATH / "providers" PROVIDER_RUNTIME_DATA_SCHEMA_PATH = AIRFLOW_SOURCES_ROOT_PATH / "airflow" / "provider_info.schema.json" +CROSS_PROVIDERS_DEPS = "cross-providers-deps" +DEPS = "deps" + sys.path.insert(0, str(AIRFLOW_SOURCES_ROOT_PATH)) + +ALL_DEPENDENCIES = json.loads(DEPENDENCIES_JSON_FILE_PATH.read_text()) + # those imports need to come after the above sys.path.insert to make sure that Airflow # sources are importable without having to add the airflow sources to the PYTHONPATH before # running the script -from setup import PROVIDERS_REQUIREMENTS # type: ignore[attr-defined] # isort:skip # noqa -from setup import PREINSTALLED_PROVIDERS # type: ignore[attr-defined] # isort:skip # noqa +from setup import PREINSTALLED_PROVIDERS, ALL_PROVIDERS # type: ignore[attr-defined] # isort:skip # noqa # Note - we do not test protocols as they are not really part of the official API of # Apache Airflow @@ -134,14 +143,6 @@ class EntityType(Enum): Secrets = "Secrets" -def get_provider_packages() -> List[str]: - """ - Returns all provider packages. - - """ - return list(PROVIDERS_REQUIREMENTS.keys()) - - @click.group(context_settings={'help_option_names': ['-h', '--help'], 'max_content_width': 500}) def cli(): ... @@ -257,9 +258,6 @@ def get_target_providers_package_folder(provider_package_id: str) -> str: return os.path.join(get_target_providers_folder(), *provider_package_id.split(".")) -DEPENDENCIES_JSON_FILE = os.path.join(PROVIDERS_PATH, "dependencies.json") - - def get_pip_package_name(provider_package_id: str) -> str: """ Returns PIP package name for the package id. @@ -316,28 +314,21 @@ def get_install_requirements(provider_package_id: str, version_suffix: str) -> s :return: install requirements of the package """ - dependencies = PROVIDERS_REQUIREMENTS[provider_package_id] - provider_yaml = get_provider_yaml(provider_package_id) - install_requires = [] - if "additional-dependencies" in provider_yaml: - additional_dependencies = provider_yaml['additional-dependencies'] - if version_suffix: - # In case we are preparing "rc" or dev0 packages, we should also - # make sure that cross-dependency with Airflow or Airflow Providers will - # contain the version suffix, otherwise we will have conflicting dependencies. - # For example if (in sftp) we have ssh>=2.0.1 and release ssh==2.0.1 - # we want to turn this into ssh>=2.0.1.dev0 if we build dev0 version of the packages - # or >=2.0.1rc1 if we build rc1 version of the packages. - for dependency in additional_dependencies: - if dependency.startswith("apache-airflow") and ">=" in dependency: - dependency = ( - dependency + ("." if not version_suffix.startswith(".") else "") + version_suffix - ) - install_requires.append(dependency) - else: - install_requires.extend(additional_dependencies) - install_requires.extend(dependencies) + def apply_version_suffix(install_clause: str) -> str: + if install_clause.startswith("apache-airflow") and ">=" in install_clause and version_suffix != "": + # This is workaround for `pip` way of handling `--pre` installation switch. It apparently does + # not modify the meaning of `install_requires` to include also pre-releases, so we need to + # modify our internal provider and airflow package version references to include all pre-releases + # including all development releases. When you specify dependency as >= X.Y.Z, and you + # have packages X.Y.Zdev0 or X.Y.Zrc1 in a local file, such package is not considered + # as fulfilling the requirement even if `--pre` switch is used. + return install_clause + ".*" + return install_clause + + install_requires = [ + apply_version_suffix(clause) for clause in ALL_DEPENDENCIES[provider_package_id][DEPS] + ] prefix = "\n " return prefix + prefix.join(install_requires) @@ -361,24 +352,28 @@ def get_package_extras(provider_package_id: str) -> Dict[str, List[str]]: """ if provider_package_id == 'providers': return {} - with open(DEPENDENCIES_JSON_FILE) as dependencies_file: - cross_provider_dependencies: Dict[str, List[str]] = json.load(dependencies_file) - extras_dict = ( - { - module: [get_pip_package_name(module)] - for module in cross_provider_dependencies[provider_package_id] - } - if cross_provider_dependencies.get(provider_package_id) - else {} - ) + extras_dict: Dict[str, List[str]] = { + module: [get_pip_package_name(module)] + for module in ALL_DEPENDENCIES[provider_package_id][CROSS_PROVIDERS_DEPS] + } provider_yaml_dict = get_provider_yaml(provider_package_id) additional_extras = provider_yaml_dict.get('additional-extras') if additional_extras: - for key in additional_extras: - if key in extras_dict: - extras_dict[key].append(additional_extras[key]) + for entry in additional_extras: + name = entry['name'] + dependencies = entry['dependencies'] + if name in extras_dict: + # remove non-versioned dependencies if versioned ones are coming + existing_dependencies = set(extras_dict[name]) + for new_dependency in dependencies: + for dependency in existing_dependencies: + # remove extra if exists as non-versioned one + if new_dependency.startswith(dependency): + extras_dict[name].remove(dependency) + break + extras_dict[name].append(new_dependency) else: - extras_dict[key] = additional_extras[key] + extras_dict[name] = dependencies return extras_dict @@ -412,7 +407,7 @@ def render_template( return content -PR_PATTERN = re.compile(r".*\(#([0-9]+)\)") +PR_PATTERN = re.compile(r".*\(#(\d+)\)") class Change(NamedTuple): @@ -659,9 +654,7 @@ def get_cross_provider_dependent_packages(provider_package_id: str) -> List[str] :param provider_package_id: package id :return: list of cross-provider dependencies """ - with open(os.path.join(PROVIDERS_PATH, "dependencies.json")) as dependencies_file: - dependent_packages = json.load(dependencies_file).get(provider_package_id) or [] - return dependent_packages + return ALL_DEPENDENCIES[provider_package_id][CROSS_PROVIDERS_DEPS] def make_sure_remote_apache_exists_and_fetch(git_update: bool, verbose: bool): @@ -1028,11 +1021,7 @@ def get_provider_details(provider_package_id: str) -> ProviderPackageDetails: def get_provider_requirements(provider_package_id: str) -> List[str]: provider_yaml = get_provider_yaml(provider_package_id) - requirements = ( - provider_yaml['additional-dependencies'].copy() if 'additional-dependencies' in provider_yaml else [] - ) - requirements.extend(PROVIDERS_REQUIREMENTS[provider_package_id]) - return requirements + return provider_yaml['dependencies'] def get_provider_jinja_context( @@ -1082,7 +1071,7 @@ def get_provider_jinja_context( provider_package_path=provider_details.source_provider_package_path ), "CROSS_PROVIDERS_DEPENDENCIES": cross_providers_dependencies, - "PIP_REQUIREMENTS": PROVIDERS_REQUIREMENTS[provider_details.provider_package_id], + "PIP_REQUIREMENTS": get_provider_requirements(provider_details.provider_package_id), "PROVIDER_TYPE": "Provider", "PROVIDERS_FOLDER": "providers", "PROVIDER_DESCRIPTION": provider_details.provider_description, @@ -1144,12 +1133,23 @@ class TypeOfChange(Enum): SKIP = "s" -def get_type_of_changes() -> TypeOfChange: +def get_type_of_changes(answer: Optional[str]) -> TypeOfChange: """ Ask user to specify type of changes (case-insensitive). :return: Type of change. """ given_answer = "" + if answer and answer.lower() in ["yes", "y"]: + # Simulate all possible non-terminal answers + return choice( + [ + TypeOfChange.DOCUMENTATION, + TypeOfChange.BUGFIX, + TypeOfChange.FEATURE, + TypeOfChange.BREAKING_CHANGE, + TypeOfChange.SKIP, + ] + ) while given_answer not in [*[t.value for t in TypeOfChange], "q"]: console.print( "[yellow]Type of change (d)ocumentation, (b)ugfix, (f)eature, (x)breaking " @@ -1212,7 +1212,7 @@ def update_release_notes( :param version_suffix: version suffix corresponding to the version in the code :param force: regenerate already released documentation :param verbose: whether to print verbose messages - :param answer: force answer to questions if set. + :param answer: force answer to question if set. :returns False if the package should be skipped, True if everything generated properly """ verify_provider_package(provider_package_id) @@ -1229,7 +1229,7 @@ def update_release_notes( console.print() return False else: - type_of_change = get_type_of_changes() + type_of_change = get_type_of_changes(answer=answer) if type_of_change == TypeOfChange.DOCUMENTATION: if isinstance(latest_change, Change): mark_latest_changes_as_documentation_only(provider_package_id, latest_change) @@ -1443,7 +1443,7 @@ def get_all_providers() -> List[str]: Returns all providers for regular packages. :return: list of providers that are considered for provider packages """ - return list(PROVIDERS_REQUIREMENTS.keys()) + return list(ALL_PROVIDERS) def verify_provider_package(provider_package_id: str) -> None: @@ -1452,10 +1452,10 @@ def verify_provider_package(provider_package_id: str) -> None: :param provider_package_id: package id to verify :return: None """ - if provider_package_id not in get_provider_packages(): + if provider_package_id not in get_all_providers(): console.print(f"[red]Wrong package name: {provider_package_id}[/]") console.print("Use one of:") - console.print(get_provider_packages()) + console.print(get_all_providers()) raise Exception(f"The package {provider_package_id} is not a provider package.") diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt index 0c6425a26b..b889b05211 100644 --- a/images/breeze/output-commands-hash.txt +++ b/images/breeze/output-commands-hash.txt @@ -29,7 +29,7 @@ self-upgrade:b5437c0a1a91533a11ee9d0a9692369c setup-autocomplete:355b72dee171c2fcba46fc90ac7c97b0 shell:ab7955da71048b3a695485c152d06786 start-airflow:30caa077555bef44e5bdf76dfeca092c -static-checks:f67ced7d54feee18d504712a1cf610ac +static-checks:d70a46e0c663e9a633665fe87b4ece0e stop:8ebd8a42f1003495d37b884de5ac7ce6 tests:e39111ecbd33a65ababb3cbfbac2b069 verify-image:a6b3c70957aea96a5d4d261f23359a2d diff --git a/images/breeze/output-static-checks.svg b/images/breeze/output-static-checks.svg index 904cc38de3..534af58e7e 100644 --- a/images/breeze/output-static-checks.svg +++ b/images/breeze/output-static-checks.svg @@ -19,241 +19,241 @@ font-weight: 700; } - .terminal-2820057193-matrix { + .terminal-3102383761-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2820057193-title { + .terminal-3102383761-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2820057193-r1 { fill: #c5c8c6;font-weight: bold } -.terminal-2820057193-r2 { fill: #c5c8c6 } -.terminal-2820057193-r3 { fill: #d0b344;font-weight: bold } -.terminal-2820057193-r4 { fill: #868887 } -.terminal-2820057193-r5 { fill: #68a0b3;font-weight: bold } -.terminal-2820057193-r6 { fill: #98a84b;font-weight: bold } -.terminal-2820057193-r7 { fill: #8d7b39 } + .terminal-3102383761-r1 { fill: #c5c8c6;font-weight: bold } +.terminal-3102383761-r2 { fill: #c5c8c6 } +.terminal-3102383761-r3 { fill: #d0b344;font-weight: bold } +.terminal-3102383761-r4 { fill: #868887 } +.terminal-3102383761-r5 { fill: #68a0b3;font-weight: bold } +.terminal-3102383761-r6 { fill: #98a84b;font-weight: bold } +.terminal-3102383761-r7 { fill: #8d7b39 } </style> <defs> - <clipPath id="terminal-2820057193-clip-terminal"> + <clipPath id="terminal-3102383761-clip-terminal"> <rect x="0" y="0" width="1463.0" height="1219.0" /> </clipPath> - <clipPath id="terminal-2820057193-line-0"> + <clipPath id="terminal-3102383761-line-0"> <rect x="0" y="1.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-1"> +<clipPath id="terminal-3102383761-line-1"> <rect x="0" y="25.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-2"> +<clipPath id="terminal-3102383761-line-2"> <rect x="0" y="50.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-3"> +<clipPath id="terminal-3102383761-line-3"> <rect x="0" y="74.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-4"> +<clipPath id="terminal-3102383761-line-4"> <rect x="0" y="99.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-5"> +<clipPath id="terminal-3102383761-line-5"> <rect x="0" y="123.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-6"> +<clipPath id="terminal-3102383761-line-6"> <rect x="0" y="147.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-7"> +<clipPath id="terminal-3102383761-line-7"> <rect x="0" y="172.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-8"> +<clipPath id="terminal-3102383761-line-8"> <rect x="0" y="196.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-9"> +<clipPath id="terminal-3102383761-line-9"> <rect x="0" y="221.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-10"> +<clipPath id="terminal-3102383761-line-10"> <rect x="0" y="245.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-11"> +<clipPath id="terminal-3102383761-line-11"> <rect x="0" y="269.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-12"> +<clipPath id="terminal-3102383761-line-12"> <rect x="0" y="294.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-13"> +<clipPath id="terminal-3102383761-line-13"> <rect x="0" y="318.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-14"> +<clipPath id="terminal-3102383761-line-14"> <rect x="0" y="343.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-15"> +<clipPath id="terminal-3102383761-line-15"> <rect x="0" y="367.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-16"> +<clipPath id="terminal-3102383761-line-16"> <rect x="0" y="391.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-17"> +<clipPath id="terminal-3102383761-line-17"> <rect x="0" y="416.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-18"> +<clipPath id="terminal-3102383761-line-18"> <rect x="0" y="440.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-19"> +<clipPath id="terminal-3102383761-line-19"> <rect x="0" y="465.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-20"> +<clipPath id="terminal-3102383761-line-20"> <rect x="0" y="489.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-21"> +<clipPath id="terminal-3102383761-line-21"> <rect x="0" y="513.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-22"> +<clipPath id="terminal-3102383761-line-22"> <rect x="0" y="538.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-23"> +<clipPath id="terminal-3102383761-line-23"> <rect x="0" y="562.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-24"> +<clipPath id="terminal-3102383761-line-24"> <rect x="0" y="587.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-25"> +<clipPath id="terminal-3102383761-line-25"> <rect x="0" y="611.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-26"> +<clipPath id="terminal-3102383761-line-26"> <rect x="0" y="635.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-27"> +<clipPath id="terminal-3102383761-line-27"> <rect x="0" y="660.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-28"> +<clipPath id="terminal-3102383761-line-28"> <rect x="0" y="684.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-29"> +<clipPath id="terminal-3102383761-line-29"> <rect x="0" y="709.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-30"> +<clipPath id="terminal-3102383761-line-30"> <rect x="0" y="733.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-31"> +<clipPath id="terminal-3102383761-line-31"> <rect x="0" y="757.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-32"> +<clipPath id="terminal-3102383761-line-32"> <rect x="0" y="782.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-33"> +<clipPath id="terminal-3102383761-line-33"> <rect x="0" y="806.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-34"> +<clipPath id="terminal-3102383761-line-34"> <rect x="0" y="831.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-35"> +<clipPath id="terminal-3102383761-line-35"> <rect x="0" y="855.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-36"> +<clipPath id="terminal-3102383761-line-36"> <rect x="0" y="879.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-37"> +<clipPath id="terminal-3102383761-line-37"> <rect x="0" y="904.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-38"> +<clipPath id="terminal-3102383761-line-38"> <rect x="0" y="928.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-39"> +<clipPath id="terminal-3102383761-line-39"> <rect x="0" y="953.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-40"> +<clipPath id="terminal-3102383761-line-40"> <rect x="0" y="977.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-41"> +<clipPath id="terminal-3102383761-line-41"> <rect x="0" y="1001.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-42"> +<clipPath id="terminal-3102383761-line-42"> <rect x="0" y="1026.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-43"> +<clipPath id="terminal-3102383761-line-43"> <rect x="0" y="1050.7" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-44"> +<clipPath id="terminal-3102383761-line-44"> <rect x="0" y="1075.1" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-45"> +<clipPath id="terminal-3102383761-line-45"> <rect x="0" y="1099.5" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-46"> +<clipPath id="terminal-3102383761-line-46"> <rect x="0" y="1123.9" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-47"> +<clipPath id="terminal-3102383761-line-47"> <rect x="0" y="1148.3" width="1464" height="24.65"/> </clipPath> -<clipPath id="terminal-2820057193-line-48"> +<clipPath id="terminal-3102383761-line-48"> <rect x="0" y="1172.7" width="1464" height="24.65"/> </clipPath> </defs> - <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1268" rx="8"/><text class="terminal-2820057193-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: static-checks</text> + <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="1268" rx="8"/><text class="terminal-3102383761-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: static-checks</text> <g transform="translate(26,22)"> <circle cx="0" cy="0" r="7" fill="#ff5f57"/> <circle cx="22" cy="0" r="7" fill="#febc2e"/> <circle cx="44" cy="0" r="7" fill="#28c840"/> </g> - <g transform="translate(9, 41)" clip-path="url(#terminal-2820057193-clip-terminal)"> + <g transform="translate(9, 41)" clip-path="url(#terminal-3102383761-clip-terminal)"> - <g class="terminal-2820057193-matrix"> - <text class="terminal-2820057193-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2820057193-line-0)"> -</text><text class="terminal-2820057193-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2820057193-line-1)">Usage: </text><text class="terminal-2820057193-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-2820057193-line-1)">breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]...</text><text class="terminal-2820057193-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-1)"> -</text><text class="terminal-2820057193-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-2)"> -</text><text class="terminal-2820057193-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-2820057193-line-3)">Run static checks.</text><text class="terminal-2820057193-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-3)"> -</text><text class="terminal-2820057193-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-4)"> -</text><text class="terminal-2820057193-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2820057193-line-5)">╭─</text><text class="terminal-2820057193-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2820057193-line-5)"> Pre-commit flags ──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2820057193-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-282005 [...] -</text><text class="terminal-2820057193-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-6)">│</text><text class="terminal-2820057193-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-6)">-</text><text class="terminal-2820057193-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-2820057193-line-6)">-type</text><text class="terminal-2820057193-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-28200 [...] -</text><text class="terminal-2820057193-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-7)">│</text><text class="terminal-2820057193-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-2820057193-line-7)">(all | black | blacken-docs | check-airflow-2-2-compatibility |                         [...] -</text><text class="terminal-2820057193-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-8)">│</text><text class="terminal-2820057193-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-2820057193-line-8)">check-airflow-config-yaml-consistent | check-airflow-providers-have-extras |            </text><text class="terminal-2820057193-r4" x="1451.8" y="215.2" textLength="1 [...] -</text><text class="terminal-2820057193-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-9)">│</text><text class="terminal-2820057193-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-2820057193-line-9)">check-apache-license-rat | check-base-operator-usage | check-boring-cyborg-configuration</text><text class="terminal-2820057193-r4" x="1451.8" y="239.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-9)">│</te [...] -</text><text class="terminal-2820057193-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2820057193-line-10)">│</text><text class="terminal-2820057193-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-2820057193-line-10)">| check-breeze-top-dependencies-limited | check-builtin-literals |                      </text><text class="termi [...] -</text><text class="terminal-2820057193-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-11)">│</text><text class="terminal-2820057193-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-2820057193-line-11)">check-changelog-has-no-duplicates | check-daysago-import-from-utils |                   </text><text class="terminal-2820057193-r [...] -</text><text class="terminal-2820057193-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-12)">│</text><text class="terminal-2820057193-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-2820057193-line-12)">check-docstring-param-types | check-executables-have-shebangs |                         </text><tex [...] -</text><text class="terminal-2820057193-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-13)">│</text><text class="terminal-2820057193-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-2820057193-line-13)">check-extra-packages-references | check-extras-order | check-for-inclusive-language |   </text><text class="terminal-2820057193-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-282 [...] -</text><text class="terminal-2820057193-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-14)">│</text><text class="terminal-2820057193-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-2820057193-line-14)">check-hooks-apply | check-incorrect-use-of-LoggingMixin |                             [...] -</text><text class="terminal-2820057193-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2820057193-line-15)">│</text><text class="terminal-2820057193-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-2820057193-line-15)">check-integrations-are-consistent | check-merge-conflict | check-newsfragments-are-valid</text><text class="terminal-2820057193-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-2820057193-line-15)">│</text> [...] -</text><text class="terminal-2820057193-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-16)">│</text><text class="terminal-2820057193-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-2820057193-line-16)">| check-no-providers-in-core-examples | check-no-relative-imports |                     </text><text class="termin [...] -</text><text class="terminal-2820057193-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-17)">│</text><text class="terminal-2820057193-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-2820057193-line-17)">check-persist-credentials-disabled-in-github-workflows |                              [...] -</text><text class="terminal-2820057193-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-18)">│</text><text class="terminal-2820057193-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-2820057193-line-18)">check-pre-commit-information-consistent | check-provide-create-sessions-imports |       </text><text class="terminal-2820057193-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...] -</text><text class="terminal-2820057193-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-19)">│</text><text class="terminal-2820057193-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-2820057193-line-19)">check-provider-yaml-valid | check-providers-init-file-missing |                         </text><tex [...] -</text><text class="terminal-2820057193-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-2820057193-line-20)">│</text><text class="terminal-2820057193-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-2820057193-line-20)">check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |               </text><text class="terminal-2820057193-r4" x="1451.8" y="508" te [...] -</text><text class="terminal-2820057193-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-21)">│</text><text class="terminal-2820057193-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-2820057193-line-21)">check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order |        </text><text class="terminal-2820057193-r4" x="1451.8" y="532.4" textLength="12.2" cli [...] -</text><text class="terminal-2820057193-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-22)">│</text><text class="terminal-2820057193-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-2820057193-line-22)">check-start-date-not-used-in-defaults | check-system-tests-present |                    </text><text class="terminal-2820057 [...] -</text><text class="terminal-2820057193-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-23)">│</text><text class="terminal-2820057193-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-2820057193-line-23)">check-system-tests-tocs | check-xml | codespell | compile-www-assets |                  </text><text class="termin [...] -</text><text class="terminal-2820057193-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-24)">│</text><text class="terminal-2820057193-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-2820057193-line-24)">compile-www-assets-dev | create-missing-init-py-files-tests | debug-statements |        </text><text class="terminal-2820057193-r4" x="1451.8" y="605.6" textLength="12.2" cli [...] -</text><text class="terminal-2820057193-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2820057193-line-25)">│</text><text class="terminal-2820057193-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-2820057193-line-25)">detect-private-key | doctoc | end-of-file-fixer | fix-encoding-pragma | flynt |         </text><text class="terminal-2820057193-r4" x="1451.8" y="630" te [...] -</text><text class="terminal-2820057193-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-26)">│</text><text class="terminal-2820057193-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-2820057193-line-26)">forbid-tabs | identity | insert-license | isort | lint-chart-schema | lint-css |        </text><text class="terminal-2820057193-r4" x="1451.8" y [...] -</text><text class="terminal-2820057193-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-27)">│</text><text class="terminal-2820057193-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-2820057193-line-27)">lint-dockerfile | lint-helm-chart | lint-javascript | lint-json-schema | lint-markdown |</text><text class="terminal-2820057193-r4" x="1451.8" y="678.8" textLength="12.2" clip-path="url(#termina [...] -</text><text class="terminal-2820057193-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-28)">│</text><text class="terminal-2820057193-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-2820057193-line-28)">lint-openapi | mixed-line-ending | pretty-format-json | pydocstyle | python-no-log-warn </text><text class="terminal-2820057193-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#termina [...] -</text><text class="terminal-2820057193-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-29)">│</text><text class="terminal-2820057193-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-2820057193-line-29)">| pyupgrade | rst-backticks | run-flake8 | run-mypy | run-shellcheck |                  </text><tex [...] -</text><text class="terminal-2820057193-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2820057193-line-30)">│</text><text class="terminal-2820057193-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-2820057193-line-30)">static-check-autoflake | trailing-whitespace | update-breeze-cmd-output |               </text><text class="terminal-2820057193-r4" x="1451.8" [...] -</text><text class="terminal-2820057193-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-31)">│</text><text class="terminal-2820057193-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-2820057193-line-31)">update-breeze-readme-config-hash | update-extras | update-in-the-wild-to-be-sorted |    </text><text class="terminal-2820057193-r4" x="1451.8" y="776.4" textLength="12.2" clip-path="url(#termina [...] -</text><text class="terminal-2820057193-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-32)">│</text><text class="terminal-2820057193-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-2820057193-line-32)">update-inlined-dockerfile-scripts | update-local-yml-file | update-migration-references </text><text class="terminal-2820057193-r4" x="1451.8" y="800.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-32 [...] -</text><text class="terminal-2820057193-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-33)">│</text><text class="terminal-2820057193-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-2820057193-line-33)">| update-providers-dependencies | update-setup-cfg-file |                            [...] -</text><text class="terminal-2820057193-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-34)">│</text><text class="terminal-2820057193-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#terminal-2820057193-line-34)">update-spelling-wordlist-to-be-sorted | update-supported-versions |                     </text><text class="terminal-28 [...] -</text><text class="terminal-2820057193-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-2820057193-line-35)">│</text><text class="terminal-2820057193-r7" x="366" y="874" textLength="1073.6" clip-path="url(#terminal-2820057193-line-35)">update-vendored-in-k8s-json-schema | update-version | yamllint | yesqa)                 </text><text class="terminal-2820057193- [...] -</text><text class="terminal-2820057193-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-36)">│</text><text class="terminal-2820057193-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-36)">-</text><text class="terminal-2820057193-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-2820057193-line-36)">-file</text><text class="terminal-2820057193-r6" x="317.2" y="898.4" textLength="24.4" clip-path="url(#terminal-28 [...] -</text><text class="terminal-2820057193-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-37)">│</text><text class="terminal-2820057193-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-37)">-</text><text class="terminal-2820057193-r5" x="36.6" y="922.8" textLength="48.8" clip-path="url(#terminal-2820057193-line-37)">-all</text><text class="terminal-2820057193-r5" x="85.4" y="922.8" textLength="73.2" clip-path="url(#terminal-28 [...] -</text><text class="terminal-2820057193-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-38)">│</text><text class="terminal-2820057193-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-38)">-</text><text class="terminal-2820057193-r5" x="36.6" y="947.2" textLength="61" clip-path="url(#terminal-2820057193-line-38)">-show</text><text class="terminal-2820057193-r5" x="97.6" y="947.2" textLength="195.2" clip-path="url(#terminal-28 [...] -</text><text class="terminal-2820057193-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-39)">│</text><text class="terminal-2820057193-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-39)">-</text><text class="terminal-2820057193-r5" x="36.6" y="971.6" textLength="61" clip-path="url(#terminal-2820057193-line-39)">-last</text><text class="terminal-2820057193-r5" x="97.6" y="971.6" textLength="85.4" clip-path="url(#terminal-282 [...] -</text><text class="terminal-2820057193-r4" x="0" y="996" textLength="1464" clip-path="url(#terminal-2820057193-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2820057193-r2" x="1464" y="996" textLength="12.2" clip-path="url(#terminal-2820057193-line-40)"> -</text><text class="terminal-2820057193-r4" x="0" y="1020.4" textLength="24.4" clip-path="url(#terminal-2820057193-line-41)">╭─</text><text class="terminal-2820057193-r4" x="24.4" y="1020.4" textLength="1415.2" clip-path="url(#terminal-2820057193-line-41)"> Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2820057193-r4" x="1439.6" y="1020.4" textLength="24.4" clip-path="url(#terminal- [...] -</text><text class="terminal-2820057193-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-42)">│</text><text class="terminal-2820057193-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-42)">-</text><text class="terminal-2820057193-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-2820057193-line-42)">-commit</text><text class="terminal-2820057193-r5" x="122" y="1044.8" textLength="48.8" clip-path="url(#termi [...] -</text><text class="terminal-2820057193-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-43)">│</text><text class="terminal-2820057193-r2" x="329.4" y="1069.2" textLength="183" clip-path="url(#terminal-2820057193-line-43)">exclusive with </text><text class="terminal-2820057193-r5" x="512.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-43)">-</text><text class="terminal-2820057193-r5" x="524.6" y="1069.2" textLength="61" cl [...] -</text><text class="terminal-2820057193-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-44)">│</text><text class="terminal-2820057193-r7" x="329.4" y="1093.6" textLength="1110.2" clip-path="url(#terminal-2820057193-line-44)">(TEXT)                                      & [...] -</text><text class="terminal-2820057193-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-2820057193-line-45)">│</text><text class="terminal-2820057193-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-2820057193-line-45)">-</text><text class="terminal-2820057193-r5" x="36.6" y="1118" textLength="97.6" clip-path="url(#terminal-2820057193-line-45)">-verbose</text><text class="terminal-2820057193-r6" x="280.6" y="1118" textLength="24.4" clip-path="url(#terminal-2 [...] -</text><text class="terminal-2820057193-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-46)">│</text><text class="terminal-2820057193-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-2820057193-line-46)">-</text><text class="terminal-2820057193-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-2820057193-line-46)">-dry</text><text class="terminal-2820057193-r5" x="85.4" y="1142.4" textLength="48.8" clip-path="url(#termina [...] -</text><text class="terminal-2820057193-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-47)">│</text><text class="terminal-2820057193-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-2820057193-line-47)">-</text><text class="terminal-2820057193-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-2820057193-line-47)">-github</text><text class="terminal-2820057193-r5" x="122" y="1166.8" textLength="134.2" clip-path="url(#term [...] -</text><text class="terminal-2820057193-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-48)">│</text><text class="terminal-2820057193-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-2820057193-line-48)">-</text><text class="terminal-2820057193-r5" x="36.6" y="1191.2" textLength="61" clip-path="url(#terminal-2820057193-line-48)">-help</text><text class="terminal-2820057193-r6" x="280.6" y="1191.2" textLength="24.4" clip-path="url(#termina [...] -</text><text class="terminal-2820057193-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-2820057193-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2820057193-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-2820057193-line-49)"> + <g class="terminal-3102383761-matrix"> + <text class="terminal-3102383761-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3102383761-line-0)"> +</text><text class="terminal-3102383761-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3102383761-line-1)">Usage: </text><text class="terminal-3102383761-r1" x="97.6" y="44.4" textLength="610" clip-path="url(#terminal-3102383761-line-1)">breeze static-checks [OPTIONS] [PRECOMMIT_ARGS]...</text><text class="terminal-3102383761-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-1)"> +</text><text class="terminal-3102383761-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-2)"> +</text><text class="terminal-3102383761-r2" x="12.2" y="93.2" textLength="219.6" clip-path="url(#terminal-3102383761-line-3)">Run static checks.</text><text class="terminal-3102383761-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-3)"> +</text><text class="terminal-3102383761-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-4)"> +</text><text class="terminal-3102383761-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3102383761-line-5)">╭─</text><text class="terminal-3102383761-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3102383761-line-5)"> Pre-commit flags ──────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3102383761-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-310238 [...] +</text><text class="terminal-3102383761-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-6)">│</text><text class="terminal-3102383761-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-6)">-</text><text class="terminal-3102383761-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-3102383761-line-6)">-type</text><text class="terminal-3102383761-r6" x="317.2" y="166.4" textLength="24.4" clip-path="url(#terminal-31023 [...] +</text><text class="terminal-3102383761-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-7)">│</text><text class="terminal-3102383761-r7" x="366" y="190.8" textLength="1073.6" clip-path="url(#terminal-3102383761-line-7)">(all | black | blacken-docs | check-airflow-2-2-compatibility |                         [...] +</text><text class="terminal-3102383761-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-8)">│</text><text class="terminal-3102383761-r7" x="366" y="215.2" textLength="1073.6" clip-path="url(#terminal-3102383761-line-8)">check-airflow-config-yaml-consistent | check-apache-license-rat |                       </text><text class="ter [...] +</text><text class="terminal-3102383761-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-9)">│</text><text class="terminal-3102383761-r7" x="366" y="239.6" textLength="1073.6" clip-path="url(#terminal-3102383761-line-9)">check-base-operator-usage | check-boring-cyborg-configuration |                         </text><text [...] +</text><text class="terminal-3102383761-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3102383761-line-10)">│</text><text class="terminal-3102383761-r7" x="366" y="264" textLength="1073.6" clip-path="url(#terminal-3102383761-line-10)">check-breeze-top-dependencies-limited | check-builtin-literals |                        </text><text class=" [...] +</text><text class="terminal-3102383761-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-11)">│</text><text class="terminal-3102383761-r7" x="366" y="288.4" textLength="1073.6" clip-path="url(#terminal-3102383761-line-11)">check-changelog-has-no-duplicates | check-daysago-import-from-utils |                   </text><text class="terminal-3102383761-r [...] +</text><text class="terminal-3102383761-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-12)">│</text><text class="terminal-3102383761-r7" x="366" y="312.8" textLength="1073.6" clip-path="url(#terminal-3102383761-line-12)">check-docstring-param-types | check-executables-have-shebangs |                         </text><tex [...] +</text><text class="terminal-3102383761-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-13)">│</text><text class="terminal-3102383761-r7" x="366" y="337.2" textLength="1073.6" clip-path="url(#terminal-3102383761-line-13)">check-extra-packages-references | check-extras-order | check-for-inclusive-language |   </text><text class="terminal-3102383761-r4" x="1451.8" y="337.2" textLength="12.2" clip-path="url(#terminal-310 [...] +</text><text class="terminal-3102383761-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-14)">│</text><text class="terminal-3102383761-r7" x="366" y="361.6" textLength="1073.6" clip-path="url(#terminal-3102383761-line-14)">check-hooks-apply | check-incorrect-use-of-LoggingMixin |                             [...] +</text><text class="terminal-3102383761-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3102383761-line-15)">│</text><text class="terminal-3102383761-r7" x="366" y="386" textLength="1073.6" clip-path="url(#terminal-3102383761-line-15)">check-integrations-are-consistent | check-merge-conflict | check-newsfragments-are-valid</text><text class="terminal-3102383761-r4" x="1451.8" y="386" textLength="12.2" clip-path="url(#terminal-3102383761-line-15)">│</text> [...] +</text><text class="terminal-3102383761-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-16)">│</text><text class="terminal-3102383761-r7" x="366" y="410.4" textLength="1073.6" clip-path="url(#terminal-3102383761-line-16)">| check-no-providers-in-core-examples | check-no-relative-imports |                     </text><text class="termin [...] +</text><text class="terminal-3102383761-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-17)">│</text><text class="terminal-3102383761-r7" x="366" y="434.8" textLength="1073.6" clip-path="url(#terminal-3102383761-line-17)">check-persist-credentials-disabled-in-github-workflows |                              [...] +</text><text class="terminal-3102383761-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-18)">│</text><text class="terminal-3102383761-r7" x="366" y="459.2" textLength="1073.6" clip-path="url(#terminal-3102383761-line-18)">check-pre-commit-information-consistent | check-provide-create-sessions-imports |       </text><text class="terminal-3102383761-r4" x="1451.8" y="459.2" textLength="12.2" clip-path="url(#te [...] +</text><text class="terminal-3102383761-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-19)">│</text><text class="terminal-3102383761-r7" x="366" y="483.6" textLength="1073.6" clip-path="url(#terminal-3102383761-line-19)">check-provider-yaml-valid | check-providers-init-file-missing |                         </text><tex [...] +</text><text class="terminal-3102383761-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-3102383761-line-20)">│</text><text class="terminal-3102383761-r7" x="366" y="508" textLength="1073.6" clip-path="url(#terminal-3102383761-line-20)">check-providers-subpackages-init-file-exist | check-pydevd-left-in-code |               </text><text class="terminal-3102383761-r4" x="1451.8" y="508" te [...] +</text><text class="terminal-3102383761-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-21)">│</text><text class="terminal-3102383761-r7" x="366" y="532.4" textLength="1073.6" clip-path="url(#terminal-3102383761-line-21)">check-revision-heads-map | check-safe-filter-usage-in-html | check-setup-order |        </text><text class="terminal-3102383761-r4" x="1451.8" y="532.4" textLength="12.2" cli [...] +</text><text class="terminal-3102383761-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-22)">│</text><text class="terminal-3102383761-r7" x="366" y="556.8" textLength="1073.6" clip-path="url(#terminal-3102383761-line-22)">check-start-date-not-used-in-defaults | check-system-tests-present |                    </text><text class="terminal-3102383 [...] +</text><text class="terminal-3102383761-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-23)">│</text><text class="terminal-3102383761-r7" x="366" y="581.2" textLength="1073.6" clip-path="url(#terminal-3102383761-line-23)">check-system-tests-tocs | check-xml | codespell | compile-www-assets |                  </text><text class="termin [...] +</text><text class="terminal-3102383761-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-24)">│</text><text class="terminal-3102383761-r7" x="366" y="605.6" textLength="1073.6" clip-path="url(#terminal-3102383761-line-24)">compile-www-assets-dev | create-missing-init-py-files-tests | debug-statements |        </text><text class="terminal-3102383761-r4" x="1451.8" y="605.6" textLength="12.2" cli [...] +</text><text class="terminal-3102383761-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3102383761-line-25)">│</text><text class="terminal-3102383761-r7" x="366" y="630" textLength="1073.6" clip-path="url(#terminal-3102383761-line-25)">detect-private-key | doctoc | end-of-file-fixer | fix-encoding-pragma | flynt |         </text><text class="terminal-3102383761-r4" x="1451.8" y="630" te [...] +</text><text class="terminal-3102383761-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-26)">│</text><text class="terminal-3102383761-r7" x="366" y="654.4" textLength="1073.6" clip-path="url(#terminal-3102383761-line-26)">forbid-tabs | identity | insert-license | isort | lint-chart-schema | lint-css |        </text><text class="terminal-3102383761-r4" x="1451.8" y [...] +</text><text class="terminal-3102383761-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-27)">│</text><text class="terminal-3102383761-r7" x="366" y="678.8" textLength="1073.6" clip-path="url(#terminal-3102383761-line-27)">lint-dockerfile | lint-helm-chart | lint-javascript | lint-json-schema | lint-markdown |</text><text class="terminal-3102383761-r4" x="1451.8" y="678.8" textLength="12.2" clip-path="url(#termina [...] +</text><text class="terminal-3102383761-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-28)">│</text><text class="terminal-3102383761-r7" x="366" y="703.2" textLength="1073.6" clip-path="url(#terminal-3102383761-line-28)">lint-openapi | mixed-line-ending | pretty-format-json | pydocstyle | python-no-log-warn </text><text class="terminal-3102383761-r4" x="1451.8" y="703.2" textLength="12.2" clip-path="url(#termina [...] +</text><text class="terminal-3102383761-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-29)">│</text><text class="terminal-3102383761-r7" x="366" y="727.6" textLength="1073.6" clip-path="url(#terminal-3102383761-line-29)">| pyupgrade | rst-backticks | run-flake8 | run-mypy | run-shellcheck |                  </text><tex [...] +</text><text class="terminal-3102383761-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3102383761-line-30)">│</text><text class="terminal-3102383761-r7" x="366" y="752" textLength="1073.6" clip-path="url(#terminal-3102383761-line-30)">static-check-autoflake | trailing-whitespace | ts-compile-and-lint-javascript |         </text><text class="terminal-3102383761-r4" x="1451.8" y="752" textLength="12.2" clip [...] +</text><text class="terminal-3102383761-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-31)">│</text><text class="terminal-3102383761-r7" x="366" y="776.4" textLength="1073.6" clip-path="url(#terminal-3102383761-line-31)">update-breeze-cmd-output | update-breeze-readme-config-hash | update-extras |           </text><text class="terminal-3102383761-r4" x="1451.8" y="776.4" textLe [...] +</text><text class="terminal-3102383761-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-32)">│</text><text class="terminal-3102383761-r7" x="366" y="800.8" textLength="1073.6" clip-path="url(#terminal-3102383761-line-32)">update-in-the-wild-to-be-sorted | update-inlined-dockerfile-scripts |                   </text><text class="terminal-3102383761-r [...] +</text><text class="terminal-3102383761-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-33)">│</text><text class="terminal-3102383761-r7" x="366" y="825.2" textLength="1073.6" clip-path="url(#terminal-3102383761-line-33)">update-local-yml-file | update-migration-references | update-setup-cfg-file |           </text><text class="terminal-3102383761-r4" x="1451.8" y="825.2" textLe [...] +</text><text class="terminal-3102383761-r4" x="0" y="849.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-34)">│</text><text class="terminal-3102383761-r7" x="366" y="849.6" textLength="1073.6" clip-path="url(#terminal-3102383761-line-34)">update-spelling-wordlist-to-be-sorted | update-supported-versions |                     </text><text class="terminal-31 [...] +</text><text class="terminal-3102383761-r4" x="0" y="874" textLength="12.2" clip-path="url(#terminal-3102383761-line-35)">│</text><text class="terminal-3102383761-r7" x="366" y="874" textLength="1073.6" clip-path="url(#terminal-3102383761-line-35)">update-vendored-in-k8s-json-schema | update-version | yamllint | yesqa)                 </text><text class="terminal-3102383761- [...] +</text><text class="terminal-3102383761-r4" x="0" y="898.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-36)">│</text><text class="terminal-3102383761-r5" x="24.4" y="898.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-36)">-</text><text class="terminal-3102383761-r5" x="36.6" y="898.4" textLength="61" clip-path="url(#terminal-3102383761-line-36)">-file</text><text class="terminal-3102383761-r6" x="317.2" y="898.4" textLength="24.4" clip-path="url(#terminal-31 [...] +</text><text class="terminal-3102383761-r4" x="0" y="922.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-37)">│</text><text class="terminal-3102383761-r5" x="24.4" y="922.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-37)">-</text><text class="terminal-3102383761-r5" x="36.6" y="922.8" textLength="48.8" clip-path="url(#terminal-3102383761-line-37)">-all</text><text class="terminal-3102383761-r5" x="85.4" y="922.8" textLength="73.2" clip-path="url(#terminal-31 [...] +</text><text class="terminal-3102383761-r4" x="0" y="947.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-38)">│</text><text class="terminal-3102383761-r5" x="24.4" y="947.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-38)">-</text><text class="terminal-3102383761-r5" x="36.6" y="947.2" textLength="61" clip-path="url(#terminal-3102383761-line-38)">-show</text><text class="terminal-3102383761-r5" x="97.6" y="947.2" textLength="195.2" clip-path="url(#terminal-31 [...] +</text><text class="terminal-3102383761-r4" x="0" y="971.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-39)">│</text><text class="terminal-3102383761-r5" x="24.4" y="971.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-39)">-</text><text class="terminal-3102383761-r5" x="36.6" y="971.6" textLength="61" clip-path="url(#terminal-3102383761-line-39)">-last</text><text class="terminal-3102383761-r5" x="97.6" y="971.6" textLength="85.4" clip-path="url(#terminal-310 [...] +</text><text class="terminal-3102383761-r4" x="0" y="996" textLength="1464" clip-path="url(#terminal-3102383761-line-40)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3102383761-r2" x="1464" y="996" textLength="12.2" clip-path="url(#terminal-3102383761-line-40)"> +</text><text class="terminal-3102383761-r4" x="0" y="1020.4" textLength="24.4" clip-path="url(#terminal-3102383761-line-41)">╭─</text><text class="terminal-3102383761-r4" x="24.4" y="1020.4" textLength="1415.2" clip-path="url(#terminal-3102383761-line-41)"> Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3102383761-r4" x="1439.6" y="1020.4" textLength="24.4" clip-path="url(#terminal- [...] +</text><text class="terminal-3102383761-r4" x="0" y="1044.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-42)">│</text><text class="terminal-3102383761-r5" x="24.4" y="1044.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-42)">-</text><text class="terminal-3102383761-r5" x="36.6" y="1044.8" textLength="85.4" clip-path="url(#terminal-3102383761-line-42)">-commit</text><text class="terminal-3102383761-r5" x="122" y="1044.8" textLength="48.8" clip-path="url(#termi [...] +</text><text class="terminal-3102383761-r4" x="0" y="1069.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-43)">│</text><text class="terminal-3102383761-r2" x="329.4" y="1069.2" textLength="183" clip-path="url(#terminal-3102383761-line-43)">exclusive with </text><text class="terminal-3102383761-r5" x="512.4" y="1069.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-43)">-</text><text class="terminal-3102383761-r5" x="524.6" y="1069.2" textLength="61" cl [...] +</text><text class="terminal-3102383761-r4" x="0" y="1093.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-44)">│</text><text class="terminal-3102383761-r7" x="329.4" y="1093.6" textLength="1110.2" clip-path="url(#terminal-3102383761-line-44)">(TEXT)                                      & [...] +</text><text class="terminal-3102383761-r4" x="0" y="1118" textLength="12.2" clip-path="url(#terminal-3102383761-line-45)">│</text><text class="terminal-3102383761-r5" x="24.4" y="1118" textLength="12.2" clip-path="url(#terminal-3102383761-line-45)">-</text><text class="terminal-3102383761-r5" x="36.6" y="1118" textLength="97.6" clip-path="url(#terminal-3102383761-line-45)">-verbose</text><text class="terminal-3102383761-r6" x="280.6" y="1118" textLength="24.4" clip-path="url(#terminal-3 [...] +</text><text class="terminal-3102383761-r4" x="0" y="1142.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-46)">│</text><text class="terminal-3102383761-r5" x="24.4" y="1142.4" textLength="12.2" clip-path="url(#terminal-3102383761-line-46)">-</text><text class="terminal-3102383761-r5" x="36.6" y="1142.4" textLength="48.8" clip-path="url(#terminal-3102383761-line-46)">-dry</text><text class="terminal-3102383761-r5" x="85.4" y="1142.4" textLength="48.8" clip-path="url(#termina [...] +</text><text class="terminal-3102383761-r4" x="0" y="1166.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-47)">│</text><text class="terminal-3102383761-r5" x="24.4" y="1166.8" textLength="12.2" clip-path="url(#terminal-3102383761-line-47)">-</text><text class="terminal-3102383761-r5" x="36.6" y="1166.8" textLength="85.4" clip-path="url(#terminal-3102383761-line-47)">-github</text><text class="terminal-3102383761-r5" x="122" y="1166.8" textLength="134.2" clip-path="url(#term [...] +</text><text class="terminal-3102383761-r4" x="0" y="1191.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-48)">│</text><text class="terminal-3102383761-r5" x="24.4" y="1191.2" textLength="12.2" clip-path="url(#terminal-3102383761-line-48)">-</text><text class="terminal-3102383761-r5" x="36.6" y="1191.2" textLength="61" clip-path="url(#terminal-3102383761-line-48)">-help</text><text class="terminal-3102383761-r6" x="280.6" y="1191.2" textLength="24.4" clip-path="url(#termina [...] +</text><text class="terminal-3102383761-r4" x="0" y="1215.6" textLength="1464" clip-path="url(#terminal-3102383761-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3102383761-r2" x="1464" y="1215.6" textLength="12.2" clip-path="url(#terminal-3102383761-line-49)"> </text> </g> </g> diff --git a/setup.py b/setup.py index 0c31292513..e8ca5816d8 100644 --- a/setup.py +++ b/setup.py @@ -927,12 +927,27 @@ def is_package_excluded(package: str, exclusion_list: List[str]) -> bool: return any(package.startswith(excluded_package) for excluded_package in exclusion_list) +def remove_provider_limits(package: str) -> str: + """ + Removes the limit for providers in devel_all to account for pre-release and development packages. + + :param package: package name (beginning of it) + :return: true if package should be excluded + """ + return ( + package.split(">=")[0] + if package.startswith("apache-airflow-providers") and ">=" in package + else package + ) + + +devel = [remove_provider_limits(package) for package in devel] devel_all = [ - package + remove_provider_limits(package) for package in devel_all if not is_package_excluded(package=package, exclusion_list=PACKAGES_EXCLUDED_FOR_ALL) ] - +devel_hadoop = [remove_provider_limits(package) for package in devel_hadoop] devel_ci = devel_all
