U
    ÷EZh©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kS )NZgenerate_presigned_url)Ús3© )Úmethod_nameÚservice_nameÚkwargsr   r   ú[/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/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 k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 ]}|f |Ž}|d k	r|  S qdS )NT)Ú_CLIENT_METHODS_FILTERS)r   r   ÚfilterZfilter_includer   r   r   r/   L   s
    


z&ClientDocumenter._filter_client_methodc                 C   s   |j  d¡ d S )NZClient©ÚstyleZh2©r   r)   r   r   r   r$   V   s    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   Úwriter4   Ú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)r4   Ústart_sphinx_py_classr   r5   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'))r4   Ústart_codeblockr8   r7   r   Úend_codeblockr5   r   r   r   r;   w   s    

ÿz-ClientDocumenter._add_client_creation_examplec                 C   sP   t |ƒD ]B}t|dd}|  |||| ¡ tj | j| jd¡}| ||¡ qd S )NÚhtml©Útargetr    )	r@   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}|  |¡rp|  |||¡ n|  	||¡ d S )NÚ
breadcrumbz../../z / Client / Ú	qualifierz.Client.)Úcontext)
r6   r4   Úrefr   r   r7   Úadd_title_sectionÚ_is_custom_methodÚ_add_custom_methodÚ_add_model_driven_method)r   r)   r   r-   Úbreadcrumb_sectionZmethod_sectionr   r   r   rJ      s$    
 
ÿ
þ
ýz#ClientDocumenter._add_client_methodc                 C   s   || j jjkS r   )r   r   Úmethod_to_api_mapping)r   r   r   r   r   rT   £   s    z"ClientDocumenter._is_custom_methodc                 C   s   t |||ƒ d S r   )r   )r   r)   r   r-   r   r   r   rU   ¦   s    z#ClientDocumenter._add_custom_methodc                 C   s`   |  d¡}|j ¡  |j d¡ |j ¡  |jD ]*}| j› d|j› }|j d|› d¡ q0d S )NÚ
exceptionsZ
Exceptionsú.Client.exceptions.z:py:class:`ú`)r6   r4   r8   ÚboldÚerror_shapesr   ÚnameZli)r   r)   Úoperation_modelZerror_sectionÚerrorrC   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
rp|  ||¡ | j |¡}|rŽt||||ƒ d S )Nzresponse = client.rP   Ú )Úevent_emitterZmethod_descriptionÚexample_prefix)r   r   r   rX   r_   rQ   Úgetr   Úeventsr:   r]   ra   r   r
   )	r   r)   r   r   Úoperation_namer_   rd   Zfull_method_namer"   r   r   r   rV   ´   s0    


ÿú
   ÿz)ClientDocumenter._add_model_driven_method)N)r   Ú
__module__Ú__qualname__r   r1   r#   r+   r&   r,   r/   r$   r'   r%   r;   r(   rJ   rT   rU   ra   rV   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^   rm   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_classesr5   r   r   r   Údocument_exceptionsü   s    


z.ClientExceptionsDocumenter.document_exceptionsc                 C   s   |j  d¡ d S )NzClient Exceptionsr3   r5   r   r   r   r$     s    z%ClientExceptionsDocumenter._add_titlec                 C   s>   |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Ú.)r4   r8   r7   Úexternal_linkÚ_USER_GUIDE_LINKr5   r   r   r   rp     s    
ÿþ
z(ClientExceptionsDocumenter._add_overviewc                 C   s   | j › d|j› S )NrZ   )r   r^   )r   Úshaper   r   r   Ú_exception_class_name  s    z0ClientExceptionsDocumenter._exception_class_namec                 C   sx   | j jjj}|s2|j ¡  | d¡ |j ¡  d S |j ¡  | d¡ |j ¡  |D ]}|j 	| j
› d|j› ¡ qTd S )Nz-This client has no modeled exception classes.z$The available client exceptions are:z/client/exceptions/)r   r   r   r]   r4   r8   r7   r>   r?   rA   r   r^   )r   r)   r]   rz   r   r   r   rq     s    





