File: //opt/cppython/lib/python3.8/site-packages/botocore/__pycache__/utils.cpython-38.pyc
U
KD�g? � D @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZd dl
Z
d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZmZ d dlZd dlmZ d dlmZ d dlZd dlZd dl Zd dl!m"Z" d d l!m#Z# d d
l!m$Z$ d dl!m%Z% d dl!m&Z& d d
l!m'Z' d dl!m(Z( d dl!m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN e�OeP�ZQdZRdZSdZTdZUdZVe�Wd�ZXeGe<e:e;fZYdgZZddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d2d5d6d7d8d9d9d&d'd:d;d<d=d>d?d7d@dAdAdBd<dCdDdEdFdGdHd=dIdJdKdLdMdNdNdOd/dFdP�CZ[ejWdQej\dR�Z]dSdT� Z^dUdV� Z_dWdX� Z`dYdZ� Zad[d\� Zbd]d^� Zcd_d`� Zddadb� Zedcdd� Zf�ddfdg�Zgdhdi� ZhG djdk� dkei�ZjG dldm� dmei�ZkG dndo� do�ZlG dpdq� dqel�ZmG drds� ds�ZnG dtdu� duel�Zo�ddwdx�Zpdydz� Zqerfd{d|�Zsd}d~� ZteVfdd��ZueVfd�d��Zvd�d�� Zwd�d�� Zxd�d�� Zyd�d�� Zz�dd�d��Z{�d d�d��Z|d�d�� Z}d�d�� Z~G d�d�� d��ZG d�d�� d��Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z��d
d�d��Z��dd�d��Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z��dd�d��Z��d
d�d��Z�d�d�� Z�d�d�� Z�G d�d�� d��Z�G d�d�� d�e��Z�G d�d�� d��Z�G d�d�� d��Z�G d�d dZ�G d�dĄ d�e��Z�G d�dƄ dƃZ�G d�dȄ dȃZ�G d�dʄ dʃZ�G d�d̄ d̃Z�G d�d΄ dZ�G d�dЄ d�e��Z�G d�d҄ d҃Z�d�dԄ Z�d�dք Z�d�d Z��dd�dۄZ�d�d݄ Z�d�d߄ Z�d�d� Z�d�d� Z�d�d� Z�d�d� Z�d�d� Z�d�d� Z�G d�d� d�Z�G d�d� d�Z�G d�d� d�Z�d�d� Z�G d�d�� d��Z�d�d�� Z�d�dIiZ�ddd�ddd d!d"d#d$d%d)d+d*d,d-d.d�d/d0d4d2d5d8d9d�d&d'd�d�d�d:d�d;d<�d d=�dd>d?d@d7dAdB�ddFdGdH�ddJdKdLdM�ddNdO�d�8Z�dS ( � N)�datetime)�
ip_address)�Path)�
getproxies�proxy_bypass)�tzutc)�LocationParseError)�HEX_PAT)�IPV4_PAT)�IPV6_ADDRZ_PAT)�IPV6_PAT)�LS32_PAT)�UNRESERVED_PAT)�ZONE_ID_PAT)�HAS_CRT�IPV4_RE�
IPV6_ADDRZ_RE�
MD5_AVAILABLE�UNSAFE_URL_CHARS�OrderedDict�get_md5�get_tzinfo_options�json�quote�urlparse�urlsplit�
urlunsplit�zip_longest)�ClientError�ConfigNotFound�ConnectionClosedError�ConnectTimeoutError�EndpointConnectionError�HTTPClientError�InvalidDNSNameError�!InvalidEndpointConfigurationError�InvalidExpressionError�InvalidHostLabelError�InvalidIMDSEndpointError�InvalidIMDSEndpointModeError�InvalidRegionError�MetadataRetrievalError�MissingDependencyException�ReadTimeoutError�SSOTokenLoadError�UnsupportedOutpostResourceError�*UnsupportedS3AccesspointConfigurationError�UnsupportedS3ArnError�UnsupportedS3ConfigurationError�UnsupportedS3ControlArnError�&UnsupportedS3ControlConfigurationError� zhttp://169.254.169.254/zhttp://[fd00:ec2::254]/)�ipv4�ipv6z-._~z[a-z0-9][a-z0-9\-]*[a-z0-9]� dualstackZmediatailorZpricingZ 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-farmzdirect-connectzapplication-discovery-servicezdatabase-migration-servicezdirectory-servicezdynamodb-streamszelastic-beanstalkZefszelastic-load-balancingZemrzelastic-transcoderzelastic-load-balancing-v2Zseszmarketplace-entitlement-servicezelasticsearch-serviceZeventbridgezkinesis-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-catalog�sfnzstorage-gateway)Czapi.mediatailorzapi.pricingz
api.sagemaker�
apigateway�application-autoscalingZ
appstream2�autoscaling�autoscaling-plans�ce�
cloudhsmv2�cloudsearchdomain�cognito-idp�config�curzdata.iotz
data.jobs.iotzdata.mediastore�datapipeline�
devicefarm�
directconnect� discovery�dms�ds�dynamodbstreams�elasticbeanstalkZelasticfilesystemZelasticloadbalancingZelasticmapreduce�elastictranscoder�elb�elbv2�emailzentitlement.marketplace�es�eventszcloudwatch-events�iot-data�
iot-jobs-data�kinesisanalytics�kinesisvideo�
lex-models�lex-runtime�logs�machinelearning�marketplace-entitlement�marketplacecommerceanalyticszmetering.marketplace�meteringmarketplace�mghz
models.lexZ
monitoringzmturk-requesterzopsworks-cm�resourcegroupstaggingapi�route53�route53domainszruntime.lex�runtime.sagemaker�sdb�secretsmanager�serverlessrepo�servicecatalogZstates�
stepfunctions�storagegatewayzstreams.dynamodbZtaggingz^X-Amz-Checksum-([a-z0-9]*)$)�flagsc C s, t | t�r| S t | t�r$| �� dkS dS dS )z~Ensures a boolean value if a string or boolean is provided
For strings, the value for True/False is case insensitive
�trueFN)�
isinstance�bool�str�lower��val� rp �;/opt/cppython/lib/python3.8/site-packages/botocore/utils.py�ensure_boolean� s
rr c C sL | � d�}|dk r:|�� }|tkr6|td�}tf |��|S | � d�rHdS dS )z�Resolving IMDS endpoint mode to either IPv6 or IPv4.
ec2_metadata_service_endpoint_mode takes precedence over imds_use_ipv6.
�"ec2_metadata_service_endpoint_modeN)�modeZvalid_modesZ
imds_use_ipv6r7 r6 )�get_config_variablerm �METADATA_ENDPOINT_MODESr) )�sessionZ
endpoint_modeZlendpoint_modeZerror_msg_kwargsrp rp rq �resolve_imds_endpoint_mode� s ��
rx c C s2 t | d�o0| j�dd�o0| j�d�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)�hasattrry �get� type_name)�shaperp rp rq �is_json_value_header� s
���r� c C s@ | dkrdS t |tjj�r"| |kS | �� dd� |�� D �kS dS )z&Case-insensitive check for header key.NFc S s g | ]}|� � �qS rp �rm )�.0�keyrp rp rq �
<listcomp>� s zhas_header.<locals>.<listcomp>)rj �botocore�
awsrequestZHeadersDictrm �keys)�header_name�headersrp rp rq �
has_header� s
r� c C sD | j �d| j �d| j��}|�dd�}|�dd�}t�dd|�}|S )zvReturns the module name for a service
This is the value used in both the documentation and client class name
ZserviceAbbreviationZserviceFullNameZAmazon� ZAWSz\W+)�metadatar~ �service_name�replace�re�sub)Z
service_model�namerp rp rq �get_service_module_name� s ��r� c C s | sdS t | �S )N�/)�remove_dot_segments��pathrp rp rq �normalize_url_path s r� c C s | dkr| S t | �S dS )zLReturns None if val is None, otherwise ensure value
converted to booleanN)rr rn rp rp rq �normalize_boolean s r� c C s� | sdS | � d�}g }|D ]0}|r|dkr|dkr@|rJ|�� q|�|� q| d dkr^d}nd}| d dkrx|rxd}nd}|d�|� | S )Nr� r� �.z..r ���)�split�pop�append�join)�urlZ input_urlZoutput_list�x�first�lastrp rp rq r� s"