datatypes: add more detail to error messages

the error messages for tuple and array swallow all details useful for
debugging. add the original exception for some context

Change-Id: I8e1036bfab10c09d5f9c8af05ac3306af89f54c4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33850
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
Alexander Zaft 2024-06-05 12:58:58 +02:00 committed by Markus Zolliker
parent 69938f7ce8
commit 89df37462c

View File

@ -802,7 +802,7 @@ class ArrayOf(DataType):
return tuple(self.members(v) for v in value)
except Exception as e:
errcls = RangeError if isinstance(e, RangeError) else WrongTypeError
raise errcls('can not convert some array elements') from e
raise errcls(f'can not convert some array elements: {e!r}') from e
def validate(self, value, previous=None):
self.check_type(value)
@ -812,7 +812,7 @@ class ArrayOf(DataType):
return tuple(self.members.validate(v) for v in value)
except Exception as e:
errcls = RangeError if isinstance(e, RangeError) else WrongTypeError
raise errcls('some array elements are invalid') from e
raise errcls(f'some array elements are invalid: {e!r}') from e
def export_value(self, value):
"""returns a python object fit for serialisation"""
@ -897,7 +897,7 @@ class TupleOf(DataType):
return tuple(sub(elem) for sub, elem in zip(self.members, value))
except Exception as e:
errcls = RangeError if isinstance(e, RangeError) else WrongTypeError
raise errcls('can not convert some tuple elements') from e
raise errcls(f'can not convert some tuple elements: {e!r}') from e
def validate(self, value, previous=None):
self.check_type(value)
@ -907,7 +907,7 @@ class TupleOf(DataType):
return tuple(sub.validate(v, p) for sub, v, p in zip(self.members, value, previous))
except Exception as e:
errcls = RangeError if isinstance(e, RangeError) else WrongTypeError
raise errcls('some tuple elements are invalid') from e
raise errcls(f'some tuple elements are invalid: {e!r}') from e
def export_value(self, value):
"""returns a python object fit for serialisation"""