File: //proc/722141/root/lib/python3.6/site-packages/botocore/__pycache__/utils.cpython-36.pyc
3
�T_*D � J @ sP d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZd dl
Zd dlmZ d dlZd dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ej5e6�Z7dZ8dZ9dZ:ej;d �Z<e*e)e+e,fZ=d
gZ>dddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d'd*d+d,d-d.d.dddd/d0d1d2d3d4d5d,d6d7d7d8d2d9d:d;d/d<d=d>d3d?d@dAdBdCdDdDdEd$d<dF�IZ?dGdH� Z@dIdJ� ZAdKdL� ZBdMdN� ZCdOdP� ZDdQdR� ZEd�dTdU�ZFG dVdW� dWeG�ZHG dXdY� dYeG�ZIG dZd[� d[eJ�ZKG d\d]� d]eK�ZLd�d_d`�ZMdadb� ZNeOfdcdd�ZPdedf� ZQe:fdgdh�ZRe:fdidj�ZSdkdl� ZTdmdn� ZUdodp� ZVd�dqdr�ZWd�dsdt�ZXdudv� ZYdwdx� ZZG dydz� dzeJ�Z[G d{d|� d|eJ�Z\d}d~� Z]dd�� Z^d�d�� Z_d�d�d��Z`d�d�d��Zad�d�� Zbd�d�� Zcd�d�� Zdd�d�� Zed�d�d��Zfd�d�d��Zgd�d�� Zhd�d�� ZiG d�d�� d�eJ�ZjG d�d�� d�ek�ZlG d�d�� d�eJ�ZmG d�d�� d�eJ�ZnG d�d�� d�eJ�ZoG d�d�� d�eJ�ZpG d�d�� d�eJ�ZqG d�d�� d�eJ�Zrd�d�� Zsd�d�� Ztd�d�d��Zud�d�� Zvd�d�� Zwd�d�� Zxd�d�� ZyG d�d�� d�eJ�ZzG d�d�� d�eJ�Z{dS )�� N)�tzutc)�json�quote�zip_longest�urlsplit�
urlunsplit�OrderedDict�six�urlparse�get_tzinfo_options�get_md5�
MD5_AVAILABLE)�
getproxies�proxy_bypass)�InvalidExpressionError�ConfigNotFound�InvalidDNSNameError�ClientError�MetadataRetrievalError�EndpointConnectionError�ReadTimeoutError�ConnectionClosedError�ConnectTimeoutError�UnsupportedS3ArnError�*UnsupportedS3AccesspointConfigurationError�SSOTokenLoadError�InvalidRegionError�UnsupportedOutpostResourceError�&UnsupportedS3ControlConfigurationError�UnsupportedS3ControlArnError�InvalidHostLabelError� zhttp://169.254.169.254/z-._~z[a-z0-9][a-z0-9\-]*[a-z0-9]� dualstackzalexa-for-businessZmediatailorZpricingZ sagemakerzapi-gatewayzapplication-auto-scalingZ appstreamzauto-scalingzauto-scaling-plansz
cost-explorerzcloudhsm-v2zcloudsearch-domainzcognito-identity-providerzconfig-servicezcost-and-usage-report-serviceziot-data-planeziot-jobs-data-planezmediastore-dataz
data-pipelinezdevice-farmziot-1click-devices-servicezdirect-connectzapplication-discovery-servicezdatabase-migration-servicezdirectory-servicezdynamodb-streamszelastic-beanstalkZefszelastic-load-balancingZemrzelastic-transcoderzelastic-load-balancing-v2Zseszmarketplace-entitlement-servicezelasticsearch-serviceZeventbridgeziot-1click-projectszkinesis-analyticsz
kinesis-videozlex-model-building-servicezlex-runtime-servicezcloudwatch-logszmachine-learningzmarketplace-commerce-analyticszmarketplace-meteringz
migration-hubZ
cloudwatchZmturkZ
opsworkscmzresource-groups-tagging-apizroute-53zroute-53-domainszsagemaker-runtimeZsimpledbzsecrets-managerZserverlessapplicationrepositoryzservice-catalogZsfnzstorage-gateway)IZa4bZalexaforbusinesszapi.mediatailorzapi.pricingz
api.sagemakerZ
apigatewayzapplication-autoscalingZ
appstream2Zautoscalingzautoscaling-plansZceZ
cloudhsmv2Zcloudsearchdomainzcognito-idp�configZcurzdata.iotz
data.jobs.iotzdata.mediastoreZdatapipelineZ
devicefarmzdevices.iot1clickZ
directconnectZ discoveryZdmsZdsZdynamodbstreamsZelasticbeanstalkZelasticfilesystemZelasticloadbalancingZelasticmapreduceZelastictranscoderZelbZelbv2Zemailzentitlement.marketplaceZes�eventszcloudwatch-eventsziot-dataz
iot-jobs-dataziot1click-devicesziot1click-projectsZkinesisanalyticsZkinesisvideoz
lex-modelszlex-runtimeZlogsZmachinelearningzmarketplace-entitlementZmarketplacecommerceanalyticszmetering.marketplaceZmeteringmarketplaceZmghz
models.lexZ
monitoringzmturk-requesterzopsworks-cmzprojects.iot1clickZresourcegroupstaggingapiZroute53Zroute53domainszruntime.lexzruntime.sagemakerZsdbZsecretsmanagerZserverlessrepoZservicecatalogZstatesZ
stepfunctionsZstoragegatewayzstreams.dynamodbZtaggingc C s t | t�r| S | j� dkS dS )z~Ensures a boolean value if a string or boolean is provided
For strings, the value for True/False is case insensitive
�trueN)�
isinstance�bool�lower)�val� r* �/usr/lib/python3.6/utils.py�ensure_boolean� s
r, c C s2 t | d�o0| jjdd�o0| jjd�dko0| jdkS )z�Determines if the provided shape is the special header type jsonvalue.
:type shape: botocore.shape
:param shape: Shape to be inspected for the jsonvalue trait.
:return: True if this type is a jsonvalue, False otherwise
:rtype: Bool
�
serializationZ jsonvalueF�location�header�string)�hasattrr- �get� type_name)�shaper* r* r+ �is_json_value_header� s
r5 c C sD | j jd| j jd| j��}|jdd�}|jdd�}tjdd|�}|S )zvReturns the module name for a service
This is the value used in both the documentation and client class name
ZserviceAbbreviationZserviceFullNameZAmazon� ZAWSz\W+)Zmetadatar2 Zservice_name�replace�re�sub)Z
service_model�namer* r* r+ �get_service_module_name� s r; c C s | sdS t | �S )N�/)�remove_dot_segments)�pathr* r* r+ �normalize_url_path� s r? c C s� | sdS | j d�}g }x8|D ]0}|r|dkr|dkrB|rL|j� q|j|� qW | d dkrbd}nd}| d dkr||r|d}nd}|dj|� | S )Nr6 r<