cpython/Lib/idlelib/RemoteObjectBrowser.py
Brian Curtin 8ce0fac6c8 Merged revisions 88258 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r88258 | georg.brandl | 2011-01-30 02:16:07 -0600 (Sun, 30 Jan 2011) | 3 lines

  #11069: fix the IDLE Stack Viewer, by not using "list" as a variable name.
  Original patch by Brian Curtin, reviewed by me.
........
2011-01-30 19:40:09 +00:00

37 lines
964 B
Python

from idlelib import rpc
def remote_object_tree_item(item):
wrapper = WrappedObjectTreeItem(item)
oid = id(wrapper)
rpc.objecttable[oid] = wrapper
return oid
class WrappedObjectTreeItem:
# Lives in PYTHON subprocess
def __init__(self, item):
self.__item = item
def __getattr__(self, name):
value = getattr(self.__item, name)
return value
def _GetSubList(self):
sub_list = self.__item._GetSubList()
return list(map(remote_object_tree_item, sub_list))
class StubObjectTreeItem:
# Lives in IDLE process
def __init__(self, sockio, oid):
self.sockio = sockio
self.oid = oid
def __getattr__(self, name):
value = rpc.MethodProxy(self.sockio, self.oid, name)
return value
def _GetSubList(self):
sub_list = self.sockio.remotecall(self.oid, "_GetSubList", (), {})
return [StubObjectTreeItem(self.sockio, oid) for oid in sub_list]