(root)/
Python-3.12.0/
Lib/
idlelib/
debugobj_r.py
       1  from idlelib import rpc
       2  
       3  def remote_object_tree_item(item):
       4      wrapper = WrappedObjectTreeItem(item)
       5      oid = id(wrapper)
       6      rpc.objecttable[oid] = wrapper
       7      return oid
       8  
       9  class ESC[4;38;5;81mWrappedObjectTreeItem:
      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):
      20          sub_list = self.__item._GetSubList()
      21          return list(map(remote_object_tree_item, sub_list))
      22  
      23  class ESC[4;38;5;81mStubObjectTreeItem:
      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):
      35          sub_list = self.sockio.remotecall(self.oid, "_GetSubList", (), {})
      36          return [StubObjectTreeItem(self.sockio, oid) for oid in sub_list]
      37  
      38  
      39  if __name__ == '__main__':
      40      from unittest import main
      41      main('idlelib.idle_test.test_debugobj_r', verbosity=2)