o
    di(                     @   s  d dl mZmZ d dl mZ d dlmZ d dlmZ d dl	m
Z
mZmZmZmZ d dl	mZ d dlmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlmZ ddlmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& G dd dZ'G dd deZ(dddZ)dS )    )UNSIGNED	translate)__version__)get_context)PartialCredentialsError)EVENT_ALIASESServiceModelUnknownServiceErrorcopylogger)Session)register_feature_id   )r   retryhandler)AioBaseClientAioClientCreator)"AioSmartDefaultsConfigStoreFactory)with_current_context)AioCredentialscreate_credential_resolver)AioHierarchicalEmitter)AioResponseParserFactorycreate_token_resolver)AioIMDSRegionProviderc                   @   s*   e Zd Zdd ZdefddZdd ZdS )	ClientCreatorContextc                 C   s   || _ d | _d S N)_coro_client)selfcoro r!   G/home/ubuntu/.local/lib/python3.10/site-packages/aiobotocore/session.py__init__   s   
zClientCreatorContext.__init__returnc                    s    | j I d H | _| j I d H S r   )r   r   
__aenter__r   r!   r!   r"   r%      s   zClientCreatorContext.__aenter__c                    s   | j |||I d H  d S r   )r   	__aexit__)r   exc_typeexc_valexc_tbr!   r!   r"   r'   #   s   zClientCreatorContext.__aexit__N)__name__
__module____qualname__r#   r   r%   r'   r!   r!   r!   r"   r      s    r   c                       s   e Zd Z				d fdd	Zdd Zdd Zd	d
 Zdd Zdd Z	d ddZ	dd Z
d!ddZd!ddZdd Ze 										d"ddZ	d#ddZ  ZS )$
AioSessionNTc                    s,   |d u rt  }t |||| |   d S r   )r   superr#   _set_user_agent_for_session)r   session_varsevent_hooksinclude_builtin_handlersprofile	__class__r!   r"   r#   )   s   zAioSession.__init__c                 C   s   d| _ t| _dt | _d S )Naiobotocorez	botocore/)user_agent_namer   user_agent_versionbotocore_versionuser_agent_extrar&   r!   r!   r"   r0   9   s   z&AioSession._set_user_agent_for_sessionc                 C      t | S r   r   r&   r!   r!   r"   _create_token_resolverA   s   z!AioSession._create_token_resolverc                 C   s   t | | jdS )N)region_name)r   _last_client_region_usedr&   r!   r!   r"   _create_credential_resolverD   s   z&AioSession._create_credential_resolverc                    s    fdd} j d| d S )Nc                     s     d} t d}t| |S )Ndefault_config_resolver)session)_get_internal_componentr   r   )rA   imds_region_providerr&   r!   r"   create_smart_defaults_factoryJ   s   
zRAioSession._register_smart_defaults_factory.<locals>.create_smart_defaults_factorysmart_defaults_factory)_internal_componentslazy_register_component)r   rE   r!   r&   r"    _register_smart_defaults_factoryI   s   	z+AioSession._register_smart_defaults_factoryc                 C   s   | j dt  d S )Nresponse_parser_factory)_componentsregister_componentr   r&   r!   r!   r"   !_register_response_parser_factoryW   s   z,AioSession._register_response_parser_factoryc                 C   s   t ||||d| _d S )N)
account_id)r   _credentials)r   
access_key
secret_keytokenrN   r!   r!   r"   set_credentials\   s   zAioSession.set_credentialsc                    s*   | j d u r| jd I d H | _ | j S )Ncredential_provider)rO   rK   get_componentload_credentialsr&   r!   r!   r"   get_credentialsc   s   

zAioSession.get_credentialsc                    s    |  ||I d H }t||dS )N)service_name)get_service_datar   )r   rX   api_versionservice_descriptionr!   r!   r"   get_service_modelj   s
   
zAioSession.get_service_modelc                    sL   |}|  dj|d|d}t||}| jjd| ||| dI dH  |S )zK
        Retrieve the fully merged data associated with a service.
        data_loaderz	service-2)	type_namerZ   zservice-data-loaded.)service_datarX   rB   N)rU   load_service_modelr   get_eventsemit)r   rX   rZ   	data_pathr_   
service_idr!   r!   r"   rY   p   s   
zAioSession.get_service_datac                 O   s   t | j|i |S r   )r   _create_client)r   argskwargsr!   r!   r"   create_client   s   zAioSession.create_clientc                    s:  |   }|
d ur|d ur||
}
n|d ur|}
| ||
}|d u r(| d}|d u r5| d|d }| d}| d}| d}|
d urP|
jtu rPd }n6|d ura|d urat|||	|d}n%| 	||rqt
d| 	||d| |	| }rtd	| |  I d H }t|d
d dkrtd |  }| d}| d}t| d}| d}|j| j| j| jd | |
|}|dkr| d}||||I d H  | j||d |t j t|||  |t t!||||| jd}|j"||||||| # |
||d
I d H }| d}|d ur|$|j%j& | '| |S )N	ca_bundleapi_versionsr]   event_emitterrJ   )rP   rQ   rR   rN   explicit)providercred_varzIgnoring the following credential-related values which were set without an access key id and secret key on the session or client: %smethodCREDENTIALS_CODEendpoint_resolverexceptions_factoryconfig_storeuser_agent_creator)session_user_agent_namesession_user_agent_versionsession_user_agent_extralegacyrF   )client_namert   )ru   auth_token_resolver)
rX   r>   	is_secureendpoint_urlverifycredentialsscoped_configclient_configrZ   
auth_tokenmonitor)(get_default_client_configmerge_resolve_region_nameget_config_variablera   rU   signature_versionr   r   _missing_cred_varsr   _get_ignored_credentialsr   debugrW   getattrr   get_auth_tokenrC   r
   set_session_configr8   r9   r;   _resolve_defaults_modemerge_smart_defaults!_add_configured_endpoint_providerset_client_featuresr   featuresr   
user_agentr   r   ri   get_scoped_configregistermetaevents_register_client_plugins)r   rX   r>   rZ   use_sslr~   r}   aws_access_key_idaws_secret_access_keyaws_session_tokenconfigaws_account_iddefault_client_configloaderrl   rJ   r   ignored_credentialsr   rr   rs   rt   ru   defaults_moderF   client_creatorclientr   r!   r!   r"   rf      s   











zAioSession._create_clientawsFc                    sZ   |  d}g }z| |I d H }|d d|}||||}W |S  ty,   Y |S w )Nrr   metadataendpointPrefix)rC   rY   ra   get_available_endpointsr	   )r   rX   partition_nameallow_non_regionalresolverresultsr_   endpoint_prefixr!   r!   r"   get_available_regions  s    
z AioSession.get_available_regions)NNTN)NNr   )
NNTNNNNNNN)r   F)r+   r,   r-   r#   r0   r=   r@   rI   rM   rS   rW   r\   rY   ri   r   rf   r   __classcell__r!   r!   r5   r"   r.   '   s@    


 r.   Nc                 C   r<   )z&
    Return a new session object.
    )r.   )env_varsr!   r!   r"   get_session  s   r   r   )*botocorer   r   r   r:   botocore.contextr   botocore.exceptionsr   botocore.sessionr   r   r	   r
   r   r   _SyncSessionbotocore.useragentr    r   r   r   r   configproviderr   contextr   r   r   r   hooksr   parsersr   tokensr   utilsr   r   r.   r   r!   r!   r!   r"   <module>   s(     q