Author: mattip <matti.pi...@gmail.com> Branch: pythonoptimize-env Changeset: r77321:3d4d255fcbbb Date: 2015-05-14 23:44 +0300 http://bitbucket.org/pypy/pypy/changeset/3d4d255fcbbb/
Log: test, fix use of PYTHONOPTIMIZE in env, issue #2044 also improve parsing of values in env for PYTHONVERBOSE, PYTHONDEBUG, fwiw diff --git a/pypy/interpreter/app_main.py b/pypy/interpreter/app_main.py --- a/pypy/interpreter/app_main.py +++ b/pypy/interpreter/app_main.py @@ -12,7 +12,7 @@ -i : inspect interactively after running script; forces a prompt even if stdin does not appear to be a terminal; also PYTHONINSPECT=x -m mod : run library module as a script (terminates option list) --O : skip assert statements +-O : skip assert statements; also PYTHONOPTIMIZE=x -OO : remove docstrings when importing modules in addition to -O -R : ignored (see http://bugs.python.org/issue14621) -Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew @@ -413,6 +413,18 @@ return function(options, funcarg, iterargv) +def parse_env(name, key, options): + ''' Modify options inplace if name exists in os.environ + ''' + v = os.getenv(name) + if v: + options[key] = max(1, options[key]) + try: + newval = max(1, int(v)) + options[key] = max(options[key], newval) + except: + pass + def parse_command_line(argv): import os options = default_options.copy() @@ -454,17 +466,15 @@ sys.argv[:] = argv if not options["ignore_environment"]: - if os.getenv('PYTHONDEBUG'): - options["debug"] = 1 + parse_env('PYTHONDEBUG', "debug", options) if os.getenv('PYTHONDONTWRITEBYTECODE'): options["dont_write_bytecode"] = 1 if os.getenv('PYTHONNOUSERSITE'): options["no_user_site"] = 1 if os.getenv('PYTHONUNBUFFERED'): options["unbuffered"] = 1 - if os.getenv('PYTHONVERBOSE'): - options["verbose"] = 1 - + parse_env('PYTHONVERBOSE', "verbose", options) + parse_env('PYTHONOPTIMIZE', "optimize", options) if (options["interactive"] or (not options["ignore_environment"] and os.getenv('PYTHONINSPECT'))): options["inspect"] = 1 diff --git a/pypy/interpreter/test/test_app_main.py b/pypy/interpreter/test/test_app_main.py --- a/pypy/interpreter/test/test_app_main.py +++ b/pypy/interpreter/test/test_app_main.py @@ -167,6 +167,11 @@ self.check([], {'PYTHONNOUSERSITE': '1'}, sys_argv=[''], run_stdin=True, no_user_site=1) self.check([], {'PYTHONUNBUFFERED': '1'}, sys_argv=[''], run_stdin=True, unbuffered=1) self.check([], {'PYTHONVERBOSE': '1'}, sys_argv=[''], run_stdin=True, verbose=1) + self.check([], {'PYTHONOPTIMIZE': '1'}, sys_argv=[''], run_stdin=True, optimize=1) + self.check([], {'PYTHONOPTIMIZE': '0'}, sys_argv=[''], run_stdin=True, optimize=1) + self.check([], {'PYTHONOPTIMIZE': '10'}, sys_argv=[''], run_stdin=True, optimize=10) + self.check(['-O'], {'PYTHONOPTIMIZE': '10'}, sys_argv=[''], run_stdin=True, optimize=10) + self.check(['-OOO'], {'PYTHONOPTIMIZE': 'abc'}, sys_argv=[''], run_stdin=True, optimize=3) def test_sysflags(self): flags = ( _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit