[Idle-dev] CVS: idle run.py,1.4,1.5 ScriptBinding.py,1.6,1.7

Kurt B. Kaiser kbk@users.sourceforge.net
Sat, 27 Jul 2002 20:35:33 -0700


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

Modified Files:
	run.py ScriptBinding.py 
Log Message:
Reset the Python execution server environment to its initial value prior
to executing Run/F5 from an EditorWindow.

M ScriptBinding.py : add call to clear_the_environment()
M run.py           : implemented Executive.clear_the_environment()


Index: run.py
===================================================================
RCS file: /cvsroot/idlefork/idle/run.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** run.py	26 Jul 2002 00:06:42 -0000	1.4
--- run.py	28 Jul 2002 03:35:31 -0000	1.5
***************
*** 2,5 ****
--- 2,6 ----
  import time
  import socket
+ import __main__
  import rpc
  
***************
*** 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):
--- 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):

Index: ScriptBinding.py
===================================================================
RCS file: /cvsroot/idlefork/idle/ScriptBinding.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** ScriptBinding.py	12 Jun 2002 03:28:57 -0000	1.6
--- ScriptBinding.py	28 Jul 2002 03:35:31 -0000	1.7
***************
*** 145,152 ****
          if not filename:
              return
- 
          flist = self.editwin.flist
          shell = flist.open_shell()
          interp = shell.interp
          # XXX Too often this discards arguments the user just set...
          interp.runcommand("""if 1:
--- 145,153 ----
          if not filename:
              return
          flist = self.editwin.flist
          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:
***************
*** 156,159 ****
--- 157,161 ----
              if (not _sys.argv or
                  _basename(_sys.argv[0]) != _basename(_filename)):
+                 # XXX 25 July 2002 KBK should this be sys.argv not _sys.argv?
                  _sys.argv = [_filename]
              del _filename, _sys, _basename