code: def flush_cache(self):
          '''
          Use a cache to save state changes to avoid opening a session for every change.
          The cache will be flushed at the end of the simulation, and when history is accessed.
          '''
          logger.debug('Flushing cache {}'.format(self.db_path))
          with self.db:
              for rec in self._tups:
                  self.db.execute("replace into history(agent_id, t_step, key, value) values (?, ?, ?, ?)", (rec.agent_id, rec.t_step, rec.key, rec.value))
          self._tups = list(f flush_cache(self):
          '''
          Use a cache to save state changes to avoid opening a session for every change.
          The cache will be flushed at the end of the simulation, and when history is accessed.
          '''
          logger.debug('Flushing cache {}'.format(self.db_path))
          with self.db:
              for rec in self._tups:
                  self.db.execute("replace into history(agent_id, t_step, key, value) values (?, ?, ?, ?)", (rec.agent_id, rec.t_step, rec.key, rec.value))
          self._tups = list()
docs: Use a cache to save state changes to avoid opening a session for every change.
          The cache will be flushed at the end of the simulation, and when history is accessed.