@@ -17,9 +17,12 @@ def new(tasks) -> Tuple[Set[Vertex], List[Edge]]:
1717 edges = list ()
1818
1919 for who in tasks :
20- src = Vertex .new (who , current )
20+ children = blockers (who )
21+ src = Vertex .new (
22+ who , current , extra_text = [c for c in children if isinstance (c , str )]
23+ )
2124 vertices .add (src )
22- for what in blockers ( who ) :
25+ for what in children :
2326 dst = Vertex .new (what , current )
2427 vertices .add (dst )
2528 edges .append (Edge (src , dst ))
@@ -41,7 +44,8 @@ def __eq__(self, other):
4144 return isinstance (other , Vertex ) and self .task == other .task
4245
4346 @classmethod
44- def new (cls , task , current ):
47+ def new (cls , task , current , * , extra_text = ()):
48+ extra = "\n " .join (extra_text )
4549 if isinstance (task , asyncio .Task ):
4650 buf = io .StringIO ()
4751 task_print_stack (task , None , buf )
@@ -53,11 +57,14 @@ def new(cls, task, current):
5357 state = "done"
5458 else :
5559 state = "current" if task is current else "pending"
56- return cls (name , state , concise_stack_trace (buf .getvalue ()), task )
60+ traceback = "\n " .join (
61+ filter (None , (concise_stack_trace (buf .getvalue ()), extra ))
62+ )
63+ return cls (name , state , traceback , task )
5764 elif isinstance (task , asyncio .Future ):
58- return cls ("Future" , None , None , task )
65+ return cls ("Future" , None , extra , task )
5966 else :
60- return cls (str (task ), None , None , task )
67+ return cls (str (task ), None , extra , task )
6168
6269
6370@dataclass (frozen = True )
0 commit comments