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'
]