class_docstr: Base class to build BackgroundJob classes.
  
  The derived classes must implement:
  
  - Their own __init__, since the one here raises NotImplementedError.  The
    derived constructor must call self._init() at the end, to provide common
    initialization.
  
  - A strform attribute used in calls to __str__.
  
  - A call() method, which will make the actual execution call and must
    return a value to be held in the 'result' field of the job object.
docstr: Common initialization for all BackgroundJob objects
docstr_tok: ["Common","initialization","for","all","BackgroundJob","objects"]
code: def _init(self):
      """Common initialization for all BackgroundJob objects"""
  
      for attr in ["call", "strform"]:
          assert hasattr(self, attr), "Missing attribute <%s>" % attr
  
      # The num tag can be set by an external job manager
      self.num = None
  
      self.status = BackgroundJobBase.stat_created
      self.stat_code = BackgroundJobBase.stat_created_c
      self.finished = False
      self.result = "<BackgroundJob has not completed>"
  
      # reuse the ipython traceback handler if we can get to it, otherwise
      # make a new one
      try:
          make_tb = get_ipython().InteractiveTB.text
      except:
          make_tb = AutoFormattedTB(
              mode="Context", color_scheme="NoColor", tb_offset=1
          ).text
      # Note that the actual API for text() requires the three args to be
      # passed in, so we wrap it in a simple lambda.
      self._make_tb = lambda: make_tb(None, None, None)
  
      # Hold a formatted traceback if one is generated.
      self._tb = None
  
      threading.Thread.__init__(self)
  
imports: from __future__ import print_function
  import sys
  import threading
  from IPython import get_ipython
  from IPython.core.ultratb import AutoFormattedTB
  from logging import error
  from IPython.utils.py3compat import string_types
label_desc: Use image node_id 2 for calling the BackgroundJobBase obj's underlying member method code with example usage: obj._init() without return types