U
    ÒZja  ã                   @   sÈ   d Z ddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZmZ e e¡Zd	d
gZddddddddddddddddgZG dd„ dƒZdS )z²Internal module to help with normalizing botocore client args.

This module (and all function/classes within this module) should be
considered internal, and *not* a public API.

é    N)ÚConfig)ÚEndpointCreator)ÚEndpointResolverBuiltins)ÚEndpointRulesetResolver)ÚRequestSigner)Úensure_booleanÚis_s3_accelerate_urlÚlegacyZregionalzap-northeast-1z
ap-south-1zap-southeast-1zap-southeast-2ú
aws-globalzca-central-1zeu-central-1z
eu-north-1z	eu-west-1z	eu-west-2z	eu-west-3z	sa-east-1ú	us-east-1z	us-east-2z	us-west-1z	us-west-2c                   @   sÀ   e Zd Zdd„ Zd.dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
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#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ ZdS )0ÚClientArgsCreatorc                 C   s(   || _ || _|| _|| _|| _|| _d S ©N)Ú_event_emitterÚ_user_agentÚ_response_parser_factoryÚ_loaderÚ_exceptions_factoryÚ_config_store)ÚselfÚevent_emitterÚ
user_agentÚresponse_parser_factoryÚloaderÚexceptions_factoryZconfig_store© r   úP/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/botocore/args.pyÚ__init__=   s    	zClientArgsCreator.__init__Nc                  C   s@  |   |||	||||¡}|d }|d }|d }|d }|d }|d }|d  dd ¡}|d	 }|d
 }|d }t | j¡}t|j||d |d |||
ƒ}||d< tf |Ž}t|ƒ}|j|||d || j	|j
|j|j|jf||j|jd�}tj ||¡}tj |¡}|  ||||||||||	|¡}||||||| j||| j|dœS )NÚservice_nameÚparameter_validationÚendpoint_configÚprotocolÚconfig_kwargsÚ	s3_configÚmetadataÚ	partitionÚsocket_optionsÚsigning_regionÚregion_nameZsigning_nameÚsignature_versionÚs3Úendpoint_url)
r'   r*   Úverifyr   Úmax_pool_connectionsÚproxiesÚtimeoutr%   Úclient_certÚproxies_config)Ú
serializerÚendpointÚresponse_parserr   Zrequest_signerÚservice_modelr   Úclient_configr$   r   Zendpoint_ruleset_resolver)Úcompute_client_argsÚgetÚcopyr   r   Z
service_idr   r   Zcreate_endpointr   r,   r-   Úconnect_timeoutÚread_timeoutr/   r0   ÚbotocoreÚ	serializeZcreate_serializerÚparsersZcreate_parserÚ_build_endpoint_resolverr   r   ) r   r4   r'   Ú	is_securer*   r+   ÚcredentialsÚscoped_configr5   Úendpoint_bridgeZ
auth_tokenÚendpoints_ruleset_dataÚpartition_dataZ
final_argsr   r   r   r    r!   r"   r$   r%   r&   Úendpoint_region_namer   ZsignerZ
new_configZendpoint_creatorr2   r1   r3   Zruleset_resolverr   r   r   Úget_client_argsM   s–    ù
ù


