From 7f2980cd5cac31f918ac0ede86ea0d4e950dbf9a Mon Sep 17 00:00:00 2001 From: Thijs Baaijen <13253091+Thijss@users.noreply.github.com> Date: Fri, 7 Feb 2025 09:39:40 +0100 Subject: [PATCH] Fix bug with floating subdtypes Signed-off-by: Thijs Baaijen <13253091+Thijss@users.noreply.github.com> --- .../_core/model/constants.py | 2 +- tests/unit/model/arrays/test_build.py | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/power_grid_model_ds/_core/model/constants.py b/src/power_grid_model_ds/_core/model/constants.py index 41719d6..7f3e410 100644 --- a/src/power_grid_model_ds/_core/model/constants.py +++ b/src/power_grid_model_ds/_core/model/constants.py @@ -16,7 +16,7 @@ def empty(dtype: type): return "" if np.issubdtype(dtype, np.dtype("bool")): return False - if np.issubdtype(dtype, np.float64): + if np.issubdtype(dtype, np.floating): return np.nan try: return np.iinfo(dtype).min diff --git a/tests/unit/model/arrays/test_build.py b/tests/unit/model/arrays/test_build.py index 07cab51..9244f13 100644 --- a/tests/unit/model/arrays/test_build.py +++ b/tests/unit/model/arrays/test_build.py @@ -41,6 +41,17 @@ class ChildArray(DefaultedFancyTestArray): test_float4: NDArray[np.float64] +class SizedDTypesArray(FancyArray): + test_float16: NDArray[np.float16] + test_float32: NDArray[np.float32] + test_float64: NDArray[np.float64] + + test_int8: NDArray[np.int8] + test_int16: NDArray[np.int16] + test_int32: NDArray[np.int32] + test_int64: NDArray[np.int64] + + def test_build_without_array_definition(): with pytest.raises(ArrayDefinitionError): FancyArray() @@ -166,6 +177,19 @@ def test_empty(): assert_array_equal([min_int64] * 3, array.test_int) +def test_empty_with_sized_dtypes(): + array = SizedDTypesArray.empty(1) + + assert_array_equal([np.iinfo(np.int8).min], array.test_int8) + assert_array_equal([np.iinfo(np.int16).min], array.test_int16) + assert_array_equal([np.iinfo(np.int32).min], array.test_int32) + assert_array_equal([np.iinfo(np.int64).min], array.test_int64) + + assert_array_equal([np.nan], array.test_float16) + assert_array_equal([np.nan], array.test_float32) + assert_array_equal([np.nan], array.test_float64) + + def test_empty_with_defaults(): array = DefaultedFancyTestArray.empty(3) assert 3 == array.size