[Idle-dev] CVS: idle ScriptBinding.py,1.7,1.8 rpc.py,1.6,1.7 run.py,1.6,1.7

Kurt B. Kaiser kbk@users.sourceforge.net
Sun, 25 Aug 2002 07:08:09 -0700


Update of /cvsroot/idlefork/idle
In directory usw-pr-cvs1:/tmp/cvs-serv25166

Modified Files:
	ScriptBinding.py rpc.py run.py 
Log Message:
1. Revert subprocess environment clearing, will restart subprocess 
   instead.
2. Preserve the Idle client's listening socket for reuse with the 
   fresh subprocess.
3. Remove some unused rpc code, comment out additional unused code.

Modified Files:
ScriptBinding.py rpc.py run.py 


Index: ScriptBinding.py
===================================================================
RCS file: /cvsroot/idlefork/idle/ScriptBinding.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** ScriptBinding.py	28 Jul 2002 03:35:31 -0000	1.7
--- ScriptBinding.py	25 Aug 2002 14:08:07 -0000	1.8
***************
*** 148,153 ****
          shell = flist.open_shell()
          interp = shell.interp
-         # clear the subprocess environment before every Run/F5 invocation
-         interp.rpcclt.remotecall("exec", "clear_the_environment", (), {})
          # XXX Too often this discards arguments the user just set...
          interp.runcommand("""if 1:
--- 148,151 ----

Index: rpc.py
===================================================================
RCS file: /cvsroot/idlefork/idle/rpc.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** rpc.py	24 Aug 2002 23:57:17 -0000	1.6
--- rpc.py	25 Aug 2002 14:08:07 -0000	1.7
***************
*** 50,62 ****
      return unpickle_code, (ms,)
  
! def unpickle_function(ms):
!     return ms
! 
! def pickle_function(fn):
!     assert isinstance(fn, type.FunctionType)
!     return `fn`
   
  copy_reg.pickle(types.CodeType, pickle_code, unpickle_code)
! copy_reg.pickle(types.FunctionType, pickle_function, unpickle_function)
  
  BUFSIZE = 8*1024
--- 50,63 ----
      return unpickle_code, (ms,)
  
! # XXX KBK 24Aug02 function pickling capability not used in Idle
! #  def unpickle_function(ms):
! #      return ms
! 
! #  def pickle_function(fn):
! #      assert isinstance(fn, type.FunctionType)
! #      return `fn`
   
  copy_reg.pickle(types.CodeType, pickle_code, unpickle_code)
! # copy_reg.pickle(types.FunctionType, pickle_function, unpickle_function)
  
  BUFSIZE = 8*1024
***************
*** 67,72 ****
          if handlerclass is None:
              handlerclass = RPCHandler
- # XXX KBK 25Jun02 Not used in Idlefork.
- #        self.objtable = objecttable 
          SocketServer.TCPServer.__init__(self, addr, handlerclass)
  
--- 68,71 ----
***************
*** 87,102 ****
          "Override TCPServer method, return already connected socket"
          return self.socket, self.server_address
-         
- 
- # XXX The following two methods are not currently used in Idlefork.
- #      def register(self, oid, object):
- #          self.objtable[oid] = object
- 
- #      def unregister(self, oid):
- #          try:
- #              del self.objtable[oid]
- #          except KeyError:
- #              pass
- 
  
  objecttable = {}
--- 86,89 ----
***************
*** 406,419 ****
  
      def __init__(self, address, family=socket.AF_INET, type=socket.SOCK_STREAM):
!         self.sock = socket.socket(family, type)
!         self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
!         self.sock.bind(address)
!         self.sock.listen(1)
  
      def accept(self):
!         newsock, address = self.sock.accept()
          if address[0] == '127.0.0.1':
              print>>sys.__stderr__, "Idle accepted connection from ", address
!             SocketIO.__init__(self, newsock)
          else:
              print>>sys.__stderr__, "Invalid host: ", address
--- 393,407 ----
  
      def __init__(self, address, family=socket.AF_INET, type=socket.SOCK_STREAM):
!         self.listening_sock = socket.socket(family, type)
!         self.listening_sock.setsockopt(socket.SOL_SOCKET,
!                                        socket.SO_REUSEADDR, 1)
!         self.listening_sock.bind(address)
!         self.listening_sock.listen(1)
  
      def accept(self):
!         working_sock, address = self.listening_sock.accept()
          if address[0] == '127.0.0.1':
              print>>sys.__stderr__, "Idle accepted connection from ", address
!             SocketIO.__init__(self, working_sock)
          else:
              print>>sys.__stderr__, "Invalid host: ", address

Index: run.py
===================================================================
RCS file: /cvsroot/idlefork/idle/run.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** run.py	5 Aug 2002 03:52:10 -0000	1.6
--- run.py	25 Aug 2002 14:08:07 -0000	1.7
***************
*** 2,6 ****
  import time
  import socket
- import __main__
  import rpc
  
--- 2,5 ----
***************
*** 57,72 ****
      def __init__(self, rpchandler):
          self.rpchandler = rpchandler
!         self.base_env_keys = __main__.__dict__.keys()
  
      def runcode(self, code):
!        exec code in __main__.__dict__
!         
!     def clear_the_environment(self):
!         global __main__
!         env = __main__.__dict__
!         for key in env.keys():
!             if key not in self.base_env_keys:
!                 del env[key]
!         env['__doc__'] = None
  
      def start_the_debugger(self, gui_adap_oid):
--- 56,64 ----
      def __init__(self, rpchandler):
          self.rpchandler = rpchandler
!         import __main__
!         self.locals = __main__.__dict__
  
      def runcode(self, code):
!         exec code in self.locals
  
      def start_the_debugger(self, gui_adap_oid):