From 42edf8d2907b3e3d3ecdc40153fd3f49cde6ea46 Mon Sep 17 00:00:00 2001 From: Benedikt Hegner Date: Mon, 21 Aug 2023 13:38:03 +0200 Subject: [PATCH] fixing member parsing for a definition without comment but with unit --- python/podio/podio_config_reader.py | 13 ++++++------- tests/datalayout.yaml | 8 ++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/python/podio/podio_config_reader.py b/python/podio/podio_config_reader.py index d40ae3178..303632367 100644 --- a/python/podio/podio_config_reader.py +++ b/python/podio/podio_config_reader.py @@ -49,8 +49,8 @@ class MemberParser: member_re = re.compile(rf' *{type_str} +{name_str} *{def_val_str} *{unit_str} *{comment_str}') # For cases where we don't require a description - bare_member_re = re.compile(rf' *{type_str} +{name_str} *{def_val_str}') - bare_array_re = re.compile(rf' *{array_str} +{name_str} *{def_val_str}') + bare_member_re = re.compile(rf' *{type_str} +{name_str} *{def_val_str} *{unit_str}') + bare_array_re = re.compile(rf' *{array_str} +{name_str} *{def_val_str} *{unit_str}') @staticmethod def _parse_with_regexps(string, regexps_callbacks): @@ -60,7 +60,6 @@ def _parse_with_regexps(string, regexps_callbacks): result = rgx.match(string) if result: return callback(result) - raise DefinitionError(f"'{string}' is not a valid member definition. Check syntax of the member definition.") @staticmethod @@ -79,14 +78,14 @@ def _full_member_conv(result): @staticmethod def _bare_array_conv(result): """MemberVariable construction for array members without docstring""" - typ, size, name, def_val = result.groups() - return MemberVariable(name=name, array_type=typ, array_size=size, default_val=def_val) + typ, size, name, def_val, unit = result.groups() + return MemberVariable(name=name, array_type=typ, array_size=size, unit=unit, default_val=def_val) @staticmethod def _bare_member_conv(result): """MemberVarible construction for members without docstring""" - klass, name, def_val = result.groups() - return MemberVariable(name=name, type=klass, default_val=def_val) + klass, name, def_val, unit = result.groups() + return MemberVariable(name=name, type=klass, unit=unit, default_val=def_val) def parse(self, string, require_description=True): """Parse the passed string""" diff --git a/tests/datalayout.yaml b/tests/datalayout.yaml index 38afb58d0..06f8e3075 100755 --- a/tests/datalayout.yaml +++ b/tests/datalayout.yaml @@ -11,10 +11,10 @@ options : components : SimpleStruct: Members: - - int x - - int y - - int z - - std::array p + - int x [mm] + - int y [mm] + - int z [mm] + - std::array p [mm] # can also add c'tors: ExtraCode : declaration: "