From: Henryk Plötz Date: Thu, 9 Aug 2018 10:30:02 +0000 (+0200) Subject: Make error exceptions more helpful X-Git-Tag: v2.0.0~1^2~143 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3de7d7f0dc8a3b85c20c2399484a792491d7a59;p=thirdparty%2Fpython-fints.git Make error exceptions more helpful --- diff --git a/fints/parser.py b/fints/parser.py index 26c0664..11f864c 100644 --- a/fints/parser.py +++ b/fints/parser.py @@ -193,29 +193,36 @@ class FinTS3Parser: is_last = number == len(retval._fields)-1 if not repeat: - if not constructed: - try: - setattr(retval, name, next(data_i)) - except StopIteration: - if required and field.required: - raise ValueError("Required field {}.{} was not present".format(retval.__class__.__name__, name)) - break - else: - deg = self.parse_deg(field.type, data_i, required and field.required) - setattr(retval, name, deg) - else: - i = 0 - while True: + try: if not constructed: try: - getattr(retval, name)[i] = next(data_i) + setattr(retval, name, next(data_i)) except StopIteration: + if required and field.required: + raise ValueError("Required field {}.{} was not present".format(retval.__class__.__name__, name)) break - else: - require_last = (field.max_count is None) if is_last else True - deg = self.parse_deg(field.type, data_i, require_last and required and field.required) - getattr(retval, name)[i] = deg + deg = self.parse_deg(field.type, data_i, required and field.required) + setattr(retval, name, deg) + except ValueError as e: + raise ValueError("Wrong input when setting {}.{}".format(retval.__class__.__name__, name)) from e + else: + i = 0 + while True: + try: + if not constructed: + try: + getattr(retval, name)[i] = next(data_i) + except StopIteration: + break + + else: + require_last = (field.max_count is None) if is_last else True + deg = self.parse_deg(field.type, data_i, require_last and required and field.required) + getattr(retval, name)[i] = deg + + except ValueError as e: + raise ValueError("Wrong input when setting {}.{}".format(retval.__class__.__name__, name)) from e i = i + 1