RichErr is a tiny module that gives you basic error class, which can be used in JSON, dict, list, and other mutation
from richerr import RichErr
print(RichErr.convert(ValueError('Hello world!')).json(indent=2))
{
"error": {
"code": 400,
"exception": "BadRequest",
"message": "Hello world!",
"caused_by": {
"error": {
"code": 500,
"exception": "ValueError",
"message": "Hello world!",
"caused_by": null
}
}
}
}
poetry add RichErr
pip install RichErr
- Python 3.12+
- No package dependencies
- Supported Django Validation and ObjectNotFound errors
- Supported DRF Validation errors
- Supported Pydantic Validation errors
Add direct conversion
from richerr import RichErr, GatewayTimeout
class MyTimeoutError(IOError): ...
RichErr.add_conversion(MyTimeoutError, GatewayTimeout)
Or add conversion method
from richerr import RichErr
class MyTimeoutError(IOError): ...
def _convert(err: MyTimeoutError):
return RichErr.from_error(err, message='Something happened', code=500, name='MyTimeoutError')
RichErr.add_conversion(MyTimeoutError, _convert)
!!! Subclasses will be checked before their parent, if multiple classes in same MRO will be registered. !!!