From 4631da1242fc96002a3c0462a87d087e567368aa Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 2 May 2019 15:30:21 -0400 Subject: [PATCH] bpo-36763: Remove _PyCoreConfig._init_main (GH-13066) --- Include/cpython/coreconfig.h | 6 +----- Lib/test/test_embed.py | 13 ++++++++----- Programs/_freeze_importlib.c | 1 - Programs/_testembed.c | 5 ----- Python/coreconfig.c | 2 -- Python/pylifecycle.c | 2 +- 6 files changed, 10 insertions(+), 19 deletions(-) diff --git a/Include/cpython/coreconfig.h b/Include/cpython/coreconfig.h index 5672080b784..47a6baa1118 100644 --- a/Include/cpython/coreconfig.h +++ b/Include/cpython/coreconfig.h @@ -391,9 +391,6 @@ typedef struct { If set to -1 (default), inherit Py_FrozenFlag value. */ int _frozen; - /* If non-zero, use "main" Python initialization */ - int _init_main; - } _PyCoreConfig; #ifdef MS_WINDOWS @@ -428,8 +425,7 @@ typedef struct { .buffered_stdio = -1, \ ._install_importlib = 1, \ .check_hash_pycs_mode = NULL, \ - ._frozen = -1, \ - ._init_main = 1} + ._frozen = -1} /* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */ #ifdef __cplusplus diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index fb0051957aa..fdf5793789d 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -348,7 +348,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): '_install_importlib': 1, 'check_hash_pycs_mode': 'default', '_frozen': 0, - '_init_main': 1, } if MS_WINDOWS: DEFAULT_PRE_CONFIG.update({ @@ -443,7 +442,10 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): raise Exception(f"failed to get the default config: " f"stdout={proc.stdout!r} stderr={proc.stderr!r}") stdout = proc.stdout.decode('utf-8') - config = json.loads(stdout) + try: + config = json.loads(stdout) + except json.JSONDecodeError: + self.fail(f"fail to decode stdout: {stdout!r}") for key, value in expected.items(): if value is self.GET_DEFAULT_CONFIG: @@ -496,7 +498,10 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): out, err = self.run_embedded_interpreter(testname, env=env) # Ignore err - config = json.loads(out) + try: + config = json.loads(out) + except json.JSONDecodeError: + self.fail(f"fail to decode stdout: {out!r}") expected_preconfig = dict(self.DEFAULT_PRE_CONFIG, **expected_preconfig) expected_config = self.get_expected_config(expected_config, env) @@ -533,7 +538,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): 'filesystem_encoding': 'utf-8', 'filesystem_errors': self.UTF8_MODE_ERRORS, 'user_site_directory': 0, - '_frozen': 1, } self.check_config("init_global_config", config, preconfig) @@ -578,7 +582,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): 'faulthandler': 1, 'check_hash_pycs_mode': 'always', - '_frozen': 1, } self.check_config("init_from_config", config, preconfig) diff --git a/Programs/_freeze_importlib.c b/Programs/_freeze_importlib.c index 6f77e86a9e6..0818012d8c5 100644 --- a/Programs/_freeze_importlib.c +++ b/Programs/_freeze_importlib.c @@ -84,7 +84,6 @@ main(int argc, char *argv[]) /* Don't install importlib, since it could execute outdated bytecode. */ config._install_importlib = 0; config._frozen = 1; - config._init_main = 0; _PyInitError err = _Py_InitializeFromConfig(&config); /* No need to call _PyCoreConfig_Clear() since we didn't allocate any diff --git a/Programs/_testembed.c b/Programs/_testembed.c index 2cadf82cb17..b12594799bf 100644 --- a/Programs/_testembed.c +++ b/Programs/_testembed.c @@ -354,8 +354,6 @@ static int test_init_global_config(void) putenv("PYTHONUNBUFFERED="); Py_UnbufferedStdioFlag = 1; - Py_FrozenFlag = 1; - /* FIXME: test Py_LegacyWindowsFSEncodingFlag */ /* FIXME: test Py_LegacyWindowsStdioFlag */ @@ -497,9 +495,6 @@ static int test_init_from_config(void) config.check_hash_pycs_mode = L"always"; - Py_FrozenFlag = 0; - config._frozen = 1; - err = _Py_InitializeFromConfig(&config); if (_Py_INIT_FAILED(err)) { _Py_ExitInitError(err); diff --git a/Python/coreconfig.c b/Python/coreconfig.c index 52026949e20..ac01712127a 100644 --- a/Python/coreconfig.c +++ b/Python/coreconfig.c @@ -667,7 +667,6 @@ _PyCoreConfig_Copy(_PyCoreConfig *config, const _PyCoreConfig *config2) COPY_WSTR_ATTR(run_filename); COPY_WSTR_ATTR(check_hash_pycs_mode); COPY_ATTR(_frozen); - COPY_ATTR(_init_main); #undef COPY_ATTR #undef COPY_WSTR_ATTR @@ -766,7 +765,6 @@ _PyCoreConfig_AsDict(const _PyCoreConfig *config) SET_ITEM_INT(_install_importlib); SET_ITEM_WSTR(check_hash_pycs_mode); SET_ITEM_INT(_frozen); - SET_ITEM_INT(_init_main); return dict; diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 2ba43b99cf3..bd4d1d92662 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -988,7 +988,7 @@ init_python(const _PyCoreConfig *config, const _PyArgv *args) } config = &interp->core_config; - if (config->_init_main) { + if (!config->_frozen) { err = _Py_InitializeMainInterpreter(runtime, interp); if (_Py_INIT_FAILED(err)) { return err;