57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
|
|
from .request import TeaRequest
|
||
|
|
|
||
|
|
|
||
|
|
class TeaException(Exception):
|
||
|
|
def __init__(self, dic):
|
||
|
|
self.code = dic.get("code")
|
||
|
|
self.message = dic.get("message")
|
||
|
|
self.data = dic.get("data")
|
||
|
|
self.description = dic.get("description")
|
||
|
|
self.accessDeniedDetail = dic.get("accessDeniedDetail")
|
||
|
|
if isinstance(dic.get("data"), dict) and dic.get("data").get("statusCode") is not None:
|
||
|
|
self.statusCode = dic.get("data").get("statusCode")
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return f'Error: {self.code} {self.message} Response: {self.data}'
|
||
|
|
|
||
|
|
|
||
|
|
class ValidateException(Exception):
|
||
|
|
pass
|
||
|
|
|
||
|
|
|
||
|
|
class RequiredArgumentException(ValidateException):
|
||
|
|
def __init__(self, arg):
|
||
|
|
self.arg = arg
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return f'"{self.arg}" is required.'
|
||
|
|
|
||
|
|
|
||
|
|
class RetryError(Exception):
|
||
|
|
def __init__(self, message):
|
||
|
|
self.message = message
|
||
|
|
self.data = None
|
||
|
|
|
||
|
|
|
||
|
|
class UnretryableException(TeaException):
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
request: TeaRequest,
|
||
|
|
ex: Exception
|
||
|
|
):
|
||
|
|
self.last_request = request
|
||
|
|
self.inner_exception = ex
|
||
|
|
if isinstance(ex, TeaException):
|
||
|
|
super().__init__({
|
||
|
|
'code': ex.code,
|
||
|
|
'message': ex.message,
|
||
|
|
'data': ex.data
|
||
|
|
})
|
||
|
|
else:
|
||
|
|
super().__init__({
|
||
|
|
'message': repr(ex),
|
||
|
|
})
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return str(self.inner_exception)
|