]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-46836: Add Doc/c-api/frame.rst (GH-32051)
authorVictor Stinner <vstinner@python.org>
Wed, 23 Mar 2022 12:19:13 +0000 (13:19 +0100)
committerGitHub <noreply@github.com>
Wed, 23 Mar 2022 12:19:13 +0000 (13:19 +0100)
Reorganize the documentation of the PyFrameObject C API.

Doc/c-api/concrete.rst
Doc/c-api/frame.rst [new file with mode: 0644]
Doc/c-api/reflection.rst
Doc/c-api/veryhigh.rst
Doc/whatsnew/3.11.rst

index 84224dcca523b9ee0eb6c44c39b8cbf8c01e5ced..8d3124a12fa9d2554ffdaf737cec3efdbbea0ec7 100644 (file)
@@ -111,6 +111,7 @@ Other Objects
    memoryview.rst
    weakref.rst
    capsule.rst
+   frame.rst
    gen.rst
    coro.rst
    contextvars.rst
diff --git a/Doc/c-api/frame.rst b/Doc/c-api/frame.rst
new file mode 100644 (file)
index 0000000..0e36e6e
--- /dev/null
@@ -0,0 +1,48 @@
+.. highlight:: c
+
+Frame Objects
+-------------
+
+.. c:type:: PyFrameObject
+
+   The C structure of the objects used to describe frame objects.
+
+   The structure is not part of the C API.
+
+   .. versionchanged:: 3.11
+      The structure moved to the internal C API headers.
+
+The :c:func:`PyEval_GetFrame` and :c:func:`PyThreadState_GetFrame` functions
+can be used to get a frame object.
+
+See also :ref:`Reflection <reflection>`.
+
+
+.. c:function:: PyFrameObject* PyFrame_GetBack(PyFrameObject *frame)
+
+   Get the *frame* next outer frame.
+
+   Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer
+   frame.
+
+   *frame* must not be ``NULL``.
+
+   .. versionadded:: 3.9
+
+
+.. c:function:: PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
+
+   Get the *frame* code.
+
+   Return a :term:`strong reference`.
+
+   *frame* must not be ``NULL``. The result (frame code) cannot be ``NULL``.
+
+   .. versionadded:: 3.9
+
+
+.. c:function:: int PyFrame_GetLineNumber(PyFrameObject *frame)
+
+   Return the line number that *frame* is currently executing.
+
+   *frame* must not be ``NULL``.
index fe7741a2d7a9fbcda28b2f4e4ce3bf9503549842..4b1c4770848a306ed7e709afc5cac6d6eaf4c8a3 100644 (file)
@@ -31,35 +31,6 @@ Reflection
    See also :c:func:`PyThreadState_GetFrame`.
 
 
-.. c:function:: PyFrameObject* PyFrame_GetBack(PyFrameObject *frame)
-
-   Get the *frame* next outer frame.
-
-   Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer frame.
-
-   *frame* must not be ``NULL``.
-
-   .. versionadded:: 3.9
-
-
-.. c:function:: PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
-
-   Get the *frame* code.
-
-   Return a :term:`strong reference`.
-
-   *frame* must not be ``NULL``. The result (frame code) cannot be ``NULL``.
-
-   .. versionadded:: 3.9
-
-
-.. c:function:: int PyFrame_GetLineNumber(PyFrameObject *frame)
-
-   Return the line number that *frame* is currently executing.
-
-   *frame* must not be ``NULL``.
-
-
 .. c:function:: const char* PyEval_GetFuncName(PyObject *func)
 
    Return the name of *func* if it is a function, class or instance object, else the
index 2f5720d493d7982894a287581b3982676ce296ef..7bd47bb9c660a662fba9e0a0fb6ad68acf0238f4 100644 (file)
@@ -286,20 +286,6 @@ the same library that the Python runtime is using.
    <keyword-only_parameter>` arguments and a closure tuple of cells.
 
 
-.. c:type:: PyFrameObject
-
-   The C structure of the objects used to describe frame objects.
-
-   The structure is only part of the internal C API: fields should not be
-   access directly. Use getter functions like :c:func:`PyFrame_GetCode` and
-   :c:func:`PyFrame_GetBack`.
-
-   Debuggers and profilers can use the limited C API to access this structure.
-
-   .. versionchanged:: 3.11
-      The structure moved to the internal C API headers.
-
-
 .. c:function:: PyObject* PyEval_EvalFrame(PyFrameObject *f)
 
    Evaluate an execution frame.  This is a simplified interface to
index 938a573d5957447fe8df04f86d7da3bc4935129a..fe6c2e24c3d2410f77ea39683e43d78998c81038 100644 (file)
@@ -968,10 +968,8 @@ Porting to Python 3.11
   * ``f_stackdepth``: removed.
   * ``f_state``: no public API (renamed to ``f_frame.f_state``).
   * ``f_trace``: no public API.
-  * ``f_trace_lines``: use ``PyObject_GetAttrString((PyObject*)frame, "f_trace_lines")``
-    (it also be modified).
-  * ``f_trace_opcodes``: use ``PyObject_GetAttrString((PyObject*)frame, "f_trace_opcodes")``
-    (it also be modified).
+  * ``f_trace_lines``: use ``PyObject_GetAttrString((PyObject*)frame, "f_trace_lines")``.
+  * ``f_trace_opcodes``: use ``PyObject_GetAttrString((PyObject*)frame, "f_trace_opcodes")``.
   * ``f_localsplus``: no public API (renamed to ``f_frame.localsplus``).
   * ``f_valuestack``: removed.