docs: def chained(wrapping_exc):
      # pylint: disable=W0212
      """
      Embeds the current exception information into the given one (which
      will replace the current one).
      For example::
  
          try:
              ...
          except OSError as ex:
              raise chained(MyError("database not found!"))
      """
      t, v, tb = sys.exc_info()
      if not t:
          return wrapping_exc
      wrapping_exc._inner_exc = v
      lines = traceback.format_exception(t, v, tb)
      wrapping_exc._inner_tb = "".join(lines[1:])
      return wrapping_exc