STINNER Victor <vstin...@python.org> added the comment:

It looks safe to remove this feature.

I failed to find any recent user of _PyThreadState_GetFrame.

Moreover, _PyRuntime.getframe and _PyThreadState_GetFrame have been moved to 
the internal C API in Python 3.7. This C API was not accessible by third-party 
projects in Python 3.7. The internal C API can only be used by third-party 
projects since Python 3.8 and it's tricky to use it... on purpose. I don't 
recall any complain about _PyThreadState_GetFrame becoming inaccessible.

--

I searched for "_PyThreadState_GetFrame" in C code on GitHub. I only found 
copies of Python/pystate.c files in the first 10 pages of search results, with 
one exception. I found one file:

https://github.com/Mistobaan/pdb-clone/blob/517f6d19902b64395b4c7218cbbbecfa5a1de607/lib/pdb_clone/_pdbhandler-py27.c

It's an old (latest commit on Mar 31, 2015) debugger project written by Xavier 
de Gaye.

It seems like the following flavor is more recent (latest commit on Apr 20, 
2019):

https://github.com/corpusops/pdbclone/

Note: the project contains 4 .c files, but only _pdbhandler-py27.c uses 
_PyThreadState_GetFrame: _pdbhandler-py3.c which is for Python 3 doesn't use 
_PyThreadState_GetFrame. But Python 2.7 reached its end of life, it's no longer 
supported.

Copy of the code:

    /* Disable the Python 2 restricted mode in the subinterpreter (see
     * PyEval_GetRestricted()) that prevents linecache to open the source
     * files and prevents attribute access. */
    saved_globals = mainstate->frame->f_globals;
    saved_locals = mainstate->frame->f_locals;
    saved_tstate_getframe = _PyThreadState_GetFrame;
    mainstate->frame->f_globals = globals;
    mainstate->frame->f_locals = locals;
    _PyThreadState_GetFrame = threadstate_getframe;
    pdbhandler_tstate = mainstate;

So _PyThreadState_GetFrame was used to "disable the Python 2 restricted mode", 
but this mode has been removed from Python 3.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39946>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to