Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 4fabd02

Browse filesBrowse files
committed
gh-91048: Add filename and line number to external inspection routines
1 parent 1d9406e commit 4fabd02
Copy full SHA for 4fabd02

File tree

Expand file treeCollapse file tree

3 files changed

+337
-40
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+337
-40
lines changed

‎Lib/asyncio/tools.py

Copy file name to clipboardExpand all lines: Lib/asyncio/tools.py
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def _index(result):
2727
for tid, tname, awaited in tasks:
2828
id2name[tid] = tname
2929
for stack, parent_id in awaited:
30+
stack = [elem[0] if isinstance(elem, tuple) else elem for elem in stack]
3031
awaits.append((parent_id, stack, tid))
3132
return id2name, awaits
3233

@@ -151,6 +152,7 @@ def build_task_table(result):
151152
]
152153
)
153154
for stack, awaiter_id in awaited:
155+
stack = [elem[0] if isinstance(elem, tuple) else elem for elem in stack]
154156
coroutine_chain = " -> ".join(stack)
155157
awaiter_name = id2name.get(awaiter_id, "Unknown")
156158
table.append(

‎Lib/test/test_external_inspection.py

Copy file name to clipboardExpand all lines: Lib/test/test_external_inspection.py
+28-14Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import importlib
55
import sys
66
import socket
7+
from asyncio import staggered
78
from unittest.mock import ANY
89
from test.support import os_helper, SHORT_TIMEOUT, busy_retry, requires_gil_enabled
910
from test.support.script_helper import make_script
@@ -90,10 +91,10 @@ def foo():
9091

9192

9293
expected_stack_trace = [
93-
'foo',
94-
'baz',
95-
'bar',
96-
'<module>'
94+
('foo', script_name, 15),
95+
('baz', script_name, 11),
96+
('bar', script_name, 9),
97+
('<module>', script_name, 17),
9798
]
9899
self.assertEqual(stack_trace, expected_stack_trace)
99100

@@ -185,7 +186,12 @@ def new_eager_loop():
185186

186187
root_task = "Task-1"
187188
expected_stack_trace = [
188-
['c5', 'c4', 'c3', 'c2'],
189+
[
190+
('c5', script_name, 11),
191+
('c4', script_name, 15),
192+
('c3', script_name, 18),
193+
('c2', script_name, 21),
194+
],
189195
'c2_root',
190196
[
191197
[['_aexit', '__aexit__', 'main'], root_task, []],
@@ -258,7 +264,11 @@ async def main():
258264
stack_trace[2].sort(key=lambda x: x[1])
259265

260266
expected_stack_trace = [
261-
['gen_nested_call', 'gen', 'main'], 'Task-1', []
267+
[('gen_nested_call', script_name, 11),
268+
('gen', script_name, 17),
269+
('main', script_name, 20)],
270+
'Task-1',
271+
[]
262272
]
263273
self.assertEqual(stack_trace, expected_stack_trace)
264274

@@ -326,9 +336,10 @@ async def main():
326336
# sets are unordered, so we want to sort "awaited_by"s
327337
stack_trace[2].sort(key=lambda x: x[1])
328338

329-
expected_stack_trace = [
330-
['deep', 'c1'], 'Task-2', [[['main'], 'Task-1', []]]
331-
]
339+
expected_stack_trace = [[('deep', script_name, 12),
340+
('c1', script_name, 16)],
341+
'Task-2',
342+
[[['main'], 'Task-1', []]]]
332343
self.assertEqual(stack_trace, expected_stack_trace)
333344

334345
@skip_if_not_supported
@@ -398,10 +409,13 @@ async def main():
398409
# sets are unordered, so we want to sort "awaited_by"s
399410
stack_trace[2].sort(key=lambda x: x[1])
400411

401-
expected_stack_trace = [
402-
['deep', 'c1', 'run_one_coro'],
403-
'Task-2',
404-
[[['staggered_race', 'main'], 'Task-1', []]]
412+
expected_stack_trace = [[
413+
('deep', script_name, 12),
414+
('c1', script_name, 16),
415+
('staggered_race.<locals>.run_one_coro', staggered.__file__, 127)
416+
],
417+
'Task-2',
418+
[[['staggered_race', 'main'], 'Task-1', []]]
405419
]
406420
self.assertEqual(stack_trace, expected_stack_trace)
407421

@@ -548,7 +562,7 @@ async def main():
548562
"Test only runs on Linux with process_vm_readv support")
549563
def test_self_trace(self):
550564
stack_trace = get_stack_trace(os.getpid())
551-
self.assertEqual(stack_trace[0], "test_self_trace")
565+
self.assertEqual(stack_trace[0], ('TestGetStackTrace.test_self_trace', __file__, 564))
552566

553567
if __name__ == "__main__":
554568
unittest.main()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.