The default `mdis.Walker` already incorporates the logic to walk over some builtin Python objects.
The example below shows how to override the way the dicts are traversed so that keys and values are swapped.
- import mdis.core
+ import mdis.dispatcher
import mdis.walker
class CustomWalker(mdis.walker.Walker):
- @mdis.core.hook(dict)
+ @mdis.dispatcher.hook(dict)
def dispatch_dict(self, instance):
for (key, value) in instance.items():
yield (value, key)
import contextlib
- import mdis.core
+ import mdis.dispatcher
import mdis.visitor
class CustomVisitor(mdis.visitor.Visitor):
- @mdis.core.hook(int)
+ @mdis.dispatcher.hook(int)
@contextlib.contextmanager
def dispatch_int(self, instance):
print("entering int")
yield (instance + 42)
print("leaving int")
- @mdis.core.hook(str)
+ @mdis.dispatcher.hook(str)
@contextlib.contextmanager
def dispatch_str(self, instance):
print("entering str")
yield f"!!!{instance}!!!"
print("leaving str")
- @mdis.core.hook(object)
+ @mdis.dispatcher.hook(object)
@contextlib.contextmanager
def dispatch_object(self, instance):
print("entering object")