[issue42516] Add function to get caller's name

2021-06-11 Thread Dong-hee Na


Change by Dong-hee Na :


--
nosy: +corona10

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42516] Add function to get caller's name

2021-05-17 Thread Filipe Laíns

Change by Filipe Laíns :


--
nosy: +FFY00

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42516] Add function to get caller's name

2020-11-30 Thread STINNER Victor


Change by STINNER Victor :


--
nosy: +vstinner

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42516] Add function to get caller's name

2020-11-30 Thread Steve Dower


Change by Steve Dower :


--
components: +Interpreter Core
stage:  -> test needed
type:  -> enhancement
versions: +Python 3.10

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42516] Add function to get caller's name

2020-11-30 Thread Steve Dower


New submission from Steve Dower :

We have a lot of stdlib code that looks like:

try:
nm_tpl.__module__ = sys._getframe(2).f_globals.get('__name__', 
'__main__')
except (AttributeError, ValueError):
pass

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?

--
messages: 382199
nosy: steve.dower
priority: normal
severity: normal
status: open
title: Add function to get caller's name

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com