HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/site-packages/botocore/__pycache__/regions.cpython-38.pyc
U

KD�g���@sdZddlZddlZddlZddlmZddlZddlmZm	Z	ddl
mZmZddl
mZddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZdd	l m!Z!m"Z"e�#e$�Z%d
Z&diiZ'Gdd
�d
�Z(Gdd�de(�Z)Gdd�de*e�Z+Gdd�d�Z,dS)z�Resolves regions and endpoints.

This module implements endpoint resolution, including resolving endpoints for a
given service and region and resolving the available endpoints for a service
in a specific AWS partition.
�N)�Enum)�UNSIGNED�
xform_name)�AUTH_TYPE_MAPS�HAS_CRT��CRT_SUPPORTED_AUTH_TYPES)�EndpointProvider)�EndpointProviderError�EndpointVariantError�!InvalidEndpointConfigurationError�InvalidHostLabelError�MissingDependencyException�
NoRegionError�ParamValidationError�$UnknownEndpointResolutionBuiltInName�UnknownRegionError�UnknownSignatureVersionError�*UnsupportedS3AccesspointConfigurationError�UnsupportedS3ConfigurationError�UnsupportedS3ControlArnError�&UnsupportedS3ControlConfigurationError)�ensure_boolean�instance_cachez{service}.{region}.{dnsSuffix}�	endpointsc@s,eZdZdZddd�Zdd�Zdd	d
�ZdS)
�BaseEndpointResolverz3Resolves regions and endpoints. Must be subclassed.NcCst�dS)a7Resolves an endpoint for a service and region combination.

        :type service_name: string
        :param service_name: Name of the service to resolve an endpoint for
            (e.g., s3)

        :type region_name: string
        :param region_name: Region/endpoint name to resolve (e.g., us-east-1)
            if no region is provided, the first found partition-wide endpoint
            will be used if available.

        :rtype: dict
        :return: Returns a dict containing the following keys:
            - partition: (string, required) Resolved partition name
            - endpointName: (string, required) Resolved endpoint name
            - hostname: (string, required) Hostname to use for this endpoint
            - sslCommonName: (string) sslCommonName to use for this endpoint.
            - credentialScope: (dict) Signature version 4 credential scope
              - region: (string) region name override when signing.
              - service: (string) service name override when signing.
            - signatureVersions: (list<string>) A list of possible signature
              versions, including s3, v4, v2, and s3v4
            - protocols: (list<string>) A list of supported protocols
              (e.g., http, https)
            - ...: Other keys may be included as well based on the metadata
        N��NotImplementedError)�self�service_name�region_name�r!�=/opt/cppython/lib/python3.8/site-packages/botocore/regions.py�construct_endpoint9sz'BaseEndpointResolver.construct_endpointcCst�dS)z�Lists the partitions available to the endpoint resolver.

        :return: Returns a list of partition names (e.g., ["aws", "aws-cn"]).
        Nr�rr!r!r"�get_available_partitionsVsz-BaseEndpointResolver.get_available_partitions�awsFcCst�dS)a�Lists the endpoint names of a particular partition.

        :type service_name: string
        :param service_name: Name of a service to list endpoint for (e.g., s3)

        :type partition_name: string
        :param partition_name: Name of the partition to limit endpoints to.
            (e.g., aws for the public AWS endpoints, aws-cn for AWS China
            endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc.

        :type allow_non_regional: bool
        :param allow_non_regional: Set to True to include endpoints that are
             not regional endpoints (e.g., s3-external-1,
             fips-us-gov-west-1, etc).
        :return: Returns a list of endpoint names (e.g., ["us-east-1"]).
        Nr)rr�partition_name�allow_non_regionalr!r!r"�get_available_endpoints]sz,BaseEndpointResolver.get_available_endpoints)N)r&F)�__name__�
__module__�__qualname__�__doc__r#r%r)r!r!r!r"r6s
�rc@s�eZdZdZddgZd%dd�Zd&dd	�Zd
d�Zd'd
d�Zd(dd�Z	d)dd�Z
dd�Zd*dd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�ZdS)+�EndpointResolverz7Resolves endpoints based on partition endpoint metadatazaws-isoz	aws-iso-bFcCs d|krtd��||_||_dS)a
        :type endpoint_data: dict
        :param endpoint_data: A dict of partition data.

        :type uses_builtin_data: boolean
        :param uses_builtin_data: Whether the endpoint data originates in the
            package's data directory.
        �
