]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-143952: Fix asyncio tools to work with the new remote debugging API (#143954)
authorBartosz Sławecki <bartosz@ilikepython.com>
Sun, 18 Jan 2026 00:16:12 +0000 (01:16 +0100)
committerGitHub <noreply@github.com>
Sun, 18 Jan 2026 00:16:12 +0000 (19:16 -0500)
Lib/asyncio/tools.py
Lib/test/test_asyncio/test_tools.py
Misc/NEWS.d/next/Library/2026-01-17-07-48-27.gh-issue-143952.lqJ55y.rst [new file with mode: 0644]

index f9b8a4ee56c5c14cef5f4fda24bd4fa16700bb53..62d6a71557fa37ba60e68c6b0679bbf42cce196f 100644 (file)
@@ -27,10 +27,10 @@ class CycleFoundException(Exception):
 # ─── indexing helpers ───────────────────────────────────────────
 def _format_stack_entry(elem: str|FrameInfo) -> str:
     if not isinstance(elem, str):
-        if elem.lineno == 0 and elem.filename == "":
+        if elem.location.lineno == 0 and elem.filename == "":
             return f"{elem.funcname}"
         else:
-            return f"{elem.funcname} {elem.filename}:{elem.lineno}"
+            return f"{elem.funcname} {elem.filename}:{elem.location.lineno}"
     return elem
 
 
index 34e94830204cd8c53f0ba7d1ca4385ce58b889f3..1ab51a6ca3e49bdcf90eaf8363d4e48cd4f39b76 100644 (file)
@@ -4,7 +4,8 @@ from asyncio import tools
 
 from collections import namedtuple
 
-FrameInfo = namedtuple('FrameInfo', ['funcname', 'filename', 'lineno'])
+LocationInfo = namedtuple('LocationInfo', ['lineno', 'end_lineno', 'col_offset', 'end_col_offset'], defaults=[None]*4)
+FrameInfo = namedtuple('FrameInfo', ['funcname', 'filename', 'location'])
 CoroInfo = namedtuple('CoroInfo', ['call_stack', 'task_name'])
 TaskInfo = namedtuple('TaskInfo', ['task_id', 'task_name', 'coroutine_stack', 'awaited_by'])
 AwaitedInfo = namedtuple('AwaitedInfo', ['thread_id', 'awaited_by'])
@@ -33,33 +34,33 @@ TEST_INPUTS_TREE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiter3", "/path/to/app.py", 130),
-                                    FrameInfo("awaiter2", "/path/to/app.py", 120),
-                                    FrameInfo("awaiter", "/path/to/app.py", 110)
+                                    FrameInfo("awaiter3", "/path/to/app.py", LocationInfo(130)),
+                                    FrameInfo("awaiter2", "/path/to/app.py", LocationInfo(120)),
+                                    FrameInfo("awaiter", "/path/to/app.py", LocationInfo(110))
                                 ],
                                 task_name=4
                             ),
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiterB3", "/path/to/app.py", 190),
-                                    FrameInfo("awaiterB2", "/path/to/app.py", 180),
-                                    FrameInfo("awaiterB", "/path/to/app.py", 170)
+                                    FrameInfo("awaiterB3", "/path/to/app.py", LocationInfo(190)),
+                                    FrameInfo("awaiterB2", "/path/to/app.py", LocationInfo(180)),
+                                    FrameInfo("awaiterB", "/path/to/app.py", LocationInfo(170))
                                 ],
                                 task_name=5
                             ),
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiterB3", "/path/to/app.py", 190),
-                                    FrameInfo("awaiterB2", "/path/to/app.py", 180),
-                                    FrameInfo("awaiterB", "/path/to/app.py", 170)
+                                    FrameInfo("awaiterB3", "/path/to/app.py", LocationInfo(190)),
+                                    FrameInfo("awaiterB2", "/path/to/app.py", LocationInfo(180)),
+                                    FrameInfo("awaiterB", "/path/to/app.py", LocationInfo(170))
                                 ],
                                 task_name=6
                             ),
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiter3", "/path/to/app.py", 130),
-                                    FrameInfo("awaiter2", "/path/to/app.py", 120),
-                                    FrameInfo("awaiter", "/path/to/app.py", 110)
+                                    FrameInfo("awaiter3", "/path/to/app.py", LocationInfo(130)),
+                                    FrameInfo("awaiter2", "/path/to/app.py", LocationInfo(120)),
+                                    FrameInfo("awaiter", "/path/to/app.py", LocationInfo(110))
                                 ],
                                 task_name=7
                             )
@@ -72,9 +73,9 @@ TEST_INPUTS_TREE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("main", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("main", "", LocationInfo(0))
                                 ],
                                 task_name=2
                             )
