Skip to content

Commit

Permalink
bpo-38304: PyConfig_InitPythonConfig() cannot fail anymore (GH-16509)
Browse files Browse the repository at this point in the history
PyConfig_InitPythonConfig() and PyConfig_InitIsolatedConfig() no
longer return PyStatus: they cannot fail anymore.
  • Loading branch information
vstinner committed Oct 1, 2019
1 parent 3c30a76 commit 8462a49
Show file tree
Hide file tree
Showing 12 changed files with 56 additions and 216 deletions.
35 changes: 10 additions & 25 deletions Doc/c-api/init_config.rst
Original file line number Diff line number Diff line change
Expand Up @@ -343,12 +343,12 @@ PyConfig
Structure methods:
.. c:function:: PyStatus PyConfig_InitPythonConfig(PyConfig *config)
.. c:function:: void PyConfig_InitPythonConfig(PyConfig *config)
Initialize configuration with :ref:`Python Configuration
<init-python-config>`.
.. c:function:: PyStatus PyConfig_InitIsolatedConfig(PyConfig *config)
.. c:function:: void PyConfig_InitIsolatedConfig(PyConfig *config)
Initialize configuration with :ref:`Isolated Configuration
<init-isolated-conf>`.
Expand Down Expand Up @@ -724,12 +724,9 @@ Example setting the program name::
void init_python(void)
{
PyStatus status;
PyConfig config;
status = PyConfig_InitPythonConfig(&config);
if (PyStatus_Exception(status)) {
goto fail;
}
PyConfig config;
PyConfig_InitPythonConfig(&config);
/* Set the program name. Implicitly preinitialize Python. */
status = PyConfig_SetString(&config, &config.program_name,
Expand All @@ -756,12 +753,9 @@ configuration, and then override some parameters::
PyStatus init_python(const char *program_name)
{
PyStatus status;
PyConfig config;
status = PyConfig_InitPythonConfig(&config);
if (PyStatus_Exception(status)) {
goto done;
}
PyConfig config;
PyConfig_InitPythonConfig(&config);
/* Set the program name before reading the configuraton
(decode byte string from the locale encoding).
Expand Down Expand Up @@ -843,13 +837,9 @@ Example of customized Python always running in isolated mode::
int main(int argc, char **argv)
{
PyStatus status;
PyConfig config;
status = PyConfig_InitPythonConfig(&config);
if (PyStatus_Exception(status)) {
goto fail;
}
PyConfig config;
PyConfig_InitPythonConfig(&config);
config.isolated = 1;
/* Decode command line arguments.
Expand Down Expand Up @@ -1034,14 +1024,9 @@ phases::
void init_python(void)
{
PyStatus status;
PyConfig config;
status = PyConfig_InitPythonConfig(&config);
if (PyStatus_Exception(status)) {
PyConfig_Clear(&config);
Py_ExitStatusException(status);
}
PyConfig config;
PyConfig_InitPythonConfig(&config);
config._init_main = 0;
/* ... customize 'config' configuration ... */
Expand Down
4 changes: 2 additions & 2 deletions Include/cpython/initconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,8 @@ typedef struct {
int _init_main;
} PyConfig;

PyAPI_FUNC(PyStatus) PyConfig_InitPythonConfig(PyConfig *config);
PyAPI_FUNC(PyStatus) PyConfig_InitIsolatedConfig(PyConfig *config);
PyAPI_FUNC(void) PyConfig_InitPythonConfig(PyConfig *config);
PyAPI_FUNC(void) PyConfig_InitIsolatedConfig(PyConfig *config);
PyAPI_FUNC(void) PyConfig_Clear(PyConfig *);
PyAPI_FUNC(PyStatus) PyConfig_SetString(
PyConfig *config,
Expand Down
2 changes: 1 addition & 1 deletion Include/internal/pycore_initconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ typedef enum {
_PyConfig_INIT_ISOLATED = 3
} _PyConfigInitEnum;

PyAPI_FUNC(PyStatus) _PyConfig_InitCompatConfig(PyConfig *config);
PyAPI_FUNC(void) _PyConfig_InitCompatConfig(PyConfig *config);
extern PyStatus _PyConfig_Copy(
PyConfig *config,
const PyConfig *config2);
Expand Down
6 changes: 1 addition & 5 deletions Modules/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,7 @@ pymain_init(const _PyArgv *args)
}

PyConfig config;

status = PyConfig_InitPythonConfig(&config);
if (_PyStatus_EXCEPTION(status)) {
goto done;
}
PyConfig_InitPythonConfig(&config);

/* pass NULL as the config: config is read from command line arguments,
environment variables, configuration files */
Expand Down
5 changes: 1 addition & 4 deletions PC/python_uwp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,7 @@ wmain(int argc, wchar_t **argv)
}
}

status = PyConfig_InitPythonConfig(&config);
if (PyStatus_Exception(status)) {
goto fail_without_config;
}
PyConfig_InitPythonConfig(&config);

status = PyConfig_SetArgv(&config, argc, argv);
if (PyStatus_Exception(status)) {
Expand Down
9 changes: 2 additions & 7 deletions Programs/_freeze_importlib.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,12 @@ main(int argc, char *argv[])
}
text[text_size] = '\0';

PyStatus status;
PyConfig config;

status = PyConfig_InitIsolatedConfig(&config);
if (PyStatus_Exception(status)) {
PyConfig_Clear(&config);
Py_ExitStatusException(status);
}
PyConfig_InitIsolatedConfig(&config);

config.site_import = 0;

PyStatus status;
status = PyConfig_SetString(&config, &config.program_name,
L"./_freeze_importlib");
if (PyStatus_Exception(status)) {
Expand Down
Loading

0 comments on commit 8462a49

Please sign in to comment.