<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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