@@ -87,9 +88,9 @@ TEST_INPUTS_TREE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("main", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("main", "", LocationInfo(0))
                                 ],
                                 task_name=2
                             )
@@ -102,10 +103,10 @@ TEST_INPUTS_TREE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=8
                             )
@@ -118,10 +119,10 @@ TEST_INPUTS_TREE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=8
                             )
@@ -134,10 +135,10 @@ TEST_INPUTS_TREE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=9
                             )
@@ -150,10 +151,10 @@ TEST_INPUTS_TREE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=9
                             )
@@ -222,7 +223,7 @@ TEST_INPUTS_TREE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main2", "", 0)],
+                                call_stack=[FrameInfo("main2", "", LocationInfo(0))],
                                 task_name=5
                             )
                         ]
@@ -233,7 +234,7 @@ TEST_INPUTS_TREE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main2", "", 0)],
+                                call_stack=[FrameInfo("main2", "", LocationInfo(0))],
                                 task_name=5
                             )
                         ]
@@ -244,7 +245,7 @@ TEST_INPUTS_TREE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main2", "", 0)],
+                                call_stack=[FrameInfo("main2", "", LocationInfo(0))],
                                 task_name=5
                             )
                         ]
@@ -266,7 +267,7 @@ TEST_INPUTS_TREE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=1
                             )
                         ]
@@ -277,7 +278,7 @@ TEST_INPUTS_TREE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=1
                             )
                         ]
@@ -288,7 +289,7 @@ TEST_INPUTS_TREE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=1
                             )
                         ]
@@ -347,7 +348,7 @@ TEST_INPUTS_TREE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=4
                                 )
                             ]
@@ -358,7 +359,7 @@ TEST_INPUTS_TREE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=4
                                 )
                             ]
@@ -369,7 +370,7 @@ TEST_INPUTS_TREE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=4
                                 )
                             ]
@@ -415,11 +416,11 @@ TEST_INPUTS_CYCLES_TREE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("awaiter2", "", 0)],
+                                    call_stack=[FrameInfo("awaiter2", "", LocationInfo(0))],
                                     task_name=4
                                 ),
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=2
                                 )
                             ]
@@ -430,7 +431,7 @@ TEST_INPUTS_CYCLES_TREE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("awaiter", "", 0)],
+                                    call_stack=[FrameInfo("awaiter", "", LocationInfo(0))],
                                     task_name=3
                                 )
                             ]
@@ -462,9 +463,9 @@ TEST_INPUTS_CYCLES_TREE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_b", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_b", "", LocationInfo(0))
                                     ],
                                     task_name=4
                                 )
@@ -477,17 +478,17 @@ TEST_INPUTS_CYCLES_TREE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_c", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_c", "", LocationInfo(0))
                                     ],
                                     task_name=5
                                 ),
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_a", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_a", "", LocationInfo(0))
                                     ],
                                     task_name=3
                                 )
@@ -500,8 +501,8 @@ TEST_INPUTS_CYCLES_TREE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0))
                                     ],
                                     task_name=6
                                 )
@@ -514,9 +515,9 @@ TEST_INPUTS_CYCLES_TREE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_b", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_b", "", LocationInfo(0))
                                     ],
                                     task_name=4
                                 )
@@ -553,33 +554,33 @@ TEST_INPUTS_TABLE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiter3", "", 0),
-                                    FrameInfo("awaiter2", "", 0),
-                                    FrameInfo("awaiter", "", 0)
+                                    FrameInfo("awaiter3", "", LocationInfo(0)),
+                                    FrameInfo("awaiter2", "", LocationInfo(0)),
+                                    FrameInfo("awaiter", "", LocationInfo(0))
                                 ],
                                 task_name=4
                             ),
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiter1_3", "", 0),
-                                    FrameInfo("awaiter1_2", "", 0),
-                                    FrameInfo("awaiter1", "", 0)
+                                    FrameInfo("awaiter1_3", "", LocationInfo(0)),
+                                    FrameInfo("awaiter1_2", "", LocationInfo(0)),
+                                    FrameInfo("awaiter1", "", LocationInfo(0))
                                 ],
                                 task_name=5
                             ),
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiter1_3", "", 0),
-                                    FrameInfo("awaiter1_2", "", 0),
-                                    FrameInfo("awaiter1", "", 0)
+                                    FrameInfo("awaiter1_3", "", LocationInfo(0)),
+                                    FrameInfo("awaiter1_2", "", LocationInfo(0)),
+                                    FrameInfo("awaiter1", "", LocationInfo(0))
                                 ],
                                 task_name=6
                             ),
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("awaiter3", "", 0),
-                                    FrameInfo("awaiter2", "", 0),
-                                    FrameInfo("awaiter", "", 0)
+                                    FrameInfo("awaiter3", "", LocationInfo(0)),
+                                    FrameInfo("awaiter2", "", LocationInfo(0)),
+                                    FrameInfo("awaiter", "", LocationInfo(0))
                                 ],
                                 task_name=7
                             )
