              if is_live:
                  logger.debug("Setting carried over data: %s", data[idx])
                  self._carry_over[idx] = data[idx]
              logger.debug("Removing truncated loss: (timestamp: %s, loss: %s)",
                           timestamps[-1], loss[-1])
              del loss[-1]
              del timestamps[-1]
  
          return timestamps, loss
  
      def _add_latest_live(self, session_id, loss, timestamps):
          """ Append the latest received live training data to the cached data.
 
</s> remove         return timestamps, loss
 </s> add         return l_timestamps, l_loss </s> remove     def _add_latest_live(self, session_id, loss, timestamps):
 </s> add     def _add_latest_live(self, session_id: int, loss: np.ndarray, timestamps: np.ndarray) -> None: </s> remove         if len(loss[-1]) != len(self._loss_labels):
            logger.debug("Truncated loss found. loss count: %s", len(loss))
 </s> add         l_loss: List[List[float]] = list(loss)
        l_timestamps: List[float] = list(timestamps)

        if len(l_loss[-1]) != len(self._loss_labels):
            logger.debug("Truncated loss found. loss count: %s", len(l_loss)) </s> remove                      len(data), times.shape, loss.shape)
 </s> add                      len(data), n_times.shape, n_loss.shape) </s> remove     def _process_data(self, data, timestamps, loss, is_live):
 </s> add     def _process_data(self,
                      data: Dict[int, EventData],
                      is_live: bool) -> Tuple[List[float], List[List[float]]]:
                         l_timestamps[-1], loss[-1])
            del l_loss[-1]
            del l_timestamps[-1]
              if is_live:
                  logger.debug("Setting carried over data: %s", data[idx])
                  self._carry_over[idx] = data[idx]
              logger.debug("Removing truncated loss: (timestamp: %s, loss: %s)",
                         l_timestamps[-1], loss[-1])
            del l_loss[-1]
            del l_timestamps[-1]
                         l_timestamps[-1], loss[-1])
            del l_loss[-1]
            del l_timestamps[-1]
                         l_timestamps[-1], loss[-1])
            del l_loss[-1]
            del l_timestamps[-1]
  
          return timestamps, loss
  
      def _add_latest_live(self, session_id, loss, timestamps):
          """ Append the latest received live training data to the cached data.
keep keep keep keep replace replace replace keep keep keep keep keep
 Bugfixes
  - plugin.train.unbalanced - decoder b
  - gui.stats - crash when log folder deleted
  - setup.py - install gcc=12.1.0 on linux (scipy dep)
  - setup.py - don't test ROCm unless valid
  - typofix - cli_args extract singleprocess help
typing
  - lib.gui.analysis.event_reader
  - lib.gpu_stats.directml - make platform specific
unit tests
  - lib.gui.analysis.event_reader 
lib/gui/analysis/event_reader.py