o
    zl~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 )NÚgenerate_presigned_url)Ús3© )Úmethod_nameÚservice_nameÚkwargsr   r   ú[/var/www/newdalilibackend/backend/venv/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+   Ú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   ÚfilterÚfilter_includer   r   r   r0   L   s   
ÿz&ClientDocumenter._filter_client_methodc                 C   ó   |j  d¡ d S )NÚClient©ÚstyleÚ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 )NÚintroz A low-level client representing z These are the available methods:z/client/)Úadd_new_sectionr   r   r   r   Úwriter9   Únew_lineÚinclude_doc_stringÚdocumentationÚ_add_client_creation_exampleÚdedentÚnew_paragraphÚwritelnÚtoctreeÚsortedÚtocitemr   )r    r*   r+   Ú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)r9   Ústart_sphinx_py_classr   r;   r   r   r   r&   r   s   

ÿz%ClientDocumenter._add_class_signaturec                 C   s6   |j  ¡  |j  ¡  | dj| jd¡ |j  ¡  d S )Nz+client = session.create_client('{service}'))Úservice)r9   Ústart_codeblockr@   r?   Úformatr   Úend_codeblockr;   r   r   r   rC   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!   )	rH   r   Ú_add_client_methodÚosÚpathÚjoinr   r   Úwrite_to_file)r    r+   r   Úmethod_doc_structureÚ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)
r>   r9   Úrefr   r   r?   Úadd_title_sectionÚ_is_custom_methodÚ_add_custom_methodÚ_add_model_driven_method)r    r*   r   r.   Úbreadcrumb_sectionÚmethod_sectionr   r   r   rU   ‘   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   ra   ¥   s   z"ClientDocumenter._is_custom_methodc                 C   s   t |||ƒ d S r   )r   )r    r*   r   r.   r   r   r   rb   ¨   r<   z#ClientDocumenter._add_custom_methodc                 C   s\   |  d¡}|j ¡  |j d¡ |j ¡  |jD ]}| j› d|j› }|j d| ¡ qd S )NÚ
exceptionsÚ
Exceptionsú.Client.exceptions.z:py:class:`%s`)r>   r9   r@   ÚboldÚerror_shapesr   ÚnameÚli)r    r*   Úoperation_modelÚerror_sectionÚerrorrL   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
r7|  ||¡ | j |¡}|rHt||||ƒ d S d S )Nzresponse = client.%sr]   Ú )Úevent_emitterÚmethod_descriptionÚexample_prefix)r   r   r   rf   rn   r^   Úgetr   ÚeventsrB   rk   rq   r   r
   )	r    r*   r   r   Úoperation_namern   ru   Úfull_method_namer#   r   r   r   rc   ¶   s,   

ÿú
ÿÿz)ClientDocumenter._add_model_driven_methodr   )r   Ú
__module__Ú__qualname__r   r3   r$   r,   r'   r-   r0   r%   r(   r&   rC   r)   rU   ra   rb   rq   rc   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ÚErrorÚ	structurez1Normalized access to common exception attributes.ÚCodeÚstringz,An identifier specifying the exception type.)rl   Ú	type_namerB   ÚMessagez;A descriptive message explaining why the exception occured.)rl   r   rB   Ú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_classesr;   r   r   r   Údocument_exceptionsþ   s   


