Source code for wolframclient.exception
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals
from wolframclient.language.exceptions import WolframLanguageException
from wolframclient.utils.logger import str_trim
[docs]class RequestException(WolframLanguageException):
"""Error in an HTTP request."""
def __init__(self, response, msg=None):
self.response = response
if msg:
self.msg = msg
else:
try:
self.msg = response.text()
except UnicodeDecodeErrors:
self.msg = "Failed to decode request body."
def __str__(self):
if hasattr(self.response, "status"):
if callable(self.response.status):
status = self.response.status()
else:
status = self.response.status
elif hasattr(self.response, "status_code"):
status = self.response.status_code
else:
status = "N/A"
return "<status: %s> %s" % (status, self.msg or "")
[docs]class AuthenticationException(RequestException):
"""Error in an authentication request."""
[docs]class WolframKernelException(WolframLanguageException):
"""Error while interacting with a Wolfram kernel."""
[docs]class WolframEvaluationException(WolframLanguageException):
"""Error after an evaluation raising messages."""
def __init__(self, error, result=None, messages=[]):
self.error = error
self.result = result
if isinstance(messages, list):
self.messages = messages
else:
self.messages = [messages]
def __str__(self):
return self.error
def __repr__(self):
return "<%s error=%s, expr=%s, messages=%i>:" % (
self.__class__.__name__,
self.error,
str_trim(self.result),
len(self.messages),
)
[docs]class SocketException(WolframLanguageException):
"""Error while operating on socket."""
[docs]class WolframParserException(WolframLanguageException):
"""Error while deserializing WXF bytes."""
__all__ = [
"WolframLanguageException",
"RequestException",
"AuthenticationException",
"WolframKernelException",
"SocketException",
"WolframParserException",
"WolframEvaluationException",
]