@@ -636,3 +636,49 @@ def test_filtering_six_classifications_inline(
636636 assert m in expected_metrics
637637 for m in expected_metrics :
638638 assert m in actual_metrics
639+
640+
641+ def test_filtering_remove_all (
642+ loader : Loader ,
643+ six_classifications : list [Classification ],
644+ tmp_path : Path ,
645+ ):
646+
647+ loader .add_data (six_classifications )
648+ evaluator = loader .finalize ()
649+
650+ datums = pc .field ("datum_uid" ) == "does_not_exist"
651+
652+ # test evaluation
653+ base_metrics = evaluator .compute_precision_recall (datums = datums )
654+ with pytest .raises (TypeError ) as e :
655+ evaluator .compute_rocauc (datums = datums ) # type: ignore - testing
656+ assert "unexpected keyword" in str (e )
657+ confusion = evaluator .compute_confusion_matrix (datums = datums )
658+ examples = evaluator .compute_examples (datums = datums )
659+
660+ for k , mlist in base_metrics .items ():
661+ for m in mlist :
662+ if k == MetricType .Counts :
663+ assert isinstance (m .value , dict )
664+ for v in m .value .values ():
665+ assert isinstance (v , int )
666+ assert v >= 0
667+ else :
668+ assert isinstance (m .value , float )
669+ assert m .value <= 1.0
670+ assert m .value >= 0.0
671+ for cm in confusion :
672+ assert isinstance (cm .value , dict )
673+ for row in cm .value ["confusion_matrix" ].values ():
674+ for v in row .values ():
675+ assert isinstance (v , int )
676+ assert v >= 0
677+ for v in cm .value ["unmatched_ground_truths" ].values ():
678+ assert isinstance (v , int )
679+ assert v >= 0
680+ for example in examples :
681+ assert isinstance (example , dict )
682+ for v in example .values ():
683+ if isinstance (v , list ):
684+ assert len (v ) == 0
0 commit comments