':param    key:    API key or username to be used (required)
:type     key:    ``str``
:param    secret: Secret password to be used (required)
:type     secret: ``str``
:param    secure: Whether to use HTTPS or HTTP. Note: Some providers
only support HTTPS, and it is on by default.
:type     secure: ``bool``
:param    host: Override hostname used for connections.
:type     host: ``str``
:param    port: Override port used for connections.
:type     port: ``int``
:param    api_version: Optional API version. Only used by drivers
which support multiple API versions.
:type     api_version: ``str``
:param region: Optional driver region. Only used by drivers which
support multiple regions.
:type region: ``str``
:rtype: ``None``'

def __init__(self, key, secret=None, secure=True, host=None, port=None, api_version=None, region=None, **kwargs):

    self.key = key
    self.secret = secret
    self.secure = secure
    args = [self.key]
    if (self.secret is not None):
        args.append(self.secret)
    args.append(secure)
    if (host is not None):
        args.append(host)
    if (port is not None):
        args.append(port)
    self.api_version = api_version
    self.region = region
    conn_kwargs = self._ex_connection_class_kwargs()
    conn_kwargs.update({'timeout': kwargs.pop('timeout', None), 'retry_delay': kwargs.pop('retry_delay', None), 'backoff': kwargs.pop('backoff', None), 'proxy_url': kwargs.pop('proxy_url', None)})
    self.connection = self.connectionCls(*args, **conn_kwargs)
    self.connection.driver = self
    self.connection.connect()
