-import collections as _collections
-import inspect as _inspect
-import types as _types
+__all__ = [
+ "Dispatcher",
+ "DispatcherMeta",
+ "Hook",
+]
+
+import collections
+import inspect
+import types
class Hook(object):
ishook = lambda member: isinstance(member, Hook)
for basecls in reversed(bases):
- members = _inspect.getmembers(basecls, predicate=ishook)
+ members = inspect.getmembers(basecls, predicate=ishook)
for (_, hook) in members:
hooks.update(dict.fromkeys(hook, hook))
- conflicts = _collections.defaultdict(list)
+ conflicts = collections.defaultdict(list)
for (key, value) in tuple(ns.items()):
if not ishook(value):
continue
if len(keys) > 1:
raise ValueError(f"dispatch conflict: {keys!r}")
- ns["__hooks__"] = _types.MappingProxyType(hooks)
+ ns["__hooks__"] = types.MappingProxyType(hooks)
return super().__new__(metacls, name, bases, ns)