
    Dhb                         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j*                  e      Zd	d
gZg dZ G d d      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)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-2c                       e 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dZd Zd Zd Zd Zd Zd Zd Zy)ClientArgsCreatorc                 X    || _         || _        || _        || _        || _        || _        y N)_event_emitter_user_agent_response_parser_factory_loader_exceptions_factory_config_store)selfevent_emitter
user_agentresponse_parser_factoryloaderexceptions_factoryconfig_stores          o/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/botocore/args.py__init__zClientArgsCreator.__init__=   s3     ,%(?%#5 )    Nc                 0   | j                  |||	||||      }|d   }|d   }|d   }|d   }|d   }|d   }|d   j                  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.                  |dS )Nservice_nameparameter_validationendpoint_configprotocolconfig_kwargs	s3_configmetadata	partitionsocket_optionssigning_regionregion_namesigning_namesignature_versions3endpoint_url)
r-   r1   verifyr   max_pool_connectionsproxiestimeoutr+   client_certproxies_config)
serializerendpointresponse_parserr   request_signerservice_modelr   client_configr*   r   endpoint_ruleset_resolver )compute_client_argsgetcopyr   r   
service_idr   r   create_endpointr   r3   r4   connect_timeoutread_timeoutr6   r7   botocore	serializecreate_serializerparserscreate_parser_build_endpoint_resolverr   r   ) r   r<   r-   	is_securer1   r2   credentialsscoped_configr=   endpoint_bridge
auth_tokenendpoints_ruleset_datapartition_data
final_argsr#   r$   r%   r&   r'   r(   r*   r+   r,   endpoint_region_namer   signer
new_configendpoint_creatorr9   r8   r:   ruleset_resolvers                                    r   get_client_argsz!ClientArgsCreator.get_client_argsM   s    --

 ".1)*@A$%67j)"?3{+	#J/33KF	#$45()9:.}=		$"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" 
 % .*$*ll'""&":":)9
 	
r!   c                    |j                   }|j                  d   }	d}
|r|j                  sd}
n |r|j                  d      }|t	        |      }
| j
                  }|6|j                  |j                  }|j                  |d|j                  z  z  }| j                  |      }| j                  ||||||      }|d   j                  dg       }t        |d	   |d
   |      }d|v r|j                  d       d|v r|j                  d       |t|j                  |j                  |j                  |j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  	       | j+                  |       | j-                  |       | j                  |      }| j/                  |      }|rd|v r	|i }d|d<   ||
|||	||| j1                  ||      dS )Nr&   TFr$   z %s)r#   r-   r1   rM   rP   r(   r)   tagsr-   r/   )r-   r/   r   	dualstack)use_dualstack_endpointfips)use_fips_endpoint)	rE   rF   r3   r4   r7   retriesr6   inject_host_prefixtcp_keepaliver^   )r#   r$   r   r%   r&   r'   r(   r+   )endpoint_prefixr)   r$   rA   r   r   r   user_agent_extracompute_s3_config_compute_endpoint_configdictupdaterE   rF   r3   r4   r7   ra   r6   rb   rc   _compute_retry_config_compute_connect_timeout_is_s3_service_compute_socket_options)r   r<   r=   rP   r-   r1   rM   rO   r#   r&   r$   	raw_valuer   r(   r%   endpoint_variant_tagsr'   is_s3_services                     r   r@   z%ClientArgsCreator.compute_client_args   sJ    %44 ))*5#!C!C#( %))*@AI$'5i'@$ %%
$''3*55
--9em&D&DDD
**=9	77%#%+ 8 
 !0
 ; ? ? K '6-.AB!

 //   =**  4 8$   - = =*77%2%G%G%--,;;%--)55#0#C#C+99 ! 
 	""=1%%m4**=9	++L9[,AA 	26I./ )$8$. *""::}
 	
r!   c                     | j                   j                  d      }|G|j                  ;||j                  }|S |j                         }|j	                  |j                         |S )Nr0   )r   get_config_variabler0   rB   ri   )r   r=   s3_configurations      r   rf   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'.
        )r0   z
