o
    OD©iĻ-  ć                   @   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                   @   sz   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   śM/var/www/Datamplify/venv/lib/python3.10/site-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_list3   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_mapE   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_structure`   s$   

’
ü
z2BaseParamsDocumenter.document_shape_type_structurec                 K   s   d S r   r   r   r   r   r   r   }   s   z.BaseParamsDocumenter._add_member_documentationc                 C   s$   |r|  ” }|D ]}|||j< q|S r   )Ścopyr   )r   r*   r	   r+   r   r   r   r)      s
   z*BaseParamsDocumenter._add_members_to_shapec                 C   sN   |   |”}t|j}d}|d ur| || ” n|j || ” | d” 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_type   s   

z7BaseParamsDocumenter._document_non_top_level_param_typec                 C   ó   |j  ”  |j  ”  d S r   )r#   r$   Śnew_line©r   r   r   r   r   r      ó   
z(BaseParamsDocumenter._start_nested_paramc                 C   r8   r   )r#   Śdedentr9   r:   r   r   r   r      r;   z&BaseParamsDocumenter._end_nested_param©NN)NNN)Ś__name__Ś
__module__Ś__qualname__r   r   r   r    r'   r,   r   r)   r7   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rf|j ”  t|ddr`|  d”}d	}	d
 dd |j	 
” D ”}
d}| |	|
 ” |  d”}|j |” | |j” |j ”  d S )Nś
param-nameś- r.   ś
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 | d qS ©z``r   ©Ś.0r!   r   r   r   Ś
<listcomp>½   ó    zFResponseParamsDocumenter._add_member_documentation.<locals>.<listcomp>z3'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}zparam-unknown-example)r   r1   r#   Śboldr7   Śdocumentationr$   ŚgetattrŚjoinr*   ŚkeysŚ	codeblockŚinclude_doc_stringŚnew_paragraph)r   r   r   r   r   Śname_sectionr3   Śdocumentation_sectionŚtagged_union_docsŚnoteŚtagged_union_members_strŚunknown_code_exampleŚexampler   r   r   r   ¢   s4   





’’
’’
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   rA      s
    
&rA   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   r9   Śrequired_membersr   r<   )r   r   r   r   r	   r
   r   r*   Śir+   r   r   rc   r   r   r   r,   Ó   s0   

’

ū

z5RequestParamsDocumenter.document_shape_type_structureFc                 K   sv  |   |”}|d u rt|j}|r9| d”}| d| d| ” | d”}	|	j ”  | d”}
|
 d| d” n%| d”}
|
 d” |d urS|
j | ” |
 d” | d”}|  ||” |ru| d	”}|j 	”  |j d
” | d” |j
rÆ| d”}|j 	”  t|ddr£| d”}d}d dd |j ” D ”}| || ” | |j
” |  ||” | d”}|j ”  d S )NrD   z:type z: zend-param-typerB   z:param rC   r.   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   r0   r   r1   r#   r9   rO   r7   r$   rP   rQ   rR   r*   rS   rU   Ś _add_special_trait_documentationrV   )r   r   r   r   Śis_top_level_paramrc   r   r5   r3   Śend_type_sectionrW   Śis_required_sectionrX   rY   rZ   r[   Śend_param_sectionr   r   r   r   ļ   sR   
	











’
’’’
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.)r1   )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    
’ 
ś9ra   N)Śbotocore.docs.shaper   Śbotocore.docs.utilsr   r   rA   ra   r   r   r   r   Ś<module>   s    1