summaryrefslogtreecommitdiff
path: root/Programs
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-03-25 23:19:57 +0100
committerGitHub <noreply@github.com>2019-03-25 23:19:57 +0100
commit1075d1684ab84dc7c28d93cfb46e95e70d3b6d3b (patch)
tree7a0543a13a28f88318d16f8900111ea10198a4a3 /Programs
parent91759d98015e1d6d5e1367cff60592ab548e7806 (diff)
downloadcpython-git-1075d1684ab84dc7c28d93cfb46e95e70d3b6d3b.tar.gz
bpo-36301: Add _Py_GetConfigsAsDict() function (GH-12540)
* Add _Py_GetConfigsAsDict() function to get all configurations as a dict. * dump_config() of _testembed.c now dumps preconfig as a separated key: call _Py_GetConfigsAsDict(). * Make _PyMainInterpreterConfig_AsDict() private.
Diffstat (limited to 'Programs')
-rw-r--r--Programs/_testembed.c55
1 files changed, 10 insertions, 45 deletions
diff --git a/Programs/_testembed.c b/Programs/_testembed.c
index 7c143f1ef3..ab5802da36 100644
--- a/Programs/_testembed.c
+++ b/Programs/_testembed.c
@@ -301,64 +301,29 @@ static int test_initialize_pymain(void)
static int
dump_config_impl(void)
{
- PyObject *config = NULL;
- PyObject *dict = NULL;
-
- config = PyDict_New();
+ PyObject *config = _Py_GetConfigsAsDict();
if (config == NULL) {
- goto error;
- }
-
- /* global config */
- dict = _Py_GetGlobalVariablesAsDict();
- if (dict == NULL) {
- goto error;
- }
- if (PyDict_SetItemString(config, "global_config", dict) < 0) {
- goto error;
- }
- Py_CLEAR(dict);
-
- /* core config */
- PyInterpreterState *interp = _PyInterpreterState_Get();
- const _PyCoreConfig *core_config = _PyInterpreterState_GetCoreConfig(interp);
- dict = _PyCoreConfig_AsDict(core_config);
- if (dict == NULL) {
- goto error;
- }
- if (PyDict_SetItemString(config, "core_config", dict) < 0) {
- goto error;
+ return -1;
}
- Py_CLEAR(dict);
- /* main config */
- const _PyMainInterpreterConfig *main_config = _PyInterpreterState_GetMainConfig(interp);
- dict = _PyMainInterpreterConfig_AsDict(main_config);
- if (dict == NULL) {
- goto error;
+ PyObject *res;
+ PyObject *json = PyImport_ImportModule("json");
+ if (json) {
+ res = PyObject_CallMethod(json, "dumps", "O", config);
+ Py_DECREF(json);
}
- if (PyDict_SetItemString(config, "main_config", dict) < 0) {
- goto error;
+ else {
+ res = NULL;
}
- Py_CLEAR(dict);
-
- PyObject *json = PyImport_ImportModule("json");
- PyObject *res = PyObject_CallMethod(json, "dumps", "O", config);
- Py_DECREF(json);
Py_CLEAR(config);
if (res == NULL) {
- goto error;
+ return -1;
}
PySys_FormatStdout("%S\n", res);
Py_DECREF(res);
return 0;
-
-error:
- Py_XDECREF(config);
- Py_XDECREF(dict);
- return -1;
}