o 2&a'@sddlZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl m Z eeZegdZGd d d eZd d ZGd ddeZddZddZddZeddifeddifdZeifeifdZdS)N) AWSRequest)URLLib3Session)ProfileNotFound)six) compat_open) ParamError)Xzapi-gateway.put-integration.uriz.api-gateway.create-integration.integration-uriz.api-gateway.update-integration.integration-urizapi-gateway.create-api.targetzapi-gateway.update-api.targetz#appstream.create-stack.redirect-urlz#appstream.create-stack.feedback-urlz#appstream.update-stack.redirect-urlz#appstream.update-stack.feedback-urlz(cloudformation.create-stack.template-urlz(cloudformation.update-stack.template-urlz,cloudformation.create-stack-set.template-urlz,cloudformation.update-stack-set.template-urlz-cloudformation.create-change-set.template-urlz-cloudformation.validate-template.template-urlz2cloudformation.estimate-template-cost.template-urlz0cloudformation.get-template-summary.template-urlz,cloudformation.create-stack.stack-policy-urlz,cloudformation.update-stack.stack-policy-urlz0cloudformation.set-stack-policy.stack-policy-urlzcustom.package.template-filezcustom.deploy.template-filez:cloudformation.update-stack.stack-policy-during-update-urlzcustom.cp.website-redirectzcustom.mv.website-redirectzcustom.sync.website-redirectz guardduty.create-ip-set.locationz guardduty.update-ip-set.locationz*guardduty.create-threat-intel-set.locationz*guardduty.update-threat-intel-set.locationz(comprehend.detect-dominant-language.textz3comprehend.batch-detect-dominant-language.text-listzcomprehend.detect-entities.textz*comprehend.batch-detect-entities.text-listz"comprehend.detect-key-phrases.textz-comprehend.batch-detect-key-phrases.text-listz comprehend.detect-sentiment.textz+comprehend.batch-detect-sentiment.text-listzemr.create-studio.idp-auth-urlz'iam.create-open-id-connect-provider.urlz)machine-learning.predict.predict-endpointz=mediatailor.put-playback-configuration.ad-decision-server-urlz3mediatailor.put-playback-configuration.slate-ad-urlz?mediatailor.put-playback-configuration.video-content-source-urlz+rds.copy-db-cluster-snapshot.pre-signed-urlz$rds.create-db-cluster.pre-signed-urlz#rds.copy-db-snapshot.pre-signed-urlz2rds.create-db-instance-read-replica.pre-signed-urlz:sagemaker.create-notebook-instance.default-code-repositoryz?sagemaker.create-notebook-instance.additional-code-repositoriesz:sagemaker.update-notebook-instance.default-code-repositoryz?sagemaker.update-notebook-instance.additional-code-repositoriesz@serverlessapplicationrepository.create-application.home-page-urlz>serverlessapplicationrepository.create-application.license-urlz=serverlessapplicationrepository.create-application.readme-urlzBserverlessapplicationrepository.create-application.source-code-urlz?serverlessapplicationrepository.create-application.template-urlzJserverlessapplicationrepository.create-application-version.source-code-urlzGserverlessapplicationrepository.create-application-version.template-urlz@serverlessapplicationrepository.update-application.home-page-urlz=serverlessapplicationrepository.update-application.readme-urlz*service-catalog.create-product.support-urlz*service-catalog.update-product.support-urlz#ses.put-account-details.website-urlzsqs.add-permission.queue-urlz'sqs.change-message-visibility.queue-urlz-sqs.change-message-visibility-batch.queue-urlzsqs.delete-message.queue-urlz"sqs.delete-message-batch.queue-urlzsqs.delete-queue.queue-urlz"sqs.get-queue-attributes.queue-urlz,sqs.list-dead-letter-source-queues.queue-urlzsqs.receive-message.queue-urlzsqs.remove-permission.queue-urlzsqs.send-message.queue-urlz sqs.send-message-batch.queue-urlz"sqs.set-queue-attributes.queue-urlzsqs.purge-queue.queue-urlzsqs.list-queue-tags.queue-urlzsqs.tag-queue.queue-urlzsqs.untag-queue.queue-urlz(s3.copy-object.website-redirect-locationz4s3.create-multipart-upload.website-redirect-locationz's3.put-object.website-redirect-locationz#sns.subscribe.notification-endpointziot.create-job.document-sourceztranslate.translate-text.textz?workdocs.create-notification-subscription.notification-endpointc@s eZdZdS)ResourceLoadingErrorN)__name__ __module__ __qualname__r r 2/usr/lib/python3/dist-packages/awscli/paramfile.pyrsrcKs`tt}z |dddk}Wn tyd}Ynw|r$|tt|}| d|dS)Ncli_follow_urlparamtrueTz load-cli-arg) copydeepcopyLOCAL_PREFIX_MAPget_scoped_configgetrupdateREMOTE_PREFIX_MAPURIArgumentHandlerregister)sessionkwargs prefix_map fetch_urlhandlerr r r register_uri_param_handlers   rc@s&eZdZdddZddZddZdS) rNcCs&|durtt}|t||_dSN)rrrrr _prefixes)selfprefixesr r r __init__s   zURIArgumentHandler.__init__cKs@|}d|ddd}|tvst|ddrdS|||S)z-Handler that supports param values from URIs..N no_paramfile)joinsplitPARAMFILE_DISABLEDgetattr_check_for_uri_param)r! event_nameparamvaluer cli_argumentqualified_param_namer r r __call__s  zURIArgumentHandler.__call__c CsXt|trt|dkr|d}zt||jWSty+}z t|jt |d}~ww)Nr%r) isinstancelistlen get_paramfiler rrcli_namer text_type)r!r-r.er r r r+sz'URIArgumentHandler._check_for_uri_paramr)r r r r#r1r+r r r r rs  rcCsJd}t|tjr#|D]\}}||r"|\}}|||fi|}q |S)aLLoad parameter based on a resource URI. It is possible to pass parameters to operations by referring to files or URI's. If such a reference is detected, this function attempts to retrieve the data from the file or URI and returns it. If there are any errors or if the ``path`` does not appear to refer to a file or URI, a ``None`` is returned. :type path: str :param path: The resource URI, e.g. file://foo.txt. This value may also be a non resource URI, in which case ``None`` is returned. :type cases: dict :param cases: A dictionary of URI prefixes to function mappings that a parameter is checked against. :return: The loaded value associated with the resource URI. If the provided ``path`` is not a resource URI, then a value of ``None`` is returned. N)r2r string_typesitems startswith)pathcasesdataprefix function_specfunctionrr r r r5s  r5c Cstjtj|t|d}zt|| }|WdWS1s&wYWdSty:td|t t fyO}ztd||fd}~ww)NzUnable to load paramfile (%s), text contents could not be decoded. If this is a binary file, please use the fileb:// prefix instead of the file:// prefix.zUnable to load paramfile %s: %s) osr< expandvars expanduserr4rreadUnicodeDecodeErrorrOSErrorIOError)r?r<mode file_pathfr8r r r get_files"  ( rLc Csdzt}|td|}|jdkr|jWStd|jty1}ztd||fd}~ww)NGETz"received non 200 status code of %szUnable to retrieve %s: %s)rsendrprepare status_codetextr Exception)r?urirrr8r r r get_uris rVrIrUrb)zfile://zfileb://)zhttp://zhttps://)loggingrBrbotocore.awsrequestrbotocore.httpsessionrbotocore.exceptionsr awscli.compatrrawscli.argprocessr getLoggerr loggersetr)rSrrobjectrr5rLrVrrr r r r s.         r