|
1 | 1 | """Tools to analyze tasks running in asyncio programs.""" |
2 | 2 |
|
3 | 3 | from collections import defaultdict, namedtuple |
| 4 | +import csv |
4 | 5 | from itertools import count |
5 | 6 | from enum import Enum |
6 | 7 | import sys |
7 | 8 | from _remote_debugging import RemoteUnwinder, FrameInfo |
8 | | -import csv |
9 | 9 |
|
10 | 10 |
|
11 | 11 | class NodeType(Enum): |
@@ -248,37 +248,37 @@ class TaskTableOutputFormat(Enum): |
248 | 248 |
|
249 | 249 | def display_awaited_by_tasks_table( |
250 | 250 | pid: int, |
251 | | - format_: TaskTableOutputFormat | str = TaskTableOutputFormat.table |
| 251 | + format: TaskTableOutputFormat | str = TaskTableOutputFormat.table |
252 | 252 | ) -> None: |
253 | 253 | """Build and print a table of all pending tasks under `pid`.""" |
254 | 254 |
|
255 | 255 | tasks = _get_awaited_by_tasks(pid) |
256 | 256 | table = build_task_table(tasks) |
257 | | - format_ = TaskTableOutputFormat(format_) |
258 | | - if format_ == TaskTableOutputFormat.table: |
| 257 | + format = TaskTableOutputFormat(format) |
| 258 | + if format == TaskTableOutputFormat.table: |
259 | 259 | _display_awaited_by_tasks_table(table) |
260 | 260 | else: |
261 | | - _display_awaited_by_tasks_csv(table, format_) |
| 261 | + _display_awaited_by_tasks_csv(table, format) |
262 | 262 |
|
263 | 263 |
|
264 | 264 | def _display_awaited_by_tasks_table(table) -> None: |
265 | 265 | # Print the table in a simple tabular format |
266 | 266 | print( |
267 | | - f"{_header[0]:<10} {_header[1]:<20} {_header[2]:<20} {_header[3]:<50} {_header[4]:<50} {_header[5]:<15} {_header[6]:<15}" |
| 267 | + f"{'tid':<10} {'task id':<20} {'task name':<20} {'coroutine stack':<50} {'awaiter chain':<50} {'awaiter name':<15} {'awaiter id':<15}" |
268 | 268 | ) |
269 | 269 | print("-" * 180) |
270 | 270 | for row in table: |
271 | 271 | print(f"{row[0]:<10} {row[1]:<20} {row[2]:<20} {row[3]:<50} {row[4]:<50} {row[5]:<15} {row[6]:<15}") |
272 | 272 |
|
273 | 273 |
|
274 | | -def _display_awaited_by_tasks_csv(table, format_: TaskTableOutputFormat) -> None: |
275 | | - match format_: |
| 274 | +def _display_awaited_by_tasks_csv(table, format: TaskTableOutputFormat) -> None: |
| 275 | + match format: |
276 | 276 | case TaskTableOutputFormat.csv: |
277 | 277 | delimiter = ',' |
278 | 278 | case TaskTableOutputFormat.bsv: |
279 | 279 | delimiter = '\N{BANANA}' |
280 | 280 | case _: |
281 | | - raise ValueError(f"Unknown output format: {format_}") |
| 281 | + raise ValueError(f"Unknown output format: {format}") |
282 | 282 | csv_writer = csv.writer(sys.stdout, delimiter=delimiter) |
283 | 283 | csv_writer.writerow(_header) |
284 | 284 | csv_writer.writerows(table) |
|
0 commit comments