o
    .&ßa,  ć                   @   sL   d dl mZ d dlmZ G dd deZG dd deZG dd deZd	S )
é    )ŚShapeDocumenter)Śpy_type_namec                   @   s~   e Zd ZdddZdd Z		dddZ		ddd	Z		dd
dZ		dddZdd Z	dd Z
dd Zdd Zdd ZdS )ŚBaseParamsDocumenterNc                 C   s   g }| j |||d||d dS )a3  Fills out the documentation for a section given a model shape.

        :param section: The section to write the documentation to.

        :param shape: The shape of the operation.

        :type include: Dictionary where keys are parameter names and
            values are the shapes of the parameter names.
        :param include: The parameter shapes to include in the documentation.

        :type exclude: List of the names of the parameters to exclude.
        :param exclude: The names of the parameters to exclude from
            documentation.
        N)ŚsectionŚshapeŚhistoryŚnameŚincludeŚexclude)Śtraverse_and_document_shape)Śselfr   r   r	   r
   r   © r   ś6/usr/lib/python3/dist-packages/botocore/docs/params.pyŚdocument_params   s
   
žz$BaseParamsDocumenter.document_paramsc                 K   s   | j ||fi |¤ d S ©N©Ś_add_member_documentation©r   r   r   Śkwargsr   r   r   Śdocument_recursive_shape&   s   z-BaseParamsDocumenter.document_recursive_shapec                 K   s   | j ||fi |¤ d S r   r   )r   r   r   r   r	   r
   r   r   r   r   Śdocument_shape_default)   s   z+BaseParamsDocumenter.document_shape_defaultc           	      K   sf   | j ||fi |¤ |j}|j|jd|jjid}|  |” | j|||d d | d”}|  |” d S )Nr   ©Ścontext©r   r   r   r   zend-list)r   ŚmemberŚadd_new_sectionr   Ś_start_nested_paramr   Ś_end_nested_param)	r   r   r   r   r	   r
   r   Śparam_shapeŚparam_sectionr   r   r   Śdocument_shape_type_list-   s   ’
ž
z-BaseParamsDocumenter.document_shape_type_listc           
      K   s¦   | j ||fi |¤ |jdd|jjid}|  |” |   ||j” |j|jjd|jjid}|j ”  |  |” | j||j|d d | d”}	|  	|	” |  	|	” d S )NŚkeyr   r   r   zend-map)
r   r   r!   r   r   ŚvalueŚstyleŚindentr   r   )
r   r   r   r   r	   r
   r   Śkey_sectionr   Śend_sectionr   r   r   Śdocument_shape_type_map:   s$   ’
’

ž

z,BaseParamsDocumenter.document_shape_type_mapc                 K   s   |   |j|”}| j|||d |D ]%}	|r|	|v rq||	 }
|j|	d|
jid}|  |” | j||
||	d q| d”}|  |” d S )N)r   r   r   r   śend-structure)Ś_add_members_to_shapeŚmembersr   r   r   r   r   r   )r   r   r   r   r	   r
   r   r   r*   Śparamr   r   r   r   r   Śdocument_shape_type_structureO   s    
’
ž
z2BaseParamsDocumenter.document_shape_type_structurec                 K   s   d S r   r   r   r   r   r   r   a   s   z.BaseParamsDocumenter._add_member_documentationc                 C   s$   |r|  ” }|D ]}|||j< q|S r   )Ścopyr   )r   r*   r	   r+   r   r   r   r)   d   s
   z*BaseParamsDocumenter._add_members_to_shapec                 C   sF   |   |”}t|j}d}|d ur| || ” d S |j || ” d S )Nz(%s) -- )Ś_get_special_py_type_namer   Ś	type_nameŚwriter#   Śitalics)r   Śtype_sectionr   Śspecial_py_typeŚpy_typeŚtype_formatr   r   r   Ś"_document_non_top_level_param_typek   s   

z7BaseParamsDocumenter._document_non_top_level_param_typec                 C   ó   |j  ”  |j  ”  d S r   )r#   r$   Śnew_line©r   r   r   r   r   r   w   ó   
z(BaseParamsDocumenter._start_nested_paramc                 C   r7   r   )r#   Śdedentr8   r9   r   r   r   r   {   r:   z&BaseParamsDocumenter._end_nested_param©NN)NNN)Ś__name__Ś
__module__Ś__qualname__r   r   r   r    r'   r,   r   r)   r6   r   r   r   r   r   r   r      s(    

