
     h<                        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 dd	lmZmZmZ  ej2                  e      Zd
dgZg dZdZdZdZ dZ! G d d      Z" G d d      Z# G d de$e#      Z%y)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register_feature_id)$PRIORITY_ORDERED_SUPPORTED_PROTOCOLS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   )when_supportedwhen_required)	preferreddisabledrequiredc                       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 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$ Z%d% Z&y)(ClientArgsCreatorNc                     || _         || _        || _        || _        || _        |t        j                         | _        y || _        y 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           i/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/botocore/args.py__init__zClientArgsCreator.__init__V   sJ     ,(?%#5 )%'6'G'G'ID$'9D$    c                    | j                  |||	||||      }|d   }|d   }|d   }|d   }|d   }|d   }|d   j                  dd       }|d	   }|d
   }|d   }|d   }|d   }t        j                  | j                        }t	        |j
                  ||d   |d   |||
      }||d<   t        di |}t        |      }|j                  |||d   || j                  |j                  |j                  |j                  |j                  f||j                  |j                        }t         j"                  j%                  ||      }t         j&                  j)                  |      } | j+                  ||||||||||	|||      }!| j,                  j/                  |      }"|r|j0                  nd }#|#|_        ||| |||| j4                  ||| j6                  |!|"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account_id_endpoint_modesigning_namesignature_versions3endpoint_url)
r9   r>   verifyr%   max_pool_connectionsproxiestimeoutr6   client_certproxies_config)
serializerendpointresponse_parserr#   request_signerservice_modelr&   client_configr5   r'   endpoint_ruleset_resolverr)    )compute_client_argsgetcopyr   r   
service_idr   r   create_endpointr   r@   rA   connect_timeoutread_timeoutrC   rD   botocore	serializecreate_serializerparserscreate_parser_build_endpoint_resolverr!   with_client_configr$   _supplied_user_agentr   r   )$r"   rI   r9   	is_securer>   r?   credentialsscoped_configrJ   endpoint_bridge
auth_tokenendpoints_ruleset_datapartition_data
final_argsr.   r/   r0   r1   r2   r3   r5   r6   r7   r8   endpoint_region_namer:   r#   signer
new_configendpoint_creatorrF   rE   rG   ruleset_resolverclient_ua_creatorsupplied_uas$                                       r*   get_client_argsz!ClientArgsCreator.get_client_argsj   sj    --

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

 #**88B88" #$
" !44GG
 3@m..T*5
' % .*$*ll'""&":":)9"3
 	
r,   c                    |j                   }|j                  }	d}
|r|j                  sd}
n |r|j                  d      }|t	        |      }
| j                  |      }| j                  ||      }|t        d       | j                  ||||||      }|d   j                  dg       }| j                  j                  |      j                         }t        |d	   |d
   |      }d|v r|j                  d       d|v r|j                  d       ||j                  |j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  |j.                  |j0                  |j2                  |j4                  |j6                  |j8                  |j:                  |j<                  |j>                  |j@                         | jC                  |       | jE                  |       | jG                  |       | jI                  |       | jK                  |       | jM                  |       | jO                  |       | jQ                  ||       | jS                  ||       | jU                  ||       | j                  |      }| jW                  |      }|rd|v r	|i }d|d<   ||
|||	||| jY                  ||      dS )NTFr/   )rJ   r>   ENDPOINT_OVERRIDE)r.   r9   r>   r\   r_   r3   r4   tagsr9   r<   )r9   r<   r$   	dualstack)use_dualstack_endpointfips)use_fips_endpoint)rR   rS   r@   rA   rD   retriesrC   inject_host_prefixtcp_keepaliveuser_agent_extrauser_agent_appid"request_min_compression_size_bytesdisable_request_compressionclient_context_paramssigv4a_signing_region_setrequest_checksum_calculationresponse_checksum_validationr:   auth_scheme_preferencerp   )r.   r/   r7   r0   r1   r2   r3   r6   )-endpoint_prefixresolved_protocolr/   rN   r   compute_s3_config _compute_configured_endpoint_urlr	   _compute_endpoint_configr!   rZ   	to_stringdictupdaterR   rS   r@   rA   rD   rs   rC   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r:   r~   _compute_retry_config_compute_connect_timeout _compute_user_agent_appid_config#_compute_request_compression_config)_compute_sigv4a_signing_region_set_config_compute_checksum_config(_compute_account_id_endpoint_mode_config_compute_inject_host_prefix&_compute_auth_scheme_preference_config!_compute_signature_version_config_is_s3_service_compute_socket_options)r"   rI   rJ   r_   r9   r>   r\   r^   r.   r1   r/   	raw_valuer3   r7   r0   endpoint_variant_tagspreliminary_ua_stringr2   is_s3_services                      r*   rM   z%ClientArgsCreator.compute_client_args   s(    %44 22#!C!C#( %))*@AI$'5i'@$**=9	"&"G"G'% #H #
 #. 3477%#0+ 8 
 !0
 ; ? ? K !% 8 8 K K!

)+ 	 '6-.AB,

 //   =**  4 8$   - = =*77%2%G%G%--,;;%--)55#0#C#C+99!.!?!?!.!?!?!DD "==&3&I&I!;; ">> ">>)6)O)O'4'K'K; ! > 	""=1%%m4--m<00?66}E%%m455mD((F33=	
 	..}mL**=9	++L9[,AA 	26I./ )$8'>. *""::}
 	
