9(Zck@sdZddlZddlZddlZddlZddlZddlZddlZddl m Z m Z m Z m Z mZmZmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZmZddlm Z ddl!m"Z"ddl!m#Z#ddl!m$Z$ddl!Z!ddl%Z!ej&e'Z(e)Z*e)Z+ej,dZ-ej,dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;d!Z<d"d#Z=d$Z>d%Z?d&Z@d'ZAd(ZBd)ZCd*ZDd+ZEd,ZFd-ZGd.ZHd/ZId0ZJd1ZKd2ZLd3ZMd4ZNd5ZOd6ZPd7ZQd8ZRd9ZSd:ZTd;ZUd<ZVd=ZWd>ZXd?ZYd@ZZdAZ[dBZ\dCZ]dDZ^dEZ_dFe)fdGYZ`dHe)fdIYZadJeadKfdLe^e+fdMe^e+fdNefdOefdPefdQeZfdReLfdSe2fdTe5fdUeNfdVe3fdWe:fdXe\fdYe6fdZe6fd[e6fd\e6fd]e6fd^e6fd_e9fd`e9fdae9fdbe9fdce9fdde9fdee9fdfe9fdge9fdhe9fdieEfdjeEfdieQfdMeQfdkeQfdleDfdmeDfdneCfdoeTfdpeUfdqeVfdreVfdseJfdteKfdueKfdveKfdweKfdxeYfdye/e*fdze/e*fd{e/e*fd|e?fd}eBfd~eBfdeBfdeBfdeBfdeBfde1fde;fde;fdMe;fdie;fdie<fdke;fdLe;fdje;fdje<fdeOfdeOfdeRfdeSfde]fde[fdeddjbfdedjbfdedjbfdeWfdeXfdePdfdePdfdedjbfdedjbfdedjbfdedjbfdedjbfdedjbfdedjbfdedjbfdePdfdedddddddddddddddg jcfg[Zde_eddS(s_Builtin event handlers. This module contains builtin handlers for events emitted by botocore. iN(tunquotetjsontsixt unquote_strt ensure_bytestget_md5t MD5_AVAILABLE(tAutoPopulatedParam(tHideParamFromOperations(tAppendParamDocumentation(tadd_generate_presigned_url(tadd_generate_presigned_post(tadd_generate_db_auth_token(tParamValidationError(tAliasConflictParameterError(tUnsupportedTLSVersionWarning(tpercent_encodet SAFE_CHARS(tswitch_host_with_param(t retryhandler(tutils(t translates^[a-zA-Z0-9.\-_]{1,255}$s\?versionId=[^\s]+$cKsH|dkrdS|\}}t|rDtjd|d|_ndS(NsWError found for response with 200 status code, errors: %s, changing status code to 500.i(tNonet_looks_like_special_case_errortloggertdebugt status_code(tresponsetkwargst http_responsetparsed((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pytcheck_for_200_error=s    cCso|jdkrktjjjdtjjjdd}|j|j|j}|j dkrkt Snt S(Nittargettencodingsutf-8tError( Rtxmltetreet cElementTreet XMLParsert TreeBuildertfeedtcontenttclosettagtTruetFalse(Rtparsertroot((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyRYs  cKsw|jd}|sdS|dkr,tjS|jdrsd}|dkrVd}n|dkrot|dst(ttellRtitertupdatetseekRc(Rgtstart_positionRetchunk((Rgs3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyR]s    cKstrt||ndS(s1Only add a Content-MD5 if the system supports it.N(RRb(RNR:trequest_signerR((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pytconditionally_calculate_md5scKsXd|krdS|d}tj|dkrTd|tjf}td|ndS(NtBuckets?Invalid bucket name "%s": Bucket name must match the regex "%s"treport(t VALID_BUCKETtsearchRtpatternR (RNRtbuckett error_msg((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pytvalidate_bucket_names  cKst|ddS(s S3 server-side encryption requires the encryption key to be sent to the server base64 encoded, as well as a base64-encoded MD5 hash of the encryption key. This handler does both if the MD5 has not been set by the caller. t SSECustomerN(t_sse_md5(RNR((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pytsse_md5scKst|ddS(s1 S3 server-side encryption requires the encryption key to be sent to the server base64 encoded, as well as a base64-encoded MD5 hash of the encryption key. This handler does both if the MD5 has not been set by the caller specifically if the parameter is for the copy-source sse-c key. tCopySourceSSECustomerN(R{(RNR((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pytcopy_source_sse_md5sRzcCst||sdS|d}|d}||}t|tjrU|jd}ntjt|jj d}tj|j d}|||<||| %s(RR(t input_shapeRRRRPtsplitRR(RNRORRRPRRt orig_value((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pytfix_route53_ids9s    cKs&|jddkr"d|dtj|}n|j}d|krrtj|dt|d`_. But if you prefer, you can also use botocore.utils.calculate_tree_hash() to compute it from raw file by:: checksum = calculate_tree_hash(open('your_file.txt', 'rb')) tchecksum(R R(tdoc((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyt#document_glacier_tree_hash_checksums cKsd|krD|jd}|jd}|j|jdnSd|kr|jd}|jd}|jd}|j|jdndS( Nsresponse-paramsRTs param-types (*dict*) --sresponse-examplesstructure-values member-values{}(RRR(RRRttemplate_body_sectionRRRR((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyt0document_cloudformation_get_template_return_types    cKst|ddS(NtPredictEndpoint(R(trequestR((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pytswitch_host_machinelearningscKsWddl}y3|j}|dkr>tjd|jtnWntk rRnXdS(NiiisCurrently installed openssl version: %s does not support TLS 1.2, which is required for use of iot-data. Please use python installed with openssl version 1.0.1 or higher.(iii(tssltOPENSSL_VERSION_INFOtwarningstwarntOPENSSL_VERSIONRRG(RRtopenssl_version_tuple((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyt&check_openssl_supports_tls_version_1_2s    cKs\|jdkrXd|jkrXd|jds cCsH|jjd}|j|j|j}|j|j|dS(Nsutf-8(tgetvalueRDR?RIRJRR(RKRR)tupdated_content((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyRR2s  (t__name__t __module__RMR<R>RR(((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyR; s   tClientMethodAliascBseZdZdZRS(cCs ||_dS(s Aliases a non-extant method to an existing method. :param actual_name: The name of the method that actually exists on the client. N(t_actual(RKt actual_name((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyRM;scKst||jS(N(tgetattrRZ(RKtclientR((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyt__call__Cs(RWRXRMR^(((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyRY:s s/getattr.mturk.list_hi_ts_for_qualification_typet list_hits_for_qualification_types$before-parameter-build.s3.UploadParts#before-parameter-build.s3.PutObjectscreating-client-classscreating-client-class.s3screating-client-class.rdsscreating-client-class.iot-datasafter-call.iamsafter-call.ec2.GetConsoleOutputs%after-call.cloudformation.GetTemplatesafter-call.s3.GetBucketLocationsbefore-parameter-buildsbefore-parameter-build.s3s%before-parameter-build.s3.ListObjectssbefore-call.s3.PutBucketTaggings!before-call.s3.PutBucketLifecycles.before-call.s3.PutBucketLifecycleConfigurationsbefore-call.s3.PutBucketCorssbefore-call.s3.DeleteObjectss#before-call.s3.PutBucketReplicationsbefore-call.s3.PutObjectsbefore-call.s3.UploadPartsbefore-call.s3.PutBucketAclsbefore-call.s3.PutBucketLoggings$before-call.s3.PutBucketNotificationsbefore-call.s3.PutBucketPolicys&before-call.s3.PutBucketRequestPayments"before-call.s3.PutBucketVersioningsbefore-call.s3.PutBucketWebsitesbefore-call.s3.PutObjectAcls$before-parameter-build.s3.CopyObjects(before-parameter-build.s3.UploadPartCopys/before-parameter-build.s3.CreateMultipartUploads%docs.*.s3.CopyObject.complete-sections)docs.*.s3.UploadPartCopy.complete-sectionsbefore-call.s3sbefore-call.glaciersbefore-call.apigateways!before-call.glacier.UploadArchives'before-call.glacier.UploadMultipartPartsbefore-call.ec2.CopySnapshots%before-call.rds.CopyDBClusterSnapshotsbefore-call.rds.CreateDBClustersbefore-call.rds.CopyDBSnapshots+before-call.rds.CreateDBInstanceReadReplicas'request-created.machinelearning.Predictsneeds-retry.s3.UploadPartCopysneeds-retry.s3.CopyObjects&needs-retry.s3.CompleteMultipartUploadsservice-data-loadeds$choose-signer.cognito-identity.GetIds-choose-signer.cognito-identity.GetOpenIdTokens-choose-signer.cognito-identity.UnlinkIdentitys8choose-signer.cognito-identity.GetCredentialsForIdentitys$choose-signer.sts.AssumeRoleWithSAMLs+choose-signer.sts.AssumeRoleWithWebIdentitys choose-signers$before-parameter-build.s3.HeadObjects#before-parameter-build.s3.GetObjects'before-parameter-build.ec2.RunInstancess<before-parameter-build.autoscaling.CreateLaunchConfigurationsbefore-parameter-build.route53sbefore-parameter-build.glaciersafter-call.s3.ListObjectss(request-created.cloudsearchdomain.Searchs!docs.*.glacier.*.complete-sectionRsJNote: this parameter is set to "-" bydefault if no value is not specified.s-docs.*.glacier.UploadArchive.complete-sectionRs3docs.*.glacier.UploadMultipartPart.complete-sectionsDdocs.request-params.glacier.CompleteMultipartUpload.complete-sections2docs.*.cloudformation.GetTemplate.complete-sections(docs.*.ec2.RunInstances.complete-sectionRs=docs.*.autoscaling.CreateLaunchConfiguration.complete-sections1docs.*.rds.CopyDBClusterSnapshot.complete-sectionRs+docs.*.rds.CreateDBCluster.complete-sections*docs.*.rds.CopyDBSnapshot.complete-sections7docs.*.rds.CreateDBInstanceReadReplica.complete-sections(docs.*.ec2.CopySnapshot.complete-sectionRRsdocs.*.s3.*.complete-sectiontSSECustomerKeyMD5tCopySourceSSECustomerKeyMD5s1docs.*.lambda.UpdateFunctionCode.complete-sectiontZipFileR3t ContentMD5t DeleteObjectst PutBucketAclt PutBucketCorstPutBucketLifecycletPutBucketLoggingtPutBucketNotificationtPutBucketPolicytPutBucketReplicationtPutBucketRequestPaymenttPutBucketTaggingtPutBucketVersioningtPutBucketWebsitet PutObjectAcl(et__doc__RAtloggingtxml.etree.cElementTreeR#RtreRRLtbotocore.compatRRRRRRRtbotocore.docs.utilsRRR tbotocore.signersR R R tbotocore.exceptionsR RRtbotocore.utilsRRRR7RRRt botocore.autht getLoggerRWRtobjectR=t REGISTER_LASTtcompileRtRRRR=RIRQRSRURbR\R]RqRyR|R~R{RRRRRRRRRRRRRRRRRRRRRRR R RRRRR"R%R(R3R5RHR;RYtdocument_auto_populated_paramt hide_paramtBUILTIN_HANDLERS(((s3/tmp/pip-build-wDUJoH/botocore/botocore/handlers.pyts       4      !                              1