docs: def cancel_job_button(self, description=None):
          """Display a button that will cancel the submitted job.
  
          Used in a Jupyter IPython notebook to provide an interactive
          mechanism to cancel a job submitted from the notebook.
  
          Once clicked the button is disabled unless the cancel fails.
  
          A job may be cancelled directly using::
  
              submission_result = submit(ctx_type, topology, config)
              submission_result.job.cancel()
  
          Args:
  
              description(str): Text used as the button description, defaults to value based upon the job name.
  
          .. warning::
              Behavior when called outside a notebook is undefined.
  
          .. versionadded:: 1.12
          """
          if not hasattr(self, 'jobId'):
              return
    
          try:
              import ipywidgets as widgets
              if not description:
                  description = 'Cancel job: '
                  description += self.name if hasattr(self, 'name') else self.job.name
              button = widgets.Button(description=description,
                  button_style='danger',
                  layout=widgets.Layout(width='40%'))
              out = widgets.Output()
              vb = widgets.VBox([button, out])
              @out.capture(clear_output=True)
              def _cancel_job_click(b):
                  b.disabled=True
                  print('Cancelling job: id=' + str(self.job.id) + ' ...\n', flush=True)
                  try:
                      rc = self.job.cancel()
                      out.clear_output()
                      if rc:
                          print('Cancelled job: id=' + str(self.job.id) + ' : ' + self.job.name + '\n', flush=True)
                      else:
                          print('Job already cancelled: id=' + str(self.job.id) + ' : ' + self.job.name + '\n', flush=True)
                  except:
                      b.disabled=False
                      out.clear_output()
                      raise
   
              button.on_click(_cancel_job_click)
              display(vb)
          except:
              pass