r,   c                 z    ||j                   dk(  r*| j                  j                  d      }|| |d<   y d|d<   y y )NUNSETdisable_host_prefix_injectionrt   T)_inject_host_prefixr   get_config_variable)r"   rJ   r2   (configured_disable_host_prefix_injections       r*   r   z-ClientArgsCreator._compute_inject_host_prefixV  sf     !00G; ""663 5
 8C A@ ( 7;23 <r,   c                     ||S | j                  |      rt        j                  d       |S | j                  j	                  d      S )Nz"Ignoring configured endpoint URLs.r>   ) _ignore_configured_endpoint_urlsloggerdebugr   r   )r"   rJ   r>   s      r*   r   z2ClientArgsCreator._compute_configured_endpoint_urli  sF    #00?LL=>!!55nEEr,   c                 l    |r|j                   |j                   S | j                  j                  d      S )Nignore_configured_endpoint_urls)r   r   r   )r"   rJ   s     r*   r   z2ClientArgsCreator._ignore_configured_endpoint_urlss  s9    ==I @@@!!55-
 	
r,   c                     | j                   j                  d      }|G|j                  ;||j                  }|S |j                         }|j	                  |j                         |S )Nr=   )r   r   r=   rO   r   )r"   rJ   s3_configurations      r*   r   z#ClientArgsCreator.compute_s3_config~  sr    --AA$G $+#+'4'7'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'.
        )r=   z
s3-controlrL   )r"   r.   s     r*   r   z ClientArgsCreator._is_s3_service  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.   r9   r>   r\   r_   r=   r3   stsrL   )_compute_s3_endpoint_config_compute_sts_endpoint_config_resolve_endpoint)r"   r.   r9   r>   r\   r_   r3   resolve_endpoint_kwargss           r*   r   z*ClientArgsCreator._compute_endpoint_config  s     )&(".#
 43433 #'>  5 4444O7NOO%t%%@(?@@r,   c                     | j                  |d   |      }|rd |d<    | j                  di |}| j                  ||d          |r|d   dk(  rd|d<   |S )Nr9   r_   r   r   rL   )_should_force_s3_globalr   !_set_region_if_custom_s3_endpoint)r"   r3   r   force_s3_globalr0   s        r*   r   z-ClientArgsCreator._compute_s3_endpoint_config  s     66#M2I
 59#M20$00K3JK..45FG	
 }=M-8OM*r,   c                 X    d}|rd|v r|d   }| j                  |       |dv }|dk(  xr |S )Nr   us_east_1_regional_endpoint)r   N)_validate_s3_regional_config)r"   r9   r3   s3_regional_configis_global_regions        r*   r   z)ClientArgsCreator._should_force_s3_global  sK    %6)C!*+H!I--.@A&*==!X-B2BBr,   c                 T    |t         vr t        j                  j                  |      y )N)%s3_us_east_1_regional_endpoint_config)VALID_REGIONAL_ENDPOINTS_CONFIGrT   
