Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ This is an open-source client library communicating with the Mujin Controller We

- Versions have three numbers: MAJOR.MINOR.PATCH

- All versions with the same MAJOR.MINOR number have the same API ande are ABI compatible.
- All versions with the same MAJOR.MINOR number have the same API and are ABI compatible.

## Running on Linux

Expand Down
38 changes: 21 additions & 17 deletions python/mujinwebstackclient/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from .version import __version__ # noqa: F401

import six
from typing import Optional

try:
import ujson as json # noqa: F401
Expand Down Expand Up @@ -56,16 +57,16 @@ class ClientExceptionBase(Exception):
"""client base exception"""

_message = None # the error message, should be unicode

def __init__(self, message=''):
if message is not None and not isinstance(message, six.text_type):
def __init__(self, message: Optional[str]='') -> None:
if message is not None and not isinstance(message, six.text_type):
message = message.decode('utf-8', 'ignore')
self._message = message

def __str__(self):
return '%s: %s' % (self.__class__.__name__, self._message)

def __repr__(self):
def __str__(self) -> str:
return u'%s: %s' % (self.__class__.__name__, self._message)
def __repr__(self) -> str:
return '<%s(message=%r)>' % (self.__class__.__name__, self._message)


Expand All @@ -76,17 +77,17 @@ class APIServerError(ClientExceptionBase):
_detailInfoType = None # str, the detailed error type given errorcode
_detailInfo = None # dcit, the detailed info
_inputcommand = None # the command sent to the server

def __init__(self, message, errorcode=None, inputcommand=None, detailInfoType=None, detailInfo=None):
def __init__(self, message: str, errorcode: Optional[int]=None, inputcommand: Optional[str]=None, detailInfoType: Optional[str]=None, detailInfo: Optional[dict]=None) -> None:
if message is not None and not isinstance(message, six.text_type):
message = message.decode('utf-8', 'ignore')
self._message = message
self._errorcode = errorcode
self._inputcommand = inputcommand
self._detailInfoType = detailInfoType
self._detailInfo = detailInfo

def __str__(self):
def __str__(self) -> str:
if self._message is not None:
return _('API Server Error: %s') % self._message

Expand All @@ -96,7 +97,7 @@ def __repr__(self):
return '<%s(message=%r, errorcode=%r, inputcommand=%r, detailInfoType=%r, detailInfo=%r)>' % (self.__class__.__name__, self._message, self._errorcode, self._inputcommand, self._detailInfoType, self._detailInfo)

@property
def message(self):
def message(self) -> str:
"""The error message from server."""
return self._message

Expand All @@ -106,16 +107,17 @@ def errorcode(self):
return self._errorcode

@property
def stacktrace(self):
def stacktrace(self) -> str:
"""The stack trace for the error"""
return ''

@property
def inputcommand(self):
def inputcommand(self) -> Optional[str]:
"""The command that was sent to the server. Could be None."""
return self._inputcommand

@property
def detailInfoType(self):
def detailInfoType(self) -> Optional[str]:
"""string for the detai info type"""
return self._detailInfoType

Expand All @@ -134,14 +136,16 @@ class AuthenticationError(ClientExceptionBase):


class WebstackClientError(ClientExceptionBase):
_response = None # http response that resulted in the error
"""Exeption class for errors returned by the web stack client"""
_response = None # http response that resulted in the error

def __init__(self, message='', response=None):
super(WebstackClientError, self).__init__(message)
self._response = response

@property
def response(self):
"""The http response that resulted in the error"""
return self._response


Expand Down
Loading