          retval = os.path.join(os.path.dirname(folder), "config", "{}.ini".format(fname))
          logger.debug("Config File location: '%s'", retval)
          return retval
  
      def add_section(self, title=None, info=None):
          """ Add a default section to config file """
          logger.debug("Add section: (title: '%s', info: '%s')", title, info)
          if None in (title, info):
              raise ValueError("Default config sections must have a title and "
                               "information text")
          self.defaults[title] = OrderedDict()
 
</s> remove         retval = os.path.join(os.path.dirname(folder), "config", "{}.ini".format(fname))
 </s> add         retval = os.path.join(os.path.dirname(folder), "config", f"{fname}.ini") </s> remove         if None in (title, info):
            raise ValueError("Default config sections must have a title and "
                             "information text")
        self.defaults[title] = OrderedDict()
        self.defaults[title]["helptext"] = info

    def add_item(self, section=None, title=None, datatype=str, default=None, info=None,
                 rounding=None, min_max=None, choices=None, gui_radio=False, fixed=True,
                 group=None):
 </s> add         self.defaults[title] = ConfigSection(helptext=info, items=OrderedDict())

    def add_item(self,
                 section: Optional[str] = None,
                 title: Optional[str] = None,
                 datatype: type = str,
                 default: ConfigValueType = None,
                 info: Optional[str] = None,
                 rounding: Optional[int] = None,
                 min_max: Optional[Union[Tuple[int, int], Tuple[float, float]]] = None,
                 choices: Optional[Union[str, List[str]]] = None,
                 gui_radio: bool = False,
                 fixed: bool = True,
                 group: Optional[str] = None) -> None: </s> remove         if None in (section, title, default, info):
            raise ValueError("Default config items must have a section, title, defult and "
                             "information text")
 </s> add         assert (section is not None and
                title is not None and
                default is not None and
                info is not None), ("Default config items must have a section, title, defult and "
                                    "information text") </s> remove         choices = list() if not choices else choices
 </s> add         choices = [] if not choices else choices </s> remove             raise ValueError("Section does not exist: {}".format(section))
        if datatype not in (str, bool, float, int, list):
            raise ValueError("'datatype' must be one of str, bool, float or "
                             "int: {} - {}".format(section, title))
 </s> add             raise ValueError(f"Section does not exist: {section}")
        assert datatype in (str, bool, float, int, list), (
            f"'datatype' must be one of str, bool, float or int: {section} - {title}")
    def add_section(self, title: str, info: str) -> None:
        """ Add a default section to config file

        Parameters
        ----------
        title: str
            The title for the section
        info: str
            The helptext for the section
        """
          retval = os.path.join(os.path.dirname(folder), "config", "{}.ini".format(fname))
          logger.debug("Config File location: '%s'", retval)
          return retval
  
    def add_section(self, title: str, info: str) -> None:
        """ Add a default section to config file

        Parameters
        ----------
        title: str
            The title for the section
        info: str
            The helptext for the section
        """
    def add_section(self, title: str, info: str) -> None:
        """ Add a default section to config file

        Parameters
        ----------
        title: str
            The title for the section
        info: str
            The helptext for the section
        """
          logger.debug("Add section: (title: '%s', info: '%s')", title, info)
          if None in (title, info):
              raise ValueError("Default config sections must have a title and "
                               "information text")
          self.defaults[title] = OrderedDict()
keep keep keep keep replace replace keep keep keep keep keep
 Preview - Allow mask color/opacity configuration
  - typing: lib.config
  - docs: lib.config
  - bugfix: popup_configure - keep assets on top 
lib/config.py