partitionsz%Missing "partitions" in endpoint dataN)�
ValueError�_endpoint_data�uses_builtin_data)r�
endpoint_datar2r!r!r"�__init__xs	zEndpointResolver.__init__r&cCsB|jdD]2}|d|krq
|d}||kr.q
||dSdS)Nr/�	partition�servicesr)r1)rrr'r5r6r!r!r"�get_service_endpoints_data�sz+EndpointResolver.get_service_endpoints_datacCs&g}|jdD]}|�|d�q|S)Nr/r5)r1�append)r�resultr5r!r!r"r%�sz)EndpointResolver.get_available_partitionsNcCs�g}|jdD]�}|d|kr q|d}||kr2q||d}|D]J}	|	|dk}
|rz|
rz|�||	|�}|r�|�|	�qB|s�|
rB|�|	�qBq|S)Nr/r5r6r�regions)r1�_retrieve_variant_datar8)rrr'r(�endpoint_variant_tagsr9r5r6Zservice_endpoints�
endpoint_nameZis_regional_endpointZvariant_datar!r!r"r)�s(�z(EndpointResolver.get_available_endpointscCs\|jdD]L}|d|kr
|rJ|�|�d�|�}|rVd|krV|dSq
|dSq
dS)Nr/r5�defaults�	dnsSuffix)r1r;�get)rr'r<r5�variantr!r!r"�get_partition_dns_suffix�s�z)EndpointResolver.get_partition_dns_suffixc	Cs�|dkr|r|dkrd}|dk	rhd}|jdD]}|d|kr.|}q.|dk	rd|�|||||d�}|SdS|jdD]6}|r�|d|jkr�qr|�|||||�}|rr|SqrdS)N�s3z	us-east-1r/r5T)r1�_endpoint_for_partition�!_UNSUPPORTED_DUALSTACK_PARTITIONS)	rrr r'�use_dualstack_endpoint�use_fips_endpointZvalid_partitionr5r9r!r!r"r#�sN	�������z#EndpointResolver.construct_endpointcCs8|jdD]}|�||�r
|dSq
t|dd��dS)Nr/r5z,No partition found for provided region_name.)r �	error_msg)r1�
_region_matchr)rr r5r!r!r"�get_partition_for_region�s�z)EndpointResolver.get_partition_for_regionc
Cs�|d}|r0||jkr0d|�d�}tdg|d��|d�|t�}	|dkr`d|	krZ|	d}nt��|||	|||d�}
||	d	kr�|jf|
�S|�||�s�|r�|	�d�}|	�d
d�}|r�|s�t�d|||�||
d
<|jf|
�St�d||�|jf|
�SdS)Nr5z4Dualstack endpoints are currently not supported for z
 partition�	dualstack��tagsrHr6ZpartitionEndpoint)r5r�service_datar=rFrGrZisRegionalizedTz'Using partition endpoint for %s, %s: %sr=z*Creating a regex based endpoint for %s, %s)	rErr@�DEFAULT_SERVICE_DATAr�_resolverI�LOG�debug)
rr5rr rFrGZforce_partitionr'rHrNZresolve_kwargsZpartition_endpointZis_regionalizedr!r!r"rD�sV	��
��
�

��z(EndpointResolver._endpoint_for_partitioncCs0||dkrdSd|kr,t�|d��|�SdS)Nr:TZregionRegexF)�re�compile�match)rr5r r!r!r"rI<s
zEndpointResolver._region_matchcCs>|�dg�}|D](}t|d�t|�kr|��}|SqdS)N�variantsrM)r@�set�copy)rr3rMrVrAr9r!r!r"r;Cs
z'EndpointResolver._retrieve_variant_datacCs$g}|r|�d�|r |�d�|S)NrKZfips)r8)rrFrGrMr!r!r"�_create_tag_listJs

z!EndpointResolver._create_tag_listcCs4i}|||fD] }|�||�}|r|�||�q|S�N)r;�_merge_keys)rrMr3�service_defaults�partition_defaultsr9rVrAr!r!r"�_resolve_variantRsz!EndpointResolver._resolve_variantc
Cs&|�di��|i�}|�d�r.t�d|���|�di�}|�di�}	|�||�}
|
r�|�|
|||	�}|ikr�d|�d|��}t|
|d��|�||�n|}d|kr�|d|d<|d	|d	<||d
<|�||�|�|	|�|�||d|||d�|d<d|k�r"|�||d|||d�|d<|S)
Nr�
deprecatedz3Client is configured with the deprecated endpoint: r>zEndpoint does not exist for z in region rLr?r5ZendpointName�hostnameZ
sslCommonName)r@rQ�warningrYr^rr[�_expand_template)
rr5rrNr=rFrGr3r\r]rMr9rHr!r!r"rP\s\	�
����
�zEndpointResolver._resolvecCs"|D]}||kr||||<qdSrZr!)r�	from_datar9�keyr!r!r"r[�szEndpointResolver._merge_keyscCs|j|||d�S)N)Zservice�regionr?)�format)rr5�templaterr=r?r!r!r"rb�s
�z!EndpointResolver._expand_template)F)r&)r&FN)N)NNFF)F)r*r+r,r-rEr4r7r%r)rBr#rJrDrIr;rYr^rPr[rbr!r!r!r"r.ss4

		�
�
�
2�
A
Ar.c@s@eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdS)�EndpointResolverBuiltinszAWS::RegionzAWS::UseFIPSzAWS::UseDualStackzAWS::STS::UseGlobalEndpointzAWS::S3::UseGlobalEndpointzAWS::S3::AcceleratezAWS::S3::ForcePathStylezAWS::S3::UseArnRegionzAWS::S3Control::UseArnRegionz'AWS::S3::DisableMultiRegionAccessPointsz
SDK::EndpointzAWS::Auth::AccountIdz AWS::Auth::AccountIdEndpointModeN)r*r+r,Z
AWS_REGIONZAWS_USE_FIPSZAWS_USE_DUALSTACKZAWS_STS_USE_GLOBAL_ENDPOINTZAWS_S3_USE_GLOBAL_ENDPOINTZAWS_S3_ACCELERATEZAWS_S3_FORCE_PATH_STYLEZAWS_S3_USE_ARN_REGIONZAWS_S3CONTROL_USE_ARN_REGIONZAWS_S3_DISABLE_MRAPZSDK_ENDPOINTZ
ACCOUNT_IDZACCOUNT_ID_ENDPOINT_MODEr!r!r!r"rh�srhc@s�eZdZdZd&dd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Ze
dd��Ze
dd��Ze
dd��Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�ZdS)'�EndpointRulesetResolverz5Resolves endpoints using a service's endpoint rulesetTNc		CsHt||d�|_|jjj|_||_||_||_||_||_	||_
i|_dS)N)Zruleset_data�partition_data)r	�	_providerZruleset�
parameters�_param_definitions�_service_model�	_builtins�_client_context�_event_emitter�_use_ssl�_requested_auth_schemeZ_instance_cache)	rZendpoint_ruleset_datarjZ
service_model�builtinsZclient_contextZ
event_emitterZuse_sslZrequested_auth_schemer!r!r"r4�s�z EndpointRulesetResolver.__init__c
Cs�|dkri}|dkri}|�|||�}t�d|���z|jjf|�}Wn@tk
r�}z"|�||�}|dkrr�n||�W5d}~XYnXt�d|j���|js�|j�	d�r�|j
d|jdd���d�}|j
dd	�|j��D�d
�}|S)zAInvokes the provider with params defined in the service's rulesetNz+Calling endpoint provider with parameters: zEndpoint provider result: zhttps://zhttp://�)�urlcSsi|]\}}||d�qS)rr!)�.0rd�valr!r!r"�
<dictcomp>sz>EndpointRulesetResolver.construct_endpoint.<locals>.<dictcomp>)�headers)
�_get_provider_paramsrQrRrkZresolve_endpointr
�#ruleset_error_to_botocore_exceptionrvrr�
startswith�_replacerz�items)r�operation_model�	call_args�request_context�provider_paramsZprovider_result�exZbotocore_exceptionr!r!r"r#�sF�������z*EndpointRulesetResolver.construct_endpointc	Csli}|�|||�}|j��D]J\}}|j|||d�}|dkrV|jdk	rV|j|j|d�}|dk	r|||<q|S)a�Resolve a value for each parameter defined in the service's ruleset

        The resolution order for parameter values is:
        1. Operation-specific static context values from the service definition
        2. Operation-specific dynamic context values from API parameters
        3. Client-specific context parameters
        4. Built-in values such as region, FIPS usage, ...
        )�
param_namer�r�N)�builtin_namert)�_get_customized_builtinsrmr�_resolve_param_from_context�builtin�_resolve_param_as_builtin)	rr�r�r�r��customized_builtinsr�Z	param_defZ	param_valr!r!r"r{s(���
z,EndpointRulesetResolver._get_provider_paramscCsV|�||�}|dk	r|S|�|||�}|dk	r2|S|�|||�}|dk	rL|S|�|�SrZ)�&_resolve_param_as_static_context_param�'_resolve_param_as_dynamic_context_param�)_resolve_param_as_operation_context_param�&_resolve_param_as_client_context_param)rr�r�r�ZstaticZdynamicZoperation_context_paramsr!r!r"r�;s,����z3EndpointRulesetResolver._resolve_param_from_contextcCs|�|�}|�|�SrZ)�_get_static_context_paramsr@)rr�r�Zstatic_ctx_paramsr!r!r"r�Qs
z>EndpointRulesetResolver._resolve_param_as_static_context_paramcCs(|�|�}||kr$||}|�|�SdSrZ)�_get_dynamic_context_paramsr@)rr�r�r�Zdynamic_ctx_params�member_namer!r!r"r�Ws
z?EndpointRulesetResolver._resolve_param_as_dynamic_context_paramcCs(|��}||kr$||}|j�|�SdSrZ)�_get_client_context_paramsrpr@)rr�Zclient_ctx_paramsZclient_ctx_varnamer!r!r"r�_sz>EndpointRulesetResolver._resolve_param_as_client_context_paramcCs*|j}||kr&||d}t�||�SdS)N�path)Zoperation_context_parameters�jmespath�search)rr�r�r�Zoperation_ctx_paramsr�r!r!r"r�eszAEndpointRulesetResolver._resolve_param_as_operation_context_paramcCs4|tj��krt|d��|�|�}t|�r0|�S|S)N��name)rh�__members__�valuesrr@�callable)rr�rtr�r!r!r"r�ms

z1EndpointRulesetResolver._resolve_param_as_builtincCsdd�|jD�S)z=Mapping of param names to static param value for an operationcSsi|]}|j|j�qSr!)r��value�rw�paramr!r!r"ryxs�zFEndpointRulesetResolver._get_static_context_params.<locals>.<dictcomp>)Zstatic_context_parameters�rr�r!r!r"r�us�z2EndpointRulesetResolver._get_static_context_paramscCsdd�|jD�S)z7Mapping of param names to member names for an operationcSsi|]}|j|j�qSr!)r�r�r�r!r!r"ry�s�zGEndpointRulesetResolver._get_dynamic_context_params.<locals>.<dictcomp>)Zcontext_parametersr�r!r!r"r�}s�z3EndpointRulesetResolver._get_dynamic_context_paramscCsdd�|jjD�S)z7Mapping of param names to client configuration variablecSsi|]}|jt|j��qSr!)r�rr�r!r!r"ry�s�zFEndpointRulesetResolver._get_client_context_params.<locals>.<dictcomp>)rnZclient_context_parametersr$r!r!r"r��s�z2EndpointRulesetResolver._get_client_context_paramscCs8|jj��}t�|j�}|jjd|��||||d�|S)Nzbefore-endpoint-resolution.)rt�model�params�context)rn�
service_idZ	hyphenizerXrorq�emit)rr�r�r�r�r�r!r!r"r��s�z0EndpointRulesetResolver._get_customized_builtinscs�t|t�rt|�dkrtd��t�dd�dd�|D���j��jtkrPdifS�fdd�|D�}�jd	k	r�zt	�fd
d�|D��\}}Wnt
k
r�d	ifYSXn~zt	dd�|D��\}}Wnbt
k
�r&d
}dd�|D�}t�stdd�|D��}|�rt
dd��ntd�|�d��YnXi}d|k�rD|d|d<n.d|k�rrt|d�dk�rrd�|d�|d<d|k�r�|j|dd�d|k�r�t|d�|d<t�d|d||�||fS)a�Convert an Endpoint's authSchemes property to a signing_context dict

        :type auth_schemes: list
        :param auth_schemes: A list of dictionaries taken from the
            ``authSchemes`` property of an Endpoint object returned by
            ``EndpointProvider``.

        :rtype: str, dict
        :return: Tuple of auth type string (to be used in
            ``request_context['auth_type']``) and signing context dict (for use
            in ``request_context['signing']``).
        rz&auth_schemes must be a non-empty list.z_Selecting from endpoint provider's list of auth schemes: %s. User selected auth scheme is: "%s"z, cSsg|]}d|�d��d��qS)�"r�)r@�rw�sr!r!r"�
<listcomp>�szGEndpointRulesetResolver.auth_schemes_to_signing_ctx.<locals>.<listcomp>�nonecs"g|]}|d��|d�i��qSr�)�_strip_sig_prefix�rw�schemer$r!r"r��s�Nc3s*|]"}���j|d�r�j|fVqdS�r�N)�._does_botocore_authname_match_ruleset_authnamersr�r$r!r"�	<genexpr>�s��zFEndpointRulesetResolver.auth_schemes_to_signing_ctx.<locals>.<genexpr>css&|]}|dtkr|d|fVqdSr�)rr�r!r!r"r��s�FcSsg|]}|d�qSr�r!r�r!r!r"r��scss|]}|tkVqdSrZrr�r!r!r"r��s�zbThis operation requires an additional dependency. Use pip install botocore[crt] before proceeding.��msg)Zsignature_versionZ
signingRegionreZsigningRegionSet�,ZsigningName)Zsigning_nameZdisableDoubleEncodingz?Selected auth type "%s" as "%s" with signing context params: %sr�)�
isinstance�list�len�	TypeErrorrQrR�joinrsr�next�
StopIterationr�anyrr�updater)rZauth_schemesr�r�Zfixable_with_crtZauth_type_optionsZsigning_contextr!r$r"�auth_schemes_to_signing_ctx�st
�

�
�����

�

��z3EndpointRulesetResolver.auth_schemes_to_signing_ctxcCs|�d�r|dd�S|S)z6Normalize auth type names by removing any "sig" prefix�sig�N)r})rZ	auth_namer!r!r"r��sz)EndpointRulesetResolver._strip_sig_prefixcCs>|�|�}|�d�d}|dkr6|�d�r6|dd�}||kS)a\
        Whether a valid string provided as signature_version parameter for
        client construction refers to the same auth methods as a string
        returned by the endpoint ruleset provider. This accounts for:

        * The ruleset prefixes auth names with "sig"
        * The s3 and s3control rulesets don't distinguish between v4[a] and
          s3v4[a] signers
        * The v2, v3, and HMAC v1 based signers (s3, s3-*) are botocore legacy
          features and do not exist in the rulesets
        * Only characters up to the first dash are considered

        Example matches:
        * v4, sigv4
        * v4, v4
        * s3v4, sigv4
        * s3v7, sigv7 (hypothetical example)
        * s3v4a, sigv4a
        * s3v4-query, sigv4

        Example mismatches:
        * v4a, sigv4
        * s3, sigv4
        * s3-presign-post, sigv4
        �-rrC�N)r��splitr})rZbotonameZrsnamer!r!r"r�s

zFEndpointRulesetResolver._does_botocore_authname_match_ruleset_authnamecCsz|j�d�}|dkrdS|�d�rXz|�d�d}Wntk
rL|}YnXt|d�S|jj}|dkr�|dksx|d	kr�t|d
�S|�d�s�|�d�s�|�d
�s�|�d�s�|�d�s�|�d�r�t	|d
�S|�
��d�r�t|d�S|dk�rB|�d��r|�d�}t||d�S|�d��s$|�d��r.t
|d
�S|dk�rBt|d�S|dk�rv|�d��rbt|d
�S|dk�rvt|d
�SdS)z�Attempts to translate ruleset errors to pre-existing botocore
        exception types by string matching exception strings.
        r�NzInvalid region in ARN: �`�)�labelrCz/S3 Object Lambda does not support S3 Acceleratez#Accelerate cannot be used with FIPSr�zS3 Outposts does not supportzS3 MRAP does not supportz!S3 Object Lambda does not supportzAccess Points do not supportzInvalid configuration:z#Client was configured for partitionzinvalid arn:)�reportZ	s3controlzInvalid ARN:ZBucket)�arnr�z!AccountId is required but not set�eventszUInvalid Configuration: FIPS is not supported with EventBridge multi-region endpoints.z&EndpointId must be a valid host label.)�kwargsr@r}r��
IndexErrorr
rnrrr�lowerrrrr)rZruleset_exceptionr�r�r�rr�r!r!r"r|#sb


��
������



�



�


z;EndpointRulesetResolver.ruleset_error_to_botocore_exception)TN)r*r+r,r-r4r#r{r�r�r�r�r�r�rr�r�r�r�r�r�r�r|r!r!r!r"ri�s.
�
2!


c ri)-r-rX�loggingrS�enumrr�ZbotocorerrZ
botocore.authrrZbotocore.crtrZbotocore.endpoint_providerr	Zbotocore.exceptionsr
rrr
rrrrrrrrrrZbotocore.utilsrr�	getLoggerr*rQZDEFAULT_URI_TEMPLATErOrr.�strrhrir!r!r!r"�<module>
s(@
=9#