code: def load_config(filename, config_dir=None, copy_default_config=True):
      
      if not config_dir:
          config_file = os.path.join(get_default_config_path(), filename)
      else:
          config_file = os.path.join(config_dir, filename)
  
          # config file does not exist -> copy default
          if not os.path.isfile(config_file):
              if copy_default_config:
                  logger.info('Config file {} not found, I will create a '
                              'default version'.format(config_file))
                  make_directory(config_dir)
                  shutil.copy(os.path.join(package_path, 'config', filename.
                                           replace('.cfg', '_default.cfg')),
                              config_file)
              else:
                  message = 'Config file {} not found.'.format(config_file)
                  logger.error(message)
                  raise FileNotFoundError(message)
  
      if len(cfg.read(config_file)) == 0:
          message = 'Config file {} not found or empty.'.format(config_file)
          logger.error(message)
          raise FileNotFoundError(message)
      global _loaded
      _loaded = True
docs: Loads the specified config file.
  
      Parameters
      -----------
      filename : :obj:`str`
          Config file name, e.g. 'config_grid.cfg'.
      config_dir : :obj:`str`, optional
          Path to config file. If None uses default edisgo config directory
          specified in config file 'config_system.cfg' in section 'user_dirs'
          by subsections 'root_dir' and 'config_dir'. Default: None.
      copy_default_config : Boolean
          If True copies a default config file into `config_dir` if the
          specified config file does not exist. Default: True.