code: def _append(self, stream_vis, vals):
      if vals is None:
          self.df = self.df.append(
              self.SeriesClass(
                  {self._get_column_prefix(stream_vis, 0): None}
              ),
              sort=False,
              ignore_index=True,
          )
          return
      for val in vals:
          if val is None or utils.is_scalar(val):
              self.df = self.df.append(
                  self.SeriesClass(
                      {self._get_column_prefix(stream_vis, 0): val}
                  ),
                  sort=False,
                  ignore_index=True,
              )
          elif utils.is_array_like(val):
              val_dict = {}
              for i, val_i in enumerate(val):
                  val_dict[
                      self._get_column_prefix(stream_vis, i)
                  ] = val_i
              self.df = self.df.append(
                  self.SeriesClass(val_dict),
                  sort=False,
                  ignore_index=True,
              )
          else:
              self.df = self.df.append(
                  self.SeriesClass(val.__dict__),
                  sort=False,
                  ignore_index=True,
              )
  
file_path: tensorwatch/tensorwatch/text_vis.py
imports: from .None import utils
  from .vis_base import VisBase
label_desc: Use image node_id 4 for calling the TextVis obj's underlying member method code with example usage: obj._append(stream_vis, vals) without return types