mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
bpo-36763: Implement the PEP 587 (GH-13592)
* Add a whole new documentation page: "Python Initialization Configuration" * PyWideStringList_Append() return type is now PyStatus, instead of int * PyInterpreterState_New() now calls PyConfig_Clear() if PyConfig_InitPythonConfig() fails. * Rename files: * Python/coreconfig.c => Python/initconfig.c * Include/cpython/coreconfig.h => Include/cpython/initconfig.h * Include/internal/: pycore_coreconfig.h => pycore_initconfig.h * Rename structures * _PyCoreConfig => PyConfig * _PyPreConfig => PyPreConfig * _PyInitError => PyStatus * _PyWstrList => PyWideStringList * Rename PyConfig fields: * use_module_search_paths => module_search_paths_set * module_search_path_env => pythonpath_env * Rename PyStatus field: _func => func * PyInterpreterState: rename core_config field to config * Rename macros and functions: * _PyCoreConfig_SetArgv() => PyConfig_SetBytesArgv() * _PyCoreConfig_SetWideArgv() => PyConfig_SetArgv() * _PyCoreConfig_DecodeLocale() => PyConfig_SetBytesString() * _PyInitError_Failed() => PyStatus_Exception() * _Py_INIT_ERROR_TYPE_xxx enums => _PyStatus_TYPE_xxx * _Py_UnixMain() => Py_BytesMain() * _Py_ExitInitError() => Py_ExitStatusException() * _Py_PreInitializeFromArgs() => Py_PreInitializeFromBytesArgs() * _Py_PreInitializeFromWideArgs() => Py_PreInitializeFromArgs() * _Py_PreInitialize() => Py_PreInitialize() * _Py_RunMain() => Py_RunMain() * _Py_InitializeFromConfig() => Py_InitializeFromConfig() * _Py_INIT_XXX() => _PyStatus_XXX() * _Py_INIT_FAILED() => _PyStatus_EXCEPTION() * Rename 'err' PyStatus variables to 'status' * Convert RUN_CODE() macro to config_run_code() static inline function * Remove functions: * _Py_InitializeFromArgs() * _Py_InitializeFromWideArgs() * _PyInterpreterState_GetCoreConfig()
This commit is contained in:
parent
8cd5165ba0
commit
331a6a56e9
50 changed files with 3229 additions and 2165 deletions
|
@ -6,7 +6,7 @@
|
|||
|
||||
#define PY_SSIZE_T_CLEAN
|
||||
#include <Python.h>
|
||||
#include "pycore_coreconfig.h"
|
||||
#include "pycore_initconfig.h"
|
||||
#include "pycore_object.h"
|
||||
#include "pycore_pymem.h"
|
||||
#include "pycore_pystate.h"
|
||||
|
@ -2499,13 +2499,13 @@ SimpleExtendsException(PyExc_Warning, ResourceWarning,
|
|||
#endif
|
||||
#endif /* MS_WINDOWS */
|
||||
|
||||
_PyInitError
|
||||
PyStatus
|
||||
_PyExc_Init(void)
|
||||
{
|
||||
#define PRE_INIT(TYPE) \
|
||||
if (!(_PyExc_ ## TYPE.tp_flags & Py_TPFLAGS_READY)) { \
|
||||
if (PyType_Ready(&_PyExc_ ## TYPE) < 0) { \
|
||||
return _Py_INIT_ERR("exceptions bootstrapping error."); \
|
||||
return _PyStatus_ERR("exceptions bootstrapping error."); \
|
||||
} \
|
||||
Py_INCREF(PyExc_ ## TYPE); \
|
||||
}
|
||||
|
@ -2515,7 +2515,7 @@ _PyExc_Init(void)
|
|||
PyObject *_code = PyLong_FromLong(CODE); \
|
||||
assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
|
||||
if (!_code || PyDict_SetItem(errnomap, _code, PyExc_ ## TYPE)) \
|
||||
return _Py_INIT_ERR("errmap insertion problem."); \
|
||||
return _PyStatus_ERR("errmap insertion problem."); \
|
||||
Py_DECREF(_code); \
|
||||
} while (0)
|
||||
|
||||
|
@ -2589,14 +2589,14 @@ _PyExc_Init(void)
|
|||
PRE_INIT(TimeoutError);
|
||||
|
||||
if (preallocate_memerrors() < 0) {
|
||||
return _Py_INIT_ERR("Could not preallocate MemoryError object");
|
||||
return _PyStatus_ERR("Could not preallocate MemoryError object");
|
||||
}
|
||||
|
||||
/* Add exceptions to errnomap */
|
||||
if (!errnomap) {
|
||||
errnomap = PyDict_New();
|
||||
if (!errnomap) {
|
||||
return _Py_INIT_ERR("Cannot allocate map from errnos to OSError subclasses");
|
||||
return _PyStatus_ERR("Cannot allocate map from errnos to OSError subclasses");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2622,7 +2622,7 @@ _PyExc_Init(void)
|
|||
ADD_ERRNO(ProcessLookupError, ESRCH);
|
||||
ADD_ERRNO(TimeoutError, ETIMEDOUT);
|
||||
|
||||
return _Py_INIT_OK();
|
||||
return _PyStatus_OK();
|
||||
|
||||
#undef PRE_INIT
|
||||
#undef ADD_ERRNO
|
||||
|
@ -2630,12 +2630,12 @@ _PyExc_Init(void)
|
|||
|
||||
|
||||
/* Add exception types to the builtins module */
|
||||
_PyInitError
|
||||
PyStatus
|
||||
_PyBuiltins_AddExceptions(PyObject *bltinmod)
|
||||
{
|
||||
#define POST_INIT(TYPE) \
|
||||
if (PyDict_SetItemString(bdict, # TYPE, PyExc_ ## TYPE)) { \
|
||||
return _Py_INIT_ERR("Module dictionary insertion problem."); \
|
||||
return _PyStatus_ERR("Module dictionary insertion problem."); \
|
||||
}
|
||||
|
||||
#define INIT_ALIAS(NAME, TYPE) \
|
||||
|
@ -2644,7 +2644,7 @@ _PyBuiltins_AddExceptions(PyObject *bltinmod)
|
|||
Py_XDECREF(PyExc_ ## NAME); \
|
||||
PyExc_ ## NAME = PyExc_ ## TYPE; \
|
||||
if (PyDict_SetItemString(bdict, # NAME, PyExc_ ## NAME)) { \
|
||||
return _Py_INIT_ERR("Module dictionary insertion problem."); \
|
||||
return _PyStatus_ERR("Module dictionary insertion problem."); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -2652,7 +2652,7 @@ _PyBuiltins_AddExceptions(PyObject *bltinmod)
|
|||
|
||||
bdict = PyModule_GetDict(bltinmod);
|
||||
if (bdict == NULL) {
|
||||
return _Py_INIT_ERR("exceptions bootstrapping error.");
|
||||
return _PyStatus_ERR("exceptions bootstrapping error.");
|
||||
}
|
||||
|
||||
POST_INIT(BaseException);
|
||||
|
@ -2729,7 +2729,7 @@ _PyBuiltins_AddExceptions(PyObject *bltinmod)
|
|||
POST_INIT(ProcessLookupError);
|
||||
POST_INIT(TimeoutError);
|
||||
|
||||
return _Py_INIT_OK();
|
||||
return _PyStatus_OK();
|
||||
|
||||
#undef POST_INIT
|
||||
#undef INIT_ALIAS
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue