          del self.fig
  
  
  class TrainingGraph(GraphBase):  # pylint: disable=too-many-ancestors
      """ Live graph to be displayed during training. """
  
      def __init__(self, parent, data, ylabel):
          super().__init__(parent, data, ylabel)
          self.thread = None  # Thread for LongRunningTask
          self._displayed_keys = []
          self.add_callback()
  
 
</s> remove         self.thread = None  # Thread for LongRunningTask
 </s> add         self._thread = None  # Thread for LongRunningTask </s> remove         self.add_callback()
 </s> add         self._add_callback() </s> remove         self.fig.clf()
        del self.fig
 </s> add         self._fig.clf()
        del self._fig </s> remove         self.scale = scale
 </s> add         self._scale = scale </s> remove     """ Session Graph for session pop-up """
    def __init__(self, parent, data, ylabel, scale):
 </s> add     """ Session Graph for session pop-up.

    Parameters
    ----------
    parent: :class:`tkinter.ttk.Frame`
        The parent frame that holds the graph
    data: :class:`lib.gui.analysis.stats.Calculations`
        The statistics class that holds the data to be displayed
    ylabel: str
        The data label for the y-axis
    scale: str
        Should be one of ``"log"`` or ``"linear"``
    """
    def __init__(self, parent: ttk.Frame, data, ylabel: str, scale: str) -> None:
    """ Live graph to be displayed during training.

    Parameters
    ----------
    parent: :class:`tkinter.ttk.Frame`
        The parent frame that holds the graph
    data: :class:`lib.gui.analysis.stats.Calculations`
        The statistics class that holds the data to be displayed
    ylabel: str
        The data label for the y-axis
    """

    def __init__(self, parent: ttk.Frame, data, ylabel: str) -> None:
          del self.fig
  
  
  class TrainingGraph(GraphBase):  # pylint: disable=too-many-ancestors
    """ Live graph to be displayed during training.

    Parameters
    ----------
    parent: :class:`tkinter.ttk.Frame`
        The parent frame that holds the graph
    data: :class:`lib.gui.analysis.stats.Calculations`
        The statistics class that holds the data to be displayed
    ylabel: str
        The data label for the y-axis
    """

    def __init__(self, parent: ttk.Frame, data, ylabel: str) -> None:
    """ Live graph to be displayed during training.

    Parameters
    ----------
    parent: :class:`tkinter.ttk.Frame`
        The parent frame that holds the graph
    data: :class:`lib.gui.analysis.stats.Calculations`
        The statistics class that holds the data to be displayed
    ylabel: str
        The data label for the y-axis
    """

    def __init__(self, parent: ttk.Frame, data, ylabel: str) -> None:
    """ Live graph to be displayed during training.

    Parameters
    ----------
    parent: :class:`tkinter.ttk.Frame`
        The parent frame that holds the graph
    data: :class:`lib.gui.analysis.stats.Calculations`
        The statistics class that holds the data to be displayed
    ylabel: str
        The data label for the y-axis
    """

    def __init__(self, parent: ttk.Frame, data, ylabel: str) -> None:
          super().__init__(parent, data, ylabel)
          self.thread = None  # Thread for LongRunningTask
          self._displayed_keys = []
          self.add_callback()
  
keep keep keep keep replace replace replace keep keep keep keep keep
 Update matplotlib requirement
  - bump min requirement to 3.5.1
  - Fix custom toolbar for v3.5.1
  - Documentation + linting 
lib/gui/display_graph.py