o
    ¼­§i©C  ã                   @   sª   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d d	lmZmZ d
d„ ZG dd„ dƒZG dd„ dƒZG dd„ dƒZdS )é    N)Ú
xform_name)ÚOrderedDict)ÚDocumentStructure)ÚResponseExampleDocumenter)Údocument_custom_methodÚdocument_model_driven_methodÚget_instance_public_methods)ÚResponseParamsDocumenter)Údocument_shared_examples)ÚDocumentedShapeÚget_official_service_namec                 K   s   | dkrd S |dv S )NZgenerate_presigned_url)Ús3© )Úmethod_nameÚservice_nameÚkwargsr   r   úK/home/app/Keep/.python/lib/python3.10/site-packages/botocore/docs/client.pyÚ!_allowlist_generate_presigned_url   s   r   c                   @   sŒ   e Zd ZegZd dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )!ÚClientDocumenterNc                 C   s@   || _ | j jj| _|| _|| _| jd u ri | _| j jjj| _	d S ©N)
Ú_clientÚ	__class__Ú__name__Ú_client_class_nameÚ_root_docs_pathÚ_shared_examplesÚmetaÚservice_modelr   Ú_service_name)ÚselfÚclientÚroot_docs_pathÚshared_examplesr   r   r   Ú__init__(   s   
zClientDocumenter.__init__c                 C   s6   |   |¡ |  |¡ |  ¡ }|  ||¡ |  |¡ dS )z]Documents a client and its methods

        :param section: The section to write to.
        N)Ú
_add_titleÚ_add_class_signatureÚ_get_client_methodsÚ_add_client_introÚ_add_client_methods)r   ÚsectionÚclient_methodsr   r   r   Údocument_client1   s
   

z ClientDocumenter.document_clientc                 C   s   t | jƒ}|  |¡S r   )r   r   Ú_filter_client_methods)r   r*   r   r   r   r&   <   s   

z$ClientDocumenter._get_client_methodsc                 C   s8   i }|  ¡ D ]\}}| j||| jd}|r|||< q|S )N)Úmethodr   r   )ÚitemsÚ_filter_client_methodr   )r   r*   Zfiltered_methodsr   r-   Úincluder   r   r   r,   @   s   ý€z'ClientDocumenter._filter_client_methodsc                 K   s.   | j D ]}|di |¤Ž}|d ur|  S qdS )NTr   )Ú_CLIENT_METHODS_FILTERS)r   r   ÚfilterZfilter_includer   r   r   r/   L   s   
ÿz&ClientDocumenter._filter_client_methodc                 C   ó   |j  d¡ d S )NZClient©ÚstyleZh2©r   r)   r   r   r   r$   V   ó   zClientDocumenter._add_titlec                 C   s    |  d¡}t| jjjƒ}| d|› ¡ |j ¡  | | jjjj	¡ |  
|¡ |j ¡  |j ¡  | d¡ |j ¡  t|ƒD ]}|j | j› d|› ¡ q?d S )NZintroz A low-level client representing z These are the available methods:z/client/)Úadd_new_sectionr   r   r   r   Úwriter5   Únew_lineÚinclude_doc_stringÚdocumentationÚ_add_client_creation_exampleÚdedentÚnew_paragraphÚwritelnÚtoctreeÚsortedÚtocitemr   )r   r)   r*   Zofficial_service_namer   r   r   r   r'   Y   s&   
ÿÿ

ÿ




ÿz"ClientDocumenter._add_client_introc                 C   s   |j j| j› dd d S )Nz.Client©Ú
class_name)r5   Ústart_sphinx_py_classr   r6   r   r   r   r%   r   s   

ÿz%ClientDocumenter._add_class_signaturec                 C   s6   |j  ¡  |j  ¡  | d| j› d¡ |j  ¡  d S )Nz client = session.create_client('z'))r5   Ústart_codeblockr:   r9   r   Úend_codeblockr6   r   r   r   r=   w   s   

ÿz-ClientDocumenter._add_client_creation_examplec                 C   sP   t |ƒD ]!}t|dd}|  |||| ¡ tj | j| jd¡}| ||¡ qd S )NÚhtml©Útargetr    )	rB   r   Ú_add_client_methodÚosÚpathÚjoinr   r   Úwrite_to_file)r   r*   r   Zmethod_doc_structureZclient_dir_pathr   r   r   r(      s   ÿ
ÿ
ÿóz$ClientDocumenter._add_client_methodsc                 C   s‚   |  d¡}|j | jd| j› ¡ | d|› ¡ | |¡ |j |d| j› did}|  |¡r9|  |||¡ d S |  	||¡ d S )NÚ
breadcrumbz../../z / Client / Ú	qualifierz.Client.)Úcontext)
r8   r5   Úrefr   r   r9   Úadd_title_sectionÚ_is_custom_methodÚ_add_custom_methodÚ_add_model_driven_method)r   r)   r   r-   Úbreadcrumb_sectionZmethod_sectionr   r   r   rL      s"   
ÿ
þ
ýz#ClientDocumenter._add_client_methodc                 C   s   || j jjvS r   )r   r   Úmethod_to_api_mapping)r   r   r   r   r   rV   £   s   z"ClientDocumenter._is_custom_methodc                 C   s   t |||ƒ d S r   )r   )r   r)   r   r-   r   r   r   rW   ¦   r7   z#ClientDocumenter._add_custom_methodc                 C   s`   |  d¡}|j ¡  |j d¡ |j ¡  |jD ]}| j› d|j› }|j d|› d¡ qd S )NÚ
exceptionsZ
Exceptionsú.Client.exceptions.z:py:class:`ú`)r8   r5   r:   ÚboldÚerror_shapesr   ÚnameZli)r   r)   Úoperation_modelZerror_sectionÚerrorrE   r   r   r   Ú_add_method_exceptions_list©   s   



