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