Customized Exception class
Project description
This is an error class that I keep remaking in projects
Usage
The point of this exception class is to be able to create an error class that automatically combines keyword arguments given to the exception instance:
>>> from delfick_error import DelfickError
>>> DelfickError()
DelfickError('',)
>>> str(DelfickError())
''
>>> str(DelfickError("blah"))
'"blah"'
>>> str(DelfickError("blah", a=1, b=2))
'"blah"\ta=1\tb=2'
You can also subclass DelfickError and override the description of the error:
>>> class AnError(DelfickError):
... desc = "An error specific to something"
...
>>> AnError()
AnError('',)
>>> str(AnError("things"))
'"An error specific to something. things"'
>>> str(AnError("things", a=1, b=2))
'"An error specific to something. things"\ta=1\tb=2'
You can also use it to display multiple errors:
>>> ex1 = ValueError("Bad value")
>>> ex2 = IndexError("Bad index")
>>> ex3 = Exception("blah")
>>> str(AnError("found errors", _errors=[ex1, ex2, ex3]))
'"An error specific to something. found errors"\nerrors:\n\tBad value\n\tBad index\n\tblah'
>>> print str(AnError("found errors", _errors=[ex1, ex2, ex3]))
"An error specific to something. found errors"
errors:
Bad value
Bad index
blah
>>>
Here, the _errors argument is interpreted using special logic to put each item in it’s list on a new line.
DelfickError also has a mechanism to allow you to control how the error is formatted when converting the error to a string.
>>> class SomeObject(object):
... def __init__(self, val):
... self.val = val
... def delfick_error_format(self, key):
... return "{0}_formatted_{1}".format(self.val, key)
...
>>> obj = SomeObject(20)
>>> str(DelfickError(a=1, b=obj))
'a=1\tb=20_formatted_b'
Changelog
- 1.1
Now with tests!
And DelfickErrorTestMixin for your testing pleasure
- 1.0
Initial release
Installation
Use pip!:
pip install delfick_error
Or if you’re developing it:
pip install -e .
pip install -e ".[tests]"
Tests
To run the tests in this project, just use the helpful script:
./test.sh
Or run tox:
tox
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.