ÿüz,ClientDocumenter._add_method_exceptions_listc           	      C   s–   | j jj}| j jj| }| |¡}d|› }|j dd¡› |› }t|||| j jj|j	|d |j
r8|  ||¡ | j |¡}|rIt||||ƒ d S d S )Nzresponse = client.rR   Ú )Úevent_emitterZmethod_descriptionÚexample_prefix)r   r   r   rZ   ra   rS   Úgetr   Úeventsr<   r_   rc   r   r
   )	r   r)   r   r   Úoperation_namera   rf   Zfull_method_namer"   r   r   r   rX   ´   s,   


ÿú
ÿÿz)ClientDocumenter._add_model_driven_methodr   )r   Ú
__module__Ú__qualname__r   r1   r#   r+   r&   r,   r/   r$   r'   r%   r=   r(   rL   rV   rW   rc   rX   r   r   r   r   r   #   s$    ÿ
	
r   c                   @   s´   e Zd ZdZedddededdddfd	ed	dd
dfgƒdZdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(S ))ÚClientExceptionsDocumenterzQhttps://boto3.amazonaws.com/v1/documentation/api/latest/guide/error-handling.htmlÚErrorZ	structurez1Normalized access to common exception attributes.ZCodeÚstringz,An identifier specifying the exception type.)r`   Ú	type_namer<   ÚMessagez;A descriptive message explaining why the exception occured.)r`   ro   r<   Úmembersc                 C   s*   || _ | j jj| _| j jjj| _|| _d S r   )	r   r   r   r   r   r   r   r   r   )r   r    r!   r   r   r   r#   ö   s   
z#ClientExceptionsDocumenter.__init__c                 C   s*   |   |¡ |  |¡ |  |¡ |  ¡  d S r   )r$   Ú_add_overviewÚ_add_exceptions_listÚ_add_exception_classesr6   r   r   r   Údocument_exceptionsü   s   


z.ClientExceptionsDocumenter.document_exceptionsc                 C   r3   )NzClient Exceptionsr4   r6   r   r   r   r$     r7   z%ClientExceptionsDocumenter._add_titlec                 C   ó>   |j  ¡  | d¡ |j jd| jd | d¡ |j  ¡  d S )NzÂClient exceptions are available on a client instance via the ``exceptions`` property. For more detailed instructions and examples on the exact usage of client exceptions, see the error handling z
user guide©ÚtitleÚlinkÚ.)r5   r:   r9   Úexternal_linkÚ_USER_GUIDE_LINKr6   r   r   r   rr     ó   
ÿþ
z(ClientExceptionsDocumenter._add_overviewc                 C   s   | j › d|j› S )Nr\   )r   r`   )r   Úshaper   r   r   Ú_exception_class_name  s   z0ClientExceptionsDocumenter._exception_class_namec                 C   sx   | j jjj}|s|j ¡  | d¡ |j ¡  d S |j ¡  | d¡ |j ¡  |D ]}|j 	| j
› d|j› ¡ q*d S )Nz-This client has no modeled exception classes.z$The available client exceptions are:z/client/exceptions/)r   r   r   r_   r5   r:   r9   r@   rA   rC   r   r`   )r   r)   r_   r~   r   r   r   rs     s   





ÿÿz/ClientExceptionsDocumenter._add_exceptions_listc                 C   sT   | j jjjD ]!}t|jdd}|  ||¡ tj 	| j
| jdd¡}| ||j¡ qd S )NrI   rJ   r    r[   )r   r   r   r_   r   r`   Ú_add_exception_classrM   rN   rO   r   r   rP   )r   r~   Zexception_doc_structureZexception_dir_pathr   r   r   rt   &  s   ÿüÿòz1ClientExceptionsDocumenter._add_exception_classesc                 C   s–   |  d¡}|j | jd| j› ¡ | d|j› ¡ | |j¡ |  |j¡}|  |¡}|jj	|d |  
||¡ |  ||¡ |  ||¡ |j ¡  d S )NrQ   z	../../../z / Client / exceptions / rD   )r8   r5   rT   r   r   r9   r`   rU   r   rF   Ú_add_top_level_documentationÚ_add_exception_catch_exampleÚ_add_response_attrZend_sphinx_py_class)r   r)   r~   rY   Zclass_sectionrE   r   r   r   r€   9  s   
ÿ
z/ClientExceptionsDocumenter._add_exception_classc                 C   s.   |j r|j ¡  | |j ¡ |j ¡  d S d S r   )r<   r5   r:   r;   ©r   r)   r~   r   r   r   r   H  s
   
