class_docstr: Data source for session based data, the input data is organized in sessions,
  each session may have multiple rows. The first column is always the session id.
  Raw input rows are consolidated by session id and returned as one session
  per example
code: def _convert_raw_source(self, source):
      for row in source:
          example = self._read_example(row)
          if example is None:
              continue
          if example[self.id_col] == self.current_id:
              self.current_session.append(example)
          else:
              self.current_id = example[self.id_col]
              session = self.current_session
              self.current_session = [example]
              if session:
                  yield self.merge_session(session)
      self.current_id = None
      session = self.current_session
      self.current_session = []
      if session:
          yield self.merge_session(session)
  
file_path: pytext/pytext/data/sources/session.py
imports: from itertools import chain
  from typing import List
  from pytext.config.serialize import _get_class_type
  from pytext.data.sources.data_source import RootDataSource
label_desc: Use image node_id 4 for calling the SessionDataSource obj's underlying member method code with example usage: obj._convert_raw_source(source) without return types