17db96d56Sopenharmony_ci.. highlight:: c 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciFrame Objects 47db96d56Sopenharmony_ci------------- 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ci.. c:type:: PyFrameObject 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci The C structure of the objects used to describe frame objects. 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci There are no public members in this structure. 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci .. versionchanged:: 3.11 137db96d56Sopenharmony_ci The members of this structure were removed from the public C API. 147db96d56Sopenharmony_ci Refer to the :ref:`What's New entry <pyframeobject-3.11-hiding>` 157db96d56Sopenharmony_ci for details. 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ciThe :c:func:`PyEval_GetFrame` and :c:func:`PyThreadState_GetFrame` functions 187db96d56Sopenharmony_cican be used to get a frame object. 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ciSee also :ref:`Reflection <reflection>`. 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci.. c:var:: PyTypeObject PyFrame_Type 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci The type of frame objects. 257db96d56Sopenharmony_ci It is the same object as :py:class:`types.FrameType` in the Python layer. 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci .. versionchanged:: 3.11 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci Previously, this type was only available after including 307db96d56Sopenharmony_ci ``<frameobject.h>``. 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci.. c:function:: int PyFrame_Check(PyObject *obj) 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci Return non-zero if *obj* is a frame object. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci .. versionchanged:: 3.11 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci Previously, this function was only available after including 397db96d56Sopenharmony_ci ``<frameobject.h>``. 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci.. c:function:: PyFrameObject* PyFrame_GetBack(PyFrameObject *frame) 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci Get the *frame* next outer frame. 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer 467db96d56Sopenharmony_ci frame. 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci .. versionadded:: 3.9 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci.. c:function:: PyObject* PyFrame_GetBuiltins(PyFrameObject *frame) 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci Get the *frame*'s ``f_builtins`` attribute. 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci Return a :term:`strong reference`. The result cannot be ``NULL``. 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci .. versionadded:: 3.11 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci.. c:function:: PyCodeObject* PyFrame_GetCode(PyFrameObject *frame) 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci Get the *frame* code. 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci Return a :term:`strong reference`. 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci The result (frame code) cannot be ``NULL``. 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci .. versionadded:: 3.9 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci.. c:function:: PyObject* PyFrame_GetGenerator(PyFrameObject *frame) 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ci Get the generator, coroutine, or async generator that owns this frame, 747db96d56Sopenharmony_ci or ``NULL`` if this frame is not owned by a generator. 757db96d56Sopenharmony_ci Does not raise an exception, even if the return value is ``NULL``. 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci Return a :term:`strong reference`, or ``NULL``. 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci .. versionadded:: 3.11 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci.. c:function:: PyObject* PyFrame_GetGlobals(PyFrameObject *frame) 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci Get the *frame*'s ``f_globals`` attribute. 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci Return a :term:`strong reference`. The result cannot be ``NULL``. 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci .. versionadded:: 3.11 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci.. c:function:: int PyFrame_GetLasti(PyFrameObject *frame) 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci Get the *frame*'s ``f_lasti`` attribute. 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci Returns -1 if ``frame.f_lasti`` is ``None``. 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci .. versionadded:: 3.11 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci.. c:function:: PyObject* PyFrame_GetLocals(PyFrameObject *frame) 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci Get the *frame*'s ``f_locals`` attribute (:class:`dict`). 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci Return a :term:`strong reference`. 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci .. versionadded:: 3.11 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ci.. c:function:: int PyFrame_GetLineNumber(PyFrameObject *frame) 1107db96d56Sopenharmony_ci 1117db96d56Sopenharmony_ci Return the line number that *frame* is currently executing. 112