
    /Jfw                         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 dd	lmZmZ  ej        e          Zd
dgZg dZdZ G d d          ZdS )zInternal 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)UserAgentString)ensure_booleanis_s3_accelerate_urllegacyregional)z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-22   c                       e Zd Z	 ddZ	 	 	 ddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Z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d Zd ZdS ) ClientArgsCreatorNc                     || _         || _        || _        || _        || _        |t          j                    | _        d S || _        d S N)_event_emitter_response_parser_factory_loader_exceptions_factory_config_storer   from_environment_session_ua_creator)selfevent_emitter
user_agentresponse_parser_factoryloaderexceptions_factoryconfig_storeuser_agent_creators           P/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/botocore/args.py__init__zClientArgsCreator.__init__A   sV     ,(?%#5 )%'6'G'I'ID$$$'9D$$$    c                    |                      |||	||||          }|d         }|d         }|d         }|d         }|d         }|d         }|d                             dd           }|d	         }|d
         }|d         }|d         }t          j        | j                  }t	          |j        ||d         |d         |||
          }||d<   t          di |}t          |          }|                    |||d         || j	        |j
        |j        |j        |j        f||j        |j                  }t           j                            ||          }t           j                            |          }|                     ||||||||||	|          } | j                            |          }!|r|j        nd }"|"|_        ||||||| j        ||| j        | |!dS )Nservice_nameparameter_validationendpoint_configprotocolconfig_kwargs	s3_configmetadata	partitionsocket_optionsconfigured_endpoint_urlsigning_regionregion_namesigning_namesignature_versions3endpoint_url)
r2   r6   verifyr   max_pool_connectionsproxiestimeoutr/   client_certproxies_config)
serializerendpointresponse_parserr   request_signerservice_modelr   client_configr.   r    endpoint_ruleset_resolverr"    )compute_client_argsgetcopyr   r   
service_idr   r   create_endpointr   r8   r9   connect_timeoutread_timeoutr;   r<   botocore	serializecreate_serializerparserscreate_parser_build_endpoint_resolverr   with_client_configr   _supplied_user_agentr   r   )#r   rA   r2   	is_securer6   r7   credentialsscoped_configrB   endpoint_bridge
auth_tokenendpoints_ruleset_datapartition_data
final_argsr'   r(   r)   r*   r+   r,   r.   r/   r0   r1   endpoint_region_namer   signer
new_configendpoint_creatorr>   r=   r?   ruleset_resolverclient_ua_creatorsupplied_uas#                                      r#   get_client_argsz!ClientArgsCreator.get_client_argsU   se    --
 

 ".1)*@A$%67j)"?3{+	#J/33KFF	#$45",-F"G()9:.}=	$"566$N+/0
 
 (d,,m,,
*=99#33,(8$($A!+!@&/1HI)".%4 4 
 
 '99*
 

 #*88BB88" #
 
 !4GG
 
 3@Im..T*5
' % .*$*l'""&":)9"3
 
 	
r%   c                    |j         }|j        d         }	d}
|r
|j        sd}
n(|r&|                    d          }|t	          |          }
|                     |          }|                     ||          }|                     ||||||          }|d                             dg           }| j        	                    |          
                                }t          |d	         |d
         |          }d|v r|                    d           d|v r|                    d           |i|                    |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j                   |                     |           |                     |           |                     |           |                     |           |                     |          }|                     |          }|rd|v r	|i }d|d<   ||
|||	|||                      ||          dS )Nr*   TFr(   )rB   r6   )r'   r2   r6   rT   rW   r,   r-   tagsr2   r4   )r2   r4   r   	dualstack)use_dualstack_endpointfips)use_fips_endpoint)rJ   rK   r8   r9   r<   retriesr;   inject_host_prefixtcp_keepaliveuser_agent_extrauser_agent_appid"request_min_compression_size_bytesdisable_request_compressionclient_context_paramsrg   )r'   r(   r0   r)   r*   r+   r,   r/   )!endpoint_prefixr-   r(   rF   r	   compute_s3_config _compute_configured_endpoint_url_compute_endpoint_configr   rR   	to_stringdictupdaterJ   rK   r8   r9   r<   rj   r;   rk   rl   rm   rn   ro   rp   rq   _compute_retry_config_compute_connect_timeout _compute_user_agent_appid_config#_compute_request_compression_config_is_s3_service_compute_socket_options)r   rA   rB   rW   r2   r6   rT   rV   r'   r*   r(   	raw_valuer,   r0   r)   endpoint_variant_tagspreliminary_ua_stringr+   is_s3_services                      r#   rE   z%ClientArgsCreator.compute_client_args   s    %4 )*5# 	A!C 	A#(   	A%))*@AAI$'5i'@'@$**=99	"&"G"G'% #H #
 #

 77%#0+ 8 
 
 !0
 ; ? ? K K !% 8 K K!
 !

)++ 	 '6-.AB,
 
 

 ///   ===***  4 888$   - =*7%2%G%-,;%-)5#0#C+9!.!?!.!?!D "=&3&I% !   ( 	""=111%%m444--m<<<00???**=99	++L99 	7[,AAA 	26I./ )$8'>. *""::} 
 
 	
