def merge_dicts(*dicts: dict, **kwargs: dict):
    """
    Merge dicts and assert their keys do not overlap.

    Parameters
    ----------
    dicts : dict
        Arbitrary number of dicts
    kwargs : dict
        Dict with keyword args for

    Returns
    -------
    dict
        Merged dict
    """
    for mappable in dicts:
        if set(mappable) & set(kwargs):
            raise ValueError('Found duplicate keys in merge: {}'.format(set
                (mappable) & set(kwargs)))
        kwargs.update(mappable)
    return kwargs
