[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