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 1109ea9003216a4fea1967f4f22cdae955ccd153
Author: Jarek Potiuk <[email protected]>
AuthorDate: Fri Aug 4 19:26:49 2023 +0200

    aDd documentation generation for CLI commands from executors (#33081)
    
    The #29055 moved relevant CLI command definition to executors but
    it automatically removed the command from generated documentation.
    
    This PR brings it back for both Celery and Cncf Kubernetes provider
    
    Closes: #27932
    (cherry picked from commit 879fd34e97a5343e6d2bbf3d5373831b9641b5ad)
---
 airflow/executors/base_executor.py                 | 17 ++++++++++++++-
 .../providers/celery/executors/celery_executor.py  |  9 ++++++++
 .../kubernetes/executors/kubernetes_executor.py    |  9 ++++++++
 docs/apache-airflow-providers-celery/cli-ref.rst   | 24 ++++++++++++++++++++++
 docs/apache-airflow-providers-celery/index.rst     |  1 +
 .../cli-ref.rst                                    | 24 ++++++++++++++++++++++
 .../index.rst                                      |  1 +
 7 files changed, 84 insertions(+), 1 deletion(-)

diff --git a/airflow/executors/base_executor.py 
b/airflow/executors/base_executor.py
index 10aebbeb3d..97de6be1fa 100644
--- a/airflow/executors/base_executor.py
+++ b/airflow/executors/base_executor.py
@@ -17,6 +17,7 @@
 """Base executor - this is the base class for all the implemented executors."""
 from __future__ import annotations
 
+import argparse
 import logging
 import sys
 import warnings
@@ -27,7 +28,7 @@ from typing import TYPE_CHECKING, Any, List, Optional, 
Sequence, Tuple
 
 import pendulum
 
-from airflow.cli.cli_config import GroupCommand
+from airflow.cli.cli_config import DefaultHelpParser, GroupCommand
 from airflow.configuration import conf
 from airflow.exceptions import RemovedInAirflow3Warning
 from airflow.stats import Stats
@@ -489,3 +490,17 @@ class BaseExecutor(LoggingMixin):
         be commands to setup/teardown the executor, inspect state, etc.
         """
         return []
+
+    @classmethod
+    def _get_parser(cls) -> argparse.ArgumentParser:
+        """This method is used by Sphinx argparse to generate documentation.
+
+        :meta private:
+        """
+        from airflow.cli.cli_parser import AirflowHelpFormatter, _add_command
+
+        parser = DefaultHelpParser(prog="airflow", 
formatter_class=AirflowHelpFormatter)
+        subparsers = parser.add_subparsers(dest="subcommand", 
metavar="GROUP_OR_COMMAND")
+        for group_command in cls.get_cli_commands():
+            _add_command(subparsers, group_command)
+        return parser
diff --git a/airflow/providers/celery/executors/celery_executor.py 
b/airflow/providers/celery/executors/celery_executor.py
index 4708ef2137..8bdff2a25e 100644
--- a/airflow/providers/celery/executors/celery_executor.py
+++ b/airflow/providers/celery/executors/celery_executor.py
@@ -23,6 +23,7 @@
 """
 from __future__ import annotations
 
+import argparse
 import logging
 import math
 import operator
@@ -480,3 +481,11 @@ class CeleryExecutor(BaseExecutor):
                 subcommands=CELERY_COMMANDS,
             ),
         ]
+
+
+def _get_parser() -> argparse.ArgumentParser:
+    """This method is used by Sphinx to generate documentation.
+
+    :meta private:
+    """
+    return CeleryExecutor._get_parser()
diff --git a/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py 
b/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py
index 051686c8d5..5e6679556a 100644
--- a/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py
+++ b/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py
@@ -23,6 +23,7 @@ KubernetesExecutor.
 """
 from __future__ import annotations
 
+import argparse
 import json
 import logging
 import multiprocessing
@@ -728,3 +729,11 @@ class KubernetesExecutor(BaseExecutor):
                 subcommands=KUBERNETES_COMMANDS,
             )
         ]
+
+
+def _get_parser() -> argparse.ArgumentParser:
+    """This method is used by Sphinx to generate documentation.
+
+    :meta private:
+    """
+    return KubernetesExecutor._get_parser()
diff --git a/docs/apache-airflow-providers-celery/cli-ref.rst 
b/docs/apache-airflow-providers-celery/cli-ref.rst
new file mode 100644
index 0000000000..4a3b4074be
--- /dev/null
+++ b/docs/apache-airflow-providers-celery/cli-ref.rst
@@ -0,0 +1,24 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+Celery Executor Commands
+------------------------
+
+.. argparse::
+   :module: airflow.providers.celery.executors.celery_executor
+   :func: _get_parser
+   :prog: airflow
diff --git a/docs/apache-airflow-providers-celery/index.rst 
b/docs/apache-airflow-providers-celery/index.rst
index 88a2a0ddd3..af6371aa53 100644
--- a/docs/apache-airflow-providers-celery/index.rst
+++ b/docs/apache-airflow-providers-celery/index.rst
@@ -35,6 +35,7 @@
     :caption: References
 
     Configuration <configurations-ref>
+    CLI <cli-ref>
     Python API <_api/airflow/providers/celery/index>
     PyPI Repository <https://pypi.org/project/apache-airflow-providers-celery/>
     Installing from sources <installing-providers-from-sources>
diff --git a/docs/apache-airflow-providers-cncf-kubernetes/cli-ref.rst 
b/docs/apache-airflow-providers-cncf-kubernetes/cli-ref.rst
new file mode 100644
index 0000000000..88497a1748
--- /dev/null
+++ b/docs/apache-airflow-providers-cncf-kubernetes/cli-ref.rst
@@ -0,0 +1,24 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+Kubernetes Executor Commands
+============================
+
+.. argparse::
+   :module: airflow.providers.cncf.kubernetes.executors.kubernetes_executor
+   :func: _get_parser
+   :prog: airflow
diff --git a/docs/apache-airflow-providers-cncf-kubernetes/index.rst 
b/docs/apache-airflow-providers-cncf-kubernetes/index.rst
index 59af13dd9f..61ce4fb714 100644
--- a/docs/apache-airflow-providers-cncf-kubernetes/index.rst
+++ b/docs/apache-airflow-providers-cncf-kubernetes/index.rst
@@ -43,6 +43,7 @@
     :caption: References
 
     Configuration <configurations-ref>
+    CLI <cli-ref>
     Python API <_api/airflow/providers/cncf/kubernetes/index>
 
 .. toctree::

Reply via email to