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

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 09c5114f67 Refactor preparation of extension documentation (#32632)
09c5114f67 is described below

commit 09c5114f67f152c44b555ee408d76b26cfe0691f
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Jul 16 22:21:35 2023 +0200

    Refactor preparation of extension documentation (#32632)
    
    The code to prepare extensions have been largely repeated. This
    small refactor will make it easier to maintain it and make it
    easier to add a new extension.
---
 docs/exts/auth_backend.rst.jinja2    |   2 +-
 docs/exts/connections.rst.jinja2     |   2 +-
 docs/exts/extra_links.rst.jinja2     |   2 +-
 docs/exts/logging.rst.jinja2         |   2 +-
 docs/exts/operators_and_hooks_ref.py | 249 +++++++++++++----------------------
 docs/exts/secret_backend.rst.jinja2  |   2 +-
 6 files changed, 93 insertions(+), 166 deletions(-)

diff --git a/docs/exts/auth_backend.rst.jinja2 
b/docs/exts/auth_backend.rst.jinja2
index d14b115d0e..781e4b1a93 100644
--- a/docs/exts/auth_backend.rst.jinja2
+++ b/docs/exts/auth_backend.rst.jinja2
@@ -20,7 +20,7 @@
 {{ provider_dict['name'] }}
 {{ header_separator * (provider_dict['name']|length) }}
 
-{% for backend in provider_dict['auth_backends'] -%}
+{% for backend in provider_dict['auth-backends'] -%}
 - :class:`~{{ backend }}`
 {% endfor -%}
 
diff --git a/docs/exts/connections.rst.jinja2 b/docs/exts/connections.rst.jinja2
index 1b4f63d0d2..0e9ba6adaf 100644
--- a/docs/exts/connections.rst.jinja2
+++ b/docs/exts/connections.rst.jinja2
@@ -20,7 +20,7 @@
 {{ provider_dict['name'] }}
 {{ header_separator * (provider_dict['name']|length) }}
 
-{% for backend in provider_dict['connection_types'] -%}
+{% for backend in provider_dict['connection-types'] -%}
 - `{{ backend['connection-type'] }}`: :class:`~{{ backend['hook-class-name'] 
}}`
 {% endfor -%}
 
diff --git a/docs/exts/extra_links.rst.jinja2 b/docs/exts/extra_links.rst.jinja2
index be085fd1a3..31e3221ac5 100644
--- a/docs/exts/extra_links.rst.jinja2
+++ b/docs/exts/extra_links.rst.jinja2
@@ -20,7 +20,7 @@
 {{ provider_dict['name'] }}
 {{ header_separator * (provider_dict['name']|length) }}
 
-{% for extra_link in provider_dict['extra_links'] -%}
+{% for extra_link in provider_dict['extra-links'] -%}
     - :class:`~{{ extra_link }}`
 {% endfor -%}
 
diff --git a/docs/exts/logging.rst.jinja2 b/docs/exts/logging.rst.jinja2
index 0ed076cf57..aa7ece198f 100644
--- a/docs/exts/logging.rst.jinja2
+++ b/docs/exts/logging.rst.jinja2
@@ -22,7 +22,7 @@
 
 :doc:`{{ provider }}:logging/index`
 
-{% for handler in provider_dict['handlers'] -%}
+{% for handler in provider_dict['logging'] -%}
 - :class:`~{{ handler }}`
 {% endfor -%}
 
diff --git a/docs/exts/operators_and_hooks_ref.py 
b/docs/exts/operators_and_hooks_ref.py
index 9b78674b9d..cc47cb46fe 100644
--- a/docs/exts/operators_and_hooks_ref.py
+++ b/docs/exts/operators_and_hooks_ref.py
@@ -127,7 +127,6 @@ def _prepare_operators_data(tags: set[str] | None):
 
 def _render_operator_content(*, tags: set[str] | None, header_separator: str):
     tabular_data = _prepare_operators_data(tags)
-
     return _render_template(
         "operators_and_hooks_ref.rst.jinja2", items=tabular_data, 
header_separator=header_separator
     )
@@ -168,147 +167,11 @@ def _prepare_transfer_data(tags: set[str] | None):
 
 def _render_transfer_content(*, tags: set[str] | None, header_separator: str):
     tabular_data = _prepare_transfer_data(tags)
-
     return _render_template(
         "operators_and_hooks_ref-transfers.rst.jinja2", items=tabular_data, 
header_separator=header_separator
     )
 
 
-def _prepare_logging_data():
-    package_data = load_package_data()
-    all_logging = {}
-    for provider in package_data:
-        logging_handlers = provider.get("logging")
-        if logging_handlers:
-            package_name = provider["package-name"]
-            all_logging[package_name] = {"name": provider["name"], "handlers": 
logging_handlers}
-    return all_logging
-
-
-def _render_logging_content(*, header_separator: str):
-    tabular_data = _prepare_logging_data()
-
-    return _render_template("logging.rst.jinja2", items=tabular_data, 
header_separator=header_separator)
-
-
-def _prepare_auth_backend_data():
-    package_data = load_package_data()
-    all_auth_backends = {}
-    for provider in package_data:
-        auth_backends_list = provider.get("auth-backends")
-        if auth_backends_list:
-            package_name = provider["package-name"]
-            all_auth_backends[package_name] = {"name": provider["name"], 
"auth_backends": auth_backends_list}
-    return all_auth_backends
-
-
-def _render_auth_backend_content(*, header_separator: str):
-    tabular_data = _prepare_auth_backend_data()
-
-    return _render_template("auth_backend.rst.jinja2", items=tabular_data, 
header_separator=header_separator)
-
-
-def _prepare_secrets_backend_data():
-    package_data = load_package_data()
-    all_secret_backends = {}
-    for provider in package_data:
-        secret_backends_list = provider.get("secrets-backends")
-        if secret_backends_list:
-            package_name = provider["package-name"]
-            all_secret_backends[package_name] = {
-                "name": provider["name"],
-                "secrets_backends": secret_backends_list,
-            }
-    return all_secret_backends
-
-
-def _render_secrets_backend_content(*, header_separator: str):
-    tabular_data = _prepare_secrets_backend_data()
-
-    return _render_template(
-        "secret_backend.rst.jinja2", items=tabular_data, 
header_separator=header_separator
-    )
-
-
-def _prepare_connections_data():
-    package_data = load_package_data()
-    all_connections = {}
-    for provider in package_data:
-        connections_list = provider.get("connection-types")
-        if connections_list:
-            package_name = provider["package-name"]
-            all_connections[package_name] = {
-                "name": provider["name"],
-                "connection_types": connections_list,
-            }
-    return all_connections
-
-
-def _render_connections_content(*, header_separator: str):
-    tabular_data = _prepare_connections_data()
-
-    return _render_template("connections.rst.jinja2", items=tabular_data, 
header_separator=header_separator)
-
-
-def _prepare_extra_links_data():
-    package_data = load_package_data()
-    all_extra_links = {}
-    for provider in package_data:
-        extra_link_list = provider.get("extra-links")
-        if extra_link_list:
-            package_name = provider["package-name"]
-            all_extra_links[package_name] = {
-                "name": provider["name"],
-                "extra_links": extra_link_list,
-            }
-    return all_extra_links
-
-
-def _render_extra_links_content(*, header_separator: str):
-    tabular_data = _prepare_extra_links_data()
-
-    return _render_template("extra_links.rst.jinja2", items=tabular_data, 
header_separator=header_separator)
-
-
-def _prepare_notifications_data():
-    package_data = load_package_data()
-    all_notifiers = {}
-    for provider in package_data:
-        notifications = provider.get("notifications")
-        if notifications:
-            package_name = provider["package-name"]
-            all_notifiers[package_name] = {
-                "name": provider["name"],
-                "notifications": notifications,
-            }
-    return all_notifiers
-
-
-def _prepare_executors_data():
-    package_data = load_package_data()
-    all_executors = {}
-    for provider in package_data:
-        if executors := provider.get("executors"):
-            package_name = provider["package-name"]
-            all_executors[package_name] = {
-                "name": provider["name"],
-                "executors": executors,
-            }
-    return all_executors
-
-
-def _render_notification_content(*, header_separator: str):
-    tabular_data = _prepare_notifications_data()
-
-    return _render_template("notifications.rst.jinja2", items=tabular_data, 
header_separator=header_separator)
-
-
-def _render_executors_content(*, header_separator: str):
-    tabular_data = _prepare_executors_data()
-
-    return _render_template("executors.rst.jinja2", items=tabular_data, 
header_separator=header_separator)
-
-
 class BaseJinjaReferenceDirective(Directive):
     """The base directive for OperatorsHooksReferenceDirective and 
TransfersReferenceDirective"""
 
@@ -341,10 +204,24 @@ class BaseJinjaReferenceDirective(Directive):
         raise NotImplementedError("Tou need to override render_content 
method.")
 
 
+def _common_render_list_content(*, header_separator: str, resource_type: str, 
template: str):
+    tabular_data = {
+        provider["package-name"]: {
+            "name": provider["name"],
+            resource_type: provider.get(resource_type, []),
+        }
+        for provider in load_package_data()
+        if provider.get(resource_type) is not None
+    }
+    return _render_template(template, items=tabular_data, 
header_separator=header_separator)
+
+
 class OperatorsHooksReferenceDirective(BaseJinjaReferenceDirective):
     """Generates a list of operators, sensors, hooks"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
         return _render_operator_content(
             tags=tags,
             header_separator=header_separator,
@@ -354,7 +231,9 @@ class 
OperatorsHooksReferenceDirective(BaseJinjaReferenceDirective):
 class TransfersReferenceDirective(BaseJinjaReferenceDirective):
     """Generate a list of transfer operators"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
         return _render_transfer_content(
             tags=tags,
             header_separator=header_separator,
@@ -364,63 +243,85 @@ class 
TransfersReferenceDirective(BaseJinjaReferenceDirective):
 class LoggingDirective(BaseJinjaReferenceDirective):
     """Generate list of logging handlers"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
-        return _render_logging_content(
-            header_separator=header_separator,
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
+        return _common_render_list_content(
+            header_separator=header_separator, resource_type="logging", 
template="logging.rst.jinja2"
         )
 
 
 class AuthBackendDirective(BaseJinjaReferenceDirective):
     """Generate list of auth backend handlers"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
-        return _render_auth_backend_content(
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
+        return _common_render_list_content(
             header_separator=header_separator,
+            resource_type="auth-backends",
+            template="auth_backend.rst.jinja2",
         )
 
 
 class SecretsBackendDirective(BaseJinjaReferenceDirective):
     """Generate list of secret backend handlers"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
-        return _render_secrets_backend_content(
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
+        return _common_render_list_content(
             header_separator=header_separator,
+            resource_type="secrets-backends",
+            template="secret_backend.rst.jinja2",
         )
 
 
 class ConnectionsDirective(BaseJinjaReferenceDirective):
     """Generate list of connections"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
-        return _render_connections_content(
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
+        return _common_render_list_content(
             header_separator=header_separator,
+            resource_type="connection-types",
+            template="connections.rst.jinja2",
         )
 
 
 class ExtraLinksDirective(BaseJinjaReferenceDirective):
     """Generate list of extra links"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
-        return _render_extra_links_content(
-            header_separator=header_separator,
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
+        return _common_render_list_content(
+            header_separator=header_separator, resource_type="extra-links", 
template="extra_links.rst.jinja2"
         )
 
 
 class NotificationsDirective(BaseJinjaReferenceDirective):
     """Generate list of notifiers"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
-        return _render_notification_content(
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
+        return _common_render_list_content(
             header_separator=header_separator,
+            resource_type="notifications",
+            template="notifications.rst.jinja2",
         )
 
 
 class ExecutorsDirective(BaseJinjaReferenceDirective):
     """Generate list of executors"""
 
-    def render_content(self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR):
-        return _render_executors_content(
-            header_separator=header_separator,
+    def render_content(
+        self, *, tags: set[str] | None, header_separator: str = 
DEFAULT_HEADER_SEPARATOR
+    ) -> str:
+        return _common_render_list_content(
+            header_separator=header_separator, resource_type="executors", 
template="executors.rst.jinja2"
         )
 
 
@@ -475,35 +376,61 @@ def transfers(tag: Iterable[str], header_separator: str):
 @option_header_separator
 def logging(header_separator: str):
     """Renders Logger content"""
-    print(_render_logging_content(header_separator=header_separator))
+    print(
+        _common_render_list_content(
+            header_separator=header_separator, resource_type="logging", 
template="logging.rst.jinja2"
+        )
+    )
 
 
 @cli.command()
 @option_header_separator
 def auth_backends(header_separator: str):
     """Renders Logger content"""
-    print(_render_auth_backend_content(header_separator=header_separator))
+    print(
+        _common_render_list_content(
+            header_separator=header_separator,
+            resource_type="auth-backends",
+            template="auth_backend.rst.jinja2",
+        )
+    )
 
 
 @cli.command()
 @option_header_separator
 def secret_backends(header_separator: str):
     """Renders Secret Backends content"""
-    print(_render_secrets_backend_content(header_separator=header_separator))
+    print(
+        _common_render_list_content(
+            header_separator=header_separator,
+            resource_type="secrets-backends",
+            template="secret_backend.rst.jinja2",
+        )
+    )
 
 
 @cli.command()
 @option_header_separator
 def connections(header_separator: str):
     """Renders Connections content"""
-    print(_render_connections_content(header_separator=header_separator))
+    print(
+        _common_render_list_content(
+            header_separator=header_separator,
+            resource_type="connection-types",
+            template="connections.rst.jinja2",
+        )
+    )
 
 
 @cli.command()
 @option_header_separator
 def extra_links(header_separator: str):
     """Renders Extra  links content"""
-    print(_render_extra_links_content(header_separator=header_separator))
+    print(
+        _common_render_list_content(
+            header_separator=header_separator, resource_type="extra-links", 
template="extra_links.rst.jinja2"
+        )
+    )
 
 
 if __name__ == "__main__":
diff --git a/docs/exts/secret_backend.rst.jinja2 
b/docs/exts/secret_backend.rst.jinja2
index 52646c22f9..77bd6cf3d9 100644
--- a/docs/exts/secret_backend.rst.jinja2
+++ b/docs/exts/secret_backend.rst.jinja2
@@ -20,7 +20,7 @@
 {{ provider_dict['name'] }}
 {{ header_separator * (provider_dict['name']|length) }}
 
-{% for backend in provider_dict['secrets_backends'] -%}
+{% for backend in provider_dict['secrets-backends'] -%}
 - :class:`~{{ backend }}`
 {% endfor -%}
 

Reply via email to