o
    di                     @   sR   d dl Z d dlZd dlmZ d dlmZ d dlmZ ee	Z
G dd deZdS )    N)EndpointProviderError)EndpointRulesetResolver)resolve_awaitablec                   @   s$   e Zd Zdd Zdd Zdd ZdS )AioEndpointRulesetResolverc              
      s   |du ri }|du ri }|  |||I dH }td| z| jjdi |}W n tyB } z| ||}|du r; ||d}~ww td|j | jse|j	dred|vre|j
d|jdd  d}|j
d	d
 |j D d}|S )zAInvokes the provider with params defined in the service's rulesetNz-Calling endpoint provider with parameters: %szEndpoint provider result: %szhttps://Endpointzhttp://   )urlc                 S   s   i | ]	\}}||d  qS )r    ).0keyvalr	   r	   G/home/ubuntu/.local/lib/python3.10/site-packages/aiobotocore/regions.py
<dictcomp><   s    zAAioEndpointRulesetResolver.construct_endpoint.<locals>.<dictcomp>)headersr	   )_get_provider_paramsLOGdebug	_providerresolve_endpointr   #ruleset_error_to_botocore_exceptionr   _use_ssl
startswith_replacer   items)selfoperation_model	call_argsrequest_contextprovider_paramsprovider_resultexbotocore_exceptionr	   r	   r   construct_endpoint   sN   



z-AioEndpointRulesetResolver.construct_endpointc           	         s   i }|  |||I dH }| j D ]0\}}| j|||d}|du r4|jdur4t| j|j|dI dH }|durB|||< | || 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, ...
        N)
param_namer   r   )builtin_namebuiltins)_get_customized_builtins_param_definitionsr   _resolve_param_from_contextbuiltinr   _resolve_param_as_builtin_register_endpoint_feature_ids)	r   r   r   r   r   customized_builtinsr#   	param_def	param_valr	   r	   r   r   C   s.   

z/AioEndpointRulesetResolver._get_provider_paramsc                    s@   | j j }t| j}| jjd| ||||dI d H  |S )Nzbefore-endpoint-resolution.)r%   modelparamscontext)_service_model
service_id	hyphenizecopy	_builtins_event_emitteremit)r   r   r   r   r3   r,   r	   r	   r   r&   g   s   z3AioEndpointRulesetResolver._get_customized_builtinsN)__name__
__module____qualname__r"   r   r&   r	   r	   r	   r   r      s    6$r   )r5   loggingbotocore.exceptionsr   botocore.regionsr   aiobotocore._helpersr   	getLoggerr9   r   r   r	   r	   r	   r   <module>   s    
