from typing import Union, Callable
[docs]class Registration(object):
def __init__(self, registered: Union[type, Callable], *, arguments=None):
self.registered = registered
self.arguments = arguments if arguments is not None else {}
[docs] def is_in_package(self, package_name: str) -> bool:
return self.registered.__module__.startswith(package_name)
[docs] def is_class_registration(self):
return isinstance(self.registered, type)
[docs] def is_function_registration(self):
return (not self.is_class_registration()
and isinstance(self.registered, Callable)
and not self.is_method_registration())
[docs] def is_method_registration(self):
return (not self.is_class_registration() and isinstance(self.registered, Callable)
and self.registered.__code__.co_argcount > 0
and self.registered.__code__.co_varnames[0] == "self")