[pypy-svn] rev 870 - in pypy/trunk/src/pypy: interpreter tool

mwh at codespeak.net mwh at codespeak.net
Sat Jun 21 18:42:25 CEST 2003


Author: mwh
Date: Sat Jun 21 18:42:25 2003
New Revision: 870

Added:
   pypy/trunk/src/pypy/interpreter/py.py
Modified:
   pypy/trunk/src/pypy/interpreter/interactive.py
   pypy/trunk/src/pypy/interpreter/main.py
   pypy/trunk/src/pypy/tool/option.py   (contents, props changed)
   pypy/trunk/src/pypy/tool/test.py
Log:
the getting-where-you-want-by-flailing approach :-)
more knocking about of command line parsing
add py.py which is far from complete, but works a little bit


Modified: pypy/trunk/src/pypy/interpreter/interactive.py
==============================================================================
--- pypy/trunk/src/pypy/interpreter/interactive.py	(original)
+++ pypy/trunk/src/pypy/interpreter/interactive.py	Sat Jun 21 18:42:25 2003
@@ -72,7 +72,7 @@
     from pypy.tool import option
     from pypy.tool import test
     args = option.process_options(option.get_standard_options(),
-                                  None, option.Options)
-    objspace = test.objspace(option.Options.spaces[-1])
+                                  option.Options)
+    objspace = option.objspace()
     con = PyPyConsole(objspace)
     con.interact()

Modified: pypy/trunk/src/pypy/interpreter/main.py
==============================================================================
--- pypy/trunk/src/pypy/interpreter/main.py	(original)
+++ pypy/trunk/src/pypy/interpreter/main.py	Sat Jun 21 18:42:25 2003
@@ -1,5 +1,5 @@
 import autopath
-from pypy.tool import test
+from pypy.tool import test, option
 from pypy.objspace.std import StdObjSpace
 from pypy.module.builtin import Builtin
 from pypy.interpreter import executioncontext, baseobjspace, pyframe
@@ -39,8 +39,9 @@
     if argv is None:
         argv = sys.argv
 
-    argv = test.process_options(argv[1:])
-    space = test.objspace()
+    argv = option.process_options(option.get_standard_options(),
+                                  option.Options)
+    space = option.objspace()
     try:
         run_file(argv[0], space)
     except baseobjspace.PyPyError, pypyerr:

Added: pypy/trunk/src/pypy/interpreter/py.py
==============================================================================
--- (empty file)
+++ pypy/trunk/src/pypy/interpreter/py.py	Sat Jun 21 18:42:25 2003
@@ -0,0 +1,31 @@
+import autopath
+from pypy.tool import option
+from pypy.tool.optik import make_option
+from pypy.interpreter import main, interactive, baseobjspace
+import sys
+
+class Options(option.Options):
+    interactive = 0
+
+def get_main_options():
+    options = option.get_standard_options()
+    options.append(make_option(
+        '-i', action="store_true", dest="interactive"))
+    return options
+
+def main_(argv=None):
+    args = option.process_options(get_main_options(), Options, argv[1:])
+    space = option.objspace()
+    if args:
+        try:
+            main.run_file(args[0], space)
+        except baseobjspace.PyPyError, pypyerr:
+            pypyerr.operationerr.print_detailed_traceback(pypyerr.space)
+    else:
+        con = interactive.PyPyConsole(space)
+        con.interact()
+        
+        
+
+if __name__ == '__main__':
+    main_(sys.argv)

Modified: pypy/trunk/src/pypy/tool/option.py
==============================================================================
--- pypy/trunk/src/pypy/tool/option.py	(original)
+++ pypy/trunk/src/pypy/tool/option.py	Sat Jun 21 18:42:25 2003
@@ -1,9 +1,9 @@
+import os
 from pypy.tool import optik
 make_option = optik.make_option
 
 class Options:
     verbose = 0
-    spacename = ''
     showwarning = 0
     spaces = []    
 
@@ -28,10 +28,28 @@
 
     return options
 
-def process_options(optionlist, argv=None, v=None):
+def process_options(optionlist, input_options, argv=None):
     op = optik.OptionParser()
     op.add_options(optionlist)
-    options, args = op.parse_args(argv, v)
-    if not options.spaces:
-        options.spaces = ['trivial']
+    options, args = op.parse_args(argv, input_options)
+    if not input_options.spaces:
+        input_options.spaces.append(os.environ.get('OBJSPACE', 'trivial'))
     return args
+
+def objspace(name='', _spacecache={}):
+    """ return singleton ObjSpace instance. 
+
+    this is configured via the environment variable OBJSPACE
+    """
+    name = name or Options.spaces[-1]
+    if name == 'std':
+        from pypy.objspace.std import Space
+    elif name == 'trivial':
+        from pypy.objspace.trivial import Space
+    else:
+        raise ValueError, "no objectspace named %s" % repr(name)
+
+    try:
+        return _spacecache[name]
+    except KeyError:
+        return _spacecache.setdefault(name, Space())

Modified: pypy/trunk/src/pypy/tool/test.py
==============================================================================
--- pypy/trunk/src/pypy/tool/test.py	(original)
+++ pypy/trunk/src/pypy/tool/test.py	Sat Jun 21 18:42:25 2003
@@ -5,6 +5,7 @@
 import pypy.interpreter.unittest_w
 from pypy.tool.optik import make_option
 from pypy.tool import optik, option
+from pypy.tool.option import objspace
 
 IntTestCase = pypy.interpreter.unittest_w.IntTestCase
 AppTestCase = pypy.interpreter.unittest_w.AppTestCase
@@ -190,27 +191,10 @@
                 suite._tests.extend(subsuite._tests)
     return suite
 
-def objspace(name='', _spacecache={}):
-    """ return singleton ObjSpace instance. 
-
-    this is configured via the environment variable OBJSPACE
-    """
-    name = name or Options.spacename or os.environ.get('OBJSPACE', 'trivial')
-    if name == 'std':
-        from pypy.objspace.std import Space
-    elif name == 'trivial':
-        from pypy.objspace.trivial import Space
-    else:
-        raise ValueError, "no objectspace named %s" % repr(name)
-
-    try:
-        return _spacecache[name]
-    except KeyError:
-        return _spacecache.setdefault(name, Space())
-
 class Options(option.Options):
     testreldir = 0
     runcts = 0
+    spacename = ''
 
 class RegexFilterFunc:
     """ stateful function to filter included/excluded strings via
@@ -270,7 +254,7 @@
 def main(root=None):
     """ run this to test everything in the __main__ or
     in the given root-directory (recursive)"""
-    args = option.process_options(get_test_options(), None, Options)
+    args = option.process_options(get_test_options(), Options)
     
     filterfunc = RegexFilterFunc(*args)
     if Options.testreldir:


More information about the Pypy-commit mailing list