https://github.com/python/cpython/commit/2bc12551b58ac00ba82a08b58c9d8f0534e253f3
commit: 2bc12551b58ac00ba82a08b58c9d8f0534e253f3
branch: 3.15
author: Miss Islington (bot) <[email protected]>
committer: ZeroIntensity <[email protected]>
date: 2026-10-23T17:55:32Z
summary:

[3.15] gh-156725: Document O(N) behavior of `PyCode_Addr2Line` (GH-156736) 
(GH-160453)

(cherry picked from commit 8d119208074fef0f652f14f78612b044dd218c4f)

Co-authored-by: Himesh Rupchandani <[email protected]>

files:
M Doc/c-api/code.rst

diff --git a/Doc/c-api/code.rst b/Doc/c-api/code.rst
index b34edb409da9a8..96104017da5975 100644
--- a/Doc/c-api/code.rst
+++ b/Doc/c-api/code.rst
@@ -94,11 +94,12 @@ bound into a function.
 
 .. c:function:: int PyCode_Addr2Line(PyCodeObject *co, int byte_offset)
 
-    Return the line number of the instruction that occurs on or before 
``byte_offset`` and ends after it.
-    If you just need the line number of a frame, use 
:c:func:`PyFrame_GetLineNumber` instead.
+    Return the line number of the instruction that occurs on or before
+    ``byte_offset`` and ends after it.  This may be ``O(N)`` in the number of
+    instructions in the code object, so it is not performant for iterating over
+    all the line numbers in a code object.
 
-    For efficiently iterating over the line numbers in a code object, use 
:pep:`the API described in PEP 626
-    <0626#out-of-process-debuggers-and-profilers>`.
+    If you just need the line number of a frame, use 
:c:func:`PyFrame_GetLineNumber` instead.
 
 .. c:function:: int PyCode_Addr2Location(PyObject *co, int byte_offset, int 
*start_line, int *start_column, int *end_line, int *end_column)
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to