def __init__(self, *args, **kwargs):
enable_cache = kwargs.pop('<STR_LIT>', True)<EOL>super(Connection, self).__init__(*args, **kwargs)<EOL>self.caching_enabled = enable_cache<EOL>self._cacheable_tables = [<NUM_LIT:0>, <NUM_LIT:1>]<EOL>self._table_cache = {}<EOL>if enable_cache:<EOL><INDENT>self.logger.info('<STR_LIT>')<EOL><DEDENT>
This is a C12.18 driver for serial connections.  It relies on PySerial
to communicate with an ANSI Type-2 Optical probe to communicate
with a device (presumably a smart meter).

:param str device: A connection string to be passed to the PySerial
  library.  If PySerial is new enough, the serial_for_url function
  will be used to allow the user to use a rfc2217 bridge.
:param dict c1218_settings: A settings dictionary to configure the C1218
  parameters of 'nbrpkts' and 'pktsize'  If not provided the default
  settings of 2 (nbrpkts) and 512 (pktsize) will be used.
:param dict serial_settings: A PySerial settings dictionary to be applied to
  the serial connection instance.
:param bool toggle_control: Enables or disables automatically settings
  the toggle bit in C12.18 frames.
:param bool enable_cache: Cache specific, read only tables in memory,
  the first time the table is read it will be stored for retreival
  on subsequent requests.  This is enabled only for specific tables
  (currently only 0 and 1).