507d9531730d61eba680fcc3879b4457cb22e880
[mdis.git] / src / mdis / walker.py
1 from . import core as _core
2 from . import dispatcher as _dispatcher
3
4
5 class WalkerMeta(_dispatcher.DispatcherMeta):
6 pass
7
8
9 class Walker(_dispatcher.Dispatcher, metaclass=WalkerMeta):
10 @_core.hook(tuple, list, set, frozenset)
11 def dispatch_sequence(self, instance):
12 for item in instance:
13 yield item
14 yield from self(item)
15
16 @_core.hook(dict)
17 def dispatch_mapping(self, instance):
18 for (key, value) in instance.items():
19 yield (key, value)
20 yield from self((key, value))
21
22 @_core.hook(object)
23 def dispatch_object(self, instance):
24 yield from ()