ýz7ClientExceptionsDocumenter._add_top_level_documentationc                 C   s°   |j  ¡  |j  d¡ |j  ¡  |j  ¡  | d¡ |j  ¡  |j  ¡  | d¡ |j  ¡  |j  ¡  | d|j› d¡ |j  ¡  |j  ¡  | d¡ |j  ¡  |j  	¡  d S )NZExampleztry:z...zexcept client.exceptions.z as e:zprint(e.response))
r5   r:   r^   r?   rG   r9   Úindentr>   r`   rH   r„   r   r   r   r‚   N  s    












z7ClientExceptionsDocumenter._add_exception_catch_examplec                 C   sF   |  d¡}|j d¡ |  |¡ |  ||¡ |  ||¡ |j ¡  d S )NÚresponse)r8   r5   Zstart_sphinx_py_attrÚ_add_response_attr_descriptionÚ_add_response_exampleÚ_add_response_paramsZend_sphinx_py_attr)r   r)   r~   Zresponse_sectionr   r   r   rƒ   `  s   

z-ClientExceptionsDocumenter._add_response_attrc                 C   s"   |j  ¡  | d¡ |j  ¡  d S )NzÈThe parsed error response. All exceptions have a top level ``Error`` key that provides normalized access to common exception atrributes. All other keys are specific to this service or exception class.)r5   r:   r;   r6   r   r   r   r‡   h  s
   
ÿz9ClientExceptionsDocumenter._add_response_attr_descriptionc                 C   sX   |  d¡}|j ¡  |j d¡ |j ¡  t| jd | jjj	d}|j
||| jgd d S )NÚsyntaxÚSyntax©r   ri   re   ©r0   )r8   r5   r:   r^   r?   r   r   r   r   rh   Zdocument_exampleÚ_GENERIC_ERROR_SHAPE)r   r)   r~   Zexample_sectionÚ
documenterr   r   r   rˆ   r  ó   


ý
ýz0ClientExceptionsDocumenter._add_response_examplec                 C   sX   |  d¡}|j ¡  |j d¡ |j ¡  t| jd | jjj	d}|j
||| jgd d S )NZ	StructurerŒ   r   )r8   r5   r:   r^   r?   r	   r   r   r   rh   Zdocument_paramsrŽ   )r   r)   r~   Zparams_sectionr   r   r   r   r‰   ‚  r   z/ClientExceptionsDocumenter._add_response_paramsN)r   rj   rk   r|   r   r   rŽ   r#   ru   r$   rr   r   rs   rt   r€   r   r‚   rƒ   r‡   rˆ   r‰   r   r   r   r   rl   Ò   sN    ÿüþüþõÿü
rl   c                   @   sB   e Zd ZdZdddœZdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚClientContextParamsDocumenterzPhttps://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html)Z
AccelerateZDisableMultiRegionAccessPointsZForcePathStyleÚUseArnRegion)r’   )r   Z	s3controlc                 C   s   || _ || _d S r   )r   Ú_context_params)r   r   Zcontext_paramsr   r   r   r#   £  s   
z&ClientContextParamsDocumenter.__init__c                 C   s"   |   |¡ |  |¡ |  |¡ d S r   )r$   rr   Ú_add_context_params_listr6   r   r   r   Údocument_context_params§  s   

z5ClientContextParamsDocumenter.document_context_paramsc                 C   r3   )NzClient Context Parametersr4   r6   r   r   r   r$   ¬  r7   z(ClientContextParamsDocumenter._add_titlec                 C   rv   )NzßClient context parameters are configurable on a client instance via the ``client_context_params`` parameter in the ``Config`` object. For more detailed instructions and examples on the exact usage of context params see the zconfiguration guiderw   rz   )r5   r:   r9   r{   Ú_CONFIG_GUIDE_LINKr6   r   r   r   rr   ¯  r}   z+ClientContextParamsDocumenter._add_overviewc              	   C   sv   |j  ¡  d| j› d}| d|› d¡ | jD ] }|j  ¡  dt|jƒ› d}| d|› d|j› d|j	› ¡ qd S )Nz``zThe available z client context params are:z* z (z) - )
r5   r:   r   r@   r“   r   r`   r9   Útyper<   )r   r)   ZsnÚparamr`   r   r   r   r”   ¾  s   


"ýz6ClientContextParamsDocumenter._add_context_params_listN)
r   rj   rk   r–   ZOMITTED_CONTEXT_PARAMSr#   r•   r$   rr   r”   r   r   r   r   r‘   “  s    ÿù
r‘   )rM   Zbotocorer   Zbotocore.compatr   Zbotocore.docs.bcdoc.restdocr   Zbotocore.docs.exampler   Zbotocore.docs.methodr   r   r   Zbotocore.docs.paramsr	   Zbotocore.docs.sharedexampler
   Zbotocore.docs.utilsr   r   r   r   rl   r‘   r   r   r   r   Ú<module>   s    0 B