Source code for sunpy.util.functools

"""
This file defines wrappers and variants of things in the functools standard lib.
"""

import functools

__all__ = ['seconddispatch']


[docs] def seconddispatch(func): """ A variant of `functools.singledispatch` which dispatches on type of the second argument. """ dispatcher = functools.singledispatch(func) def wrapper(*args, **kwargs): return dispatcher.dispatch(args[1].__class__)(*args, **kwargs) wrapper.dispatch = dispatcher.dispatch wrapper.register = dispatcher.register wrapper.registry = dispatcher.registry wrapper._clear_cache = dispatcher._clear_cache functools.update_wrapper(wrapper, func) return wrapper
# Extend the docstring with the original docs seconddispatch.__doc__ += functools.singledispatch.__doc__