docstr: Return True if all tasks in this span tree are completed; False otherwise.
  
  Notes
  -----
  This property may transition from True to False, e.g. when a new sub-span is
  added or when a worker that contained the only replica of a task in memory
  crashes and the task need to be recomputed.
  
  See Also
  --------
  distributed.scheduler.TaskGroup.done
docstr_tok: ["Return","True","if","all","tasks","in","this","span","tree","are","completed",";","False","otherwise",".","Notes","--","--","-","This","property","may","transition","from","True","to","False",",","e.g",".","when","a","new","sub-span","is","added","or","when","a","worker","that","contained","the","only","replica","of","a","task","in","memory","crashes","and","the","task","need","to","be","recomputed",".","See","Also","--","--","--","--","distributed.scheduler.TaskGroup.done"]
code: def done(self) -> bool:
      """Return True if all tasks in this span tree are completed; False otherwise.
  
      Notes
      -----
      This property may transition from True to False, e.g. when a new sub-span is
      added or when a worker that contained the only replica of a task in memory
      crashes and the task need to be recomputed.
  
      See Also
      --------
      distributed.scheduler.TaskGroup.done
      """
      return all(tg.done for tg in self.traverse_groups())
  
imports: from __future__ import annotations
  import uuid
  import weakref
  from collections import defaultdict
  from collections.abc import Hashable, Iterable, Iterator
  from contextlib import contextmanager
  from itertools import islice
  from typing import TYPE_CHECKING, Any
  import dask.config
  from dask.typing import Key
  from distributed.collections import sum_mappings
  from distributed.itertools import ffill
  from distributed.metrics import time
label_desc: Use image node_id 10 for calling the Span obj's underlying member method code with example usage: obj.done() and returns: all