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:&#160;release-management&#160;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:&#160;release-management&#160;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:&#160;</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&#160;release-management&#160;add-back-references&#160;[</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&#160;to&#160;add&#160;back&#160;references&#160;for&#160;documentation&#160;to&#160;make&#160;it&#160;backward&#160;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)">&#160;Add&#160;Back&#160;References&#160;to&#160;Docs&#160;</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]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</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)">&#160;Common&#160;options&#160;</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:&#160;</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&#160;release-management&#160;add-back-references&#160;[OPTIONS]&#160;[airbyte&#160;|&#160;alibaba&#160;|&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</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&#160;to&#160;add&#160;back&#160;references&#160;for&#160;documentation&#160;to&#160;make&#160;it&#160;backward&#160;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)">&#160;Add&#160;Back&#160;References&#160;to&#160;Docs&#160;</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.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</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&#160;|&#160;helm&#160;|&#160;providers)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</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:&#160;airflow]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</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)">&#160;Common&#160;options&#160;</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>


Reply via email to