          iterator = self._training_iterator if live_data else tf.compat.v1.io.tf_record_iterator(
              self._log_files.get(session_id))
          parser = _EventParser(iterator, self._cache, live_data)
          parser.cache_events(session_id)
  
      def _check_cache(self, session_id: Optional[int] = None) -> None:
 
</s> remove     def _check_cache(self, session_id=None):
 </s> add     def _check_cache(self, session_id: Optional[int] = None) -> None: </s> remove         self._loss_labels = []
 </s> add         self._loss_labels: List[str] = [] </s> remove     def get_loss(self, session_id=None):
 </s> add     def get_loss(self, session_id: Optional[int] = None) -> Dict[int, Dict[str, np.ndarray]]: </s> remove     def _cache_data(self, session_id):
 </s> add     def _cache_data(self, session_id: int) -> None: </s> remove         for pkg, version in self._env.missing_packages:
 </s> add         for pkg, version in self._packages.to_install:
        assert iterator is not None
          iterator = self._training_iterator if live_data else tf.compat.v1.io.tf_record_iterator(
              self._log_files.get(session_id))
        assert iterator is not None
          parser = _EventParser(iterator, self._cache, live_data)
          parser.cache_events(session_id)
  
      def _check_cache(self, session_id: Optional[int] = None) -> None:
keep add 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