Feature or enhancement
In Nuitka, we have our own meta-path-based loader, which loads packages that contain extension modules with custom code that emulates the load process. For an extension module in a package, we used to set _Py_PackageContext, which has since been removed. Currently, _PyRuntime.imports.pkgcontext is not used because we fall back to a thread-local pkgcontext variable, which Nuitka cannot access on Windows or where static linking to Python is not available.
This leads to some issues when Nuitka goes to load extensions that are stored in a submodule or create submodules, because the package context is not correct. For example, an extension module under x.y will create submodule z as y.z rather than x.y.z. There are currently some workarounds to repair the damage, but this is tedious and sometimes unreliable. If _PyImport_SwapPackageContext were exposed, Nuitka could just call that and make PyModule_Create know what package it lives in.
Nuitka doesn't need _PyImport_SwapPackageContext to be exposed as public or PyUnstable, we would just like to have it available in the ABI under PyAPI_FUNC. It would be very helpful if this could happen before 3.14.0, but that's up to Hugo.
Linked PRs
Feature or enhancement
In Nuitka, we have our own meta-path-based loader, which loads packages that contain extension modules with custom code that emulates the load process. For an extension module in a package, we used to set
_Py_PackageContext, which has since been removed. Currently,_PyRuntime.imports.pkgcontextis not used because we fall back to a thread-localpkgcontextvariable, which Nuitka cannot access on Windows or where static linking to Python is not available.This leads to some issues when Nuitka goes to load extensions that are stored in a submodule or create submodules, because the package context is not correct. For example, an extension module under
x.ywill create submodulezasy.zrather thanx.y.z. There are currently some workarounds to repair the damage, but this is tedious and sometimes unreliable. If_PyImport_SwapPackageContextwere exposed, Nuitka could just call that and makePyModule_Createknow what package it lives in.Nuitka doesn't need
_PyImport_SwapPackageContextto be exposed as public orPyUnstable, we would just like to have it available in the ABI underPyAPI_FUNC. It would be very helpful if this could happen before 3.14.0, but that's up to Hugo.Linked PRs
_PyImport_SwapPackageContextin the ABI #139228