Source code for tri_declarative.dispatch

import functools

from .namespace import Namespace


[docs]def dispatch(*function, **defaults): def decorator(f): @functools.wraps(f) def dispatch_defaults_wrapper(*args, **kwargs): return f(*args, **Namespace(defaults, kwargs)) dispatch_defaults_wrapper.dispatch = Namespace(defaults) # we store these here so we can inspect them for stuff like documentation return dispatch_defaults_wrapper if function: assert len(function) == 1 return decorator(function[0]) return decorator