õ ÿõõz!ClientArgsCreator.get_client_argsc                 C   sˆ  |j }|jd }	d}
|r$|js$d}
n|rB| d¡}|d k	rBt|ƒ}
| j}|d k	rx|jd k	r`|j}|jd k	rx|d|j 7 }|  |¡}| j	||||||d�}|d  dg ¡}t
|d	 |d
 |d�}d|krÒ|jdd� d|kræ|jdd� |d k	�r|j|j|j|j|j|j|j|j|j|jd�	 |  |¡ |  |¡ |  |¡}|dk}|�rjd|k�rj|d k�rbi }d|d< ||
|||	|||  ||¡dœS )Nr    TFr   z %s)r   r'   r*   r?   rB   r"   r#   Útagsr'   r(   )r'   r(   r   Z	dualstack)Úuse_dualstack_endpointZfips)Úuse_fips_endpoint)	r9   r:   r,   r-   r0   Úretriesr/   Úinject_host_prefixÚtcp_keepalive)r)   z
s3-controlrH   )r   r   r   r   r    r!   r"   r%   )Úendpoint_prefixr#   r   r7   r   r   r   Zuser_agent_extraÚcompute_s3_configÚ_compute_endpoint_configÚdictÚupdater9   r:   r,   r-   r0   rJ   r/   rK   rL   Ú_compute_retry_configÚ_compute_connect_timeoutÚ_compute_socket_options)r   r4   r5   rB   r'   r*   r?   rA   r   r    r   Ú	raw_valuer   r"   r   Zendpoint_variant_tagsr!   Zis_s3_servicer   r   r   r6   °   s„    






úý
÷



 ÿøz%ClientArgsCreator.compute_client_argsc                 C   sF   | j  d¡}|d k	rB|jd k	rB|d kr.|j}n| ¡ }| |j¡ |S )Nr)   )r   Úget_config_variabler)   r8   rQ   )r   r5   Zs3_configurationr   r   r   rN     s    
z#ClientArgsCreator.compute_s3_configc                 C   sL   |||||dœ}|dkr,| j f d|i|—ŽS |dkr@| jf |ŽS | jf |ŽS )N)r   r'   r*   r?   rB   r)   r"   Ústs)Ú_compute_s3_endpoint_configÚ_compute_sts_endpoint_configÚ_resolve_endpoint)r   r   r'   r*   r?   rB   r"   Úresolve_endpoint_kwargsr   r   r   rO     s    
ûÿÿz*ClientArgsCreator._compute_endpoint_configc                 K   sT   |   |d |¡}|rd |d< | jf |Ž}|  ||d ¡ |rP|d dkrPd|d< |S )Nr'   rB   r
   r   )Ú_should_force_s3_globalrZ   Ú!_set_region_if_custom_s3_endpoint)r   r"   r[   Zforce_s3_globalr   r   r   r   rX   1  s     ÿ ÿz-ClientArgsCreator._compute_s3_endpoint_configc                 C   s6   d}|r"d|kr"|d }|   |¡ |dk}|dko4|S )Nr	   Zus_east_1_regional_endpoint)r   N)Ú_validate_s3_regional_config)r   r'   r"   Zs3_regional_configZis_global_regionr   r   r   r\   F  s    
z)ClientArgsCreator._should_force_s3_globalc                 C   s   |t krtjj|d�‚d S )N)Z%s3_us_east_1_regional_endpoint_config)ÚVALID_REGIONAL_ENDPOINTS_CONFIGr;   Ú
exceptionsZ+InvalidS3UsEast1RegionalEndpointConfigError)r   Z
config_valr   r   r   r^   O  s    ÿz.ClientArgsCreator._validate_s3_regional_configc                 C   s>   |d d kr:|d d kr:|  d¡}|d |d< |d |d< d S )Nr&   r'   r)   ©Úresolve)r   r   rB   r2   r   r   r   r]   U  s    
ÿ
þ
z3ClientArgsCreator._set_region_if_custom_s3_endpointc                 K   s6   | j f |Ž}|  |d |d |¡r2|  ||d ¡ |S )Nr'   r*   r?   )rZ   Ú_should_set_global_sts_endpointÚ_set_global_sts_endpoint)r   r[   r   r   r   r   rY   c  s    ý ÿz.ClientArgsCreator._compute_sts_endpoint_configc                 C   s6   |o|  di ¡  d¡}|s|r"dS |  ¡ dko4|tkS )Nr#   rG   Fr	   )r7   Ú"_get_sts_regional_endpoints_configÚLEGACY_GLOBAL_STS_REGIONS)r   r'   r*   r   Zhas_variant_tagsr   r   r   rc   o  s     ÿþþz1ClientArgsCreator._should_set_global_sts_endpointc                 C   s.   | j  d¡}|sd}|tkr*tjj|d�‚|S )NZsts_regional_endpointsr	   )Ústs_regional_endpoints_config)r   rV   r_   r;   r`   Z&InvalidSTSRegionalEndpointsConfigError)r   rg   r   r   r   re   |  s    ÿÿÿÿz4ClientArgsCreator._get_sts_regional_endpoints_configc                 C   s$   |rdnd}d| |d< d|d< d S )NÚhttpsÚhttpz%s://sts.amazonaws.comr*   r   r&   r   )r   r   r?   Úschemer   r   r   rd   ‹  s    z*ClientArgsCreator._set_global_sts_endpointc                 C   s   |  ||||¡S r   ra   )r   r   r'   r*   r?   rB   r   r   r   rZ   �  s       ÿz#ClientArgsCreator._resolve_endpointc                 C   sP   t jt jdfg}|o|j}|o.|  | dd¡¡}|s8|rL| t jt jdf¡ |S )Né   rL   F)	ÚsocketÚIPPROTO_TCPÚTCP_NODELAYrL   Ú_ensure_booleanr7   ÚappendÚ
SOL_SOCKETÚSO_KEEPALIVE)r   rA   r5   r%   Zclient_keepaliveZscoped_keepaliver   r   r   rT   œ  s    

