          times, loss = (np.array(times, dtype="float64"), np.array(loss, dtype="float32"))
          logger.debug("Converted to numpy: (data points: %s, timestamps shape: %s, loss shape: %s)",
                       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.
  
 
</s> remove                      len(data), times.shape, loss.shape)
 </s> add                      len(data), n_times.shape, n_loss.shape) </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     def _collect_carry_over(self, data):
 </s> add     def _collect_carry_over(self, data: Dict[int, EventData]) -> None: </s> remove                          timestamps[-1], loss[-1])
            del loss[-1]
            del timestamps[-1]
 </s> add                          l_timestamps[-1], loss[-1])
            del l_loss[-1]
            del l_timestamps[-1] </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))
        return n_times, n_loss
          times, loss = (np.array(times, dtype="float64"), np.array(loss, dtype="float32"))
          logger.debug("Converted to numpy: (data points: %s, timestamps shape: %s, loss shape: %s)",
                       len(data), times.shape, loss.shape)
  
        return n_times, n_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.
  
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