1010 check_viz_type ,
1111 get_dimension_uri_set ,
1212 get_metric_uri_set ,
13+ normalized_filters ,
1314 validate_cross_references ,
1415)
1516
17+ _NO_FILTERS : dict [str , list [str ]] = {"date" : [], "ranking" : [], "attribute" : []}
18+
1619
1720@dataclass
1821class EvaluationResult :
@@ -31,6 +34,11 @@ class EvaluationResult:
3134 actual_metric_uris : set [str ]
3235 expected_dim_uris : set [str ]
3336 actual_dim_uris : set [str ]
37+ # Filters in the canonical form equality is tested on, keyed by the category each
38+ # `filter_*_score` covers. Reported alongside the booleans because a filter mismatch
39+ # is otherwise undiagnosable from a finished run.
40+ expected_filters : dict [str , list [str ]]
41+ actual_filters : dict [str , list [str ]]
3442
3543 @property
3644 def strict_pass (self ) -> bool :
@@ -91,6 +99,8 @@ def _evaluate_visualization(
9199 actual_metric_uris = set (),
92100 expected_dim_uris = exp_dim_uris ,
93101 actual_dim_uris = set (),
102+ expected_filters = normalized_filters (expected ),
103+ actual_filters = {category : values .copy () for category , values in _NO_FILTERS .items ()},
94104 )
95105 cross_ref_valid , cross_ref_errors = validate_cross_references (actual )
96106 act_metric_uris = get_metric_uri_set (actual )
@@ -112,6 +122,8 @@ def _evaluate_visualization(
112122 actual_metric_uris = act_metric_uris ,
113123 expected_dim_uris = exp_dim_uris ,
114124 actual_dim_uris = act_dim_uris ,
125+ expected_filters = normalized_filters (expected ),
126+ actual_filters = normalized_filters (actual ),
115127 )
116128
117129
@@ -174,5 +186,7 @@ def evaluate(self, item: DatasetItem, chat_result: ChatResult) -> ItemEvaluation
174186 "actual_metric_uris" : sorted (ev .actual_metric_uris ),
175187 "expected_dim_uris" : sorted (ev .expected_dim_uris ),
176188 "actual_dim_uris" : sorted (ev .actual_dim_uris ),
189+ "expected_filters" : ev .expected_filters ,
190+ "actual_filters" : ev .actual_filters ,
177191 },
178192 )
0 commit comments