exceptions+InvalidS3UsEast1RegionalEndpointConfigError)r"   
config_vals     r*   r   z.ClientArgsCreator._validate_s3_regional_config  s2    <<%%QQ6@ R   =r,   c                 ^    |d   (|d   "|j                  d      }|d   |d<   |d   |d<   y y y )Nr8   r9   r=   resolve)r"   r0   r_   rF   s       r*   r   z3ClientArgsCreator._set_region_if_custom_s3_endpoint  sU     ,-5.6&..t4H089I0JO,--5m-DOM*	 7 6r,   c                      | j                   di |}| j                  |d   |d   |      r| j                  ||d          |S )Nr9   r>   r\   rL   )r   _should_set_global_sts_endpoint_set_global_sts_endpoint)r"   r   r0   s      r*   r   z.ClientArgsCreator._compute_sts_endpoint_config  s\    0$00K3JK//#M2#N3

 ))!8!E r,   c                     |xr! |j                  di       j                  d      }|s|ry| j                         dk(  xr |t        v S )Nr4   rn   Fr   )rN   "_get_sts_regional_endpoints_configLEGACY_GLOBAL_STS_REGIONS)r"   r9   r>   r0   has_variant_tagss        r*   r   z1ClientArgsCreator._should_set_global_sts_endpoint  s[     + /B/B0

#f+ 	 +335A 988	
r,   c                     | j                   j                  d      }|sd}|t        vr t        j                  j                  |      |S )Nsts_regional_endpointsr   )sts_regional_endpoints_config)r   r   r   rT   r   &InvalidSTSRegionalEndpointsConfigError)r"   r   s     r*   r   z4ClientArgsCreator._get_sts_regional_endpoints_config  s^    (,(:(:(N(N$)
% -,6))23 %%LL.K M   -,r,   c                 *    |rdnd}| d|d<   d|d<   y )Nhttpshttpz://sts.amazonaws.comr>   r   r8   rL   )r"   r0   r\   schemes       r*   r   z*ClientArgsCreator._set_global_sts_endpoint  s(    %6-3H4H*I',7()r,   c                 *    |j                  ||||      S r   r   )r"   r.   r9   r>   r\   r_   s         r*   r   z#ClientArgsCreator._resolve_endpoint  s      &&+|Y
 	
r,   c                    t         j                  t         j                  dfg}|xr |j                  }|xr! | j	                  |j                  dd            }|s|r0|j                  t         j                  t         j                  df       |S )N   ru   F)	socketIPPROTO_TCPTCP_NODELAYru   _ensure_booleanrN   append
SOL_SOCKETSO_KEEPALIVE)r"   r^   rJ   r6   client_keepalivescoped_keepalives         r*   r   z)ClientArgsCreator._compute_socket_options  s     "--v/A/A1EF(H]-H-H( 
T-A-Aou5.
 /!!6#4#4f6I6I1"MNr,   c                 H    | j                  |       | j                  |       y r   )_compute_retry_max_attempts_compute_retry_moder"   r2   s     r*   r   z'ClientArgsCreator._compute_retry_config+  s    ((7  /r,   c                     |j                  d      }|5d|v r|j                  dd        y d|v r|j                  d      }|dz   |d<   y | j                  j                  d      }||i }||d<   ||d<   y y )Nrs   total_max_attemptsmax_attemptsr   )rN   popr   r   )r"   r2   rs   valuer   s        r*   r   z-ClientArgsCreator._compute_retry_max_attempts/  s      ##I.#w.ND1(N3 16	,- ))==nM#+2i(,8G()	 $r,   c                     |j                  d      }|i }||d<   nd|v ry | j                  j                  d      }|d}||d<   y )Nrs   mode
retry_moder   rN   r   r   )r"   r2   rs   r   s       r*   r   z%ClientArgsCreator._compute_retry_modeO  s]    ##I.?G'.M)$w '';;LI
!J$r,   c                 r    |j                  d      }|y | j                  j                  d      }|r||d<   y y )NrR   r   )r"   r2   rR   s      r*   r   z*ClientArgsCreator._compute_connect_timeout]  sL     (++,=>&,,@@
 />M+, r,   c                 
   |j                  d      }|j                  d      }|| j                  j                  d      }| j                  |      }||d<   || j                  j                  d      }nt	        |      }||d<   y )Nrx   ry   )rN   r   r   _validate_min_compression_sizer   )r"   r2   min_sizer   s       r*   r   z5ClientArgsCreator._compute_request_compression_configj  s     $$%IJ $$%BC))==4H 66x@>F:;))==-H
 &h/H7?34r,   c                 *   d}d}d| d}	 t        |      }||cxk  r|k  s-n | d| d	| d
}t        j
                  j                  |      |S # t        t        f$ r2 | dt        |       d}t        j
                  j                  |      w xY w)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typerT   r   InvalidConfigError)r"   r   min_allowed_min_sizemax_allowed_min_sizeerror_msg_basemsgs         r*   r   z0ClientArgsCreator._validate_min_compression_size  s     &hZ (2 2 		H8}H $xG3GG!""9'(.B-C1F  %%8838GG I& 	H!" # N+96  %%8838GG	Hs   A ABc                 L    t        |t              r|S |j                         dk(  S )Ntrue)
