diff --git a/validation/validate-mmcif-file.py b/validation/validate-mmcif-file.py index db01afd396b4c1627bb57802578c45a67ffac916..7f18e1fc273066d829e58c024b7e20281adeb3c0 100755 --- a/validation/validate-mmcif-file.py +++ b/validation/validate-mmcif-file.py @@ -820,19 +820,21 @@ class _CifCheck: ) continue # Invalid value - match = re.match( + for pttrn in [ r"^ERROR - In block \"(?P<dblock>.*)\", mandatory item " + r"\"(?P<itm>.*)\" has invalid value (?P<vle>.*) in row: " + r"\".*\" == \"\d+\"$", - line, - ) + ]: + if (match := re.match(pttrn, line)) is not None: + # ToDo: use the walrus operator := everywhere here + rprt["Invalid values"].add( + f'{match.group("itm")}={match.group("vle")}' + ) + if "dblock" in match.groupdict(): + _check_dblock_name(match.group("dblock"), rprt) + break if match is not None: - rprt["Invalid values"].add( - f'{match.group("itm")}={match.group("vle")}' - ) - _check_dblock_name(match.group("dblock"), rprt) continue - # Unmatched lines need to be added to above evaluation raise RuntimeError( f'Unmatched diagnosis line found:\n"""{line}"""'