BIND 10 trac3239_3, updated. 782a17cac5214a4b5dae441b383b0504a40be9e9 [3239] Update exception messages returned when types mismatch
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Dec 6 10:01:59 UTC 2013
The branch, trac3239_3 has been updated
via 782a17cac5214a4b5dae441b383b0504a40be9e9 (commit)
from 8ef57d769740b0e9774bd912c1c28afdc1e418e3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 782a17cac5214a4b5dae441b383b0504a40be9e9
Author: Mukund Sivaraman <muks at isc.org>
Date: Fri Dec 6 15:07:09 2013 +0530
[3239] Update exception messages returned when types mismatch
We include the type of the received value so that the user can see the
type mismatch more clearly from the returned exception message.
-----------------------------------------------------------------------
Summary of changes:
src/lib/python/isc/config/config_data.py | 40 ++++++++++++++++++++++++------
1 file changed, 32 insertions(+), 8 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/python/isc/config/config_data.py b/src/lib/python/isc/config/config_data.py
index e2b1357..3683f33 100644
--- a/src/lib/python/isc/config/config_data.py
+++ b/src/lib/python/isc/config/config_data.py
@@ -53,6 +53,22 @@ def spec_part_is_any(spec_part):
return (type(spec_part) == dict and 'item_type' in spec_part and
spec_part['item_type'] == "any")
+def _type_as_string(value):
+ if type(value) == int:
+ return 'integer'
+ elif type(value) == float:
+ return 'real'
+ elif type(value) == bool:
+ return 'boolean'
+ elif type(value) == str:
+ return 'string'
+ elif type(value) == list:
+ return 'list'
+ elif type(value) == dict:
+ return 'map'
+ else:
+ return '<unknown>'
+
def check_type(spec_part, value):
"""Does nothing if the value is of the correct type given the
specification part relevant for the value. Raises an
@@ -65,27 +81,35 @@ def check_type(spec_part, value):
if data_type == "integer":
if type(value) != int:
- raise isc.cc.data.DataTypeError(str(value) + " is not an integer")
+ raise isc.cc.data.DataTypeError('%s is not an integer (%s was passed)' % \
+ (str(value), _type_as_string(value)))
if value > sys.maxsize:
- raise isc.cc.data.DataTypeError(str(value) + " is too large an integer")
+ raise isc.cc.data.DataTypeError('%s is too large an integer' % \
+ (str(value)))
elif data_type == "real":
if type(value) != float:
- raise isc.cc.data.DataTypeError(str(value) + " is not a real")
+ raise isc.cc.data.DataTypeError('%s is not a real (%s was passed)' % \
+ (str(value), _type_as_string(value)))
if float(value) > sys.float_info.max:
- raise isc.cc.data.DataTypeError(str(value) + " is too large a float")
+ raise isc.cc.data.DataTypeError('%s is too large for a float' % \
+ (str(value)))
elif data_type == "boolean" and type(value) != bool:
- raise isc.cc.data.DataTypeError(str(value) + " is not a boolean")
+ raise isc.cc.data.DataTypeError('%s is not a boolean (%s was passed)' % \
+ (str(value), _type_as_string(value)))
elif data_type == "string" and type(value) != str:
- raise isc.cc.data.DataTypeError(str(value) + " is not a string")
+ raise isc.cc.data.DataTypeError('%s is not a string (%s was passed)' % \
+ (str(value), _type_as_string(value)))
elif data_type == "list":
if type(value) != list:
- raise isc.cc.data.DataTypeError(str(value) + " is not a list")
+ raise isc.cc.data.DataTypeError('%s is not a list (%s was passed)' % \
+ (str(value), _type_as_string(value)))
else:
for element in value:
check_type(spec_part['list_item_spec'], element)
elif data_type == "map" and type(value) != dict:
# todo: check types of map contents too
- raise isc.cc.data.DataTypeError(str(value) + " is not a map")
+ raise isc.cc.data.DataTypeError('%s is not a map (%s was passed)' % \
+ (str(value), _type_as_string(value)))
def convert_type(spec_part, value):
"""Convert the given value(type is string) according specification
More information about the bind10-changes
mailing list