isinstanceboollower)r"   vals     r*   r   z!ClientArgsCreator._ensure_boolean  s"    c4 J99;&((r,   c           
      Z   |y | j                  |      xs i }|j                  }|dv s||}n|}| j                  ||||
||j                  ||      }||j                  xs i }ni }| j                  |      r|j                  |       ||j                  nd }t        |||||||	|      S )N)r=   r   )r9   r.   r3   r_   client_endpoint_urllegacy_endpoint_urlr]   r:   )endpoint_ruleset_datarb   rI   builtinsclient_contextr#   use_sslrequested_auth_scheme)	r   r   *compute_endpoint_resolver_builtin_defaultshostrz   r   r   r<   r   )r"   ra   rb   rJ   rI   rd   r9   r>   rF   r\   r_   r#   r]   r:   s3_config_rawservice_name_raweprv2_region_nameresolver_builtinsr  sig_versions                       r*   rY   z*ClientArgsCreator._build_endpoint_resolver  s      ") ..}=C(88 },0C 4 + KK))#+ , (#%= L 	
 $*@@FBNN/0!!-0 ( ++ 	
 '"8)'&)'"-	
 		
r,   c	                    |r|}	n|j                         s|}	nd }	|j                  dd      rd}
n6| t        |      s|j                  d      dk7  }
n|j                  d      dk(  }
t        j                  |t        j
                  |	d u xr |j                  d      xs dt        j                  |	d u xr |j                  |      xs dt        j                  | j                  |d d       t        j                  | j                  ||      t        j                  |j                  dd      t        j                  |
t        j                  |j                  dd	      t        j                   |j                  dd      t        j"                  |j                  d
d      t        j$                  |	t        j&                  |r|j)                  d      nd t        j*                  |iS )Nuse_accelerate_endpointFaddressing_stylevirtualpathrr   )r9   r>   r0   use_arn_regionT$s3_disable_multiregion_access_points
account_id)resolver_uses_builtin_datarN   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
ACCOUNT_IDget_deferred_propertyACCOUNT_ID_ENDPOINT_MODE)r"   r9   r.   r3   r_   r   r   r]   r:   given_endpointforce_path_styles              r*   r  z<ClientArgsCreator.compute_endpoint_resolver_builtin_defaults  s    0N !;;=0N!N ==2E:$ ,5I6
  )}}-?@IM(}}-?@FJ ""K$$$&  $HH' ))$&  $CC  3344 +!%$( 5  22,,[)D))9==)5, //1A--y}} $0 44imm %7 ++Y]]6. $$n""  %0$E$E% 002Jg4
 4	
r,   c                     |j                  d      }|| j                  j                  d      }|,t        |      t        kD  rt
        j                  dt               ||d<   y )Nrw   zVThe configured value for user_agent_appid exceeds the maximum length of %d characters.)rN   r   r   lenUSERAGENT_APPID_MAXLENr   warning)r"   r2   rw   s      r*   r   z2ClientArgsCreator._compute_user_agent_appid_config>  sl    (,,-?@##11EE"  ($%(>>NN3&
 -=()r,   c                 j    |j                  d      }|| j                  j                  d      }||d<   y )Nr{   r   )r"   r2   r{   s      r*   r   z;ClientArgsCreator._compute_sigv4a_signing_region_set_configO  sF    $1$5$5'%
! %,(,(:(:(N(N+)% 6O12r,   c                 d    | j                  |dt               | j                  |dt               y )Nr|   )
config_keyvalid_optionsr}   )_handle_checksum_config)VALID_REQUEST_CHECKSUM_CALCULATION_CONFIG)VALID_RESPONSE_CHECKSUM_VALIDATION_CONFIGr   s     r*   r   z*ClientArgsCreator._compute_checksum_configY  s<    $$5C 	% 	

 	$$5C 	% 	
