-
-
Notifications
You must be signed in to change notification settings - Fork 30.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add function to get caller's name: sys._getframemodulename() #86682
Comments
We have a lot of stdlib code that looks like:
While technically it handles sys._getframe being missing, it would be nice to handle it better for this scenario. I'm already using a sys._get_calling_module_name() as an internal patch to avoid exposing the _getframe() calls to Python code. (As I recall, it cleans up basically all of the uses apart from the traceback module.) This lets us treat sys._getframe() calls as suspicious, because now most code never uses it. /*[clinic input]
sys._get_calling_module_name
Return the name of the calling module.
[clinic start generated code]*/
static PyObject *
sys__get_calling_module_name_impl(PyObject *module)
/*[clinic end generated code]*/
{
PyFrameObject *f = _PyThreadState_GET()->frame;
PyObject *r;
if (f == NULL) {
Py_RETURN_NONE;
}
f = f->f_back;
if (f == NULL) {
Py_RETURN_NONE;
}
r = _PyDict_GetItemIdWithError(f->f_globals, &PyId___name__);
if (!r) {
PyErr_Clear();
r = Py_None;
}
Py_INCREF(r);
return r;
} For something that will live beyond a separate patch, it might make sense to add as much functionality as needed for the warning module, which currently skips some importlib frames and a caller-specified count. I wouldn't want to make it too much more complex though. Separating this out would make it easier for other implementations to support enum, typing, collections, and any other modules that want the caller's name, even if they can't easily/efficiently support a full _getframe(). Thoughts? |
…ame calls in collections, doctest, enum, and typing modules
Related: faster-cpython/ideas#238, #90701, #30950. |
Hah, I didn't even know about those. Was mostly just trying to cut down on my log spam from everyone calling |
…tframe (GH-99520) Also updates calls in collections, doctest, enum, and typing modules to use _getframemodulename first when available.
Looks like this was completed |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs
The text was updated successfully, but these errors were encountered: