# -*- coding: utf-8 -*- from __future__ import annotations import typing from .backend import BackendServiceError class SOAError(Exception): def __init__(self, code: int, message: str, *args): super().__init__(code, message, *args) self.code = code self.message = message self.data: typing.Any = None if len(args) > 0: self.data = args[0] @classmethod def from_backend_error(cls: type[typing.Self], exception: BackendServiceError) -> typing.Self: result = cls( exception.CODE.value, exception.message, exception.data, ) result.__cause__ = exception return result