                  iterations=latest.shape[0] if np.any(latest) else 0)
  
          logger.debug("time_stats: %s", self._time_stats)
  
      def _get_per_session_stats(self):
          """ Populate the attribute :attr:`_per_session_stats` with a sorted list by session ID
          of each ID in the training/loaded session. Stats contain the session ID, start, end and
          elapsed times, the training rate, batch size and number of iterations for each session.
  
          If a training session is running, then updates the training sessions stats only.
 
</s> remove     def _get_time_stats(self):
 </s> add     def _get_time_stats(self) -> None: </s> remove     def _total_stats(self):
 </s> add     def _total_stats(self) -> dict: </s> remove     def logging_disabled(self):
 </s> add     def logging_disabled(self) -> bool: </s> remove     def set_iterations_limit(self, limit):
 </s> add     def set_iterations_limit(self, limit: int) -> None: </s> remove     def stop_training(self):
 </s> add     def stop_training(self) -> None:
    def _get_per_session_stats(self) -> None:
                  iterations=latest.shape[0] if np.any(latest) else 0)
  
          logger.debug("time_stats: %s", self._time_stats)
  
    def _get_per_session_stats(self) -> None:
          """ Populate the attribute :attr:`_per_session_stats` with a sorted list by session ID
          of each ID in the training/loaded session. Stats contain the session ID, start, end and
          elapsed times, the training rate, batch size and number of iterations for each session.
  
          If a training session is running, then updates the training sessions stats only.
keep keep keep keep replace keep keep keep keep keep
 Bugfixes:
  - Stats graph - Handle NaNs in data
  - logger - de-elevate matplotlib font messages 
lib/gui/analysis/stats.py