r,   c                    |j                  |      }|| j                  j                  |      }t        |t              r|j                         }||vr"t        j                  j                  |||      | j                  ||       |||<   y )N)r.  config_valuer/  )
rN   r   r   r   strr   rT   r   InvalidChecksumConfigError%_register_checksum_config_feature_ids)r"   r2   r.  r/  r   s        r*   r0  z)ClientArgsCreator._handle_checksum_confige  s     !!*-=&&:::FEeS!KKME%%%@@%"+ A  
 	225*E$)j!r,   c                     d }|dk(  rd|j                          }n|dk(  rd|j                          }|t        |       y y )Nr|   FLEXIBLE_CHECKSUMS_REQ_r}   FLEXIBLE_CHECKSUMS_RES_)upperr	   )r"   r   r.  checksum_config_feature_ids       r*   r7  z7ClientArgsCreator._register_checksum_config_feature_ids{  s\    %)"77)%++-9 ' 99)%++-9 ' &1 :; 2r,   c           	      l   d}|j                  d      }|t        j                  u rd||<   y |j                  |      }|| j                  j	                  |      }t        |t              r|j                         }|t        vr.t        j                  j                  d| d| dt         d      |||<   y )	Nr:   r<   r   zThe configured value 'z' for 'z ' is invalid. Valid values are: r   r   )rN   rT   UNSIGNEDr   r   r   r5  r   %VALID_ACCOUNT_ID_ENDPOINT_MODE_CONFIGr   r   )r"   r2   r.  r<   r:   s        r*   r   z:ClientArgsCreator._compute_account_id_endpoint_mode_config  s    /
 *--.AB 1 11(2M*%#0#4#4Z#@ #+'+'9'9'M'M($ .4'?'E'E'G$ %89 %%8823K2LGT^S_ `..S-TTUW 9  
 %=j!r,   c                    d}d}|r|j                   r|j                   }d}n| j                  j                  |      }|d ||<   y t        |t              s2t
        j                  j                  | dt        |       d| d      dj                  d	 |j                  d      D              }|rt        |      }|||<   y )
Nr~   FTz, must be a comma-delimited string. Received z
 instead: r   r   ,c              3      K   | ]6  }|j                         r$|j                  d d      j                  dd       8 yw)  	N)stripreplace).0items     r*   	<genexpr>zKClientArgsCreator._compute_auth_scheme_preference_config.<locals>.<genexpr>  s9      
zz| LLb!))$3
s   <>)r~   r   r   r   r5  rT   r   r   r   joinsplitClientConfigString)r"   rJ   r2   r.  set_in_config_objectr   s         r*   r   z8ClientArgsCreator._compute_auth_scheme_preference_config  s     .
$]AA!88E#' &&:::FE=(,M*%%%%%88!l #  $U}JugQ@ 9    
C(
 
  &u-E$)j!r,   c                 z    |r9|j                   r,|j                   }t        |t              rt        |      |d<   y y y y )Nr<   )r<   r   r5  rM  )r"   rJ   r2   r   s       r*   r   z3ClientArgsCreator._compute_signature_version_config  s>    ]<<!33E%%5G5N12 & ==r,   r   )NNN)'__name__
__module____qualname__r+   rk   rM   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rY   r  r   r   r   r0  r7  r   r   r   rL   r,   r*   r   r   U   s      :> #l
\|
|;&F	
 &4A0*CE

-8


09@%?@,0)B
HZ
x="O

*,<=<!*FOr,   r   c                       e Zd ZdZy)ConfigObjectWrapperz8Base class to mark values set via in-code Config object.N)rP  rQ  rR  __doc__rL   r,   r*   rT  rT    s    Br,   rT  c                         e Zd Zd fd	Z xZS )rM  c                 $    t         |   | |      S r   )super__new__)clsr   	__class__s     r*   rY  zClientConfigString.__new__  s    wsE**r,   r   )rP  rQ  rR  rY  __classcell__)r[  s   @r*   rM  rM    s    + +r,   rM  )&rU  rO   loggingr   botocore.exceptionsrT   botocore.parsersbotocore.serializebotocore.configr   botocore.endpointr   botocore.regionsr   r  r   botocore.signersr   botocore.useragentr   r	   botocore.utilsr
   r   r   	getLoggerrP  r   r   r   r*  r1  r2  r?  r   rT  r5  rM  rL   r,   r*   <module>rh     s          " - D 4 * C  
		8	$ #  (  - )- )) %xO xOv	 	+1 +r,   