                                           "helptext": info,
                                           "type": datatype,
                                           "rounding": rounding,
                                           "min_max": min_max,
                                           "choices": choices}
  
      def check_exists(self):
          """ Check that a config file exists """
          if not os.path.isfile(self.configfile):
              logger.debug("Config file does not exist: '%s'", self.configfile)
 
</s> remove                      "info: '%s', rounding: '%s', min_max: %s, choices: %s)",
                     section, title, datatype, default, info, rounding, min_max, choices)
 </s> add                      "info: '%s', rounding: '%s', min_max: %s, choices: %s, fixed: %s)",
                     section, title, datatype, default, info, rounding, min_max, choices, fixed) </s> remove     def replace_config(self):
        """ Replace the loaded config with the one contained within the state file """
 </s> add     def replace_config(self, config_changeable_items):
        """ Replace the loaded config with the one contained within the state file
            Check for any fixed=False parameters changes and log info changes
        """ </s> remove     def load(self):
 </s> add     def load(self, config_changeable_items):
                                         "choices": choices,
                                         "fixed": fixed}

    @staticmethod
    def expand_helptext(helptext, choices, default, datatype, min_max, fixed):
        """ Add extra helptext info from parameters """
        if not fixed:
            helptext += "\nThis option can be updated for existing models."
        if choices:
            helptext += "\nChoose from: {}".format(choices)
        elif datatype == bool:
            helptext += "\nChoose from: True, False"
        elif datatype == int:
            cmin, cmax = min_max
            helptext += "\nSelect an integer between {} and {}".format(cmin, cmax)
        elif datatype == float:
            cmin, cmax = min_max
            helptext += "\nSelect a decimal number between {} and {}".format(cmin, cmax)
        helptext += "\n[Default: {}]".format(default)
        return helptext
                                           "helptext": info,
                                           "type": datatype,
                                           "rounding": rounding,
                                           "min_max": min_max,
                                         "choices": choices,
                                         "fixed": fixed}

    @staticmethod
    def expand_helptext(helptext, choices, default, datatype, min_max, fixed):
        """ Add extra helptext info from parameters """
        if not fixed:
            helptext += "\nThis option can be updated for existing models."
        if choices:
            helptext += "\nChoose from: {}".format(choices)
        elif datatype == bool:
            helptext += "\nChoose from: True, False"
        elif datatype == int:
            cmin, cmax = min_max
            helptext += "\nSelect an integer between {} and {}".format(cmin, cmax)
        elif datatype == float:
            cmin, cmax = min_max
            helptext += "\nSelect a decimal number between {} and {}".format(cmin, cmax)
        helptext += "\n[Default: {}]".format(default)
        return helptext
  
      def check_exists(self):
          """ Check that a config file exists """
          if not os.path.isfile(self.configfile):
              logger.debug("Config file does not exist: '%s'", self.configfile)
keep keep keep keep replace keep keep keep keep keep
 Allow 'unfixed' parameters for model config 
lib/config.py