                       len(data), times.shape, loss.shape)
  
          return times, loss
  
      def _collect_carry_over(self, data):
          """ For live data, collect carried over data from the previous update and merge into the
          current data dictionary.
  
          Parameters
          ----------
 
</s> remove         return times, loss
 </s> add         return n_times, n_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]]]: </s> remove         times, loss = (np.array(times, dtype="float64"), np.array(loss, dtype="float32"))
 </s> add         n_times, n_loss = (np.array(times, dtype="float64"), np.array(loss, dtype="float32")) </s> remove         data: dict
 </s> add         data: dict[int, :class:`EventData`]
    def _collect_carry_over(self, data: Dict[int, EventData]) -> None:
                       len(data), times.shape, loss.shape)
  
          return times, loss
  
    def _collect_carry_over(self, data: Dict[int, EventData]) -> None:
          """ For live data, collect carried over data from the previous update and merge into the
          current data dictionary.
  
          Parameters
          ----------
keep keep keep keep 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