summaryrefslogtreecommitdiffstats
path: root/Python/import.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2021-09-28 21:12:50 (GMT)
committerPablo Galindo <pablogsal@gmail.com>2021-09-29 11:27:08 (GMT)
commit2ca4ab8031107f9e474e2ce26561ab9ad51faf9c (patch)
treeb653a0877f887a8d40bbf52bebc30d59589226b3 /Python/import.c
parent3397e3192ccc95ff7076f735930d2f4c60fbc278 (diff)
downloadcpython-2ca4ab8031107f9e474e2ce26561ab9ad51faf9c.zip
cpython-2ca4ab8031107f9e474e2ce26561ab9ad51faf9c.tar.gz
cpython-2ca4ab8031107f9e474e2ce26561ab9ad51faf9c.tar.bz2
[3.10] bpo-45307: Restore private C API function _PyImport_FindExtensionObject() (GH-28594)
py2exe and PyOxidizer rely on this API. It will be removed in Python 3.11. Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Diffstat (limited to 'Python/import.c')
-rw-r--r--Python/import.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/Python/import.c b/Python/import.c
index 7301fcc..f2b30af 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -556,6 +556,23 @@ import_find_extension(PyThreadState *tstate, PyObject *name,
return mod;
}
+PyObject *
+_PyImport_FindExtensionObject(PyObject *name, PyObject *filename)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *mod = import_find_extension(tstate, name, filename);
+ if (mod) {
+ PyObject *ref = PyWeakref_NewRef(mod, NULL);
+ Py_DECREF(mod);
+ if (ref == NULL) {
+ return NULL;
+ }
+ mod = PyWeakref_GetObject(ref);
+ Py_DECREF(ref);
+ }
+ return mod; /* borrowed reference */
+}
+
/* Get the module object corresponding to a module name.
First check the modules dictionary if there's one there,