’
’
’
žr   c                   @   s&   e Zd ZdZdZdddZdd ZdS )	ŚResponseParamsDocumenterz5Generates the description for the response parameterszresponse-paramsNc                 K   sŅ   |  d”}| d” |d ur|j d| ” |  d”}|  ||” |  d”}|jrb|j ”  t|ddr\|  d”}d	}	d
 dd |j	 
” D ”}
d}| |	|
 ” |  d”}|j |” | |j” |j ”  d S )Nś
param-nameś- ś%s ś
param-typeśparam-documentationŚis_tagged_unionFśparam-tagged-union-docsaK  .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: %s.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as followsś, c                 S   ó   g | ]}d | qS ©z``%s``r   ©Ś.0r!   r   r   r   Ś
<listcomp>   ó    zFResponseParamsDocumenter._add_member_documentation.<locals>.<listcomp>z3'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}zparam-unknown-example)r   r0   r#   Śboldr6   Śdocumentationr$   ŚgetattrŚjoinr*   ŚkeysŚ	codeblockŚinclude_doc_stringŚnew_paragraph)r   r   r   r   r   Śname_sectionr2   Śdocumentation_sectionŚtagged_union_docsŚnoteŚtagged_union_members_strŚunknown_code_exampleŚexampler   r   r   r      s0   




’’
’
z2ResponseParamsDocumenter._add_member_documentationc                 K   s   | j |||fi |¤ d S r   )r,   )r   r   r   r   r   r   r   r   Ś document_shape_type_event_stream©   s   z9ResponseParamsDocumenter.document_shape_type_event_streamr   )r=   r>   r?   Ś__doc__Ś
EVENT_NAMEr   r^   r   r   r   r   r@      s
    
$r@   c                   @   s>   e Zd ZdZdZ	dddZ		dddZd	d
 Zdd ZdS )ŚRequestParamsDocumenterz4Generates the description for the request parameterszrequest-paramsNc                 K   sŹ   t |dkr| j||fi |¤ |j ”  |  |j|”}t|D ]-\}}	|r+|	|v r+q ||	 }
|j|	d|
jid}|j 	”  |	|j
v }| j||
||	|d q | d”}t |dkr^|j ”  |j 	”  d S )Né   r   r   )r   r   r   r   Śis_requiredr(   )Ślenr   r#   r$   r)   r*   Ś	enumerater   r   r8   Śrequired_membersr   r;   )r   r   r   r   r	   r
   r   r*   Śir+   r   r   rc   r   r   r   r,   ³   s*   

’

ž

z5RequestParamsDocumenter.document_shape_type_structureFc                 K   s\  |   |”}|d u rt|j}|r5| d”}| d||f ” | d”}	|	j ”  | d”}
|
 d| ” n!| d”}
|
 d” |d urK|
j d| ” | d”}|  ||” |rh| d”}|j 	”  |j d	” |j
r¢| d
”}|j 	”  t|ddr| d”}d}d dd |j ” D ”}| || ” | |j
” |  ||” | d”}|j ”  d S )NrD   z:type %s: %szend-param-typerA   z:param %s: rB   rC   zis-requiredz[REQUIRED] rE   rF   FrG   zl.. note::    This is a Tagged Union structure. Only one of the     following top level keys can be set: %s. rH   c                 S   rI   rJ   r   rK   r   r   r   rM   ń   rN   zERequestParamsDocumenter._add_member_documentation.<locals>.<listcomp>z	end-param)r.   r   r/   r   r0   r#   r8   rO   r6   r$   rP   rQ   rR   r*   rS   rU   Ś _add_special_trait_documentationrV   )r   r   r   r   Śis_top_level_paramrc   r   r4   r2   Śend_type_sectionrW   Śis_required_sectionrX   rY   rZ   r[   Śend_param_sectionr   r   r   r   É   sN   










’
’’’
z1RequestParamsDocumenter._add_member_documentationc                 C   s   d|j v r|  |” d S d S )NŚidempotencyToken)ŚmetadataŚ!_append_idempotency_documentation)r   r   r   r   r   r   rh   ł   s   
’z8RequestParamsDocumenter._add_special_trait_documentationc                 C   s   d}|  |” d S )Nz,This field is autopopulated if not provided.)r0   )r   r   Ś	docstringr   r   r   ro   ż   s   z9RequestParamsDocumenter._append_idempotency_documentationr<   )NFF)	r=   r>   r?   r_   r`   r,   r   rh   ro   r   r   r   r   ra   ®   s    
’
’0ra   N)Śbotocore.docs.shaper   Śbotocore.docs.utilsr   r   r@   ra   r   r   r   r   Ś<module>   s
   o.