o
    ܀c                     @   s\   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 G dd deZ	ddd	Zd
S )    )
xform_name)get_service_module_name)BaseDocumenter)add_resource_type_overview!get_identifier_args_for_signatureget_identifier_description!get_identifier_values_for_examplec                   @   s   e Zd Zdd ZdS )SubResourceDocumenterc                 C   sp   t |dddd t| jjjjdd d}g }|| jd< |D ]}||j}|	|j t
|| j|| jd	 qd S )
NzSub-resourceszSub-resources are methods that create a new instance of a child resource. This resource's identifiers get passed along to the child.subresources_intro)sectionresource_typedescription
intro_linkc                 S   s   | j S )N)name)sub_resource r   A/usr/local/lib/python3.10/dist-packages/boto3/docs/subresource.py<lambda>'   s    z>SubResourceDocumenter.document_sub_resources.<locals>.<lambda>)keyzsub-resources)r   resource_namesub_resource_modelservice_model)r   sorted	_resourcemetaresource_modelsubresources
member_mapadd_new_sectionr   appenddocument_sub_resource_resource_name_service_model)selfr   sub_resourcessub_resources_listr   sub_resource_sectionr   r   r   document_sub_resources   s,   


z,SubResourceDocumenter.document_sub_resourcesN)__name__
__module____qualname__r'   r   r   r   r   r	      s    r	   Tc                 C   s  g }|j jD ]}|jdkr|t|j q|r$t|}| j|j	| | 
d}d|j j d}	||	 | 
d}
t|}t|}|j|krJ|}dt|j j||j	|}|
j  |
| |
j  | 
d}|D ]&}t|j	|}	|d| d	 |j  |d
| d|	  |j  qm| 
d}|j  |dt||j j |j  |d|j j d |j  dS )aj  Documents a resource action

    :param section: The section to write to

    :param resource_name: The name of the resource

    :param sub_resource_model: The model of the subresource

    :param service_model: The model of the service

    :param include_signature: Whether or not to include the signature.
        It is useful for generating docstrings.
    inputzmethod-introz
Creates a z
 resource.examplez{} = {}.{}({})paramsz:type z: stringz:param z: returnz:rtype: :py:class:`{}.{}`z:returns: A z	 resourceN)resourceidentifierssourcer   r   targetr   stylestart_sphinx_py_methodr   r   typeinclude_doc_stringr   service_nameformatstart_codeblockwriteend_codeblockr   new_liner   )r   r   r   r   include_signatureidentifiers_needed
identifiersignature_argsmethod_intro_sectionr   example_sectionexample_valuesexample_resource_namer,   param_sectionreturn_sectionr   r   r   r    6   sb   













r    N)T)botocorer   botocore.utilsr   boto3.docs.baser   boto3.docs.utilsr   r   r   r   r	   r    r   r   r   r   <module>   s   "