code: def from_error(exc_info, json_encoder, debug_url=None):
          
          exc = exc_info[1]
          data = exc.__dict__.copy()
          for key, value in data.items():
              try:
                  json_encoder.encode(value)
              except TypeError:
                  data[key] = repr(value)
          data["traceback"] = "".join(traceback.format_exception(*exc_info))
          if debug_url is not None:
              data["debug_url"] = debug_url
          return InternalError(data)
docs: Wraps another Exception in an InternalError.
  
          :param exc_info: The exception info for the wrapped exception
          :type exc_info: (type, object, traceback)
          :type json_encoder: json.JSONEncoder
          :type debug_url: str | None
          :rtype: InternalError
  
          .. versionadded:: 0.1.0
          .. versionchanged:: 0.2.0
              Stringifies non-JSON-serializable objects