def __init__(<EOL>self,<EOL>host: str = '<STR_LIT:localhost>',<EOL>port: int = <NUM_LIT>,<EOL>mode: str = '<STR_LIT>',<EOL>output: str = '<STR_LIT>',<EOL>db: Optional[str] = None,<EOL>database: Optional[str] = None,<EOL>ssl: bool = False,<EOL>*,<EOL>unix_socket: Optional[str] = None,<EOL>username: Optional[str] = None,<EOL>password: Optional[str] = None,<EOL>timeout: Optional[Union[aiohttp.ClientTimeout, float]] = None,<EOL>loop: Optional[asyncio.AbstractEventLoop] = None,<EOL>redis_opts: Optional[dict] = None,<EOL>cache_expiry: int = <NUM_LIT>,<EOL>**kwargs<EOL>):
self._loop = loop or asyncio.get_event_loop()<EOL>self._session: aiohttp.ClientSession = None<EOL>self._redis: aioredis.Redis = None<EOL>self._mode = None<EOL>self._output = None<EOL>self._db = None<EOL>self.ssl = ssl<EOL>self.host = host<EOL>self.port = port<EOL>self.mode = mode<EOL>self.output = output<EOL>self.db = database or db<EOL>if username:<EOL><INDENT>kwargs.update(auth=aiohttp.BasicAuth(username, password))<EOL><DEDENT>if unix_socket:<EOL><INDENT>kwargs.update(connector=aiohttp.UnixConnector(unix_socket, loop=self._loop))<EOL><DEDENT>if timeout:<EOL><INDENT>if isinstance(timeout, aiohttp.ClientTimeout):<EOL><INDENT>kwargs.update(timeout=timeout)<EOL><DEDENT>else:<EOL><INDENT>kwargs.update(timeout=aiohttp.ClientTimeout(total=timeout))<EOL><DEDENT><DEDENT>self.opts = kwargs<EOL>self.redis_opts = redis_opts<EOL>self.cache_expiry = cache_expiry<EOL>
:class:`~aioinflux.client.InfluxDBClient`  holds information necessary
to interact with InfluxDB.
It is async by default, but can also be used as a sync/blocking client.
When querying, responses are returned as parsed JSON by default,
but can also be wrapped in easily iterable
wrapper object or be parsed to Pandas DataFrames.
The three main public methods are the three endpoints of the InfluxDB API, namely:

1. :meth:`~.InfluxDBClient.ping`
2. :meth:`~.InfluxDBClient.write`
3. :meth:`~.InfluxDBClient.query`

See each of the above methods documentation for further usage details.

See also: https://docs.influxdata.com/influxdb/latest/tools/api/

:param host: Hostname to connect to InfluxDB.
:param port: Port to connect to InfluxDB.
:param mode: Mode in which client should run. Available options:

   - ``async``: Default mode. Each query/request to the backend will
   - ``blocking``: Behaves in sync/blocking fashion,
     similar to the official InfluxDB-Python client.

:param output: Output format of the response received from InfluxDB.

   - ``json``: Default format.
     Returns parsed JSON as received from InfluxDB.
   - ``dataframe``: Parses results into :py:class`pandas.DataFrame`.
     Not compatible with chunked responses.

:param db: Default database to be used by the client.
:param ssl: If https should be used.
:param unix_socket: Path to the InfluxDB Unix domain socket.
:param username: Username to use to connect to InfluxDB.
:param password: User password.
:param timeout: Timeout in seconds or :class:`aiohttp.ClientTimeout` object
:param database: Default database to be used by the client.
    This field is for argument consistency with the official InfluxDB Python client.
:param loop: Asyncio event loop.
:param redis_opts: Dict fo keyword arguments for :func:`aioredis.create_redis`
:param cache_expiry: Expiry time (in seconds) for cached data
:param kwargs: Additional kwargs for :class:`aiohttp.ClientSession`