# 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 # # https://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.params import ResponseParamsDocumenter from boto3.docs.utils import get_identifier_description class ResourceShapeDocumenter(ResponseParamsDocumenter): EVENT_NAME = 'resource-shape' def document_attribute( section, service_name, resource_name, attr_name, event_emitter, attr_model, include_signature=True, ): if include_signature: full_attr_name = f"{section.context.get('qualifier', '')}{attr_name}" section.style.start_sphinx_py_attr(full_attr_name) # Note that an attribute may have one, may have many, or may have no # operations that back the resource's shape. So we just set the # operation_name to the resource name if we ever to hook in and modify # a particular attribute. ResourceShapeDocumenter( service_name=service_name, operation_name=resource_name, event_emitter=event_emitter, ).document_params(section=section, shape=attr_model) def document_identifier( section, resource_name, identifier_model, include_signature=True, ): if include_signature: full_identifier_name = ( f"{section.context.get('qualifier', '')}{identifier_model.name}" ) section.style.start_sphinx_py_attr(full_identifier_name) description = get_identifier_description( resource_name, identifier_model.name ) section.write(f'*(string)* {description}') def document_reference(section, reference_model, include_signature=True): if include_signature: full_reference_name = ( f"{section.context.get('qualifier', '')}{reference_model.name}" ) section.style.start_sphinx_py_attr(full_reference_name) reference_type = f'(:py:class:`{reference_model.resource.type}`) ' section.write(reference_type) section.include_doc_string( f'The related {reference_model.name} if set, otherwise ``None``.' )