Skip to content

bpo-38304: PyConfig_InitPythonConfig() cannot fail anymore #16509

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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