diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2024-04-02 20:35:52 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-02 20:35:52 (GMT) |
commit | f341d6017dd4e80509b69b5a9e2625b71b70f205 (patch) | |
tree | fee03c2fb5ec944ca20b41e5a390c73f1d03a241 /Python/config_common.h | |
parent | cae4cdd07ddfcd8bcc05d683bac53815391c9907 (diff) | |
download | cpython-f341d6017dd4e80509b69b5a9e2625b71b70f205.zip cpython-f341d6017dd4e80509b69b5a9e2625b71b70f205.tar.gz cpython-f341d6017dd4e80509b69b5a9e2625b71b70f205.tar.bz2 |
gh-76785: Add PyInterpreterConfig Helpers (gh-117170)
These helpers make it easier to customize and inspect the config used to initialize interpreters. This is especially valuable in our tests. I found inspiration from the PyConfig API for the PyInterpreterConfig dict conversion stuff. As part of this PR I've also added a bunch of tests.
Diffstat (limited to 'Python/config_common.h')
-rw-r--r-- | Python/config_common.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Python/config_common.h b/Python/config_common.h new file mode 100644 index 0000000..e749bd4 --- /dev/null +++ b/Python/config_common.h @@ -0,0 +1,36 @@ + +static inline int +_config_dict_get(PyObject *dict, const char *name, PyObject **p_item) +{ + PyObject *item; + if (PyDict_GetItemStringRef(dict, name, &item) < 0) { + return -1; + } + if (item == NULL) { + // We do not set an exception. + return -1; + } + *p_item = item; + return 0; +} + + +static PyObject* +config_dict_get(PyObject *dict, const char *name) +{ + PyObject *item; + if (_config_dict_get(dict, name, &item) < 0) { + if (!PyErr_Occurred()) { + PyErr_Format(PyExc_ValueError, "missing config key: %s", name); + } + return NULL; + } + return item; +} + + +static void +config_dict_invalid_type(const char *name) +{ + PyErr_Format(PyExc_TypeError, "invalid config type: %s", name); +} |