B 䊇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|dkr dS|dkS)NZgenerate_presigned_url)Zs3) method_name service_namekwargsr r o/private/var/folders/8c/hx9_v10d5x38qmnzt13b7b8j1k3n5b/T/pip-target-x6xd5gna/lib/python/botocore/docs/client.py!_allowlist_generate_presigned_urlsrc@seZdZegZd ddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZdS)!ClientDocumenterNcCs.||_||_|jdkri|_|jjjj|_dS)N)_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}||S)N)rr_filter_client_methods)rr!r r rr6s z$ClientDocumenter._get_client_methodscCs<i}x2|D]&\}}|j|||jd}|r|||<qW|S)N)methodr r )items_filter_client_methodr)rr!Zfiltered_methodsr r$includer r rr#:s  z'ClientDocumenter._filter_client_methodscKs*x$|jD]}|f|}|dk r|SqWdS)NT)_CLIENT_METHODS_FILTERS)rrfilterZfilter_includer r rr&Fs   z&ClientDocumenter._filter_client_methodcCs|jddS)NZClient)styleh2)rr r r rrPszClientDocumenter._add_titlecCs|d}t|jjj}|d||j||jjjj | ||j|d|j|jj j }x*t |D]}|jd|d|dqWdS)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.Client)r7)r*start_sphinx_py_classrr3r4)rr r r rrlsz%ClientDocumenter._add_class_signaturecCs6|j|j|dj|jd|jdS)Nz+client = session.create_client('{service}'))service)r*start_codeblockr/r.formatr end_codeblock)rr r r rr2qs    z-ClientDocumenter._add_client_creation_examplecCs2|d}x"t|D]}|||||qWdS)Nmethods)r-r5_add_client_method)rr r!r r r rr{s z$ClientDocumenter._add_client_methodscCs4||}||r$||||n |||dS)N)r-_is_custom_method_add_custom_method_add_model_driven_method)rr r r$r r rr>s  z#ClientDocumenter._add_client_methodcCs||jjjkS)N)rrmethod_to_api_mapping)rr r r rr?sz"ClientDocumenter._is_custom_methodcCst|||dS)N)r)rr r r$r r rr@sz#ClientDocumenter._add_custom_methodcCsh|d}|j|jd|j|jjj}x.|jD]$}|d|j}|j d|qr?r@rIrAr 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.)rF type_namer1Messagez;A descriptive message explaining why the exception occured.)rFrTr1memberscCs||_|jjjj|_dS)N)rrrr r)rrr r rrsz#ClientExceptionsDocumenter.__init__cCs,||||||||dS)N)r _add_overview_add_exceptions_list_add_exception_classes)rr r r rdocument_exceptionss   z.ClientExceptionsDocumenter.document_exceptionscCs|jddS)NzClient Exceptions)r*r+)rr r r rrsz%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*r/r.Z external_link_USER_GUIDE_LINK)rr r r rrWs   z(ClientExceptionsDocumenter._add_overviewcCs|jjj}|d|jS)Nz.Client.exceptions.)rr3r4rF)rshapecls_namer r r_exception_class_names z0ClientExceptionsDocumenter._exception_class_namecCs||jjjj}|s2|j|d|jdS|j|d|jx&|D]}||}|jd|qVWdS)Nz-This client has no modeled exception classes.z$The available client exceptions are:z:py:class:`%s`) rrrrEr*r/r.rar6)rr rEr_r7r r rrXs         z/ClientExceptionsDocumenter._add_exceptions_listcCs&x |jjjjD]}|||qWdS)N)rrrrE_add_exception_class)rr r_r r rrYsz1ClientExceptionsDocumenter._add_exception_classescCsV||j}||}|jj|d||||||||||jdS)N)r7) r-rFrar*r8_add_top_level_documentation_add_exception_catch_example_add_response_attrZend_sphinx_py_class)rr r_Z class_sectionr7r r rrb s     z/ClientExceptionsDocumenter._add_exception_classcCs*|jr&|j||j|jdS)N)r1r*r/r0)rr r_r r rrcs  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*r/rDr:r.indentdedentrFr<)rr r_r r rrds             z7ClientExceptionsDocumenter._add_exception_catch_examplecCsF|d}|jd|||||||||jdS)Nresponse)r-r*Zstart_sphinx_py_attr_add_response_attr_description_add_response_example_add_response_paramsZend_sphinx_py_attr)rr r_Zresponse_sectionr r rre*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*r/r0)rr r r rri2s z9ClientExceptionsDocumenter._add_response_attr_descriptioncCsX|d}|j|jd|jt|jd|jjj d}|j |||j gddS)NsyntaxSyntax)r rNrJ)r') r-r*r/rD new_paragraphrrrrrLZdocument_example_GENERIC_ERROR_SHAPE)rr r_Zexample_section documenterr r rrj<s    z0ClientExceptionsDocumenter._add_response_examplecCsX|d}|j|jd|jt|jd|jjj d}|j |||j gddS)N Structure)r rNrJ)r') r-r*r/rDrnrrrrrLZdocument_paramsro)rr r_Zparams_sectionrpr r rrkLs    z/ClientExceptionsDocumenter._add_response_paramsN)r4rOrPr^r rrorrZrrWrarXrYrbrcrdrerirjrkr r r rrQs<   rQN)Zbotocore.compatrZbotocore.docs.examplerZbotocore.docs.methodrrrZbotocore.docs.paramsrZbotocore.docs.sharedexamplerZbotocore.docs.utilsr r rrrQr r r r s