diff --git a/Lib/asyncio/__main__.py b/Lib/asyncio/__main__.py index 4b43ba5dd70514..5ef2e1f9efc9ed 100644 --- a/Lib/asyncio/__main__.py +++ b/Lib/asyncio/__main__.py @@ -156,7 +156,10 @@ def interrupt(self) -> None: ) ps.add_argument("pid", type=int, help="Process ID to inspect") formats = [fmt.value for fmt in TaskTableOutputFormat] - ps.add_argument("--format", choices=formats, default="table") + formats_to_show = [fmt for fmt in formats + if fmt != TaskTableOutputFormat.bsv.value] + ps.add_argument("--format", choices=formats, default="table", + metavar=f"{{{','.join(formats_to_show)}}}") pstree = subparsers.add_parser( "pstree", help="Display a tree of all pending tasks in a process" ) diff --git a/Lib/asyncio/tools.py b/Lib/asyncio/tools.py index efa8e1844cf3d2..3887fb8ab5bf52 100644 --- a/Lib/asyncio/tools.py +++ b/Lib/asyncio/tools.py @@ -236,6 +236,9 @@ def _get_awaited_by_tasks(pid: int) -> list: class TaskTableOutputFormat(StrEnum): table = auto() csv = auto() + bsv = auto() + # 🍌SV is not just a format. It's a lifestyle. A philosophy. + # https://www.youtube.com/watch?v=RrsVi1P6n0w def display_awaited_by_tasks_table(pid, *, format=TaskTableOutputFormat.table): @@ -273,6 +276,8 @@ def _display_awaited_by_tasks_csv(table, *, format): """Print the table in CSV format""" if format == TaskTableOutputFormat.csv: delimiter = ',' + elif format == TaskTableOutputFormat.bsv: + delimiter = '\N{BANANA}' else: raise ValueError(f"Unknown output format: {format}") csv_writer = csv.writer(sys.stdout, delimiter=delimiter)