z.ClientExceptionsDocumenter.document_exceptionsc                 C   r6   )NzClient Exceptionsr8   r;   r   r   r   r%     r<   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Ú.)r9   r@   r?   Úexternal_linkÚ_USER_GUIDE_LINKr;   r   r   r   r„     ó   
ÿþ
z(ClientExceptionsDocumenter._add_overviewc                 C   s   | j › d|j› S )Nri   )r   rl   )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   rk   r9   r@   r?   rF   rG   rI   r   rl   )r    r*   rk   r   r   r   r   r…     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 )NrR   rS   r!   rg   )r   r   r   rk   r   rl   Ú_add_exception_classrV   rW   rX   r   r   rY   )r    r   Úexception_doc_structureÚexception_dir_pathr   r   r   r†   (  s   ÿüÿòz1ClientExceptionsDocumenter._add_exception_classesc                 C   s–   |  d¡}|j | jd| j› ¡ | d|j› ¡ | |j¡ |  |j¡}|  |¡}|jj	|d |  
||¡ |  ||¡ |  ||¡ |j ¡  d S )Nr\   z	../../../z / Client / exceptions / rK   )r>   r9   r_   r   r   r?   rl   r`   r‘   rM   Ú_add_top_level_documentationÚ_add_exception_catch_exampleÚ_add_response_attrÚend_sphinx_py_class)r    r*   r   rd   Úclass_sectionrL   r   r   r   r’   ;  s   
ÿ
z/ClientExceptionsDocumenter._add_exception_classc                 C   s.   |j r|j ¡  | |j ¡ |j ¡  d S d S r   )rB   r9   r@   rA   ©r    r*   r   r   r   r   r•   J  s
   
ýz7ClientExceptionsDocumenter._add_top_level_documentationc                 C   s¬   |j  ¡  |j  d¡ |j  ¡  |j  ¡  | d¡ |j  ¡  |j  ¡  | d¡ |j  ¡  |j  ¡  | d|j ¡ |j  ¡  |j  ¡  | d¡ |j  ¡  |j  	¡  d S )NÚExampleztry:z...z!except client.exceptions.%s as e:zprint(e.response))
r9   r@   rj   rE   rO   r?   ÚindentrD   rl   rQ   rš   r   r   r   r–   P  s    












z7ClientExceptionsDocumenter._add_exception_catch_examplec                 C   sF   |  d¡}|j d¡ |  |¡ |  ||¡ |  ||¡ |j ¡  d S )NÚresponse)r>   r9   Ústart_sphinx_py_attrÚ_add_response_attr_descriptionÚ_add_response_exampleÚ_add_response_paramsÚend_sphinx_py_attr)r    r*   r   Úresponse_sectionr   r   r   r—   b  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.)r9   r@   rA   r;   r   r   r   rŸ   j  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   rx   rs   ©r2   )r>   r9   r@   rj   rE   r   r   r   r   rw   Údocument_exampleÚ_GENERIC_ERROR_SHAPE)r    r*   r   Úexample_sectionÚ
documenterr   r   r   r    t  ó   


ý
ýz0ClientExceptionsDocumenter._add_response_examplec                 C   sX   |  d¡}|j ¡  |j d¡ |j ¡  t| jd | jjj	d}|j
||| jgd d S )NÚ	Structurer¦   r§   )r>   r9   r@   rj   rE   r	   r   r   r   rw   Údocument_paramsr©   )r    r*   r   Úparams_sectionr«   r   r   r   r¡   „  r¬   z/ClientExceptionsDocumenter._add_response_paramsN)r   rz   r{   rŽ   r   r   r©   r$   r‡   r%   r„   r‘   r…   r†   r’   r•   r–   r—   rŸ   r    r¡   r   r   r   r   r|   Ô   sN    ÿüþüþõÿü
r|   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)Ú
AccelerateÚDisableMultiRegionAccessPointsÚForcePathStyleÚUseArnRegion)r´   )r   Ú	s3controlc                 C   s   || _ || _d S r   )r   Ú_context_params)r    r   Úcontext_paramsr   r   r   r$   ¥  s   
z&ClientContextParamsDocumenter.__init__c                 C   s"   |   |¡ |  |¡ |  |¡ d S r   )r%   r„   Ú_add_context_params_listr;   r   r   r   Údocument_context_params©  s   

z5ClientContextParamsDocumenter.document_context_paramsc                 C   r6   )NzClient Context Parametersr8   r;   r   r   r   r%   ®  r<   z(ClientContextParamsDocumenter._add_titlec                 C   rˆ   )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 guider‰   rŒ   )r9   r@   r?   r   Ú_CONFIG_GUIDE_LINKr;   r   r   r   r„   ±  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) - )
r9   r@   r   rF   r¶   r   rl   r?   ÚtyperB   )r    r*   ÚsnÚparamrl   r   r   r   r¸   À  s   


"ýz6ClientContextParamsDocumenter._add_context_params_listN)
r   rz   r{   rº   ÚOMITTED_CONTEXT_PARAMSr$   r¹   r%   r„   r¸   r   r   r   r   r°   •  s    ÿù
r°   )rV   Úbotocorer   Úbotocore.compatr   Úbotocore.docs.bcdoc.restdocr   Úbotocore.docs.exampler   Úbotocore.docs.methodr   r   r   Úbotocore.docs.paramsr	   Úbotocore.docs.sharedexampler
   Úbotocore.docs.utilsr   r   r   r   r|   r°   r   r   r   r   Ú<module>   s    2 B