o ?c3@s|ddlmZddlmZddlmZmZmZddlm Z ddl m Z ddl m Z mZddZGd d d ZGd d d Zd S)) OrderedDict)ResponseExampleDocumenter)document_custom_methoddocument_model_driven_methodget_instance_public_methods)ResponseParamsDocumenter)document_shared_examples)DocumentedShapeget_official_service_namecKs|dkrdS|dvS)NZgenerate_presigned_url)Zs3) method_name service_namekwargsr r o/private/var/folders/cw/wlscbxl13mj6wd668h7l9g9sllkg5j/T/pip-target-b31awkwq/lib/python/botocore/docs/client.py!_allowlist_generate_presigned_urlsrc@seZdZegZd ddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZdS)!ClientDocumenterNcCs.||_||_|jduri|_|jjjj|_dSN)_client_shared_examplesmeta service_modelr _service_name)selfclientshared_examplesr r r__init__$s  zClientDocumenter.__init__cCs8|||||}||||||dS)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)rsectionclient_methodsr r rdocument_client+s   z ClientDocumenter.document_clientcCst|j}||Sr)rr_filter_client_methods)rr"r r rr6s  z$ClientDocumenter._get_client_methodscCs8i}|D]\}}|j|||jd}|r|||<q|S)N)methodr r )items_filter_client_methodr)rr"Zfiltered_methodsr r%includer r rr$:sz'ClientDocumenter._filter_client_methodscKs.|jD]}|di|}|dur|SqdS)NTr )_CLIENT_METHODS_FILTERS)rrfilterZfilter_includer r rr'Fs z&ClientDocumenter._filter_client_methodcC|jddS)NZClientstyleZh2rr!r r rrPzClientDocumenter._add_titlecCs|d}t|jjj}|d||j||jjjj | ||j|d|j|jj j }t |D]}|jd|d|dq?dS)NZintroz A low-level client representing z These are the available methods:z :py:meth:`~z.Client.`)add_new_sectionr rrrwriter-new_lineinclude_doc_string documentation_add_client_creation_example __class____name__sortedli)rr!r"Zofficial_service_name class_namer r r rrSs&         z"ClientDocumenter._add_client_introcCs|jj|jjjdddS)Nz.Clientr;)r-start_sphinx_py_classrr7r8r.r r rrls z%ClientDocumenter._add_class_signaturecCs6|j|j|dj|jd|jdS)Nz+client = session.create_client('{service}'))Zservice)r-start_codeblockr3r2formatr end_codeblockr.r r rr6qs  z-ClientDocumenter._add_client_creation_examplecCs.|d}t|D] }|||||q dS)Nmethods)r1r9_add_client_method)rr!r"r r r rr {s   z$ClientDocumenter._add_client_methodscCs6||}||r||||dS|||dSr)r1_is_custom_method_add_custom_method_add_model_driven_methodrr!r r%r r rrBs  z#ClientDocumenter._add_client_methodcCs||jjjvSr)rrmethod_to_api_mapping)rr r r rrCsz"ClientDocumenter._is_custom_methodcCst|||dSr)rrFr r rrDr/z#ClientDocumenter._add_custom_methodcCsd|d}|j|jd|j|jjj}|jD]}|d|j}|j d|qdS)N exceptionsZ Exceptions.Client.exceptions.:py:class:`%s`) r1r-r3boldrr7r8 error_shapesnamer:)rr!operation_modelZ error_sectionZ client_nameerrorr;r r r_add_method_exceptions_lists      z,ClientDocumenter._add_method_exceptions_listcCs~|jjj}|jjj|}||}d|}t||||jjj|j|d|jr,| |||j |}|r=t ||||dSdS)Nzresponse = client.%s) event_emitterZmethod_descriptionexample_prefix) rrrrGrNreventsr5rLrPrgetr)rr!r roperation_namerNrRrr r rrEs(    z)ClientDocumenter._add_model_driven_methodr)r8 __module__ __qualname__rr)rr#rr$r'rrrr6r rBrCrDrPrEr r r rrs$      rc @seZdZdZedddededdddfd ed dd dfgd Zd d ZddZddZ ddZ ddZ ddZ ddZ ddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(S))ClientExceptionsDocumenterzQhttps://boto3.amazonaws.com/v1/documentation/api/latest/guide/error-handling.htmlErrorZ structurez1Normalized access to common exception attributes.ZCodestringz,An identifier specifying the exception type.)rM type_namer5Messagez;A descriptive message explaining why the exception occured.)rMr[r5memberscCs||_|jjjj|_dSr)rrrr r)rrr r rrsz#ClientExceptionsDocumenter.__init__cCs,||||||||dSr)r _add_overview_add_exceptions_list_add_exception_classesr.r r rdocument_exceptionss   z.ClientExceptionsDocumenter.document_exceptionscCr+)NzClient Exceptionsr,r.r r rrr/z%ClientExceptionsDocumenter._add_titlecCs>|j|d|jjd|jd|d|jdS)NzClient 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)titlelink.)r-r3r2Z external_link_USER_GUIDE_LINKr.r r rr^s  z(ClientExceptionsDocumenter._add_overviewcCs|jjj}|d|jS)NrI)rr7r8rM)rshapecls_namer r r_exception_class_names z0ClientExceptionsDocumenter._exception_class_namecCsx|jjjj}|s|j|d|jdS|j|d|j|D]}||}|jd|q*dS)Nz-This client has no modeled exception classes.z$The available client exceptions are:rJ) rrrrLr-r3r2rhr:)rr!rLrfr;r r rr_s        z/ClientExceptionsDocumenter._add_exceptions_listcCs"|jjjjD]}|||qdSr)rrrrL_add_exception_classrr!rfr r rr`sz1ClientExceptionsDocumenter._add_exception_classescCsV||j}||}|jj|d||||||||||jdS)Nr<) r1rMrhr-r=_add_top_level_documentation_add_exception_catch_example_add_response_attrZend_sphinx_py_class)rr!rfZ class_sectionr;r r rri s     z/ClientExceptionsDocumenter._add_exception_classcCs.|jr|j||j|jdSdSr)r5r-r3r4rjr r rrks   z7ClientExceptionsDocumenter._add_top_level_documentationcCs|j|jd|j|d|j|j|d|j|j|d|j|j|j|d|j|jdS)NZExampleztry:z...z!except client.exceptions.%s as e:zprint(e.response)) r-r3rKr>r2indentdedentrMr@rjr r rrls             z7ClientExceptionsDocumenter._add_exception_catch_examplecCsF|d}|jd|||||||||jdS)Nresponse)r1r-Zstart_sphinx_py_attr_add_response_attr_description_add_response_example_add_response_paramsZend_sphinx_py_attr)rr!rfZresponse_sectionr r rrm*s     z-ClientExceptionsDocumenter._add_response_attrcCs"|j|d|jdS)NzThe 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.)r-r3r4r.r r rrq2s z9ClientExceptionsDocumenter._add_response_attr_descriptioncCsX|d}|j|jd|jt|jd|jjj d}|j |||j gddS)NsyntaxSyntaxr rUrQr() r1r-r3rK new_paragraphrrrrrSZdocument_example_GENERIC_ERROR_SHAPE)rr!rfZexample_section documenterr r rrr<     z0ClientExceptionsDocumenter._add_response_examplecCsX|d}|j|jd|jt|jd|jjj d}|j |||j gddS)NZ Structurervrw) r1r-r3rKrxrrrrrSZdocument_paramsry)rr!rfZparams_sectionrzr r rrsLr{z/ClientExceptionsDocumenter._add_response_paramsN)r8rVrWrer rryrrarr^rhr_r`rirkrlrmrqrrrsr r r rrXsN   rXN)Zbotocore.compatrZbotocore.docs.examplerZbotocore.docs.methodrrrZbotocore.docs.paramsrZbotocore.docs.sharedexamplerZbotocore.docs.utilsr r rrrXr r r rs