class_docstr: Multiple progress bar Widget suitable for the notebook
  
  Displays multiple progress bars for a computation, split on computation
  type.
  
  See Also
  --------
  progress: User-level function <--- use this
  MultiProgress: Non-visualization component that contains most logic
  ProgressWidget: Single progress bar widget
class_docstr_tok: ["Multiple","progress","bar","Widget","suitable","for","the","notebook","Displays","multiple","progress","bars","for","a","computation",",","split","on","computation","type",".","See","Also","--","--","--","--","progress",":","User-level","function","<","--","-","use","this","MultiProgress",":","Non-visualization","component","that","contains","most","logic","ProgressWidget",":","Single","progress","bar","widget"]
code: def _draw_stop(
      self, remaining, status, exception=None, key=None, **kwargs
  ):
      for k, v in remaining.items():
          if not v:
              self.bars[k].bar_style = "success"
          else:
              self.bars[k].bar_style = "danger"
  
      if status == "error":
          _, exception, _ = clean_exception(exception)
          # self.bars[self.func(key)].bar_style = 'danger'  # TODO
          self.elapsed_time.value = (
              '<div style="padding: 0px 10px 5px 10px"><b>Exception</b> '
              + "<tt>"
              + repr(exception)
              + "</tt>:"
              + format_time(self.elapsed)
              + " "
              + "</div>"
          )
      else:
          self.elapsed_time.value = (
              '<div style="padding: 0px 10px 5px 10px"><b>Finished:</b> '
              + format_time(self.elapsed)
              + "</div>"
          )
  
imports: from __future__ import annotations
  import html
  import logging
  import sys
  import warnings
  import weakref
  from contextlib import suppress
  from timeit import default_timer
  from typing import Callable
  from tlz import valmap
  from tornado.ioloop import IOLoop
  import dask
  from dask.utils import key_split
  from distributed.client import default_client, futures_of
  from distributed.core import CommClosedError, clean_exception, coerce_to_address, connect
  from distributed.diagnostics.progress import MultiProgress, Progress, format_time
  from distributed.protocol.pickle import dumps
  from distributed.utils import LoopRunner, is_kernel
label_desc: Use image node_id 4 for calling the MultiProgressWidget obj's underlying member method code with example usage: obj._draw_stop(remaining, status, exception, key) without return types