B =@SaG?@sdZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z eeZddgZdd d d d d ddddddddddgZGdddeZdS)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) RequestSigner)Config)EndpointCreatorlegacyZregionalzap-northeast-1z ap-south-1zap-southeast-1zap-southeast-2z aws-globalz ca-central-1z eu-central-1z eu-north-1z eu-west-1z eu-west-2z eu-west-3z sa-east-1z us-east-1z us-east-2z us-west-1z us-west-2c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)(ClientArgsCreatorcCs(||_||_||_||_||_||_dS)N)_event_emitter _user_agent_response_parser_factory_loader_exceptions_factory _config_store)self event_emitter user_agentresponse_parser_factoryloaderexceptions_factoryZ config_storere/private/var/folders/fg/1jzmct0d7d72tjkvm_1nhqc5sw67yj/T/pip-unpacked-wheel-ef76ia09/botocore/args.py__init__;s zClientArgsCreator.__init__c  Cs|||| ||||} | d} | d} | d} | d}| d}| d}| ddd}| d }| d }| d }t|j}t|j|| d | d ||}||d<tf|}t|}|j||| d||j |j |j |j |j f||j|jd }tj|| }tj|}|||||||j|||jd S)N service_nameparameter_validationendpoint_configprotocol config_kwargs s3_configmetadata partitionsocket_optionssigning_region region_nameZ signing_namesignature_versions3 endpoint_url) r r#verifyrmax_pool_connectionsproxiestimeoutr client_certproxies_config) serializerendpointresponse_parserrZrequest_signer service_modelr client_configrr)compute_client_argsgetcopyrrZ service_idrrZcreate_endpointr r%r&connect_timeout read_timeoutr(r)botocore serializeZcreate_serializerparsers create_parserr r )r r-r is_securer#r$ credentials scoped_configr.endpoint_bridgeZ final_argsrrrrrrrrrZendpoint_region_namerZsignerZ new_configZendpoint_creatorr+r*r,rrrget_client_argsDsZ      z!ClientArgsCreator.get_client_argsc Cs|j}|jd} d} |r$|js$d} n"|rF|d} | dk rFtj| } |j} |dk r||jdk rd|j} |j dk r|| d|j 7} | |} |j |||||| d}t |d|d| d }|dk r|j |j|j|j|j|j|j|j|jd ||| |} || | || || ||d S) NrTFrz %s)rr r#r8r;rr r!)r r!r)r2r3r%r&r)retriesr(inject_host_prefix)rrrrrrrr)Zendpoint_prefixrrr0r4utilsZensure_booleanrrZuser_agent_extracompute_s3_config_compute_endpoint_configdictupdater2r3r%r&r)r=r(r>_compute_retry_config_compute_socket_options)r r-r.r;r r#r8r:rrrZ raw_valuerrrrrrrr/~s^          z%ClientArgsCreator.compute_client_argscCsF|jd}|dk rB|jdk rB|dkr.|j}n|}||j|S)Nr")r get_config_variabler"r1rC)r r.Zs3_configurationrrrr@s   z#ClientArgsCreator.compute_s3_configcCsL|||||d}|dkr,|jfd|i|S|dkr@|jf|S|jf|S)N)rr r#r8r;r"rsts)_compute_s3_endpoint_config_compute_sts_endpoint_config_resolve_endpoint)r rr r#r8r;rresolve_endpoint_kwargsrrrrAs  z*ClientArgsCreator._compute_endpoint_configcKsT||d|}|rd|d<|jf|}|||d|rP|ddkrPd|d<|S)Nr r;z aws-globalz us-east-1)_should_force_s3_globalrJ!_set_region_if_custom_s3_endpoint)r rrKZforce_s3_globalrrrrrHs   z-ClientArgsCreator._compute_s3_endpoint_configcCs2d}|r"d|kr"|d}|||dko0|dkS)NrZus_east_1_regional_endpoint)z us-east-1N)_validate_s3_regional_config)r r rZs3_regional_configrrrrLs   z)ClientArgsCreator._should_force_s3_globalcCs|tkrtjj|ddS)N)Z%s3_us_east_1_regional_endpoint_config)VALID_REGIONAL_ENDPOINTS_CONFIGr4 exceptionsZ+InvalidS3UsEast1RegionalEndpointConfigError)r Z config_valrrrrNsz.ClientArgsCreator._validate_s3_regional_configcCs>|ddkr:|ddkr:|d}|d|d<|d|d<dS)Nrr r")resolve)r rr;r+rrrrMs     z3ClientArgsCreator._set_region_if_custom_s3_endpointcKs4|jf|}||d|dr0|||d|S)Nr r#r8)rJ_should_set_global_sts_endpoint_set_global_sts_endpoint)r rKrrrrrI s   z.ClientArgsCreator._compute_sts_endpoint_configcCs|rdS|dko|tkS)NFr)"_get_sts_regional_endpoints_configLEGACY_GLOBAL_STS_REGIONS)r r r#rrrrRs z1ClientArgsCreator._should_set_global_sts_endpointcCs.|jd}|sd}|tkr*tjj|d|S)NZsts_regional_endpointsr)sts_regional_endpoints_config)r rFrOr4rPZ&InvalidSTSRegionalEndpointsConfigError)r rVrrrrTsz4ClientArgsCreator._get_sts_regional_endpoints_configcCs$|rdnd}d||d<d|d<dS)Nhttpshttpz%s://sts.amazonaws.comr#z us-east-1rr)r rr8schemerrrrS's  z*ClientArgsCreator._set_global_sts_endpointcCs|||||S)N)rQ)r rr r#r8r;rrrrJ,sz#ClientArgsCreator._resolve_endpointcCs>tjtjdfg}|r:||ddr:|tjtjdf|S)NZ tcp_keepaliveF)socket IPPROTO_TCP TCP_NODELAY_ensure_booleanr0append SOL_SOCKET SO_KEEPALIVE)r r:rrrrrE1s z)ClientArgsCreator._compute_socket_optionscCs||||dS)N)_compute_retry_max_attempts_compute_retry_mode)r rrrrrD<s z'ClientArgsCreator._compute_retry_configcCs|d}|dk rLd|kr*|dddSd|krL|d}|d|d<dS|jd}|dk r||dkrti}||d<||d<dS)Nr=Ztotal_max_attempts max_attemptsrZ)r0popr rF)r rr=valuerdrrrrb@s     z-ClientArgsCreator._compute_retry_max_attemptscCsP|d}|dkr i}||d<n d|kr,dS|jd}|dkrDd}||d<dS)Nr=mode retry_moder)r0r rF)r rr=rhrrrrc`s   z%ClientArgsCreator._compute_retry_modecCst|tr|S|dkSdS)Ntrue) isinstanceboollower)r valrrrr^ns z!ClientArgsCreator._ensure_booleanN)__name__ __module__ __qualname__rr<r/r@rArHrLrNrMrIrRrTrSrJrErDrbrcr^rrrrr:s& :=      r)__doc__r1loggingr[Zbotocore.exceptionsr4Zbotocore.serializeZbotocore.utilsZbotocore.signersrZbotocore.configrZbotocore.endpointr getLoggerrnloggerrOrUobjectrrrrrs: