Current File : //proc/self/root/usr/lib/python3/dist-packages/botocore/__pycache__/utils.cpython-312.pyc |
�
P��e� � �V � 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 ej� eP� ZQdZRdZSdZTdZUdZV ej� d� ZXeGe<e:e;fZYdgZZi dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�d)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�i d9d:�d;d<�d=d>�d?d@�dAdB�dCdD�dEdF�dGdH�dIdJ�dKdL�dMdN�dOdP�dQdR�dSdT�dUdV�dWdR�dXdY��i dZd[�d\d]�d^d_�d`da�dbda�dcd8�ddd:�dedB�dfdg�dhdi�djdk�dldm�dndo�dpdq�drds�dtd]�dudv��i dwdx�dydx�dzd{�d|dm�d}d~�dd��d�d��d�dg�d�d��d�d��d�d��d�do�d�d��d�d��d�d��d�d��d�d���d�d�d�dLd�d���Z[ ej� d�ej� ��� Z]d�� Z^d�� Z_d�� Z`d�� Zad�� Zbd�� Zcd�� Zdd�� Zed�� Zf�dd��Zgd�� Zh G d�� d�ei� Zj G d�� d�ei� Zk G d�� d�� Zl G d�� d�el� Zm G d�� d�� Zn G d�� d�el� Zo�dd��Zpd�� Zqerfd��Zsd�� ZteVfd��ZueVfd��Zvd�� Zwd�� Zxd�� Zyd�� Zz�dd��Z{�dd��Z|d�� Z}d�� Z~ G d�� d�� Z G d�� d« Z�dÄ Z�dĄ Z�dń Z�dƄ Z�dDŽ Z�dȄ Z� �ddɄZ� �ddʄZ�d˄ Z�d̄ Z�d̈́ Z�d΄ Z�dτ Z��ddЄZ��ddфZ�d҄ Z�dӄ Z� G dԄ dի Z� G dք d�e�� Z� G d d٫ Z� G dڄ d۫ Z� G d܄ dݫ Z� G dބ d�e�� Z� G d� d� Z� G d� d� Z� G d� d� Z� G d� d� Z� G d� d� Z� G d� d�e�� Z� G d� d� Z�d� Z�d� Z�d� Z��dd�Z�d� Z�d� Z�d� Z�d�� Z�d�� Z�d�� Z�d�� Z�d�� Z� G d�� d�� Z� G d�� d�� Z� G d�� d�� Z��d � Z� G �d� �d� Z��d� Z�d�d�iZ�i dd�d!d"�d#d$��d�d�d'd(�d)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d=d>�dCdD�d?d@�dEdF�dGdH�i dIdJ�dKdL�dMdN�dUdV�dWdR�dXdY�d^d_�d`da��d�d�dcd8�ddd:�dedB�dfdg��d�d ��d
�d��d�d
�dhdi��i �d�d�djdk�dldm��d�d�dndo��d�d�dpdq�drds�dudv�dtd]�dydx�dzd{��d�d�d�d��d�d��d�d���d�d��d�d�d�d��dd�d��d��Z�y( � 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]� dualstack�a4bzalexa-for-business�alexaforbusinesszapi.mediatailor�mediatailorzapi.pricing�pricingz
api.sagemaker� sagemaker�
apigatewayzapi-gatewayzapplication-autoscalingzapplication-auto-scaling�
appstream2� appstream�autoscalingzauto-scalingzautoscaling-planszauto-scaling-plans�cez
cost-explorer�
cloudhsmv2zcloudhsm-v2�cloudsearchdomainzcloudsearch-domainzcognito-idpzcognito-identity-provider�configzconfig-service�curzcost-and-usage-report-servicezdata.iotziot-data-planez
data.jobs.iotziot-jobs-data-planezdata.mediastorezmediastore-data�datapipelinez
data-pipeline�
devicefarmzdevice-farmzdevices.iot1clickziot-1click-devices-service�
directconnectzdirect-connect� discoveryzapplication-discovery-service�dmszdatabase-migration-service�dszdirectory-service�dynamodbstreamszdynamodb-streams�elasticbeanstalkzelastic-beanstalk�elasticfilesystem�efs�elasticloadbalancingzelastic-load-balancing�elasticmapreduce�emr�elastictranscoderzelastic-transcoder�elb�elbv2zelastic-load-balancing-v2�email�seszentitlement.marketplacezmarketplace-entitlement-service�eszelasticsearch-service�events�eventbridgezcloudwatch-eventsziot-dataz
iot-jobs-dataziot1click-devicesziot1click-projectsziot-1click-projects�kinesisanalyticszkinesis-analytics�kinesisvideoz
kinesis-videoz
lex-modelszlex-model-building-servicezlex-runtimezlex-runtime-service�logszcloudwatch-logs�machinelearningzmachine-learningzmarketplace-entitlement�marketplacecommerceanalyticszmarketplace-commerce-analyticszmetering.marketplacezmarketplace-metering�meteringmarketplace�mghz
migration-hubz
models.lex�
monitoring�
cloudwatchzmturk-requester�mturkzopsworks-cm�
opsworkscmzprojects.iot1click�resourcegroupstaggingapizresource-groups-tagging-api�route53zroute-53�route53domainszroute-53-domainszruntime.lexzruntime.sagemakerzsagemaker-runtime�sdb�simpledb�secretsmanagerzsecrets-manager�serverlessrepo�serverlessapplicationrepository�servicecatalogzservice-catalog�sfnzstorage-gateway)�states�
stepfunctions�storagegatewayzstreams.dynamodb�taggingz^X-Amz-Checksum-([a-z0-9]*)$)�flagsc �n � t | t � r| S t | t � r| j � dk( S y)z~Ensures a boolean value if a string or boolean is provided
For strings, the value for True/False is case insensitive
�trueF)�
isinstance�bool�str�lower��vals �0/usr/lib/python3/dist-packages/botocore/utils.py�ensure_booleanr� � s1 � �
�#�t���
� �C�� ��y�y�{�f�$�$�� c � � | j d� }|�.|j � }|t vr|t d�}t di |���|S | j d� ryy)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_mode)�mode�valid_modes�
imds_use_ipv6r8 r7 � )�get_config_variabler| �METADATA_ENDPOINT_MODESr* )�session�
endpoint_mode�lendpoint_mode�error_msg_kwargss r �resolve_imds_endpoint_moder� � so � �
�/�/�,��M� � �&�,�,�.���!8�8�%�6� �� /�B�1A�B�B��� � $� $�_� 5��r� c � � t | d� xrM | j j dd� xr/ | j j d� dk( xr | j dk( S )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
�
serialization� jsonvalueF�location�header�string)�hasattrr� �get� type_name)�shapes r �is_json_value_headerr� � s_ � � ���'� (����#�#�K��7� (����#�#�J�/�8�;� (�
�O�O�x�'� r� c �� � | �yt |t j j � r| |v S | j � |j � D �cg c] }|j � �� c}v S c c}w )z&Case-insensitive check for header key.F)ry �botocore�
awsrequest�HeadersDictr| �keys)�header_name�headers�keys r �
has_headerr� � sZ � ���� �G�X�0�0�<�<� =��g�%�%�� � �"�g�l�l�n�&M�s�s�y�y�{�&M�M�M��&Ms �
A(c � � | j j d| j j d| j � � }|j dd� }|j dd� }t j
dd|� }|S )zvReturns the module name for a service
This is the value used in both the documentation and client class name
�serviceAbbreviation�serviceFullName�Amazon� �AWSz\W+)�metadatar� �service_name�replace�re�sub)�
service_model�names r �get_service_module_namer� su � �
�!�!�%�%�����"�"��}�9�9�
��D� �<�<��"�%�D��<�<��r�"�D�
�6�6�&�"�d�#�D��Kr� c � � | syt | � S )N�/)�remove_dot_segments��paths r �normalize_url_pathr� s � ����t�$�$r� c � � | �| S t | � S )zLReturns None if val is None, otherwise ensure value
converted to boolean)r� r} s r �normalize_booleanr� s � � �{��
��c�"�"r� c � � | sy| j d� }g }|D ]5 }|s�|dk7 s�|dk( r|s�|j � �%|j |� �7 | d dk( rd}nd}| d dk( r|rd}nd}|dj |� z |z S )Nr� r� �.z..r ���)�split�pop�append�join)�url� input_url�output_list�x�first�lasts r r� r� ! s� � � ��� � �#��I��K�
� &����c���D�y���O�O�%��"�"�1�%�
&� �1�v��}�����
�2�w�#�~�+������3�8�8�K�(�(�4�/�/r� c �X � | r| dk( rt | �� �dD ] }|| v s�t | �� � y )Nr� ��
expression)�[�]�*)r'