U m^'@s\ddlZddlmZddlmZmZddlmZddlmZddlm Z Gddde Z dS) N) OrderedDict)DEFAULT_TIMEOUTMAX_POOL_CONNECTIONS)InvalidS3AddressingStyleError)InvalidRetryConfigurationError)InvalidMaxRetryAttemptsErrorc@sheZdZdZedddddefdefdd efd d d d ddgZddZddZ ddZ ddZ ddZ dS)ConfigaAdvanced configuration for Botocore clients. :type region_name: str :param region_name: The region to use in instantiating the client :type signature_version: str :param signature_version: The signature version when signing requests. :type user_agent: str :param user_agent: The value to use in the User-Agent header. :type user_agent_extra: str :param user_agent_extra: The value to append to the current User-Agent header value. :type connect_timeout: float or int :param connect_timeout: The time in seconds till a timeout exception is thrown when attempting to make a connection. The default is 60 seconds. :type read_timeout: float or int :param read_timeout: The time in seconds till a timeout exception is thrown when attempting to read from a connection. The default is 60 seconds. :type parameter_validation: bool :param parameter_validation: Whether parameter validation should occur when serializing requests. The default is True. You can disable parameter validation for performance reasons. Otherwise, it's recommended to leave parameter validation enabled. :type max_pool_connections: int :param max_pool_connections: The maximum number of connections to keep in a connection pool. If this value is not set, the default value of 10 is used. :type proxies: dict :param proxies: A dictionary of proxy servers to use by protocol or endpoint, e.g.: {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. The proxies are used on each request. :type s3: dict :param s3: A dictionary of s3 specific configurations. Valid keys are: * 'use_accelerate_endpoint' -- Refers to whether to use the S3 Accelerate endpoint. The value must be a boolean. If True, the client will use the S3 Accelerate endpoint. If the S3 Accelerate endpoint is being used then the addressing style will always be virtual. * 'payload_signing_enabled' -- Refers to whether or not to SHA256 sign sigv4 payloads. By default, this is disabled for streaming uploads (UploadPart and PutObject). * 'addressing_style' -- Refers to the style in which to address s3 endpoints. Values must be a string that equals: * auto -- Addressing style is chosen for user. Depending on the configuration of client, the endpoint may be addressed in the virtual or the path style. Note that this is the default behavior if no style is specified. * virtual -- Addressing style is always virtual. The name of the bucket must be DNS compatible or an exception will be thrown. Endpoints will be addressed as such: mybucket.s3.amazonaws.com * path -- Addressing style is always by path. Endpoints will be addressed as such: s3.amazonaws.com/mybucket * 'us_east_1_regional_endpoint' - Refers to what S3 endpoint to use when the region is configured to be us-east-1. Values must be a string that equals: * regional -- Use the us-east-1.amazonaws.com endpoint if the client is configured to use the us-east-1 region. * legacy -- Use the s3.amazonaws.com endpoint if the client is configured to use the us-east-1 region. This is the default if the configuration option is not specified. :type retries: dict :param retries: A dictionary for retry specific configurations. Valid keys are: * 'max_attempts' -- An integer representing the maximum number of retry attempts that will be made on a single request. For example, setting this value to 2 will result in the request being retried at most two times after the initial request. Setting this value to 0 will result in no retries ever being attempted on the initial request. If not provided, the number of retries will default to whatever is modeled, which is typically four retries. :type client_cert: str, (str, str) :param client_cert: The path to a certificate for TLS client authentication. When a str is provided it is treated as a path to a client certificate to be used when creating a TLS connection. If a client key is to be provided alongside the client certificate the client_cert should be set to a tuple of length two where the first element is the path to the client certificate and the second element is the path to the certificate key. :type inject_host_prefix: bool :param inject_host_prefix: Whether host prefix injection should occur. Defaults to True. Setting this to False disables the injection of operation parameters into the prefix of the hostname. This is useful for clients providing custom endpoints that should not have their host prefix modified. )Z region_nameN)Zsignature_versionN) user_agentN)Zuser_agent_extraNconnect_timeout read_timeout)Zparameter_validationTZmax_pool_connections)proxiesN)s3N)retriesN) client_certN)Zinject_host_prefixT)Zendpoint_discovery_enabledNcOs`||||_t|j}||j|D]\}}t|||q.||j| |j dS)N) _record_user_provided_options_user_provided_optionscopyOPTION_DEFAULTSupdateitemssetattr_validate_s3_configurationr _validate_retry_configurationr)selfargskwargs config_varskeyvalueri/private/var/folders/sd/whlwsn6x1_qgglc0mjv25_695qk2gl/T/pip-install-4zq3fp6i/botocore/botocore/config.py__init__s   zConfig.__init__c Cst|j}i}|D](\}}||jkr2|||<qtd|qt|t|krhtdt|t|ft|D]0\}}|||krtd||||||<qp|S)Nz$Got unexpected keyword argument '%s'z%Takes at most %s arguments (%s given)z-Got multiple values for keyword argument '%s')listrr TypeErrorlen enumerate) rrr option_orderZuser_provided_optionsrriargrrr rs0    z$Config._record_user_provided_optionscCs(|dk r$|d}|dkr$t|ddS)Naddressing_style)ZvirtualautopathN)Zs3_addressing_style)getr)rr r)rrr rs  z!Config._validate_s3_configurationcCsJ|dk rF|D]8}|dkr"t|d|dkr ||dkr t||dq dS)N) max_attempts)Zretry_config_optionr-r)Zprovided_max_attempts)rr)rrrrrr rsz$Config._validate_retry_configurationcCs"t|j}||jtf|S)aMerges the config object with another config object This will merge in all non-default values from the provided config and return a new config object :type other_config: botocore.config.Config :param other config: Another config object to merge with. The values in the provided config object will take precedence in the merging :returns: A config object built from the merged values of both config objects. )rrrr)rZ other_configZconfig_optionsrrr merges  z Config.mergeN) __name__ __module__ __qualname____doc__rrrrr!rrrr.rrrr rs,s! r) rZbotocore.compatrZbotocore.endpointrrZbotocore.exceptionsrrrobjectrrrrr  s