r%   c                     ||S |                      |          rt                              d           |S | j                            d          S )Nz"Ignoring configured endpoint URLs.r6   ) _ignore_configured_endpoint_urlsloggerdebugr   get_config_variable)r   rB   r6   s      r#   rt   z2ClientArgsCreator._compute_configured_endpoint_url)  sT    #00?? 	 LL=>>>!55nEEEr%   c                 V    |r|j         |j         S | j                            d          S )Nignore_configured_endpoint_urls)r   r   r   )r   rB   s     r#   r   z2ClientArgsCreator._ignore_configured_endpoint_urls3  s;    	A=I @@!55-
 
 	
r%   c                     | j                             d          }|?|j        8||j        }n.|                                }|                    |j                   |S )Nr5   )r   r   r5   rG   rx   )r   rB   s3_configurations      r#   rs   z#ClientArgsCreator.compute_s3_config>  sm    -AA$GG $+#+'4'7$$ (8'<'<'>'>$$++M,<===r%   c                 
    |dv S )a,  Whether the service is S3 or S3 Control.

        Note that throughout this class, service_name refers to the endpoint
        prefix, not the folder name of the service in botocore/data. For
        S3 Control, the folder name is 's3control' but the endpoint prefix is
        's3-control'.
        )r5   z
s3-controlrD   )r   r'   s     r#   r}   z ClientArgsCreator._is_s3_serviceQ  s     333r%   c                 |    |||||d}|dk    r | j         dd|i|S |dk    r | j        di |S  | j        di |S )N)r'   r2   r6   rT   rW   r5   r,   stsrD   )_compute_s3_endpoint_config_compute_sts_endpoint_config_resolve_endpoint)r   r'   r2   r6   rT   rW   r,   resolve_endpoint_kwargss           r#   ru   z*ClientArgsCreator._compute_endpoint_config[  s     )&(".#
 #
 4343  #'>   5  444OO7NOOO%t%@@(?@@@r%   c                     |                      |d         |          }|rd |d<    | j        di |}|                     ||d                    |r|d         dk    rd|d<   |S )Nr2   rW   r   r   rD   )_should_force_s3_globalr   !_set_region_if_custom_s3_endpoint)r   r,   r   force_s3_globalr)   s        r#   r   z-ClientArgsCreator._compute_s3_endpoint_configs  s     66#M2I
 
  	:59#M20$0KK3JKK..45FG	
 	
 	
  	9}=MM-8OM*r%   c                 d    d}|r!d|v r|d         }|                      |           |dv }|dk    o|S )Nr   us_east_1_regional_endpoint)r   N)_validate_s3_regional_config)r   r2   r,   s3_regional_configis_global_regions        r#   r   z)ClientArgsCreator._should_force_s3_global  sZ    % 	B6)CC!*+H!I--.@AAA&*==!X-B2BBr%   c                 X    |t           vr t          j                            |          d S )N)%s3_us_east_1_regional_endpoint_config)VALID_REGIONAL_ENDPOINTS_CONFIGrL   
exceptions+InvalidS3UsEast1RegionalEndpointConfigError)r   
config_vals     r#   r   z.ClientArgsCreator._validate_s3_regional_config  s:    <<<%QQ6@ R    =<r%   c                     |d         5|d         /|                     d          }|d         |d<   |d         |d<   d S d S d S )Nr1   r2   r5   resolve)r   r)   rW   r>   s       r#   r   z3ClientArgsCreator._set_region_if_custom_s3_endpoint  sb     ,-5.6&..t44H089I0JO,--5m-DOM*** 6566r%   c                      | j         di |}|                     |d         |d         |          r|                     ||d                    |S )Nr2   r6   rT   rD   )r   _should_set_global_sts_endpoint_set_global_sts_endpoint)r   r   r)   s      r#   r   z.ClientArgsCreator._compute_sts_endpoint_config  ss    0$0KK3JKK//#M2#N3
 
 	
 ))!8!E   r%   c                     |o(|                     di                                d          }|s|rdS |                                 dk    o|t          v S )Nr-   re   Fr   )rF   "_get_sts_regional_endpoints_configLEGACY_GLOBAL_STS_REGIONS)r   r2   r6   r)   has_variant_tagss        r#   r   z1ClientArgsCreator._should_set_global_sts_endpoint  sq     + /B/B0
 0

#f++ 	  	+ 	53355A 988	
r%   c                     | j                             d          }|sd}|t          vr t          j                            |          |S )Nsts_regional_endpointsr   )sts_regional_endpoints_config)r   r   r   rL   r   &InvalidSTSRegionalEndpointsConfigError)r   r   s     r#   r   z4ClientArgsCreator._get_sts_regional_endpoints_config  sl    (,(:(N(N$)
 )
% - 	5,4))23 3 %LL.K M    -,r%   c                 ,    |rdnd}d|z  |d<   d|d<   d S )Nhttpshttpz%s://sts.amazonaws.comr6   r   r1   rD   )r   r)   rT   schemes       r#   r   z*ClientArgsCreator._set_global_sts_endpoint  s0    %16*BV*K',7()))r%   c                 2    |                     ||||          S r   r   )r   r'   r2   r6   rT   rW   s         r#   r   z#ClientArgsCreator._resolve_endpoint  s%     &&+|Y
 
 	
r%   c                    t           j        t           j        dfg}|o|j        }|o(|                     |                    dd                    }|s|r,|                    t           j        t           j        df           |S )N   rl   F)	socketIPPROTO_TCPTCP_NODELAYrl   _ensure_booleanrF   append
SOL_SOCKETSO_KEEPALIVE)r   rV   rB   r/   client_keepalivescoped_keepalives         r#   r~   z)ClientArgsCreator._compute_socket_options  s     "-v/A1EF(H]-H( 
T-A-Aou55.
 .
  	O/ 	O!!6#4f6I1"MNNNr%   c                 Z    |                      |           |                     |           d S r   )_compute_retry_max_attempts_compute_retry_mode)r   r+   s     r#   ry   z'ClientArgsCreator._compute_retry_config  s0    ((777  /////r%   c                 
   |                     d          }|?d|v r|                    dd            d S d|v r|                    d          }|dz   |d<   d S | j                            d          }||i }||d<   ||d<   d S d S )Nrj   total_max_attemptsmax_attemptsr   )rF   popr   r   )r   r+   rj   valuer   s        r#   r   z-ClientArgsCreator._compute_retry_max_attempts  s      ##I..#w..ND111((N33 16	,- )==nMM#+2i(,8G()))	 $#r%   c                     |                     d          }|i }||d<   nd|v rd S | j                            d          }|d}||d<   d S )Nrj   mode
