changeset: 103887:b0350f351752 branch: 3.6 parent: 103882:5a824da8c504 user: Steve Dower date: Sat Sep 17 12:22:41 2016 -0700 files: Lib/site.py Lib/test/test_site.py Modules/main.c description: Issue #28192: Don't import readline in isolated mode diff -r 5a824da8c504 -r b0350f351752 Lib/site.py --- a/Lib/site.py Sat Sep 17 16:21:42 2016 +0300 +++ b/Lib/site.py Sat Sep 17 12:22:41 2016 -0700 @@ -60,7 +60,8 @@ The readline module is also automatically configured to enable completion for systems that support it. This can be overridden in -sitecustomize, usercustomize or PYTHONSTARTUP. +sitecustomize, usercustomize or PYTHONSTARTUP. Starting Python in +isolated mode (-I) disables automatic readline configuration. After these operations, an attempt is made to import a module named sitecustomize, which can perform arbitrary additional @@ -491,7 +492,7 @@ else: raise except Exception as err: - if os.environ.get("PYTHONVERBOSE"): + if sys.flags.verbose: sys.excepthook(*sys.exc_info()) else: sys.stderr.write( @@ -511,7 +512,7 @@ else: raise except Exception as err: - if os.environ.get("PYTHONVERBOSE"): + if sys.flags.verbose: sys.excepthook(*sys.exc_info()) else: sys.stderr.write( @@ -538,12 +539,13 @@ setquit() setcopyright() sethelper() - enablerlcompleter() + if not sys.flags.isolated: + enablerlcompleter() execsitecustomize() if ENABLE_USER_SITE: execusercustomize() -# Prevent edition of sys.path when python was started with -S and +# Prevent extending of sys.path when python was started with -S and # site is imported later. if not sys.flags.no_site: main() diff -r 5a824da8c504 -r b0350f351752 Lib/test/test_site.py --- a/Lib/test/test_site.py Sat Sep 17 16:21:42 2016 +0300 +++ b/Lib/test/test_site.py Sat Sep 17 12:22:41 2016 -0700 @@ -140,8 +140,6 @@ self.assertRegex(err_out.getvalue(), 'Traceback') self.assertRegex(err_out.getvalue(), 'ModuleNotFoundError') - @unittest.skipIf(sys.platform == "win32", "Windows does not raise an " - "error for file paths containing null characters") def test_addpackage_import_bad_pth_file(self): # Issue 5258 pth_dir, pth_fn = self.make_pth("abc\x00def\n") @@ -447,10 +445,9 @@ popen = subprocess.Popen([sys.executable, '-I', '-v', '-c', 'import sys; print(set(sys.modules))'], stdout=subprocess.PIPE, - stderr=subprocess.PIPE) + stderr=subprocess.PIPE, + encoding='utf-8') stdout, stderr = popen.communicate() - stdout = stdout.decode('utf-8') - stderr = stderr.decode('utf-8') modules = eval(stdout) self.assertIn('site', modules) @@ -474,6 +471,5 @@ if sys.platform != 'darwin': self.assertFalse(modules.intersection(collection_mods), stderr) - if __name__ == "__main__": unittest.main() diff -r 5a824da8c504 -r b0350f351752 Modules/main.c --- a/Modules/main.c Sat Sep 17 16:21:42 2016 +0300 +++ b/Modules/main.c Sat Sep 17 12:22:41 2016 -0700 @@ -703,7 +703,8 @@ PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind); if ((Py_InspectFlag || (command == NULL && filename == NULL && module == NULL)) && - isatty(fileno(stdin))) { + isatty(fileno(stdin)) && + !Py_IsolatedFlag) { PyObject *v; v = PyImport_ImportModule("readline"); if (v == NULL)