mirror of
https://github.com/python/cpython.git
synced 2025-07-23 19:25:40 +00:00
gh-128911: Add PyImport_ImportModuleAttr() function (#128912)
Add PyImport_ImportModuleAttr() and PyImport_ImportModuleAttrString() functions. * Add unit tests. * Replace _PyImport_GetModuleAttr() with PyImport_ImportModuleAttr(). * Replace _PyImport_GetModuleAttrString() with PyImport_ImportModuleAttrString(). * Remove "pycore_import.h" includes, no longer needed.
This commit is contained in:
parent
f927204f64
commit
3bebe46d34
40 changed files with 194 additions and 56 deletions
|
@ -4111,7 +4111,7 @@ init_zipimport(PyThreadState *tstate, int verbose)
|
|||
PySys_WriteStderr("# installing zipimport hook\n");
|
||||
}
|
||||
|
||||
PyObject *zipimporter = _PyImport_GetModuleAttrString("zipimport", "zipimporter");
|
||||
PyObject *zipimporter = PyImport_ImportModuleAttrString("zipimport", "zipimporter");
|
||||
if (zipimporter == NULL) {
|
||||
_PyErr_Clear(tstate); /* No zipimporter object -- okay */
|
||||
if (verbose) {
|
||||
|
@ -4174,7 +4174,7 @@ _PyImport_FiniExternal(PyInterpreterState *interp)
|
|||
/******************/
|
||||
|
||||
PyObject *
|
||||
_PyImport_GetModuleAttr(PyObject *modname, PyObject *attrname)
|
||||
PyImport_ImportModuleAttr(PyObject *modname, PyObject *attrname)
|
||||
{
|
||||
PyObject *mod = PyImport_Import(modname);
|
||||
if (mod == NULL) {
|
||||
|
@ -4186,7 +4186,7 @@ _PyImport_GetModuleAttr(PyObject *modname, PyObject *attrname)
|
|||
}
|
||||
|
||||
PyObject *
|
||||
_PyImport_GetModuleAttrString(const char *modname, const char *attrname)
|
||||
PyImport_ImportModuleAttrString(const char *modname, const char *attrname)
|
||||
{
|
||||
PyObject *pmodname = PyUnicode_FromString(modname);
|
||||
if (pmodname == NULL) {
|
||||
|
@ -4197,7 +4197,7 @@ _PyImport_GetModuleAttrString(const char *modname, const char *attrname)
|
|||
Py_DECREF(pmodname);
|
||||
return NULL;
|
||||
}
|
||||
PyObject *result = _PyImport_GetModuleAttr(pmodname, pattrname);
|
||||
PyObject *result = PyImport_ImportModuleAttr(pmodname, pattrname);
|
||||
Py_DECREF(pattrname);
|
||||
Py_DECREF(pmodname);
|
||||
return result;
|
||||
|
|
|
@ -2609,7 +2609,7 @@ create_stdio(const PyConfig *config, PyObject* io,
|
|||
|
||||
#ifdef HAVE_WINDOWS_CONSOLE_IO
|
||||
/* Windows console IO is always UTF-8 encoded */
|
||||
PyTypeObject *winconsoleio_type = (PyTypeObject *)_PyImport_GetModuleAttr(
|
||||
PyTypeObject *winconsoleio_type = (PyTypeObject *)PyImport_ImportModuleAttr(
|
||||
&_Py_ID(_io), &_Py_ID(_WindowsConsoleIO));
|
||||
if (winconsoleio_type == NULL) {
|
||||
goto error;
|
||||
|
@ -2714,7 +2714,7 @@ init_set_builtins_open(void)
|
|||
goto error;
|
||||
}
|
||||
|
||||
if (!(wrapper = _PyImport_GetModuleAttrString("io", "open"))) {
|
||||
if (!(wrapper = PyImport_ImportModuleAttrString("io", "open"))) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue