      def stats(self):
          """ dict: The final calculated statistics """
          return self._stats
  
      def refresh(self):
          """ Refresh the stats """
          logger.debug("Refreshing")
          if not _SESSION.is_loaded:
              logger.warning("Session data is not initialized. Not refreshing")
              return None
 
</s> remove     def stats(self):
 </s> add     def stats(self) -> dict: </s> remove     def is_training(self):
 </s> add     def is_training(self) -> bool: </s> remove     def is_loaded(self):
 </s> add     def is_loaded(self) -> bool: </s> remove     def clear(self):
 </s> add     def clear(self) -> None: </s> remove     def get_summary_stats(self):
 </s> add     def get_summary_stats(self) -> List[dict]:
    def refresh(self) -> Optional[Self]:
      def stats(self):
          """ dict: The final calculated statistics """
          return self._stats
  
    def refresh(self) -> Optional[Self]:
          """ Refresh the stats """
          logger.debug("Refreshing")
          if not _SESSION.is_loaded:
              logger.warning("Session data is not initialized. Not refreshing")
              return None
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