@@ -592,9 +593,9 @@ TEST_INPUTS_TABLE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("main", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("main", "", LocationInfo(0))
                                 ],
                                 task_name=2
                             )
@@ -607,9 +608,9 @@ TEST_INPUTS_TABLE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("main", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("main", "", LocationInfo(0))
                                 ],
                                 task_name=2
                             )
@@ -622,10 +623,10 @@ TEST_INPUTS_TABLE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=8
                             )
@@ -638,10 +639,10 @@ TEST_INPUTS_TABLE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=8
                             )
@@ -654,10 +655,10 @@ TEST_INPUTS_TABLE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=9
                             )
@@ -670,10 +671,10 @@ TEST_INPUTS_TABLE = [
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("_aexit", "", 0),
-                                    FrameInfo("__aexit__", "", 0),
-                                    FrameInfo("blocho_caller", "", 0),
-                                    FrameInfo("bloch", "", 0)
+                                    FrameInfo("_aexit", "", LocationInfo(0)),
+                                    FrameInfo("__aexit__", "", LocationInfo(0)),
+                                    FrameInfo("blocho_caller", "", LocationInfo(0)),
+                                    FrameInfo("bloch", "", LocationInfo(0))
                                 ],
                                 task_name=9
                             )
@@ -797,7 +798,7 @@ TEST_INPUTS_TABLE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main2", "", 0)],
+                                call_stack=[FrameInfo("main2", "", LocationInfo(0))],
                                 task_name=5
                             )
                         ]
@@ -808,7 +809,7 @@ TEST_INPUTS_TABLE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main2", "", 0)],
+                                call_stack=[FrameInfo("main2", "", LocationInfo(0))],
                                 task_name=5
                             )
                         ]
@@ -819,7 +820,7 @@ TEST_INPUTS_TABLE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main2", "", 0)],
+                                call_stack=[FrameInfo("main2", "", LocationInfo(0))],
                                 task_name=5
                             )
                         ]
@@ -841,7 +842,7 @@ TEST_INPUTS_TABLE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=1
                             )
                         ]
@@ -852,7 +853,7 @@ TEST_INPUTS_TABLE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=1
                             )
                         ]
@@ -863,7 +864,7 @@ TEST_INPUTS_TABLE = [
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=1
                             )
                         ]
@@ -916,7 +917,7 @@ TEST_INPUTS_TABLE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=4
                                 )
                             ]
@@ -927,7 +928,7 @@ TEST_INPUTS_TABLE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=4
                                 )
                             ]
@@ -938,7 +939,7 @@ TEST_INPUTS_TABLE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=4
                                 )
                             ]
@@ -979,11 +980,11 @@ TEST_INPUTS_TABLE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("awaiter2", "", 0)],
+                                    call_stack=[FrameInfo("awaiter2", "", LocationInfo(0))],
                                     task_name=4
                                 ),
                                 CoroInfo(
-                                    call_stack=[FrameInfo("main", "", 0)],
+                                    call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                     task_name=2
                                 )
                             ]
@@ -994,7 +995,7 @@ TEST_INPUTS_TABLE = [
                             coroutine_stack=[],
                             awaited_by=[
                                 CoroInfo(
-                                    call_stack=[FrameInfo("awaiter", "", 0)],
+                                    call_stack=[FrameInfo("awaiter", "", LocationInfo(0))],
                                     task_name=3
                                 )
                             ]
@@ -1033,9 +1034,9 @@ TEST_INPUTS_TABLE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_b", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_b", "", LocationInfo(0))
                                     ],
                                     task_name=4
                                 )
@@ -1048,17 +1049,17 @@ TEST_INPUTS_TABLE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_c", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_c", "", LocationInfo(0))
                                     ],
                                     task_name=5
                                 ),
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_a", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_a", "", LocationInfo(0))
                                     ],
                                     task_name=3
                                 )
@@ -1071,8 +1072,8 @@ TEST_INPUTS_TABLE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0))
                                     ],
                                     task_name=6
                                 )
@@ -1085,9 +1086,9 @@ TEST_INPUTS_TABLE = [
                             awaited_by=[
                                 CoroInfo(
                                     call_stack=[
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("nested", "", 0),
-                                        FrameInfo("task_b", "", 0)
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("nested", "", LocationInfo(0)),
+                                        FrameInfo("task_b", "", LocationInfo(0))
                                     ],
                                     task_name=4
                                 )
@@ -1290,7 +1291,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=3
                             )
                         ]
