      @property
      def config_changeable_items(self):
          """ Return the dict of config items that can be updated after the model
              has been created """
          return Config(self.config_section).changeable_items
  
      @property
      def name(self):
          """ Set the model name based on the subclass """
          basename = os.path.basename(sys.modules[self.__module__].__file__)
 
</s> remove             _CONFIG = Config(model_name).config_dict
 </s> add             _CONFIG = Config(model_name, configfile=self.configfile).config_dict </s> remove     @staticmethod
    def getch():
 </s> add     def getch(self): </s> remove def get_config(plugin_name):
 </s> add def get_config(plugin_name, configfile=None): </s> remove def get_config(plugin_name):
 </s> add def get_config(plugin_name, configfile=None):
        return Config(self.config_section, configfile=self.configfile).changeable_items
      @property
      def config_changeable_items(self):
          """ Return the dict of config items that can be updated after the model
              has been created """
        return Config(self.config_section, configfile=self.configfile).changeable_items
  
      @property
      def name(self):
          """ Set the model name based on the subclass """
          basename = os.path.basename(sys.modules[self.__module__].__file__)
keep keep keep keep replace keep keep keep keep keep
 Config Changes + Bugfixes

Bugfix: Fully disable keypress monitor for GUI
Bugfix: Preview - Handle missing alignments file
Config changes:
    - Separate plugin defaults into their own files
    - Move mask_type to global training config
    - Add ability to pass in custom config files 
plugins/train/model/_base.py