From 118382daf1280f227d0527d10b68ba11471cd5eb Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk <21087696+oleksandr-pavlyk@users.noreply.github.com> Date: Thu, 25 Jun 2026 12:14:04 -0500 Subject: [PATCH] ComparisonThresholds no longer provides constructor with defaults Test file changed to use get_default_thresholds() function instead of call to constructor. This is to make sure that default preset values do not diverge from values encoded in the constructor. --- python/scripts/nvbench_compare.py | 16 ++++++++-------- python/test/test_nvbench_compare.py | 20 +++++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/python/scripts/nvbench_compare.py b/python/scripts/nvbench_compare.py index 8fca47c..58ae522 100644 --- a/python/scripts/nvbench_compare.py +++ b/python/scripts/nvbench_compare.py @@ -74,14 +74,14 @@ def read_float32_file(filename: str) -> object: @dataclass(frozen=True) class ComparisonThresholds: - clear_gap_relative: float = 0.005 - same_center_relative: float = 0.005 - same_overlap_fraction: float = 0.5 - same_relative_dispersion_ceiling: float = 0.02 - bulk_same_sample_coverage: float = 0.99 - bulk_same_support_coverage: float = 0.80 - bulk_support_rare_sample_fraction: float = 0.001 - bulk_support_max_removed_sample_fraction: float = 0.01 + clear_gap_relative: float + same_center_relative: float + same_overlap_fraction: float + same_relative_dispersion_ceiling: float + bulk_same_sample_coverage: float + bulk_same_support_coverage: float + bulk_support_rare_sample_fraction: float + bulk_support_max_removed_sample_fraction: float COMPARISON_THRESHOLD_PRESET_VALUES = { diff --git a/python/test/test_nvbench_compare.py b/python/test/test_nvbench_compare.py index 36b9eee..eed2414 100644 --- a/python/test/test_nvbench_compare.py +++ b/python/test/test_nvbench_compare.py @@ -1235,12 +1235,12 @@ def test_bulk_same_reports_sample_weight_coverage_mismatch(nvbench_compare): ref_values, cmp_values, label="time", - thresholds=nvbench_compare.ComparisonThresholds(), + thresholds=nvbench_compare.get_default_thresholds(), ) assert decision.status == nvbench_compare.ComparisonStatus.UNDECIDED assert decision.reason.code == "bulk_time_support_mismatch" - assert "sample: min(ref=3.8%, cmp=100.0%) >= 99.0%" in decision.reason.message + assert "sample: min(ref=3.8%, cmp=100.0%) >= 97.0%" in decision.reason.message assert "support: min(ref=80.0%, cmp=100.0%) >= 80.0%" in decision.reason.message @@ -1252,7 +1252,7 @@ def test_bulk_same_filters_rare_values_from_support_coverage(nvbench_compare): ref_values, cmp_values, label="time", - thresholds=nvbench_compare.ComparisonThresholds(), + thresholds=nvbench_compare.get_default_thresholds(), ) assert decision.status == nvbench_compare.ComparisonStatus.SAME @@ -1267,14 +1267,15 @@ def test_bulk_same_reports_unique_support_coverage_mismatch(nvbench_compare): ref_values, cmp_values, label="time", - thresholds=nvbench_compare.ComparisonThresholds( - bulk_support_max_removed_sample_fraction=0.005 + thresholds=replace( + nvbench_compare.get_default_thresholds(), + bulk_support_max_removed_sample_fraction=0.005, ), ) assert decision.status == nvbench_compare.ComparisonStatus.UNDECIDED assert decision.reason.code == "bulk_time_support_mismatch" - assert "sample: min(ref=99.0%, cmp=100.0%) >= 99.0%" in decision.reason.message + assert "sample: min(ref=99.0%, cmp=100.0%) >= 97.0%" in decision.reason.message assert "support: min(ref=9.1%, cmp=100.0%) >= 80.0%" in decision.reason.message @@ -1282,7 +1283,8 @@ def test_bulk_same_retains_full_support_when_all_values_are_unique(nvbench_compa coverages = nvbench_compare.compute_nearest_neighbor_coverages( [1.0, 1.02], [1.0], - thresholds=nvbench_compare.ComparisonThresholds( + thresholds=replace( + nvbench_compare.get_default_thresholds(), bulk_support_rare_sample_fraction=1.0, bulk_support_max_removed_sample_fraction=1.0, ), @@ -1455,8 +1457,8 @@ def test_compare_benches_accepts_custom_comparison_thresholds( dark=False, filter_plan=make_filter_plan(nvbench_compare), no_color=True, - comparison_thresholds=nvbench_compare.ComparisonThresholds( - same_center_relative=0.02 + comparison_thresholds=replace( + nvbench_compare.get_default_thresholds(), same_center_relative=0.02 ), )