fix exceptions

Change-Id: I09f33386d5ae1499f157f3ffb7aa3b08b65e27db
Reviewed-on: https://forge.frm2.tum.de/review/17127
Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
This commit is contained in:
Enrico Faulhaber 2018-01-22 17:49:36 +01:00
parent 8e7908f9b7
commit 62c2434f0f

View File

@ -187,10 +187,8 @@ class EnumType(DataType):
v = int(v) v = int(v)
if v in self.entries: if v in self.entries:
raise ValueError( raise ValueError(
'keyword argument %r=%d is already assigned %r', 'keyword argument %r=%d is already assigned %r' %
k, (k, v, self.entries[v]))
v,
self.entries[v])
self.entries[v] = k self.entries[v] = k
# if len(self.entries) == 0: # if len(self.entries) == 0:
# raise ValueError('Empty enums ae not allowed!') # raise ValueError('Empty enums ae not allowed!')
@ -198,7 +196,7 @@ class EnumType(DataType):
self.reversed = {} self.reversed = {}
for k, v in self.entries.items(): for k, v in self.entries.items():
if v in self.reversed: if v in self.reversed:
raise ValueError('Mapping for %r=%r is not Unique!', v, k) raise ValueError('Mapping for %r=%r is not Unique!' % (v, k))
self.reversed[v] = k self.reversed[v] = k
self.as_json = ['enum', self.reversed.copy()] self.as_json = ['enum', self.reversed.copy()]
@ -212,8 +210,8 @@ class EnumType(DataType):
return self.reversed[value] return self.reversed[value]
if int(value) in self.entries: if int(value) in self.entries:
return int(value) return int(value)
raise ValueError('%r is not one of %s', str( raise ValueError('%r is not one of %s' %
value), ', '.join(self.reversed.keys())) (str(value), ', '.join(self.reversed.keys())))
def import_value(self, value): def import_value(self, value):
"""returns a python object from serialisation""" """returns a python object from serialisation"""
@ -226,8 +224,8 @@ class EnumType(DataType):
return value return value
if int(value) in self.entries: if int(value) in self.entries:
return self.entries[int(value)] return self.entries[int(value)]
raise ValueError('%r is not one of %s', str(value), raise ValueError('%r is not one of %s' %
', '.join(map(str, self.entries.keys()))) (str(value), ', '.join(map(str, self.entries.keys()))))
def from_string(self, text): def from_string(self, text):
value = text value = text
@ -261,15 +259,15 @@ class BLOBType(DataType):
def validate(self, value): def validate(self, value):
"""return the validated (internal) value or raise""" """return the validated (internal) value or raise"""
if type(value) not in [str, unicode]: if type(value) not in [str, unicode]:
raise ValueError('%r has the wrong type!', value) raise ValueError('%r has the wrong type!' % value)
size = len(value) size = len(value)
if size < self.minsize: if size < self.minsize:
raise ValueError( raise ValueError(
'%r must be at least %d bytes long!', value, self.minsize) '%r must be at least %d bytes long!' % (value, self.minsize))
if self.maxsize is not None: if self.maxsize is not None:
if size > self.maxsize: if size > self.maxsize:
raise ValueError( raise ValueError(
'%r must be at most %d bytes long!', value, self.maxsize) '%r must be at most %d bytes long!' % (value, self.maxsize))
return value return value
def export_value(self, value): def export_value(self, value):
@ -314,15 +312,15 @@ class StringType(DataType):
def validate(self, value): def validate(self, value):
"""return the validated (internal) value or raise""" """return the validated (internal) value or raise"""
if type(value) not in [str, unicode]: if type(value) not in [str, unicode]:
raise ValueError('%r has the wrong type!', value) raise ValueError('%r has the wrong type!' % value)
size = len(value) size = len(value)
if size < self.minsize: if size < self.minsize:
raise ValueError( raise ValueError(
'%r must be at least %d bytes long!', value, self.minsize) '%r must be at least %d bytes long!' % (value, self.minsize))
if self.maxsize is not None: if self.maxsize is not None:
if size > self.maxsize: if size > self.maxsize:
raise ValueError( raise ValueError(
'%r must be at most %d bytes long!', value, self.maxsize) '%r must be at most %d bytes long!' % (value, self.maxsize))
if '\0' in value: if '\0' in value:
raise ValueError( raise ValueError(
'Strings are not allowed to embed a \\0! Use a Blob instead!') 'Strings are not allowed to embed a \\0! Use a Blob instead!')
@ -356,7 +354,7 @@ class BoolType(DataType):
return False return False
if value in [1, '1', 'True', 'true', 'yes', 'on', True]: if value in [1, '1', 'True', 'true', 'yes', 'on', True]:
return True return True
raise ValueError('%r is not a boolean value!', value) raise ValueError('%r is not a boolean value!' % value)
def export_value(self, value): def export_value(self, value):
"""returns a python object fit for serialisation""" """returns a python object fit for serialisation"""
@ -409,15 +407,15 @@ class ArrayOf(DataType):
# check number of elements # check number of elements
if self.minsize is not None and len(value) < self.minsize: if self.minsize is not None and len(value) < self.minsize:
raise ValueError( raise ValueError(
'Array too small, needs at least %d elements!', 'Array too small, needs at least %d elements!' %
self.minsize) self.minsize)
if self.maxsize is not None and len(value) > self.maxsize: if self.maxsize is not None and len(value) > self.maxsize:
raise ValueError( raise ValueError(
'Array too big, holds at most %d elements!', self.minsize) 'Array too big, holds at most %d elements!' % self.minsize)
# apply subtype valiation to all elements and return as list # apply subtype valiation to all elements and return as list
return [self.subtype.validate(elem) for elem in value] return [self.subtype.validate(elem) for elem in value]
raise ValueError( raise ValueError(
'Can not convert %s to ArrayOf DataType!', repr(value)) 'Can not convert %s to ArrayOf DataType!' % repr(value))
def export_value(self, value): def export_value(self, value):
"""returns a python object fit for serialisation""" """returns a python object fit for serialisation"""
@ -454,8 +452,8 @@ class TupleOf(DataType):
try: try:
if len(value) != len(self.subtypes): if len(value) != len(self.subtypes):
raise ValueError( raise ValueError(
'Illegal number of Arguments! Need %d arguments.', len( 'Illegal number of Arguments! Need %d arguments.' %
self.subtypes)) (len(self.subtypes)))
# validate elements and return as list # validate elements and return as list
return [sub.validate(elem) return [sub.validate(elem)
for sub, elem in zip(self.subtypes, value)] for sub, elem in zip(self.subtypes, value)]
@ -500,19 +498,19 @@ class StructOf(DataType):
try: try:
if len(value.keys()) != len(self.named_subtypes.keys()): if len(value.keys()) != len(self.named_subtypes.keys()):
raise ValueError( raise ValueError(
'Illegal number of Arguments! Need %d arguments.', len( 'Illegal number of Arguments! Need %d arguments.' %
self.named_subtypes.keys())) len(self.named_subtypes.keys()))
# validate elements and return as dict # validate elements and return as dict
return dict((str(k), self.named_subtypes[k].validate(v)) return dict((str(k), self.named_subtypes[k].validate(v))
for k, v in value.items()) for k, v in value.items())
except Exception as exc: except Exception as exc:
raise ValueError('Can not validate %s: %s', repr(value), str(exc)) raise ValueError('Can not validate %s: %s' % (repr(value), str(exc)))
def export_value(self, value): def export_value(self, value):
"""returns a python object fit for serialisation""" """returns a python object fit for serialisation"""
if len(value.keys()) != len(self.named_subtypes.keys()): if len(value.keys()) != len(self.named_subtypes.keys()):
raise ValueError( raise ValueError(
'Illegal number of Arguments! Need %d arguments.', len( 'Illegal number of Arguments! Need %d arguments.' % len(
self.namd_subtypes.keys())) self.namd_subtypes.keys()))
return dict((str(k), self.named_subtypes[k].export_value(v)) return dict((str(k), self.named_subtypes[k].export_value(v))
for k, v in value.items()) for k, v in value.items())
@ -521,7 +519,7 @@ class StructOf(DataType):
"""returns a python object from serialisation""" """returns a python object from serialisation"""
if len(value.keys()) != len(self.named_subtypes.keys()): if len(value.keys()) != len(self.named_subtypes.keys()):
raise ValueError( raise ValueError(
'Illegal number of Arguments! Need %d arguments.', len( 'Illegal number of Arguments! Need %d arguments.' % len(
self.namd_subtypes.keys())) self.namd_subtypes.keys()))
return dict((str(k), self.named_subtypes[k].import_value(v)) return dict((str(k), self.named_subtypes[k].import_value(v))
for k, v in value.items()) for k, v in value.items())
@ -565,12 +563,12 @@ class Command(DataType):
try: try:
if len(value) != len(self.argtypes): if len(value) != len(self.argtypes):
raise ValueError( raise ValueError(
'Illegal number of Arguments! Need %d arguments.', len( 'Illegal number of Arguments! Need %d arguments.' %
self.argtypes)) len(self.argtypes))
# validate elements and return # validate elements and return
return [t.validate(v) for t, v in zip(self.argtypes, value)] return [t.validate(v) for t, v in zip(self.argtypes, value)]
except Exception as exc: except Exception as exc:
raise ValueError('Can not validate %s: %s', repr(value), str(exc)) raise ValueError('Can not validate %s: %s' % (repr(value), str(exc)))
def export_value(self, value): def export_value(self, value):
raise ProgrammingError('values of type command can not be transported!') raise ProgrammingError('values of type command can not be transported!')
@ -609,9 +607,9 @@ def get_datatype(json):
return json return json
if not isinstance(json, list): if not isinstance(json, list):
raise ValueError( raise ValueError(
'Can not interpret datatype %r, it should be a list!', json) 'Can not interpret datatype %r, it should be a list!' % json)
if len(json) < 1: if len(json) < 1:
raise ValueError('can not validate %r', json) raise ValueError('can not validate %r' % json)
base = json[0] base = json[0]
if base in DATATYPES: if base in DATATYPES:
if base in ('enum', 'struct'): if base in ('enum', 'struct'):
@ -624,5 +622,5 @@ def get_datatype(json):
try: try:
return DATATYPES[base](*args) return DATATYPES[base](*args)
except (TypeError, AttributeError): except (TypeError, AttributeError):
raise ValueError('Invalid datatype descriptor in %r', json) raise ValueError('Invalid datatype descriptor in %r' % json)
raise ValueError('can not convert %r to datatype', json) raise ValueError('can not convert %r to datatype' % json)