# Frame Objects

type PyFrameObject
  Part of the Stable ABI.

  The C structure of the objects used to describe frame objects.

  The structure is not part of the C API.

  Changed in version 3.11: The structure moved to the internal C API headers.

The `PyEval_GetFrame()` and `PyThreadState_GetFrame()` functions can be used to get a frame object.

See also Reflection.

PyFrameObject *PyFrame_GetBack( PyFrameObject *frame)

  Get the frame next outer frame.

  Return a strong reference, or `NULL` if frame has no outer frame.

  frame must not be `NULL`.

  New in version 3.9.

PyObject *PyFrame_GetBuiltins( PyFrameObject *frame)

  Get the frame’s `f_builtins` attribute.

  Return a strong reference. The result cannot be `NULL`.

  frame must not be `NULL`.

  New in version 3.11.

PyCodeObject *PyFrame_GetCode( PyFrameObject *frame)
  Part of the Stable ABI since version 3.10.

  Get the frame code.

  Return a strong reference.

  frame must not be `NULL`. The result (frame code) cannot be `NULL`.

  New in version 3.9.

PyObject *PyFrame_GetGenerator( PyFrameObject *frame)

  Get the generator, coroutine, or async generator that owns this frame, or `NULL` if this frame is not owned by a generator. Does not raise an exception, even if the return value is `NULL`.

  Return a strong reference, or `NULL`.

  frame must not be `NULL`.

  New in version 3.11.

PyObject *PyFrame_GetGlobals( PyFrameObject *frame)

  Get the frame’s `f_globals` attribute.

  Return a strong reference. The result cannot be `NULL`.

  frame must not be `NULL`.

  New in version 3.11.

PyObject *PyFrame_GetLocals( PyFrameObject *frame)

  Get the frame’s `f_locals` attribute (`dict`).

  Return a strong reference.

  frame must not be `NULL`.

  New in version 3.11.

int PyFrame_GetLineNumber( PyFrameObject *frame)
  Part of the Stable ABI since version 3.10.

  Return the line number that frame is currently executing.

  frame must not be `NULL`.