retry_moder   rF   r   r   )r   r+   rj   r   s       r#   r   z%ClientArgsCreator._compute_retry_mode  sl    ##I..?G'.M)$$w F';;LII
!J$r%   c                 ~    |                     d          }|d S | j                            d          }|r||d<   d S d S )NrJ   r   )r   r+   rJ   s      r#   rz   z*ClientArgsCreator._compute_connect_timeout  sc     (++,=>>&F,@@
 
  	?/>M+,,,	? 	?r%   c                 (   |                     d          }|                     d          }|| j                            d          }|                     |          }||d<   || j                            d          }nt	          |          }||d<   d S )Nro   rp   )rF   r   r   _validate_min_compression_sizer	   )r   r+   min_sizedisableds       r#   r|   z5ClientArgsCreator._compute_request_compression_config*  s     $$%IJJ $$%BCC)==4 H 66x@@>F:;)==- HH
 &h//H7?3444r%   c                 H   d}d}|d| d}	 t          |          }nJ# t          t          f$ r6 | dt          |           d}t          j                            |          w xY w||cxk    r|k    s-n | d| d	| d
}t          j                            |          |S )Nr   i   zInvalid value "z)" for request_min_compression_size_bytes.z$ Value must be an integer. Received z	 instead.)	error_msgz Value must be between z and .)int
ValueError	TypeErrortyperL   r   InvalidConfigError)r   r   min_allowed_min_sizemax_allowed_min_sizeerror_msg_basemsgs         r#   r   z0ClientArgsCreator._validate_min_compression_size@  s'    &6( 6 6 6 Lx==	* L L L% : : $X: : :  )<<s<KKKL (8KKKK7KKKKK% J J+J J2FJ J J  )<<s<KKKs
    AA%c                 `    t          |t                    r|S |                                dk    S )Ntrue)
isinstanceboollower)r   vals     r#   r   z!ClientArgsCreator._ensure_booleanY  s,    c4   	)J99;;&((r%   c           
      P   |d S |                      |          pi }|j        }|dv s||}n|}|                     ||||
||j                  }|
|j        pi }ni }|                     |          r|                    |           ||j        nd }t          |||||||	|          S )N)r5   r   )r2   r'   r,   rW   client_endpoint_urllegacy_endpoint_url)endpoint_ruleset_datarZ   rA   builtinsclient_contextr   use_sslrequested_auth_scheme)	rs   rr   *compute_endpoint_resolver_builtin_defaultshostrq   r}   rx   r4   r   )r   rY   rZ   rB   rA   r\   r2   r6   r>   rT   rW   r   s3_config_rawservice_name_raweprv2_region_nameresolver_builtinsr   sig_versions                     r#   rQ   z*ClientArgsCreator._build_endpoint_resolver_  s    ")4 ..}==C(8 },,0C 4 + KK))#+ , ( L 
 
 $*@FBNNN/00 	1!!-000 ( ++ 	
 '"8)'&)'"-	
 	
 	
 		
r%   c                 \   |r|}n|                                 s|}nd }|                    dd          rd}nD|)t          |          s|                    d          dk    }n|                    d          dk    }t          j        |t          j        |d u r|                    d          pdt          j        |d u r|                    |          pdt          j	        | 
                    |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 )Nuse_accelerate_endpointFaddressing_stylevirtualpathri   )r2   r6   r)   use_arn_regionT$s3_disable_multiregion_access_points)resolver_uses_builtin_datarF   r
   EPRBuiltins
AWS_REGIONAWS_USE_FIPS$_resolve_endpoint_variant_config_varAWS_USE_DUALSTACK_resolve_use_dualstack_endpointAWS_STS_USE_GLOBAL_ENDPOINTr   AWS_S3_USE_GLOBAL_ENDPOINTr   AWS_S3_ACCELERATEAWS_S3_FORCE_PATH_STYLEAWS_S3_USE_ARN_REGIONAWS_S3CONTROL_USE_ARN_REGIONAWS_S3_DISABLE_MRAPSDK_ENDPOINT)	r   r2   r'   r,   rW   r   r   given_endpointforce_path_styles	            r#   r   z<ClientArgsCreator.compute_endpoint_resolver_builtin_defaults  s     	"0NN !;;== 	"0NN!N ==2E:: 	K$ ,5I6
 6
,  )}}-?@@IM(}}-?@@FJ "K$$&  $HH'  )$&  $CC   344 +!%$( 5   2,,[)DD)9==)5, , /1A-y}} $0 0 4imm %7 7 +Y]]6. . $n[.
 .	
r%   c                     |                     d          }|| j                            d          }|;t          |          t          k    r#t
                              dt           d           ||d<   d S )Nrn   zHThe configured value for user_agent_appid exceeds the maximum length of z characters.)rF   r   r   lenUSERAGENT_APPID_MAXLENr   warning)r   r+   rn   s      r#   r{   z2ClientArgsCreator._compute_user_agent_appid_config  s    (,,-?@@##1EE"    ($%%(>>>NNJ%;J J J   -=()))r%   r   )NNN)__name__
__module____qualname__r$   rc   rE   rt   r   rs   r}   ru   r   r   r   r   r   r   r   r   r   r~   ry   r   r   rz   r|   r   r   rQ   r   r{   rD   r%   r#   r   r   @   s         : : : :> #i
 i
 i
 i
Vg
 g
 g
RF F F	
 	
 	
     &4 4 4A A A0  *C C C  E E E
 
 

 
 
- - -8 8 8


 

 

   0 0 09 9 9@% % %? ? ?@ @ @,  2) ) )>
 >
 >
@R
 R
 R
h= = = = =r%   r   )__doc__rG   loggingr   botocore.exceptionsrL   botocore.parsersbotocore.serializebotocore.configr   botocore.endpointr   botocore.regionsr   r   r   botocore.signersr   botocore.useragentr   botocore.utilsr	   r
   	getLoggerr  r   r   r   r  r   rD   r%   r#   <module>r     sL                   " " " " " " - - - - - - D D D D D D 4 4 4 4 4 4 * * * * * * . . . . . . ? ? ? ? ? ? ? ?		8	$	$ #    (  A= A= A= A= A= A= A= A= A= A=r%   