From 9fa1430d75e9ceaf44ceddd4dc3e257f12b75017 Mon Sep 17 00:00:00 2001 From: PedroHMCosme Date: Thu, 22 Oct 2026 10:57:53 -0300 Subject: [PATCH] fix(metrics): name the wrapper mock correctly and document NaN r2 with one valid pair (SIENTIAPDE-2215) --- model_manager/utils/repository/data_manager_repository.py | 2 +- tests/utils/repository/test_data_manager_repository.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/model_manager/utils/repository/data_manager_repository.py b/model_manager/utils/repository/data_manager_repository.py index 33454ca..1ad874b 100644 --- a/model_manager/utils/repository/data_manager_repository.py +++ b/model_manager/utils/repository/data_manager_repository.py @@ -358,7 +358,7 @@ class DataManagerRepository(SientiaMonitoring): behavior, assuming that predictions (y_pred/y_train_pred) are already on the correct scale for metric calculation (any scaling is handled inside the model wrapper). Pairs with a NaN target or a NaN prediction are left out of - mse/mae/r2. + mse/mae/r2. With a single valid pair left, r2_val is NaN (R² needs 2 samples). Args: tmr: Training result containing: diff --git a/tests/utils/repository/test_data_manager_repository.py b/tests/utils/repository/test_data_manager_repository.py index 85abfe7..c0b7e7c 100644 --- a/tests/utils/repository/test_data_manager_repository.py +++ b/tests/utils/repository/test_data_manager_repository.py @@ -343,10 +343,10 @@ def test_compute_regression_metrics_all_nan_pairs_raises(): val_data=pd.DataFrame({'t': [1.0, 2.0]}, index=idx), y_pred=pd.DataFrame({'p': [np.nan, np.nan]}, index=idx), ) - metadata = MagicMock() + wrapper = MagicMock() with pytest.raises(ValueError, match='No validation rows with both target and prediction'): - repo.compute_regression_metrics(tmr, metadata) + repo.compute_regression_metrics(tmr, wrapper) def test_compute_regression_metrics_linear_equation():