s3-controlr?   )r   r#   s     r   rl   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#   r-   r1   rM   rP   r0   r(   stsr?   )_compute_s3_endpoint_config_compute_sts_endpoint_config_resolve_endpoint)r   r#   r-   r1   rM   rP   r(   resolve_endpoint_kwargss           r   rg   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 )Nr-   rP   r   r   r?   )_should_force_s3_globalry   !_set_region_if_custom_s3_endpoint)r   r(   rz   force_s3_globalr%   s        r   rw   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   r-   r(   s3_regional_configis_global_regions        r   r|   z)ClientArgsCreator._should_force_s3_globalP  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_CONFIGrG   
exceptions+InvalidS3UsEast1RegionalEndpointConfigError)r   
config_vals     r   r   z.ClientArgsCreator._validate_s3_regional_configY  s2    <<%%QQ6@ R   =r!   c                 ^    |d   (|d   "|j                  d      }|d   |d<   |d   |d<   y y y )Nr,   r-   r0   resolve)r   r%   rP   r9   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 )Nr-   r1   rM   r?   )ry   _should_set_global_sts_endpoint_set_global_sts_endpoint)r   rz   r%   s      r   rx   z.ClientArgsCreator._compute_sts_endpoint_configm  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 )Nr)   r\   Fr
   )rA   "_get_sts_regional_endpoints_configLEGACY_GLOBAL_STS_REGIONS)r   r-   r1   r%   has_variant_tagss        r   r   z1ClientArgsCreator._should_set_global_sts_endpointy  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   rr   r   rG   r   &InvalidSTSRegionalEndpointsConfigError)r   r   s     r   r   z4ClientArgsCreator._get_sts_regional_endpoints_config  s^    (,(:(:(N(N$)
% -,4))23 %%LL.K M   -,r!   c                 *    |rdnd}d|z  |d<   d|d<   y )Nhttpshttpz%s://sts.amazonaws.comr1   r   r,   r?   )r   r%   rM   schemes       r   r   z*ClientArgsCreator._set_global_sts_endpoint  s%    %6*BV*K',7()r!   c                 *    |j                  ||||      S r   r   )r   r#   r-   r1   rM   rP   s         r   ry   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   rc   F)	socketIPPROTO_TCPTCP_NODELAYrc   _ensure_booleanrA   append
SOL_SOCKETSO_KEEPALIVE)r   rO   r=   r+   client_keepalivescoped_keepalives         r   rm   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   r'   s     r   rj   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 )Nra   total_max_attemptsmax_attemptsr   )rA   popr   rr   )r   r'   ra   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 )Nra   mode
retry_moder
   rA   r   rr   )r   r'   ra   r   s       r   r   z%ClientArgsCreator._compute_retry_mode  s]    ##I.?G'.M)$w '';;LI
!J$r!   c                 r    |j                  d      }|y | j                  j                  d      }|r||d<   y y )NrE   r   )r   r'   rE   s      r   rk   z*ClientArgsCreator._compute_connect_timeout  sL     (++,=>&,,@@
 />M+, r!   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           
         |y | j                  |      xs i }|j                  }|dv s||}n|}| j                  ||||
||j                        }| j	                  |      r|ni }||j
                  nd }t        |||||||	|      S )N)r0   rv   )r-   r#   r(   rP   client_endpoint_urllegacy_endpoint_url)endpoint_ruleset_datarS   r<   builtinsclient_contextr   use_sslrequested_auth_scheme)rf   rd   *compute_endpoint_resolver_builtin_defaultshostrl   r/   r   )r   rR   rS   r=   r<   rU   r-   r1   r9   rM   rP   r   s3_config_rawservice_name_raweprv2_region_nameresolver_builtinsr   sig_versions                     r   rL   z*ClientArgsCreator._build_endpoint_resolver  s     ") ..}=C(88 },0C 4 + KK))#+ , ( L 
 "001ABM 	
 ( ++ 	
 '"8)'&)'"-	
 		
r!   c                 X   |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$                  |iS )Nuse_accelerate_endpointFaddressing_stylevirtualpathr`   )r-   r1   r%   use_arn_regionT$s3_disable_multiregion_access_points)resolver_uses_builtin_datarA   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   r-   r#   r(   rP   r   r   given_endpointforce_path_styles	            r   r   z<ClientArgsCreator.compute_endpoint_resolver_builtin_defaults6  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[.
 .	
r!   )NNNr   )__name__
__module____qualname__r    rZ   r@   rf   rl   rg   rw   r|   r   r}   rx   r   r   r   ry   rm   rj   r   r   rk   r   rL   r   r?   r!   r   r   r   <   s    *6 #a
FT
l &4A0*CE

-8


09@%?)<
|R
r!   r   )__doc__rB   loggingr   botocore.exceptionsrG   botocore.parsersbotocore.serializebotocore.configr   botocore.endpointr   botocore.regionsr   r   r   botocore.signersr   botocore.utilsr   r	   	getLoggerr   loggerr   r   r   r?   r!   r   <module>r      sf          " - D 4 * ?			8	$ #  (L	
 L	
r!   