This is an automated email from the ASF dual-hosted git repository. ephraimanierobi pushed a commit to branch v2-7-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 0253f6aa1b1837883abdb7387ae1bc703ec352cc Author: Jarek Potiuk <[email protected]> AuthorDate: Sun Aug 6 14:28:43 2023 +0200 Improve back-reference generation (#33149) * better command line support with better auto-complete * allows to run back-referance generation for individual provider packages * better typing including using Pathlib everywhere * handling of redirection between providers - when an operator is moved from one provider to the other - instead of generating invalid "stable" link we generate back reference for all versions of the provider. (cherry picked from commit 14faf196e901e0a6fdaeb7d55e6e293b7071b501) --- .../airflow_breeze/commands/developer_commands.py | 4 +- .../commands/release_management_commands.py | 32 ++++-- dev/breeze/src/airflow_breeze/global_constants.py | 2 +- .../airflow_breeze/utils/add_back_references.py | 71 ++++++++------ .../src/airflow_breeze/utils/common_options.py | 4 +- dev/breeze/tests/test_global_constants.py | 6 +- images/breeze/output-commands-hash.txt | 4 +- ...tput_release-management_add-back-references.svg | 108 +++++++++++++++++---- 8 files changed, 162 insertions(+), 69 deletions(-) diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py b/dev/breeze/src/airflow_breeze/commands/developer_commands.py index f17d8bd0d8..4f0d14a174 100644 --- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py @@ -32,7 +32,7 @@ from airflow_breeze.global_constants import ( DEFAULT_PYTHON_MAJOR_MINOR_VERSION, DOCKER_DEFAULT_PLATFORM, MOUNT_SELECTED, - get_available_documentation_packages, + get_available_documentation_provider_packages, ) from airflow_breeze.params.build_ci_params import BuildCiParams from airflow_breeze.params.doc_build_params import DocBuildParams @@ -331,7 +331,7 @@ def start_airflow( @click.option( "--package-filter", help="List of packages to consider.", - type=NotVerifiedBetterChoice(get_available_documentation_packages()), + type=NotVerifiedBetterChoice(get_available_documentation_provider_packages()), multiple=True, ) @click.option( 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 201f517524..aca5f66395 100644 --- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py @@ -43,7 +43,7 @@ from airflow_breeze.global_constants import ( MOUNT_ALL, MOUNT_SELECTED, MULTI_PLATFORM, - get_available_documentation_packages, + get_available_documentation_provider_packages, ) from airflow_breeze.params.shell_params import ShellParams from airflow_breeze.utils.add_back_references import ( @@ -783,7 +783,7 @@ def alias_image(image_from: str, image_to: str): @click.option( "--package-filter", help="List of packages to consider.", - type=NotVerifiedBetterChoice(get_available_documentation_packages()), + type=NotVerifiedBetterChoice(get_available_documentation_provider_packages()), multiple=True, ) @option_verbose @@ -821,30 +821,44 @@ def publish_docs( "-a", "--airflow-site-directory", envvar="AIRFLOW_SITE_DIRECTORY", + type=click.Path(exists=True, file_okay=False, dir_okay=True, resolve_path=True), help="Local directory path of cloned airflow-site repo.", required=True, ) @click.option( "-g", "--gen-type", - help="Type of back references to generate, supports: [airflow | providers | helm]", - type=str, - required=True, + show_default=True, + help="Type of back references to generate. Forced to providers if providers specified as arguments.", + type=BetterChoice( + [e.name for e in GenerationType], + ), + default=GenerationType.airflow.name, ) +@argument_packages @option_verbose @option_dry_run def add_back_references( - airflow_site_directory: bool, + airflow_site_directory: str, gen_type: str, + packages: list[str], ): """Adds back references for documentation generated by build-docs and publish-docs""" - if not os.path.isdir(airflow_site_directory): + site_path = Path(airflow_site_directory) + if not site_path.is_dir(): get_console().print( "\n[error]location pointed by airflow_site_dir is not valid. " "Provide the path of cloned airflow-site repo\n" ) sys.exit(1) - + if len(packages) != 0 and gen_type != GenerationType.providers.name: + get_console().print( + [ + f"[warning]Forcing gen type to " + f"{GenerationType.providers} as some provider_packages are selected." + ] + ) + gen_type = GenerationType.providers.name gen = GenerationType[gen_type] if gen not in GenerationType: get_console().print( @@ -852,7 +866,7 @@ def add_back_references( ) sys.exit(1) - start_generating_back_references(gen, airflow_site_directory) + start_generating_back_references(gen, site_path, packages) @release_management.command( diff --git a/dev/breeze/src/airflow_breeze/global_constants.py b/dev/breeze/src/airflow_breeze/global_constants.py index e16b6874bf..dadae7a2e4 100644 --- a/dev/breeze/src/airflow_breeze/global_constants.py +++ b/dev/breeze/src/airflow_breeze/global_constants.py @@ -145,7 +145,7 @@ ALLOWED_USE_AIRFLOW_VERSIONS = ["none", "wheel", "sdist"] ALL_HISTORICAL_PYTHON_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11"] -def get_available_documentation_packages(short_version=False) -> list[str]: +def get_available_documentation_provider_packages(short_version=False) -> list[str]: provider_names: list[str] = list(json.loads(PROVIDER_DEPENDENCIES_JSON_FILE_PATH.read_text()).keys()) doc_provider_names = [provider_name.replace(".", "-") for provider_name in provider_names] available_packages = [f"apache-airflow-providers-{doc_provider}" for doc_provider in doc_provider_names] diff --git a/dev/breeze/src/airflow_breeze/utils/add_back_references.py b/dev/breeze/src/airflow_breeze/utils/add_back_references.py index e27ddcfa69..0b7c2abfe8 100644 --- a/dev/breeze/src/airflow_breeze/utils/add_back_references.py +++ b/dev/breeze/src/airflow_breeze/utils/add_back_references.py @@ -18,6 +18,7 @@ from __future__ import annotations import enum import os +import re import tempfile from pathlib import Path from urllib.error import URLError @@ -25,6 +26,8 @@ from urllib.request import urlopen from rich import print +from airflow_breeze.global_constants import get_available_documentation_provider_packages + airflow_redirects_link = ( "https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/redirects.txt" ) @@ -89,24 +92,31 @@ def get_github_redirects_url(provider_name: str): return f"https://raw.githubusercontent.com/apache/airflow/main/docs/{provider_name}/redirects.txt" -def get_provider_docs_path(docs_archive_path, provider_name: str): - return docs_archive_path + "/" + provider_name +def crete_redirect_html_if_not_exist(path: Path, content: str): + if not path.exists(): + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content) + print(f"[green]Created back reference redirect: {path}") + else: + print(f"Skipping file:{path}, redirects already exist") -def create_back_reference_html(back_ref_url, path): +def create_back_reference_html(back_ref_url: str, target_path: Path): content = get_redirect_content(back_ref_url) - if Path(path).exists(): - print(f"Skipping file:{path}, redirects already exist") - return - - # creating a back reference html file - with open(path, "w") as f: - f.write(content) - print(f"[green]Created back reference redirect: {path}") + version_match = re.compile(r"[0-9]+.[0-9]+.[0-9]+") + target_path_as_posix = target_path.as_posix() + if "/stable/" in target_path_as_posix: + prefix, postfix = target_path_as_posix.split("/stable/") + base_folder = Path(prefix) + for folder in base_folder.iterdir(): + if folder.is_dir() and version_match.match(folder.name): + crete_redirect_html_if_not_exist(folder / postfix, content) + else: + crete_redirect_html_if_not_exist(Path(target_path), content) -def generate_back_references(link: str, base_path: str): +def generate_back_references(link: str, base_path: Path): is_downloaded, file_name = download_file(link) if not is_downloaded: old_to_new: list[tuple[str, str]] = [] @@ -118,46 +128,47 @@ def generate_back_references(link: str, base_path: str): old_to_new.append(("security.html", "security/security-model.html")) versions = [f.path.split("/")[-1] for f in os.scandir(base_path) if f.is_dir()] - for version in versions: print(f"Processing {base_path}, version: {version}") - versioned_provider_path = base_path + "/" + version + versioned_provider_path = base_path / version for old, new in old_to_new: # only if old file exists, add the back reference - if os.path.exists(versioned_provider_path + "/" + old): + if os.path.exists(versioned_provider_path / old): split_new_path = new.split("/") file_name = new.split("/")[-1] - dest_dir = versioned_provider_path + "/" + "/".join(split_new_path[: len(split_new_path) - 1]) + dest_dir = versioned_provider_path.joinpath(*split_new_path[: len(split_new_path) - 1]) # finds relative path of old file with respect to new and handles case of different file # names also relative_path = os.path.relpath(old, new) # remove one directory level because file path was used above relative_path = relative_path.replace("../", "", 1) - os.makedirs(dest_dir, exist_ok=True) - dest_file_path = dest_dir + "/" + file_name + dest_file_path = dest_dir / file_name create_back_reference_html(relative_path, dest_file_path) -def start_generating_back_references(gen_type, airflow_site_directory): - docs_archive_path = airflow_site_directory + "/docs-archive" - airflow_docs_path = docs_archive_path + "/apache-airflow" - helm_docs_path = docs_archive_path + "/helm-chart" +def start_generating_back_references( + gen_type: GenerationType, airflow_site_directory: Path, short_provider_package_ids: list[str] +): + # Either packages or gen_type should be provided + docs_archive_path = airflow_site_directory / "docs-archive" + airflow_docs_path = docs_archive_path / "apache-airflow" + helm_docs_path = docs_archive_path / "helm-chart" if gen_type == GenerationType.airflow: generate_back_references(airflow_redirects_link, airflow_docs_path) elif gen_type == GenerationType.helm: generate_back_references(helm_redirects_link, helm_docs_path) elif gen_type == GenerationType.providers: - all_providers = [ - f.path.split("/")[-1] - for f in os.scandir(docs_archive_path) - if f.is_dir() and "providers" in f.name - ] + if short_provider_package_ids: + all_providers = [ + f"apache-airflow-providers-{package.replace('.','-')}" + for package in short_provider_package_ids + ] + else: + all_providers = get_available_documentation_provider_packages() for p in all_providers: print(f"Processing airflow provider: {p}") - generate_back_references( - get_github_redirects_url(p), get_provider_docs_path(docs_archive_path, p) - ) + generate_back_references(get_github_redirects_url(p), docs_archive_path / p) diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py index f21e080323..bd039593a5 100644 --- a/dev/breeze/src/airflow_breeze/utils/common_options.py +++ b/dev/breeze/src/airflow_breeze/utils/common_options.py @@ -43,7 +43,7 @@ from airflow_breeze.global_constants import ( SINGLE_PLATFORMS, START_AIRFLOW_ALLOWED_EXECUTORS, START_AIRFLOW_DEFAULT_ALLOWED_EXECUTORS, - get_available_documentation_packages, + get_available_documentation_provider_packages, ) from airflow_breeze.utils.custom_param_types import ( AnswerChoice, @@ -448,7 +448,7 @@ argument_packages = click.argument( "packages", nargs=-1, required=False, - type=BetterChoice(get_available_documentation_packages(short_version=True)), + type=BetterChoice(get_available_documentation_provider_packages(short_version=True)), ) option_airflow_constraints_reference = click.option( "--airflow-constraints-reference", diff --git a/dev/breeze/tests/test_global_constants.py b/dev/breeze/tests/test_global_constants.py index ee0f72888e..f9878f7914 100644 --- a/dev/breeze/tests/test_global_constants.py +++ b/dev/breeze/tests/test_global_constants.py @@ -16,12 +16,12 @@ # under the License. from __future__ import annotations -from airflow_breeze.global_constants import get_available_documentation_packages +from airflow_breeze.global_constants import get_available_documentation_provider_packages AVAILABLE_PACKAGES_STARTING_LIST = ("apache-airflow", "helm-chart", "docker-stack") def test_get_available_packages(): - assert len(get_available_documentation_packages()) > 70 - for package in get_available_documentation_packages(): + assert len(get_available_documentation_provider_packages()) > 70 + for package in get_available_documentation_provider_packages(): assert package.startswith(AVAILABLE_PACKAGES_STARTING_LIST) diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt index d6acdd9249..2416ad7db0 100644 --- a/images/breeze/output-commands-hash.txt +++ b/images/breeze/output-commands-hash.txt @@ -35,7 +35,7 @@ prod-image:build:2a8217f4e61c405530d487b60abc614e prod-image:pull:76f1f27e6119928412abecf153fce4bb prod-image:verify:bd2b78738a7c388dbad6076c41a9f906 prod-image:1598bf6964c2e31c387edbd3aacb6fbb -release-management:add-back-references:8dab6a30076a55f2d31c6d22a94e0ccb +release-management:add-back-references:0d4eb5ed82e5381bc630b343ba605a72 release-management:create-minor-branch:a3834afc4aa5d1e98002c9e9e7a9931d release-management:generate-constraints:b8fcaf8f0acd35ed5dbd48659bdb6485 release-management:generate-issue-content-providers:6b0d954cb6dbdec0da0a7988feec58f0 @@ -49,7 +49,7 @@ release-management:release-prod-images:cfbfe8b19fee91fd90718f98ef2fd078 release-management:start-rc-process:b27bd524dd3c89f50a747b60a7e892c1 release-management:start-release:419f48f6a4ff4457cb9de7ff496aebbe release-management:verify-provider-packages:2bfa1015b2a4682f7b098587e09026d4 -release-management:ccbc384d728dd606ab2727e59fc52c19 +release-management:3a02b790089e161f2addef69ea0ce08a sbom:generate-provider-requirements:9abe53200ea5f40e0bf7c27f6087f27f sbom:update-sbom-information:0ce56884e5f842e3e80d6619df1ccc64 sbom:935d041028e847d3faf763a95b51063e diff --git a/images/breeze/output_release-management_add-back-references.svg b/images/breeze/output_release-management_add-back-references.svg index 87839c0041..b8ead97cde 100644 --- a/images/breeze/output_release-management_add-back-references.svg +++ b/images/breeze/output_release-management_add-back-references.svg @@ -1,4 +1,4 @@ -<svg class="rich-terminal" viewBox="0 0 1482 416.0" xmlns="http://www.w3.org/2000/svg"> +<svg class="rich-terminal" viewBox="0 0 1482 830.8" xmlns="http://www.w3.org/2000/svg"> <!-- Generated with Rich https://www.textualize.io --> <style> @@ -35,9 +35,9 @@ .breeze-release-management-add-back-references-r1 { fill: #c5c8c6;font-weight: bold } .breeze-release-management-add-back-references-r2 { fill: #c5c8c6 } .breeze-release-management-add-back-references-r3 { fill: #d0b344;font-weight: bold } -.breeze-release-management-add-back-references-r4 { fill: #68a0b3;font-weight: bold } -.breeze-release-management-add-back-references-r5 { fill: #868887 } -.breeze-release-management-add-back-references-r6 { fill: #cc555a } +.breeze-release-management-add-back-references-r4 { fill: #868887 } +.breeze-release-management-add-back-references-r5 { fill: #cc555a } +.breeze-release-management-add-back-references-r6 { fill: #68a0b3;font-weight: bold } .breeze-release-management-add-back-references-r7 { fill: #98a84b;font-weight: bold } .breeze-release-management-add-back-references-r8 { fill: #8d7b39 } .breeze-release-management-add-back-references-r9 { fill: #8a4346 } @@ -45,7 +45,7 @@ <defs> <clipPath id="breeze-release-management-add-back-references-clip-terminal"> - <rect x="0" y="0" width="1463.0" height="365.0" /> + <rect x="0" y="0" width="1463.0" height="779.8" /> </clipPath> <clipPath id="breeze-release-management-add-back-references-line-0"> <rect x="0" y="1.5" width="1464" height="24.65"/> @@ -89,9 +89,60 @@ <clipPath id="breeze-release-management-add-back-references-line-13"> <rect x="0" y="318.7" width="1464" height="24.65"/> </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-14"> + <rect x="0" y="343.1" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-15"> + <rect x="0" y="367.5" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-16"> + <rect x="0" y="391.9" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-17"> + <rect x="0" y="416.3" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-18"> + <rect x="0" y="440.7" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-19"> + <rect x="0" y="465.1" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-20"> + <rect x="0" y="489.5" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-21"> + <rect x="0" y="513.9" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-22"> + <rect x="0" y="538.3" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-23"> + <rect x="0" y="562.7" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-24"> + <rect x="0" y="587.1" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-25"> + <rect x="0" y="611.5" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-26"> + <rect x="0" y="635.9" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-27"> + <rect x="0" y="660.3" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-28"> + <rect x="0" y="684.7" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-29"> + <rect x="0" y="709.1" width="1464" height="24.65"/> + </clipPath> +<clipPath id="breeze-release-management-add-back-references-line-30"> + <rect x="0" y="733.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="414" rx="8"/><text class="breeze-release-management-add-back-references-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management add-back-references</text> + <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-add-back-references-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command: release-management add-back-references</text> <g transform="translate(26,22)"> <circle cx="0" cy="0" r="7" fill="#ff5f57"/> <circle cx="22" cy="0" r="7" fill="#febc2e"/> @@ -102,20 +153,37 @@ <g class="breeze-release-management-add-back-references-matrix"> <text class="breeze-release-management-add-back-references-r2" x="1464" y="20" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-0)"> -</text><text class="breeze-release-management-add-back-references-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#breeze-release-management-add-back-references-line-1)">Usage: </text><text class="breeze-release-management-add-back-references-r1" x="97.6" y="44.4" textLength="573.4" clip-path="url(#breeze-release-management-add-back-references-line-1)">breeze release-management add-back-references [</text><text class="breeze-release-management-add-back-referenc [...] -</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-2)"> -</text><text class="breeze-release-management-add-back-references-r2" x="12.2" y="93.2" textLength="963.8" clip-path="url(#breeze-release-management-add-back-references-line-3)">Command to add back references for documentation to make it backward compatible</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-3)"> -</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-4)"> -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-release-management-add-back-references-line-5)">╭─</text><text class="breeze-release-management-add-back-references-r5" x="24.4" y="142" textLength="353.8" clip-path="url(#breeze-release-management-add-back-references-line-5)"> Add Back References to Docs </text><text class="breeze-release-management-add-back-references-r5" x="378.2" y [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-6)">│</text><text class="breeze-release-management-add-back-references-r6" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-6)">*</text><text class="breeze-release-management-add-back-references-r4" x="61" y="166.4" textLength="12.2" clip-path="url(#breeze-release-m [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-7)">│</text><text class="breeze-release-management-add-back-references-r6" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-7)">*</text><text class="breeze-release-management-add-back-references-r4" x="61" y="190.8" textLength="12.2" clip-path="url(#breeze-release-m [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-8)">│</text><text class="breeze-release-management-add-back-references-r9" x="427" y="215.2" textLength="915" clip-path="url(#breeze-release-management-add-back-references-line-8)">[required]                      [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="239.6" textLength="1464" clip-path="url(#breeze-release-management-add-back-references-line-9)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-9)"> -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="264" textLength="24.4" clip-path="url(#breeze-release-management-add-back-references-line-10)">╭─</text><text class="breeze-release-management-add-back-references-r5" x="24.4" y="264" textLength="195.2" clip-path="url(#breeze-release-management-add-back-references-line-10)"> Common options </text><text class="breeze-release-management-add-back-references-r5" x="219.6" y="264" textLength="1220" c [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-11)">│</text><text class="breeze-release-management-add-back-references-r4" x="24.4" y="288.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-11)">-</text><text class="breeze-release-management-add-back-references-r4" x="36.6" y="288.4" textLength="97.6" clip-path="url(#breeze-relea [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-12)">│</text><text class="breeze-release-management-add-back-references-r4" x="24.4" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-12)">-</text><text class="breeze-release-management-add-back-references-r4" x="36.6" y="312.8" textLength="48.8" clip-path="url(#breeze-relea [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-13)">│</text><text class="breeze-release-management-add-back-references-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-13)">-</text><text class="breeze-release-management-add-back-references-r4" x="36.6" y="337.2" textLength="61" clip-path="url(#breeze-release [...] -</text><text class="breeze-release-management-add-back-references-r5" x="0" y="361.6" textLength="1464" clip-path="url(#breeze-release-management-add-back-references-line-14)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-14)"> +</text><text class="breeze-release-management-add-back-references-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#breeze-release-management-add-back-references-line-1)">Usage: </text><text class="breeze-release-management-add-back-references-r1" x="97.6" y="44.4" textLength="1207.8" clip-path="url(#breeze-release-management-add-back-references-line-1)">breeze release-management add-back-references [OPTIONS] [airbyte | alibaba | amazon& [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="68.8" textLength="1415.2" clip-path="url(#breeze-release-management-add-back-references-line-2)">                                                    & [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="93.2" textLength="1354.2" clip-path="url(#breeze-release-management-add-back-references-line-3)">                                                    & [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="117.6" textLength="1329.8" clip-path="url(#breeze-release-management-add-back-references-line-4)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="142" textLength="1354.2" clip-path="url(#breeze-release-management-add-back-references-line-5)">                                                    &# [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="166.4" textLength="1439.6" clip-path="url(#breeze-release-management-add-back-references-line-6)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="190.8" textLength="1403" clip-path="url(#breeze-release-management-add-back-references-line-7)">                                                    &# [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="215.2" textLength="1378.6" clip-path="url(#breeze-release-management-add-back-references-line-8)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="239.6" textLength="1390.8" clip-path="url(#breeze-release-management-add-back-references-line-9)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="264" textLength="1281" clip-path="url(#breeze-release-management-add-back-references-line-10)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="288.4" textLength="1439.6" clip-path="url(#breeze-release-management-add-back-references-line-11)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="312.8" textLength="1329.8" clip-path="url(#breeze-release-management-add-back-references-line-12)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="337.2" textLength="1342" clip-path="url(#breeze-release-management-add-back-references-line-13)">                                                    & [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="361.6" textLength="1403" clip-path="url(#breeze-release-management-add-back-references-line-14)">                                                    & [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="386" textLength="1390.8" clip-path="url(#breeze-release-management-add-back-references-line-15)">                                                    & [...] +</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="410.4" textLength="1134.6" clip-path="url(#breeze-release-management-add-back-references-line-16)">                                                     [...] +</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-17)"> +</text><text class="breeze-release-management-add-back-references-r2" x="12.2" y="459.2" textLength="963.8" clip-path="url(#breeze-release-management-add-back-references-line-18)">Command to add back references for documentation to make it backward compatible</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="459.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-18)"> +</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-19)"> +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="508" textLength="24.4" clip-path="url(#breeze-release-management-add-back-references-line-20)">╭─</text><text class="breeze-release-management-add-back-references-r4" x="24.4" y="508" textLength="353.8" clip-path="url(#breeze-release-management-add-back-references-line-20)"> Add Back References to Docs </text><text class="breeze-release-management-add-back-references-r4" x="378.2" [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-21)">│</text><text class="breeze-release-management-add-back-references-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-21)">*</text><text class="breeze-release-management-add-back-references-r6" x="61" y="532.4" textLength="12.2" clip-path="url(#breeze-release [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-22)">│</text><text class="breeze-release-management-add-back-references-r6" x="61" y="556.8" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-22)">-</text><text class="breeze-release-management-add-back-references-r6" x="73.2" y="556.8" textLength="48.8" clip-path="url(#breeze-release [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-23)">│</text><text class="breeze-release-management-add-back-references-r2" x="427" y="581.2" textLength="1012.6" clip-path="url(#breeze-release-management-add-back-references-line-23)">arguments.                      [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-24)">│</text><text class="breeze-release-management-add-back-references-r8" x="427" y="605.6" textLength="1012.6" clip-path="url(#breeze-release-management-add-back-references-line-24)">(airflow | helm | providers)               [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="630" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-25)">│</text><text class="breeze-release-management-add-back-references-r4" x="427" y="630" textLength="1012.6" clip-path="url(#breeze-release-management-add-back-references-line-25)">[default: airflow]                   &# [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="654.4" textLength="1464" clip-path="url(#breeze-release-management-add-back-references-line-26)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="654.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-26)"> +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="678.8" textLength="24.4" clip-path="url(#breeze-release-management-add-back-references-line-27)">╭─</text><text class="breeze-release-management-add-back-references-r4" x="24.4" y="678.8" textLength="195.2" clip-path="url(#breeze-release-management-add-back-references-line-27)"> Common options </text><text class="breeze-release-management-add-back-references-r4" x="219.6" y="678.8" textLength="1 [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-28)">│</text><text class="breeze-release-management-add-back-references-r6" x="24.4" y="703.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-28)">-</text><text class="breeze-release-management-add-back-references-r6" x="36.6" y="703.2" textLength="97.6" clip-path="url(#breeze-relea [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-29)">│</text><text class="breeze-release-management-add-back-references-r6" x="24.4" y="727.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-29)">-</text><text class="breeze-release-management-add-back-references-r6" x="36.6" y="727.6" textLength="48.8" clip-path="url(#breeze-relea [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="752" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-30)">│</text><text class="breeze-release-management-add-back-references-r6" x="24.4" y="752" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-30)">-</text><text class="breeze-release-management-add-back-references-r6" x="36.6" y="752" textLength="61" clip-path="url(#breeze-release-manag [...] +</text><text class="breeze-release-management-add-back-references-r4" x="0" y="776.4" textLength="1464" clip-path="url(#breeze-release-management-add-back-references-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-release-management-add-back-references-r2" x="1464" y="776.4" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-31)"> </text> </g> </g>
