xref: /third_party/python/Doc/c-api/frame.rst (revision 7db96d56)
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