Skip to content

Commit 8462a49

Browse files
authored
bpo-38304: PyConfig_InitPythonConfig() cannot fail anymore (GH-16509)
PyConfig_InitPythonConfig() and PyConfig_InitIsolatedConfig() no longer return PyStatus: they cannot fail anymore.
1 parent 3c30a76 commit 8462a49

File tree

12 files changed

+56
-216
lines changed

12 files changed

+56
-216
lines changed

Doc/c-api/init_config.rst

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -343,12 +343,12 @@ PyConfig
343343
344344
Structure methods:
345345
346-
.. c:function:: PyStatus PyConfig_InitPythonConfig(PyConfig *config)
346+
.. c:function:: void PyConfig_InitPythonConfig(PyConfig *config)
347347
348348
Initialize configuration with :ref:`Python Configuration
349349
<init-python-config>`.
350350
351-
.. c:function:: PyStatus PyConfig_InitIsolatedConfig(PyConfig *config)
351+
.. c:function:: void PyConfig_InitIsolatedConfig(PyConfig *config)
352352
353353
Initialize configuration with :ref:`Isolated Configuration
354354
<init-isolated-conf>`.
@@ -724,12 +724,9 @@ Example setting the program name::
724724
void init_python(void)
725725
{
726726
PyStatus status;
727-
PyConfig config;
728727
729-
status = PyConfig_InitPythonConfig(&config);
730-
if (PyStatus_Exception(status)) {
731-
goto fail;
732-
}
728+
PyConfig config;
729+
PyConfig_InitPythonConfig(&config);
733730
734731
/* Set the program name. Implicitly preinitialize Python. */
735732
status = PyConfig_SetString(&config, &config.program_name,
@@ -756,12 +753,9 @@ configuration, and then override some parameters::
756753
PyStatus init_python(const char *program_name)
757754
{
758755
PyStatus status;
759-
PyConfig config;
760756
761-
status = PyConfig_InitPythonConfig(&config);
762-
if (PyStatus_Exception(status)) {
763-
goto done;
764-
}
757+
PyConfig config;
758+
PyConfig_InitPythonConfig(&config);
765759
766760
/* Set the program name before reading the configuraton
767761
(decode byte string from the locale encoding).
@@ -843,13 +837,9 @@ Example of customized Python always running in isolated mode::
843837
int main(int argc, char **argv)
844838
{
845839
PyStatus status;
846-
PyConfig config;
847-
848-
status = PyConfig_InitPythonConfig(&config);
849-
if (PyStatus_Exception(status)) {
850-
goto fail;
851-
}
852840
841+
PyConfig config;
842+
PyConfig_InitPythonConfig(&config);
853843
config.isolated = 1;
854844
855845
/* Decode command line arguments.
@@ -1034,14 +1024,9 @@ phases::
10341024
void init_python(void)
10351025
{
10361026
PyStatus status;
1037-
PyConfig config;
1038-
1039-
status = PyConfig_InitPythonConfig(&config);
1040-
if (PyStatus_Exception(status)) {
1041-
PyConfig_Clear(&config);
1042-
Py_ExitStatusException(status);
1043-
}
10441027
1028+
PyConfig config;
1029+
PyConfig_InitPythonConfig(&config);
10451030
config._init_main = 0;
10461031
10471032
/* ... customize 'config' configuration ... */

Include/cpython/initconfig.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,8 +404,8 @@ typedef struct {
404404
int _init_main;
405405
} PyConfig;
406406

407-
PyAPI_FUNC(PyStatus) PyConfig_InitPythonConfig(PyConfig *config);
408-
PyAPI_FUNC(PyStatus) PyConfig_InitIsolatedConfig(PyConfig *config);
407+
PyAPI_FUNC(void) PyConfig_InitPythonConfig(PyConfig *config);
408+
PyAPI_FUNC(void) PyConfig_InitIsolatedConfig(PyConfig *config);
409409
PyAPI_FUNC(void) PyConfig_Clear(PyConfig *);
410410
PyAPI_FUNC(PyStatus) PyConfig_SetString(
411411
PyConfig *config,

Include/internal/pycore_initconfig.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ typedef enum {
144144
_PyConfig_INIT_ISOLATED = 3
145145
} _PyConfigInitEnum;
146146

147-
PyAPI_FUNC(PyStatus) _PyConfig_InitCompatConfig(PyConfig *config);
147+
PyAPI_FUNC(void) _PyConfig_InitCompatConfig(PyConfig *config);
148148
extern PyStatus _PyConfig_Copy(
149149
PyConfig *config,
150150
const PyConfig *config2);

Modules/main.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,7 @@ pymain_init(const _PyArgv *args)
6161
}
6262

6363
PyConfig config;
64-
65-
status = PyConfig_InitPythonConfig(&config);
66-
if (_PyStatus_EXCEPTION(status)) {
67-
goto done;
68-
}
64+
PyConfig_InitPythonConfig(&config);
6965

7066
/* pass NULL as the config: config is read from command line arguments,
7167
environment variables, configuration files */

PC/python_uwp.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,7 @@ wmain(int argc, wchar_t **argv)
193193
}
194194
}
195195

196-
status = PyConfig_InitPythonConfig(&config);
197-
if (PyStatus_Exception(status)) {
198-
goto fail_without_config;
199-
}
196+
PyConfig_InitPythonConfig(&config);
200197

201198
status = PyConfig_SetArgv(&config, argc, argv);
202199
if (PyStatus_Exception(status)) {

Programs/_freeze_importlib.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,12 @@ main(int argc, char *argv[])
7676
}
7777
text[text_size] = '\0';
7878

79-
PyStatus status;
8079
PyConfig config;
81-
82-
status = PyConfig_InitIsolatedConfig(&config);
83-
if (PyStatus_Exception(status)) {
84-
PyConfig_Clear(&config);
85-
Py_ExitStatusException(status);
86-
}
80+
PyConfig_InitIsolatedConfig(&config);
8781

8882
config.site_import = 0;
8983

84+
PyStatus status;
9085
status = PyConfig_SetString(&config, &config.program_name,
9186
L"./_freeze_importlib");
9287
if (PyStatus_Exception(status)) {

0 commit comments

Comments
 (0)