ÿz/ClientExceptionsDocumenter._add_exceptions_listc                 C   sT   | j jjjD ]B}t|jdd}|  ||¡ tj 	| j
| jdd¡}| ||j¡ qd S )NrG   rH   r    rY   )r   r   r   r]   r   r^   Ú_add_exception_classrK   rL   rM   r   r   rN   )r   rz   Zexception_doc_structureZexception_dir_pathr   r   r   rr   &  s      ÿü ÿz1ClientExceptionsDocumenter._add_exception_classesc                 C   s–   |  d¡}|j | jd| j› ¡ | d|j› ¡ | |j¡ |  |j¡}|  |¡}|jj	|d |  
||¡ |  ||¡ |  ||¡ |j ¡  d S )NrO   z	../../../z / Client / exceptions / rB   )r6   r4   rR   r   r   r7   r^   rS   r{   rD   Ú_add_top_level_documentationÚ_add_exception_catch_exampleÚ_add_response_attrZend_sphinx_py_class)r   r)   rz   rW   Zclass_sectionrC   r   r   r   r|   9  s    
 
ÿ
z/ClientExceptionsDocumenter._add_exception_classc                 C   s*   |j r&|j ¡  | |j ¡ |j ¡  d S r   )r:   r4   r8   r9   ©r   r)   rz   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))
r4   r8   r\   r=   rE   r7   Úindentr<   r^   rF   r€   r   r   r   r~   N  s     












z7ClientExceptionsDocumenter._add_exception_catch_examplec                 C   sF   |  d¡}|j d¡ |  |¡ |  ||¡ |  ||¡ |j ¡  d S )NÚresponse)r6   r4   Zstart_sphinx_py_attrÚ_add_response_attr_descriptionÚ_add_response_exampleÚ_add_response_paramsZend_sphinx_py_attr)r   r)   rz   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.)r4   r8   r9   r5   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   rg   rc   ©r0   )r6   r4   r8   r\   r=   r   r   r   r   rf   Zdocument_exampleÚ_GENERIC_ERROR_SHAPE)r   r)   rz   Zexample_sectionÚ
documenterr   r   r   r„   r  s    


ýý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‰   )r6   r4   r8   r\   r=   r	   r   r   r   rf   Zdocument_paramsrŠ   )r   r)   rz   Zparams_sectionr‹   r   r   r   r…   ‚  s    


ýýz/ClientExceptionsDocumenter._add_response_paramsN)r   rh   ri   ry   r   r   rŠ   r#   rs   r$   rp   r{   rq   rr   r|   r}   r~   r   rƒ   r„   r…   r   r   r   r   rj   Ò   sL   ÿüþüþõÿü
rj   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$   rp   Ú_add_context_params_listr5   r   r   r   Údocument_context_params§  s    

z5ClientContextParamsDocumenter.document_context_paramsc                 C   s   |j  d¡ d S )NzClient Context Parametersr3   r5   r   r   r   r$   ¬  s    z(ClientContextParamsDocumenter._add_titlec                 C   s>   |j  ¡  | d¡ |j jd| jd | d¡ |j  ¡  d S )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 guidert   rw   )r4   r8   r7   rx   Ú_CONFIG_GUIDE_LINKr5   r   r   r   rp   ¯  s    
ÿþ
z+ClientContextParamsDocumenter._add_overviewc              	   C   sv   |j  ¡  d| j› d}| d|› d¡ | jD ]@}|j  ¡  dt|jƒ› d}| d|› d|j› d|j	› ¡ q0d S )Nz``zThe available z client context params are:z* z (z) - )
r4   r8   r   r>   rŽ   r   r^   r7   Útyper:   )r   r)   ZsnÚparamr^   r   r   r   r   ¾  s    


z6ClientContextParamsDocumenter._add_context_params_listN)
r   rh   ri   r‘   ZOMITTED_CONTEXT_PARAMSr#   r   r$   rp   r   r   r   r   r   rŒ   “  s   ÿù
rŒ   )rK   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   rj   rŒ   r   r   r   r   Ú<module>   s    0 B