@@ -1301,7 +1302,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=2
                             )
                         ]
@@ -1331,7 +1332,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=2
                             )
                         ]
@@ -1342,7 +1343,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=3
                             )
                         ]
@@ -1379,7 +1380,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=2
                             )
                         ]
@@ -1390,7 +1391,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("main", "", 0)],
+                                call_stack=[FrameInfo("main", "", LocationInfo(0))],
                                 task_name=3
                             )
                         ]
@@ -1417,11 +1418,11 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("c1", "", 0),
-                                    FrameInfo("c2", "", 0),
-                                    FrameInfo("c3", "", 0),
-                                    FrameInfo("c4", "", 0),
-                                    FrameInfo("c5", "", 0)
+                                    FrameInfo("c1", "", LocationInfo(0)),
+                                    FrameInfo("c2", "", LocationInfo(0)),
+                                    FrameInfo("c3", "", LocationInfo(0)),
+                                    FrameInfo("c4", "", LocationInfo(0)),
+                                    FrameInfo("c5", "", LocationInfo(0))
                                 ],
                                 task_name=11
                             )
@@ -1461,7 +1462,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("call1", "", 0)],
+                                call_stack=[FrameInfo("call1", "", LocationInfo(0))],
                                 task_name=2
                             )
                         ]
@@ -1472,7 +1473,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("call2", "", 0)],
+                                call_stack=[FrameInfo("call2", "", LocationInfo(0))],
                                 task_name=3
                             )
                         ]
@@ -1483,11 +1484,11 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("call3", "", 0)],
+                                call_stack=[FrameInfo("call3", "", LocationInfo(0))],
                                 task_name=1
                             ),
                             CoroInfo(
-                                call_stack=[FrameInfo("call4", "", 0)],
+                                call_stack=[FrameInfo("call4", "", LocationInfo(0))],
                                 task_name=2
                             )
                         ]
@@ -1511,7 +1512,7 @@ class TestAsyncioToolsBasic(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("foo", "", 0)],
+                                call_stack=[FrameInfo("foo", "", LocationInfo(0))],
                                 task_name=2
                             )
                         ]
@@ -1555,7 +1556,7 @@ class TestAsyncioToolsEdgeCases(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("loopback", "", 0)],
+                                call_stack=[FrameInfo("loopback", "", LocationInfo(0))],
                                 task_name=1
                             )
                         ]
@@ -1579,7 +1580,7 @@ class TestAsyncioToolsEdgeCases(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("coro", "", 0)],
+                                call_stack=[FrameInfo("coro", "", LocationInfo(0))],
                                 task_name=999
                             )
                         ]
@@ -1603,11 +1604,11 @@ class TestAsyncioToolsEdgeCases(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("frameA", "", 0)],
+                                call_stack=[FrameInfo("frameA", "", LocationInfo(0))],
                                 task_name=2
                             ),
                             CoroInfo(
-                                call_stack=[FrameInfo("frameA", "", 0)],
+                                call_stack=[FrameInfo("frameA", "", LocationInfo(0))],
                                 task_name=3
                             )
                         ]
@@ -1651,7 +1652,7 @@ class TestAsyncioToolsEdgeCases(unittest.TestCase):
                         coroutine_stack=[],
                         awaited_by=[
                             CoroInfo(
-                                call_stack=[FrameInfo("f1", "", 0)],
+                                call_stack=[FrameInfo("f1", "", LocationInfo(0))],
                                 task_name=2
                             )
                         ]
@@ -1682,8 +1683,8 @@ class TestAsyncioToolsEdgeCases(unittest.TestCase):
                         awaited_by=[
                             CoroInfo(
                                 call_stack=[
-                                    FrameInfo("f1", "", 0),
-                                    FrameInfo("f2", "", 0)
+                                    FrameInfo("f1", "", LocationInfo(0)),
+                                    FrameInfo("f2", "", LocationInfo(0))
                                 ],
                                 task_name=2
                             )
diff --git a/Misc/NEWS.d/next/Library/2026-01-17-07-48-27.gh-issue-143952.lqJ55y.rst b/Misc/NEWS.d/next/Library/2026-01-17-07-48-27.gh-issue-143952.lqJ55y.rst
new file mode 100644 (file)
index 0000000..1a99d31
--- /dev/null
@@ -0,0 +1,2 @@
+Fixed :mod:`asyncio` debugging tools to work with new remote debugging API.
+Patch by Bartosz Sławecki.