diff --git a/src/pyrecest/utils/pairwise_covariance_features.py b/src/pyrecest/utils/pairwise_covariance_features.py index 89193b808..7c333ae0e 100644 --- a/src/pyrecest/utils/pairwise_covariance_features.py +++ b/src/pyrecest/utils/pairwise_covariance_features.py @@ -196,6 +196,8 @@ def _validate_control_scalar(value: Any, name: str, *, allow_zero: bool) -> floa if isinstance(scalar_value, bool): raise ValueError(f"{name} must be numeric, not boolean") + if isinstance(scalar_value, (str, bytes, bytearray)): + raise ValueError(f"{name} must be numeric") try: value_float = float(scalar_value) diff --git a/tests/test_pairwise_covariance_features.py b/tests/test_pairwise_covariance_features.py index b9aa8b3aa..87dca587f 100644 --- a/tests/test_pairwise_covariance_features.py +++ b/tests/test_pairwise_covariance_features.py @@ -67,7 +67,7 @@ def test_pairwise_mahalanobis_distances_rejects_ambiguous_regularization(self): means = array([[0.0], [0.0]]) covariance = zeros((2, 2, 1)) - for bad_regularization in (True, array([1.0])): + for bad_regularization in (True, "1.0", b"1.0", array([1.0])): with self.subTest(bad_regularization=bad_regularization): with self.assertRaisesRegex(ValueError, "regularization"): pairwise_mahalanobis_distances( @@ -134,7 +134,7 @@ def test_pairwise_covariance_shape_components_support_empty_stacks(self): def test_pairwise_covariance_shape_components_rejects_ambiguous_epsilon(self): covariances = zeros((2, 2, 1)) - for bad_epsilon in (True, array([1e-6])): + for bad_epsilon in (True, "1e-6", b"1e-6", array([1e-6])): with self.subTest(bad_epsilon=bad_epsilon): with self.assertRaisesRegex(ValueError, "epsilon"): pairwise_covariance_shape_components(