about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/botocore/docs/service.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/botocore/docs/service.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/botocore/docs/service.py')
-rw-r--r--.venv/lib/python3.12/site-packages/botocore/docs/service.py133
1 files changed, 133 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/botocore/docs/service.py b/.venv/lib/python3.12/site-packages/botocore/docs/service.py
new file mode 100644
index 00000000..d20a889d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/botocore/docs/service.py
@@ -0,0 +1,133 @@
+# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file 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.
+from botocore.docs.bcdoc.restdoc import DocumentStructure
+from botocore.docs.client import (
+    ClientContextParamsDocumenter,
+    ClientDocumenter,
+    ClientExceptionsDocumenter,
+)
+from botocore.docs.paginator import PaginatorDocumenter
+from botocore.docs.waiter import WaiterDocumenter
+from botocore.exceptions import DataNotFoundError
+
+
+class ServiceDocumenter:
+    def __init__(self, service_name, session, root_docs_path):
+        self._session = session
+        self._service_name = service_name
+        self._root_docs_path = root_docs_path
+
+        self._client = self._session.create_client(
+            service_name,
+            region_name='us-east-1',
+            aws_access_key_id='foo',
+            aws_secret_access_key='bar',
+        )
+        self._event_emitter = self._client.meta.events
+
+        self.sections = [
+            'title',
+            'client-api',
+            'client-exceptions',
+            'paginator-api',
+            'waiter-api',
+            'client-context-params',
+        ]
+
+    def document_service(self):
+        """Documents an entire service.
+
+        :returns: The reStructured text of the documented service.
+        """
+        doc_structure = DocumentStructure(
+            self._service_name, section_names=self.sections, target='html'
+        )
+        self.title(doc_structure.get_section('title'))
+        self.client_api(doc_structure.get_section('client-api'))
+        self.client_exceptions(doc_structure.get_section('client-exceptions'))
+        self.paginator_api(doc_structure.get_section('paginator-api'))
+        self.waiter_api(doc_structure.get_section('waiter-api'))
+        context_params_section = doc_structure.get_section(
+            'client-context-params'
+        )
+        self.client_context_params(context_params_section)
+        return doc_structure.flush_structure()
+
+    def title(self, section):
+        section.style.h1(self._client.__class__.__name__)
+        self._event_emitter.emit(
+            f"docs.title.{self._service_name}", section=section
+        )
+
+    def table_of_contents(self, section):
+        section.style.table_of_contents(title='Table of Contents', depth=2)
+
+    def client_api(self, section):
+        examples = None
+        try:
+            examples = self.get_examples(self._service_name)
+        except DataNotFoundError:
+            pass
+
+        ClientDocumenter(
+            self._client, self._root_docs_path, examples
+        ).document_client(section)
+
+    def client_exceptions(self, section):
+        ClientExceptionsDocumenter(
+            self._client, self._root_docs_path
+        ).document_exceptions(section)
+
+    def paginator_api(self, section):
+        try:
+            service_paginator_model = self._session.get_paginator_model(
+                self._service_name
+            )
+        except DataNotFoundError:
+            return
+        if service_paginator_model._paginator_config:
+            paginator_documenter = PaginatorDocumenter(
+                self._client, service_paginator_model, self._root_docs_path
+            )
+            paginator_documenter.document_paginators(section)
+
+    def waiter_api(self, section):
+        if self._client.waiter_names:
+            service_waiter_model = self._session.get_waiter_model(
+                self._service_name
+            )
+            waiter_documenter = WaiterDocumenter(
+                self._client, service_waiter_model, self._root_docs_path
+            )
+            waiter_documenter.document_waiters(section)
+
+    def get_examples(self, service_name, api_version=None):
+        loader = self._session.get_component('data_loader')
+        examples = loader.load_service_model(
+            service_name, 'examples-1', api_version
+        )
+        return examples['examples']
+
+    def client_context_params(self, section):
+        omitted_params = ClientContextParamsDocumenter.OMITTED_CONTEXT_PARAMS
+        params_to_omit = omitted_params.get(self._service_name, [])
+        service_model = self._client.meta.service_model
+        raw_context_params = service_model.client_context_parameters
+        context_params = [
+            p for p in raw_context_params if p.name not in params_to_omit
+        ]
+        if context_params:
+            context_param_documenter = ClientContextParamsDocumenter(
+                self._service_name, context_params
+            )
+            context_param_documenter.document_context_params(section)