def copy_attributes(source, destination, ignore=[], srckeys=None):
    """Copy properties from `source` to `destination`

    :param module source: source module
    :param dict destination: destination dict
    :param list ignore: list of properties that should not be copied
    :param list srckeys: list of keys to copy, if the source's __all__ is untrustworthy
    """
    if srckeys is None:
        srckeys = source.__all__

    d = {name: getattr(source, name) for name in srckeys
         if not (name.startswith('__') or name in ignore)}
    destination.update(d)
dataset/ETHPy150Open veegee/guv/guv/patcher.py/copy_attributes/original