':type host: str
:param host: The host to make the connection to
:keyword str aws_access_key_id: Your AWS Access Key ID (provided by
Amazon). If none is specified, the value in your
``AWS_ACCESS_KEY_ID`` environmental variable is used.
:keyword str aws_secret_access_key: Your AWS Secret Access Key
(provided by Amazon). If none is specified, the value in your
``AWS_SECRET_ACCESS_KEY`` environmental variable is used.
:keyword str security_token: The security token associated with
temporary credentials issued by STS.  Optional unless using
temporary credentials.  If none is specified, the environment
variable ``AWS_SECURITY_TOKEN`` is used if defined.
:type is_secure: boolean
:param is_secure: Whether the connection is over SSL
:type https_connection_factory: list or tuple
:param https_connection_factory: A pair of an HTTP connection
factory and the exceptions to catch.  The factory should have
a similar interface to L{http_client.HTTPSConnection}.
:param str proxy: Address/hostname for a proxy server
:type proxy_port: int
:param proxy_port: The port to use when connecting over a proxy
:type proxy_user: str
:param proxy_user: The username to connect with on the proxy
:type proxy_pass: str
:param proxy_pass: The password to use when connection over a proxy.
:type port: int
:param port: The port to use to connect
:type suppress_consec_slashes: bool
:param suppress_consec_slashes: If provided, controls whether
consecutive slashes will be suppressed in key paths.
:type validate_certs: bool
:param validate_certs: Controls whether SSL certificates
will be validated or not.  Defaults to True.
:type profile_name: str
:param profile_name: Override usual Credentials section in config
file to use a named set of keys instead.'

def __init__(self, host, aws_access_key_id=None, aws_secret_access_key=None, is_secure=True, port=None, proxy=None, proxy_port=None, proxy_user=None, proxy_pass=None, debug=0, https_connection_factory=None, path='/', provider='aws', security_token=None, suppress_consec_slashes=True, validate_certs=True, profile_name=None):

    self.suppress_consec_slashes = suppress_consec_slashes
    self.num_retries = 6
    if config.has_option('Boto', 'is_secure'):
        is_secure = config.getboolean('Boto', 'is_secure')
    self.is_secure = is_secure
    self.https_validate_certificates = config.getbool('Boto', 'https_validate_certificates', validate_certs)
    if (self.https_validate_certificates and (not HAVE_HTTPS_CONNECTION)):
        raise BotoClientError('SSL    server    certificate    validation    is    enabled    in    boto    configuration,    but    Python    dependencies    required    to    support    this    feature    are    not    available.    Certificate    validation    is    only    supported    when    running    under    Python    2.6    or    later.')
    certs_file = config.get_value('Boto', 'ca_certificates_file', DEFAULT_CA_CERTS_FILE)
    if (certs_file == 'system'):
        certs_file = None
    self.ca_certificates_file = certs_file
    if port:
        self.port = port
    else:
        self.port = PORTS_BY_SECURITY[is_secure]
    self.handle_proxy(proxy, proxy_port, proxy_user, proxy_pass)
    self.http_exceptions = (http_client.HTTPException, socket.error, socket.gaierror, http_client.BadStatusLine)
    self.http_unretryable_exceptions = []
    if HAVE_HTTPS_CONNECTION:
        self.http_unretryable_exceptions.append(https_connection.InvalidCertificateException)
    self.socket_exception_values = (errno.EINTR,)
    if (https_connection_factory is not None):
        self.https_connection_factory = https_connection_factory[0]
        self.http_exceptions += https_connection_factory[1]
    else:
        self.https_connection_factory = None
    if is_secure:
        self.protocol = 'https'
    else:
        self.protocol = 'http'
    self.host = host
    self.path = path
    if (not isinstance(debug, six.integer_types)):
        debug = 0
    self.debug = config.getint('Boto', 'debug', debug)
    self.host_header = None
    self.http_connection_kwargs = {}
    if ((sys.version_info[0], sys.version_info[1]) >= (2, 6)):
        self.http_connection_kwargs['timeout'] = config.getint('Boto', 'http_socket_timeout', 70)
    if isinstance(provider, Provider):
        self.provider = provider
    else:
        self._provider_type = provider
        self.provider = Provider(self._provider_type, aws_access_key_id, aws_secret_access_key, security_token, profile_name)
    if self.provider.host:
        self.host = self.provider.host
    if self.provider.port:
        self.port = self.provider.port
    if self.provider.host_header:
        self.host_header = self.provider.host_header
    self._pool = ConnectionPool()
    self._connection = (self.host, self.port, self.is_secure)
    self._last_rs = None
    self._auth_handler = auth.get_auth_handler(host, config, self.provider, self._required_auth_capability())
    if (getattr(self, 'AuthServiceName', None) is not None):
        self.auth_service_name = self.AuthServiceName
    self.request_hook = None
