File: //opt/alt/python311/lib/python3.11/site-packages/botocore/__pycache__/utils.cpython-311.pyc
�
/�;f� � �� � 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 ejO eP� � ZQdZRdZSdZTdZUdZV ejW 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[ ejW 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�dDŽ Z�dȄ Z�dɄ 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��d d�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�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]� 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 � � t | t � � r| S t | t � � r| � � � dk S dS )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 �A/opt/alt/python311/lib/python3.11/site-packages/botocore/utils.py�ensure_booleanr� � sE � �
�#�t��� ��
� �C�� � � ��y�y�{�{�f�$�$��u� c �� � | � d� � }|�5|� � � }|t vr|t d�}t di |���|S | � d� � rdS 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)�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� � s� � �
�/�/�,�� �M� � �&�,�,�.�.���!8�8�8�%�6� � �� /�B�B�1A�B�B�B��� � $� $�_� 5� 5� ��v��6r� c � � t | d� � oC| j � dd� � o(| j � d� � dk o
| 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�7� (���#�#�J�/�/�8�;� (�
�O�x�'� r� c � � | �dS t |t j j � � r| |v S | � � � d� |� � � D � � v S )z&Case-insensitive check for header key.NFc �6 � g | ]}|� � � ��S r� �r| )�.0�keys r �
<listcomp>zhas_header.<locals>.<listcomp>� s � �&M�&M�&M�s�s�y�y�{�{�&M�&M�&Mr� )ry �botocore�
awsrequest�HeadersDictr| �keys)�header_name�headerss r �
has_headerr� � s_ � ����u� �G�X�0�<� =� =� N��g�%�%�� � �"�"�&M�&M�g�l�l�n�n�&M�&M�&M�M�Mr� c � � | j � d| j � d| j � � � � }|� dd� � }|� 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� s} � �
�!�%�%����"�"��}�9�
�
�� �D� �<�<��"�%�%�D��<�<��r�"�"�D�
�6�&�"�d�#�#�D��Kr� c �( � | sdS t | � � S )N�/)�remove_dot_segments��paths r �normalize_url_pathr� s � �� ��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 �4 � | sdS | � d� � }g }|D ]<}|r8|dk r2|dk r|r|� � � �'|� |� � �=| d dk rd}nd}| d dk r|rd}nd}|d� |� � z |z S )Nr� r� �.z..r ���)�split�pop�append�join)�url� input_url�output_list�x�first�lasts r r� r� ! s� � � � ��r�� � �#���I��K�
� &� &��� &��c����D�y�y�� &��O�O�%�%�%���"�"�1�%�%�%��
�1�v��}�}������
�2�w�#�~�~�+�~�������3�8�8�K�(�(�(�4�/�/r� c �h � | r| dk rt | �� � �dD ]}|| v rt | �� � ��d S )Nr� ��
expression)�[�]�*)r'