Source code for caspia.reactive.utils

# pylint: disable=protected-access


[docs]def extension_method(base, name=None, decorator=None, instancemethod=False, alias=None): def inner(func): func_names = [name or func.__name__] if alias: aliases = alias if isinstance(alias, list) else [alias] func_names += aliases func = decorator(func) if decorator else func for func_name in func_names: if instancemethod: if hasattr(base, "_methods"): base._methods.append((func_name, func)) else: base._methods = [(func_name, func)] else: setattr(base, func_name, func) return func return inner
[docs]def extension_classmethod(base, name=None, alias=None): return extension_method(base=base, name=name, decorator=classmethod, alias=alias)