blob: 75e75ebe5acafcdffcff92fd385f6099c864b973 [file] [log] [blame]
Kurt B. Kaiser2d7f6a02007-08-22 23:01:33 +00001from idlelib import rpc
Chui Tey5d2af632002-05-26 13:36:41 +00002
3def remote_object_tree_item(item):
4 wrapper = WrappedObjectTreeItem(item)
5 oid = id(wrapper)
6 rpc.objecttable[oid] = wrapper
7 return oid
8
9class WrappedObjectTreeItem:
10 # Lives in PYTHON subprocess
11
12 def __init__(self, item):
13 self.__item = item
14
15 def __getattr__(self, name):
16 value = getattr(self.__item, name)
17 return value
18
19 def _GetSubList(self):
Georg Brandld163c2c2011-01-30 08:16:07 +000020 sub_list = self.__item._GetSubList()
21 return list(map(remote_object_tree_item, sub_list))
Chui Tey5d2af632002-05-26 13:36:41 +000022
23class StubObjectTreeItem:
24 # Lives in IDLE process
25
26 def __init__(self, sockio, oid):
27 self.sockio = sockio
28 self.oid = oid
29
30 def __getattr__(self, name):
31 value = rpc.MethodProxy(self.sockio, self.oid, name)
32 return value
33
34 def _GetSubList(self):
Georg Brandld163c2c2011-01-30 08:16:07 +000035 sub_list = self.sockio.remotecall(self.oid, "_GetSubList", (), {})
36 return [StubObjectTreeItem(self.sockio, oid) for oid in sub_list]
Terry Jan Reedyee5ef302018-06-15 18:20:55 -040037
38
39if __name__ == '__main__':
40 from unittest import main
41 main('idlelib.idle_test.test_debugobj_r', verbosity=2)