diff --git a/sbysrc/sby_status.py b/sbysrc/sby_status.py index 9daa76e..f608b18 100644 --- a/sbysrc/sby_status.py +++ b/sbysrc/sby_status.py @@ -465,24 +465,26 @@ class SbyStatusDb: except KeyError: prop_map[key] = prop_status_map = {} - current_depth, _, current_kind = prop_status_map.get(status, (None, None, None)) + try: + current_depth, _, current_kind = prop_status_map[status] + except KeyError: + prop_status_map[status] = (this_depth, row, this_kind) + continue + update_map = False - if current_depth is None: - if current_kind is None: - update_map = True - elif this_kind in ['fst', 'vcd']: - # prefer traces over witness files - update_map = True - elif this_depth is not None: + if current_depth is None and current_kind is None: + # no depth or kind to compare, just take latest data + update_map = True + elif this_depth is not None and this_depth != current_depth: if status == 'FAIL' and this_depth < current_depth: # earliest fail update_map = True elif status != 'FAIL' and this_depth > current_depth: # latest non-FAIL update_map = True - elif this_depth == current_depth and this_kind in ['fst', 'vcd']: - # prefer traces over witness files - update_map = True + elif this_kind in ['fst', 'vcd']: + # prefer traces over witness files + update_map = True if update_map: prop_status_map[status] = (this_depth, row, this_kind)