          """ Some options don't like to be copied, so this returns a cleaned
              configuration from a widget
              We use config() instead of configure() because some items (ttk Scale) do
              not populate configure()"""
          new_config = dict()
          for key in widget.config():
              if key == "class":
                  continue
              val = widget.cget(key)
              # Some keys default to "" but tkinter doesn't like to set config to this value
 
</s> remove         if len(self._model.output_names) == len(set(self._model.output_names)):
            logger.debug("Output names are unique, not rewriting: %s", self._model.output_names)
 </s> add         if len(self.model.output_names) == len(set(self.model.output_names)):
            logger.debug("Output names are unique, not rewriting: %s", self.model.output_names) </s> remove             layer.set_weights(old_model.get_weights())
 </s> add             klayer.set_weights(old_model.get_weights()) </s> remove _RECREATE_OBJECTS = dict(tooltips=dict(), commands=dict(), contextmenus=dict())
 </s> add _RECREATE_OBJECTS = dict(tooltips={}, commands={}, contextmenus={}) </s> remove def _get_tooltip(widget, text=None, text_variable=None, wrap_length=600):
    """ Store the tooltip layout and widget id in _TOOLTIPS and return a tooltip """
 </s> add def _get_tooltip(widget, text=None, text_variable=None):
    """ Store the tooltip layout and widget id in _TOOLTIPS and return a tooltip.

    Auto adjust tooltip width based on amount of text.

    """ </s> remove         retval = dict()
 </s> add         retval = {}
        new_config = {}
          """ Some options don't like to be copied, so this returns a cleaned
              configuration from a widget
              We use config() instead of configure() because some items (ttk Scale) do
              not populate configure()"""
        new_config = {}
          for key in widget.config():
              if key == "class":
                  continue
              val = widget.cget(key)
              # Some keys default to "" but tkinter doesn't like to set config to this value
keep keep keep keep replace keep keep keep keep keep
 Core updates
   - Change loss loading mechanism
   - Autosize tooltips based on content size
   - Random linting + code modernisation 
lib/gui/control_helper.py