ee[c@sddlZddlZddlmZmZddlmZddlmZddl m Z ddl m Z ddl m Z mZddl mZdd l mZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddlm#Z#ddl$m%Z%ddl&m'Z'ej(e)Z*e'Z+de,fdYZ-de,fdYZ.de,fdYZ/de,fd YZ0d!Z1dS("iN(twaitert xform_name(tAUTH_TYPE_MAPS(tprepare_request_dict(tClientMethodDocstring(tPaginatorDocstring(t ClientErrortDataNotFoundError(tOperationNotPageableError(tUnknownSignatureVersionError(tfirst_non_none_response(t ServiceModel(t Paginator(tCachedProperty(tget_service_module_name(tswitch_host_s3_accelerate(tS3RegionRedirector(t fix_s3_host(tswitch_to_virtual_host_style(tS3_ACCELERATE_WHITELIST(tClientArgsCreator(turlsplit(tUNSIGNED(tConfig(tget_global_history_recordert ClientCreatorcBseZdZdddZedddddddZddZdZddZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZRS(s%Creates client objects for a service.c CsL||_||_||_||_||_||_||_||_dS(N(t_loadert_endpoint_resolvert _user_agentt_event_emittert_retry_handler_factoryt_retry_config_translatort_response_parser_factoryt_exceptions_factory( tselftloadertendpoint_resolvert user_agentt event_emittertretry_handler_factorytretry_config_translatortresponse_parser_factorytexceptions_factory((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyt__init__1s       c  Cs|jjdd|} t| d|}|j||} |j|| } t|j|| d| jjd} |j | ||||||| | }| |}|j ||j || || ||S(Nschoose-service-namet service_nametdefaulttservice_signing_namet signingName( RtemitR t_load_service_modelt_create_client_classtClientEndpointBridgeRtmetadatatgett_get_client_argst_register_retriest_register_s3_events(R"R,t region_namet is_securet endpoint_urltverifyt credentialst scoped_configt api_versiont client_configt responsest service_modeltclstendpoint_bridget client_argstservice_client((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyt create_client=s"     cCs"|j||}|j||S(N(R1R2(R"R,R?RB((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pytcreate_client_classTscCs|j|}|j|}||d((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR8s   cCsb|dkri}n|j||}|j||||}|dk r^|jd|ndS(Nsbefore-sign.s3(tNonet_get_s3_addressing_stylet_get_s3_addressing_handlerRe(R"R;t s3_configR&Rltaddressing_styleRi((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRks    cCsK|jdt}|s*|j||r.dS|jd}|rG|SdS(Ntuse_accelerate_endpointtvirtualRt(R5tFalseRm(R"R;Rst acceleratetconfigured_addressing_style((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRqs cCsW|dkrtjdtS|dks5|dk rFtjddStjdtS(NRvs'Using S3 virtual host style addressing.tpathsUsing S3 path style addressing.sSDefaulting to S3 virtual host style addressing with path style addressing fallback.(RaRbRRpR(R"R;RsRtRl((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRrs    cCs|dk r|jdrtS|dkr/tSt|j}|jdsQtS|jd}|ddkrttS|dd!}t|tt |krtSt d|DS( NRus amazonaws.comt.is s3-accelerateiicss|]}|tkVqdS(N(R(t.0tp((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pys s( RpR5tTrueRwRtnetloctendswithtsplittlentsettall(R"R;RsRtpartst feature_parts((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRms  cCstd||}|dk r"dS|jjd|j}|j|krMdS|jjd|j}|d}d|krdS|jjd|j dS(NRjtsignatureVersionsschoose-signer.s3( t!_get_configured_signature_versionRpRtget_available_endpointsRlR9tconstruct_endpointRdRet_default_s3_presign_to_sigv2(R"t client_metaR@R>tprovided_signature_versiontregionstendpointtsignature_versions((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRos      cKs2x+ddgD]}|j|r d|Sq WdS(s Returns the 's3' (sigv2) signer if presigning an s3 request. This is intended to be used to set the default signature version for the signer to sigv2. :type signature_version: str :param signature_version: The current client signature version. :type signing_name: str :param signing_name: The signing name of the service. :return: 's3' if the request is an s3 presign request, None otherwise s-querys -presign-postRjN(R(R"tsignature_versiontkwargstsuffix((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRsc CsLt|j|j|j|j|j} | j||||||||| S(N(RRRR RR!tget_client_args( R"RBR9R:R;R<R=R>R@RDt args_creator((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR6s    cCsCi}x6|jD]+}t|}|j|||||R@tDEFAULT_ENDPOINTtdefault_endpoint(R"R$R>R@RR.((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR+Ys     cCs`|j||}|jj||}|rF|j|||||S|j||||SdS(N(t_check_default_regionR$Rt_create_endpointt_assume_endpoint(R"R,R9R;R:tresolved((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pytresolvebs   cCs9|dk r|S|jr5|jjdk r5|jjSdS(N(RpR@R9(R"R,R9((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRns c Cs|j|||\}}|dkr|j|rU|j|||d|}q|jd|jd}|j|||jdg}n|j||}|j||} |jd|d|d|d| d |d |d |S( Nt dnsSuffixt sslCommonNamethostnamet protocolsR,R9tsigning_regiont signing_nameR;R4R( t_pick_region_valuesRpt_is_s3_dualstack_modet_create_dualstack_endpointR5t _make_urlt_resolve_signature_versiont_resolve_signing_namet_create_result( R"RR,R9R;R:RRRR((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRus$       cCs|dkrtS|j}|dk rN|jdk rNd|jkrN|jdS|jdkratS|jjdijdt}|tddgkrtStS(NRjtuse_dualstack_endpointR~ttrue(RwR@RpRjR>R5R~(R"R,R@tenabled((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs    cCs7djd|d|d|}|j||ddgS(Ns){service}.dualstack.{region}.{dns_suffix}tservicetregiont dns_suffixthttpthttps(tformatR(R"R,R9RR:R((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs   cCs|dkrE|jjd|d|}|j||ddg}ntjd||||j|idgd6}|j|di}|jd |d |d |d |d |d|diS(NRRRRs#Assuming an endpoint for %s, %s: %stv4RRR,R9RRRR;R4( RpRRRRaRbRRR(R"R,R9R;R:RRR((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs         cCs5i|d6|d6|d6|d6|d6|d6|d6S(NR,R9RRR;RR4((R"R,R9RRR;RR4((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRscCs/|rd|krd}nd}d||fS(NRRs%s://%s((R"RR:tsupported_protocolstscheme((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs cCs<d|kr(d|dkr(|ddS|jr8|jS|S(NtcredentialScopeR(R.(R"R,R((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs    cCs\|}|dkrR|d}|}d|krRd|dkrR|dd}qRn||fS(Nt endpointNameRR(Rp(R"RR9R;R((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs  cCst||j|j}|dk r(|Sd|kr|d}|dkrNdSd|kr^dSx!tD]}||kre|SqeWntd|jddS(NRRjts3v4RR(RR@R>RpRR R5(R"R,Rtconfigured_versiontpotential_versionstknown((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs        N(RRRRRpR+R~RRRRRRRRRRR(((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR3Ls"        RNcBseZiZdZdZdZedZdZddZ dZ dZ dZ d Zd Zed Zed Zd ZRS(c Cs||_||_||_||_i|_||_||_t||j|j||j | |_ | |_ d|_ |jdS(N(t _serializert _endpointt_response_parsert_request_signert_cacheRt_client_configt ClientMetathostRIR[R!Rpt _exceptionst_register_handlers( R"t serializerRtresponse_parserR&trequest_signerRBR#R@RlR*((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR+s           cCsgd|jj|f}|jjj|d|\}}|dk rG|Std|jj|fdS(Ns getattr.%s.%sRfs!'%s' object has no attribute '%s'( t_service_modelR,R[Rdtemit_until_responseRptAttributeErrort __class__R(R"titemt event_nameRitevent_response((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyt __getattr__!s  cCs-|jjjd|jjj|jjdS(Nsrequest-created.%s(R[RdReRBR\RRi(R"((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR.s cCs |jjS(N(R[RB(R"((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR4sc Cs|jj|}|jj}tjdi|d6|d6|d6|jrbtjd||ni|jj d6|jj d6|j d6|j d 6}|j ||d |}|jjjd jd |jjd |d|d|d|jd |\}}|dk r|\} } n|jj||\} } |jjjdjd |jjd |d| d| d|d || jdkr| jdijd} |jj| } | | |n| SdS(NtAPI_CALLRt operationtparamssWarning: %s.%s() is deprecatedt client_regionR@thas_streaming_inputt auth_typetcontexts.before-call.{endpoint_prefix}.{operation_name}R\RtmodelRs-after-call.{endpoint_prefix}.{operation_name}t http_responsetparsedi,tErrortCode(RRR,thistory_recordertrecordt deprecatedRaRbR[R9R_RRt_convert_to_request_dictRdRRR\RRpRt make_requestR0t status_codeR5t exceptionst from_code( R"Rt api_paramsRR,trequest_contextt request_dictRiRRtparsed_responset error_codet error_class((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyR8sJ                       cCsV|j|||}|jj||}t|d|jjd|jjd||S(NR;R%R(t_emit_api_paramsRtserialize_to_requestRRRRR%(R"RRRR((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRhs   cCs|j}|jjjdjd|jjd|d|d|d|}t|d|}d}|jjj|jd|jjd|d|d|d||S( Ns8provide-client-params.{endpoint_prefix}.{operation_name}R\RRRRR-s9before-parameter-build.{endpoint_prefix}.{operation_name}(tnameR[RdR0RRR\R (R"RRRRRAR((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRss         c Cs|j|s!td|n|j|}d}|jd|}td|d|jjd|jjd|dt|_ t d t |jj|f}t |t fi|d 6}|jj|}|t||||}|Sd S( sCreate a paginator for an operation. :type operation_name: string :param operation_name: The operation name. This is the same name as the method name on the client. For example, if the method name is ``create_foo``, and you'd normally invoke the operation as ``client.create_foo(**kwargs)``, if the ``create_foo`` operation can be paginated, you can use the call ``client.get_paginator("create_foo")``. :raise OperationNotPageableError: Raised if the operation is not pageable. You can use the ``client.can_paginate`` method to check if an operation is pageable. :rtype: L{botocore.paginate.Paginator} :return: A paginator object. Rc[stj||S(N(R tpaginate(R"R((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRst page_configtpaginator_nameR&RBtpaginator_configRs%s.Paginator.%sRN(t can_paginateRRIRRR[RdRBRwRRPRROR RRtgetattr( R"Rtactual_operation_nameRRtpaginator_class_nametdocumented_paginator_clsRt paginator((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyt get_paginators.         cCsd|jkrly9|jj|jjd|jjd}||jdscCs|jS(N(R(R"((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRlBs( RRRR+RRBR9R;R_RRl(((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRs  cCs|r|jdk r|jS|dk r|j|}|dk rt|tr|jd}|rtjd|||SqndS(s Gets the manually configured signature version. :returns: the customer configured signature version, or None if no signature version was configured. RsWSwitching signature version for service %s to version %s based on config file override.N(RRpR5t isinstancetdictRaRb(R,R@R>tservice_configtversion((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyRGs    (2tloggingt functoolstbotocoreRRt botocore.authRtbotocore.awsrequestRtbotocore.docs.docstringRRtbotocore.exceptionsRRRR tbotocore.hooksR tbotocore.modelR tbotocore.paginateR tbotocore.utilsR RRRRRRt botocore.argsRtbotocore.compatRRtbotocore.configRtbotocore.historyRt getLoggerRRaRtobjectRR3RNRR(((s3/tmp/pip-install-xdEqop/botocore/botocore/client.pyt sB   /