Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1import logging
2
3class Spy:
4 def __init__(self, obj, func_name):
5 self.obj = obj
6 self.__name__ = func_name
7 self.func_original = getattr(self.obj, func_name)
8 self.calls = []
9
10 def __enter__(self, *args, **kwargs):
11 logging.debug("Spy started")
12 def loggedFunc(cls, *args, **kwargs):
13 call = dict(enumerate(args, 1))
14 call[0] = cls
15 call.update(kwargs)
16 logging.debug("Spy call: %s" % call)
17 self.calls.append(call)
18 return self.func_original(cls, *args, **kwargs)
19 setattr(self.obj, self.__name__, loggedFunc)
20 return self.calls
21
22 def __exit__(self, *args, **kwargs):
23 setattr(self.obj, self.__name__, self.func_original)