ÿz)ClientArgsCreator._compute_socket_optionsc                 C   s   |   |¡ |  |¡ d S r   )Ú_compute_retry_max_attemptsÚ_compute_retry_mode)r   r!   r   r   r   rR   ©  s    
z'ClientArgsCreator._compute_retry_configc                 C   s€   |  d¡}|d k	rLd|kr*| dd ¡ d S d|krL| d¡}|d |d< d S | j d¡}|d k	r||d krti }||d< ||d< d S )NrJ   Ztotal_max_attemptsÚmax_attemptsrk   )r7   Úpopr   rV   )r   r!   rJ   Úvalueru   r   r   r   rs   ­  s    


z-ClientArgsCreator._compute_retry_max_attemptsc                 C   sP   |  d¡}|d kr i }||d< nd|kr,d S | j d¡}|d krDd}||d< d S )NrJ   ÚmodeÚ
retry_moder	   ©r7   r   rV   )r   r!   rJ   ry   r   r   r   rt   Í  s    

z%ClientArgsCreator._compute_retry_modec                 C   s2   |  d¡}|d k	rd S | j d¡}|r.||d< d S )Nr9   rz   )r   r!   r9   r   r   r   rS   Û  s    
ÿz*ClientArgsCreator._compute_connect_timeoutc                 C   s   t |tƒr|S | ¡ dkS d S )NÚtrue)Ú
isinstanceÚboolÚlower)r   Úvalr   r   r   ro   è  s    
z!ClientArgsCreator._ensure_booleanc              
   C   s„   |d krd S |   |¡pi }|j}|dkr.|}n|}| j||||
||jd�}|dkrV|ni }|d k	rh|jnd }t|||||||	|d�S )N)r)   rW   )r'   r   r"   rB   Úclient_endpoint_urlÚlegacy_endpoint_urlr)   )Zendpoint_ruleset_datarD   r4   ÚbuiltinsÚclient_contextr   Zuse_sslZrequested_auth_scheme)rN   rM   Ú*compute_endpoint_resolver_builtin_defaultsÚhostr(   r   )r   rC   rD   r5   r4   rE   r'   r*   r2   r?   rB   r   Zs3_config_rawZservice_name_rawZeprv2_region_nameZresolver_builtinsrƒ   Zsig_versionr   r   r   r>   î  s<    úÿýøz*ClientArgsCreator._build_endpoint_resolverc           	      C   sú   |r
|}n|  ¡ s|}nd }| dd¡r.d}n.|d k	rNt|ƒsN| d¡dk}n| d¡dk}tj|tj|d krx| d¡pzdtj|d kr�| |¡p’dtj	| j
|d d d�tj|  ||¡tj| dd¡tj|tj| dd	¡tj| dd¡tj| d
d¡tj|iS )NZuse_accelerate_endpointFZaddressing_styleZvirtualÚpathrI   )r'   r*   r   Zuse_arn_regionTZ$s3_disable_multiregion_access_points)Zresolver_uses_builtin_datar7   r   ÚEPRBuiltinsZ
AWS_REGIONZAWS_USE_FIPSZ$_resolve_endpoint_variant_config_varZAWS_USE_DUALSTACKZ_resolve_use_dualstack_endpointZAWS_STS_USE_GLOBAL_ENDPOINTrc   ZAWS_S3_USE_GLOBAL_ENDPOINTr\   ZAWS_S3_ACCELERATEZAWS_S3_FORCE_PATH_STYLEZAWS_S3_USE_ARN_REGIONZAWS_S3CONTROL_USE_ARN_REGIONZAWS_S3_DISABLE_MRAPZSDK_ENDPOINT)	r   r'   r   r"   rB   r€   r�   Zgiven_endpointZforce_path_styler   r   r   r„   *  sz    
ÿ ÿýÿýý
  ÿ   ÿ  ÿ  ÿ Óz<ClientArgsCreator.compute_endpoint_resolver_builtin_defaults)NNN)N)Ú__name__Ú
__module__Ú__qualname__r   rF   r6   rN   rO   rX   r\   r^   r]   rY   rc   re   rd   rZ   rT   rR   rs   rt   rS   ro   r>   r„   r   r   r   r   r   <   s2      ó
cV	
 <r   )Ú__doc__r8   Úloggingrl   Zbotocore.exceptionsr;   Zbotocore.parsersZbotocore.serializeZbotocore.configr   Zbotocore.endpointr   Zbotocore.regionsr   r‡   r   Zbotocore.signersr   Zbotocore.utilsr   r   Ú	getLoggerrˆ   Úloggerr_   rf   r   r   r   r   r   Ú<module>   sD   
þð