  
      def build(self):
          """ Update the plot area with loss values """
          logger.debug("Building training graph")
          self.plotcanvas.draw()
          logger.debug("Built training graph")
  
      def refresh(self, *args):  # pylint: disable=unused-argument
          """ Read loss data and apply to graph """
          refresh_var = get_config().tk_vars["refreshgraph"]
 
</s> remove     def refresh(self, *args):  # pylint: disable=unused-argument
        """ Read loss data and apply to graph """
 </s> add     def refresh(self, *args) -> None:  # pylint: disable=unused-argument
        """ Read the latest loss data and apply to current graph """ </s> remove     def build(self):
        """ Update the plot area with loss values """
 </s> add     def build(self) -> None:
        """ Build the Training graph. """ </s> remove         if not refresh_var.get() and self.thread is None:
 </s> add         if not refresh_var.get() and self._thread is None: </s> remove     def add_callback(self):
        """ Add the variable trace to update graph on recent button or save iteration """
 </s> add     def _add_callback(self) -> None:
        """ Add the variable trace to update graph on refresh button press or save iteration. """ </s> remove         self.toolbar_place(self)
        self.plotcanvas.draw()
 </s> add         self._toolbar_place(self)
        self._plotcanvas.draw()
        self._plotcanvas.draw()
  
      def build(self):
          """ Update the plot area with loss values """
          logger.debug("Building training graph")
        self._plotcanvas.draw()
          logger.debug("Built training graph")
  
      def refresh(self, *args):  # pylint: disable=unused-argument
          """ Read loss data and apply to graph """
          refresh_var = get_config().tk_vars["refreshgraph"]
keep keep keep keep 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