docs: def load_config(self, filename, **options):
          """ Load values from an ``*.ini`` style config file.
  
              A configuration file consists of sections, each led by a
              ``[section]`` header, followed by key/value entries separated by
              either ``=`` or ``:``. Section names and keys are case-insensitive.
              Leading and trailing whitespace is removed from keys and values.
              Values can be omitted, in which case the key/value delimiter may
              also be left out. Values can also span multiple lines, as long as
              they are indented deeper than the first line of the value. Commands
              are prefixed by ``#`` or ``;`` and may only appear on their own on
              an otherwise empty line.
  
              Both section and key names may contain dots (``.``) as namespace
              separators. The actual configuration parameter name is constructed
              by joining section name and key name together and converting to
              lower case.
  
              The special sections ``bottle`` and ``ROOT`` refer to the root
              namespace and the ``DEFAULT`` section defines default values for all
              other sections.
  
              With Python 3, extended string interpolation is enabled.
  
              :param filename: The path of a config file, or a list of paths.
              :param options: All keyword parameters are passed to the underlying
                  :class:`python:configparser.ConfigParser` constructor call.
  
          """
          options.setdefault('allow_no_value', True)
          if py3k:
              options.setdefault('interpolation',
                                 configparser.ExtendedInterpolation())
          conf = configparser.ConfigParser(**options)
          conf.read(filename)
          for section in conf.sections():
              for key in conf.options(section):
                  value = conf.get(section, key)
                  if section not in ['bottle', 'ROOT']:
                      key = section + '.' + key
                  self[key.lower()] = value
          return self