break
if hook is None:
hook = self.__class__.dispatch()
- return hook(self, node, *args, **kwargs)
+ return hook(self, node)
@Hook(object)
- def dispatch_object(self, node, *_, **__):
+ def dispatch_object(self, node):
raise NotImplementedError()
class Visitor(dispatcher.Dispatcher, metaclass=VisitorMeta):
@dispatcher.Hook(object)
- def dispatch_object(self, node, *_, **__):
+ def dispatch_object(self, node):
return node
class ContextVisitor(Visitor):
@dispatcher.Hook(object)
@contextlib.contextmanager
- def dispatch_object(self, node, *_, **__):
+ def dispatch_object(self, node):
yield node
class Walker(dispatcher.Dispatcher, metaclass=WalkerMeta):
@dispatcher.Hook(tuple, list)
- def dispatch_ordered_sequence(self, node, *_, **__):
+ def dispatch_ordered_sequence(self, node):
for (index, item) in enumerate(node):
- yield (item, node, index, IndexPath)
+ yield index
+ yield item
@dispatcher.Hook(set, frozenset)
- def dispatch_unordered_sequence(self, node, *_, **__):
+ def dispatch_unordered_sequence(self, node):
for item in node:
- yield (item, node, item, HashPath)
+ yield item
@dispatcher.Hook(dataclasses.is_dataclass)
- def dispatch_dataclass(self, node, *_, **__):
+ def dispatch_dataclass(self, node):
for field in dataclasses.fields(node):
key = field.name
value = getattr(node, key)
- yield (value, node, key, AttributePath)
+ yield key
+ yield value
@dispatcher.Hook(dict)
- def dispatch_mapping(self, node, *_, **__):
+ def dispatch_mapping(self, node):
for (key, value) in node.items():
- yield (key, node, key, HashPath)
- yield (value, node, key, IndexPath)
+ yield key
+ yield value
@dispatcher.Hook(object)
- def dispatch_object(self, node, *_, **__):
+ def dispatch_object(self, node):
yield from ()