def param_union(*parameterizeds, **kwargs):
    """
    Given a set of Parameterized objects, returns a dictionary
    with the union of all param name,value pairs across them.
    If warn is True (default), warns if the same parameter has
    been given multiple values; otherwise uses the last value
    """
    warn = kwargs.pop('warn', True)
    if len(kwargs):
        raise TypeError(
            "param_union() got an unexpected keyword argument '{}'".format(
                kwargs.popitem()[0]))
    d = dict()
    for o in parameterizeds:
        for k in o.param:
            if k != 'name':
                if k in d and warn:
                    get_logger().warning("overwriting parameter {}".format(k))
                d[k] = getattr(o, k)
    return d
Given a set of Parameterized objects, returns a dictionary
    with the union of all param name,value pairs across them.
    If warn is True (default), warns if the same parameter has
    been given multiple values; otherwise uses the last value