docs: def _iraw_client_configs(cfg):
      """
      Generate (client_name, client_cfg_dict) tuples from the configuration.
  
      Conflates the presets and removes traces of the preset configuration
      so that the returned dict can be used directly on a dyndnsc factory.
  
      :param cfg: ConfigParser
      """
      client_names = cfg.get("dyndnsc", "configs").split(",")
      _preset_prefix = "preset:"
      _use_preset = "use_preset"
      for client_name in (x.strip() for x in client_names if x.strip()):
          client_cfg_dict = dict(cfg.items(client_name))
          if cfg.has_option(client_name, _use_preset):
              prf = dict(
                  cfg.items(_preset_prefix + cfg.get(client_name, _use_preset)))
              prf.update(client_cfg_dict)
              client_cfg_dict = prf
          else:
              # raw config with NO preset in use, so no updating of dict
              pass
          logging.debug("raw config for '%s': %r", client_name, client_cfg_dict)
          if _use_preset in client_cfg_dict:
              del client_cfg_dict[_use_preset]
          yield client_name, client_cfg_dict