Skip to content

Commit f52f38e

Browse files
authored
Merge pull request #154 from alliander-opensource/fix/trafo-clock-error
Change error message and add unit tests
2 parents 287a789 + 3f6b628 commit f52f38e

File tree

4 files changed

+18
-11
lines changed

4 files changed

+18
-11
lines changed

src/power_grid_model/validation/errors.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ class TransformerClockError(MultiFieldValidationError):
432432
"""
433433

434434
_message = (
435-
"Even number is not possible if one side is wye winding and the other side is not wye winding.\n"
436-
"Odd number is not possible, if both sides are wye winding or both sides are not wye winding.\n"
437-
", for {n} {objects}."
435+
"Invalid clock number for {n} {objects}. "
436+
"If one side has wye winding and the other side has not, the clock number should be odd. "
437+
"If either both or none of the sides have wye winding, the clock number should be even."
438438
)

src/power_grid_model/validation/rules.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ def none_missing(data: SingleDataset, component: str, fields: Union[str, List[st
613613
return errors
614614

615615

616-
def all_clocks_valid(
616+
def all_valid_clocks(
617617
data: SingleDataset, component: str, clock_field: str, winding_from_field: str, winding_to_field: str
618618
) -> List[TransformerClockError]:
619619
"""

src/power_grid_model/validation/validation.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
all_between,
3535
all_between_or_at,
3636
all_boolean,
37-
all_clocks_valid,
3837
all_cross_unique,
3938
all_finite,
4039
all_greater_or_equal,
@@ -45,6 +44,7 @@
4544
all_not_two_values_equal,
4645
all_not_two_values_zero,
4746
all_unique,
47+
all_valid_clocks,
4848
all_valid_enum_values,
4949
all_valid_ids,
5050
none_missing,
@@ -405,7 +405,7 @@ def validate_transformer(data: SingleDataset) -> List[ValidationError]:
405405
errors += all_valid_enum_values(data, "transformer", "winding_from", WindingType)
406406
errors += all_valid_enum_values(data, "transformer", "winding_to", WindingType)
407407
errors += all_between_or_at(data, "transformer", "clock", 0, 12)
408-
errors += all_clocks_valid(data, "transformer", "clock", "winding_from", "winding_to")
408+
errors += all_valid_clocks(data, "transformer", "clock", "winding_from", "winding_to")
409409
errors += all_valid_enum_values(data, "transformer", "tap_side", BranchSide)
410410
errors += all_between_or_at(data, "transformer", "tap_pos", "tap_min", "tap_max")
411411
errors += all_between_or_at(data, "transformer", "tap_nom", "tap_min", "tap_max")
@@ -464,8 +464,8 @@ def validate_three_winding_transformer(data: SingleDataset) -> List[ValidationEr
464464
errors += all_valid_enum_values(data, "three_winding_transformer", "winding_3", WindingType)
465465
errors += all_between_or_at(data, "three_winding_transformer", "clock_12", 0, 12)
466466
errors += all_between_or_at(data, "three_winding_transformer", "clock_13", 0, 12)
467-
errors += all_clocks_valid(data, "three_winding_transformer", "clock_12", "winding_1", "winding_2")
468-
errors += all_clocks_valid(data, "three_winding_transformer", "clock_13", "winding_1", "winding_3")
467+
errors += all_valid_clocks(data, "three_winding_transformer", "clock_12", "winding_1", "winding_2")
468+
errors += all_valid_clocks(data, "three_winding_transformer", "clock_13", "winding_1", "winding_3")
469469
errors += all_valid_enum_values(data, "three_winding_transformer", "tap_side", Branch3Side)
470470
errors += all_between_or_at(data, "three_winding_transformer", "tap_pos", "tap_min", "tap_max")
471471
errors += all_between_or_at(data, "three_winding_transformer", "tap_nom", "tap_min", "tap_max")

tests/unit/validation/test_rules.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
all_not_two_values_equal,
4040
all_not_two_values_zero,
4141
all_unique,
42+
all_valid_clocks,
4243
all_valid_enum_values,
4344
all_valid_ids,
4445
none_match_comparison,
@@ -352,15 +353,21 @@ def test_all_finite():
352353

353354
dfoo = [("id", "i4"), ("foo", "f8")]
354355
dbar = [("id", "i4"), ("bar", "f8")]
355-
valid = {
356+
invalid = {
356357
"foo_test": np.array([(1, 0.1), (2, np.inf), (3, -0.3)], dtype=dfoo),
357358
"bar_test": np.array([(4, 0.4), (5, 0.5), (6, -np.inf)], dtype=dbar),
358359
}
359-
errors = all_finite(valid)
360+
errors = all_finite(invalid)
360361
assert len(errors) == 2
361362
assert InfinityError("foo_test", "foo", [2]) in errors
362363
assert InfinityError("bar_test", "bar", [6]) in errors
363364

364365

366+
@pytest.mark.skip("No unit tests available for none_missing")
365367
def test_none_missing():
366-
none_missing
368+
raise NotImplementedError(f"Unit test for {none_missing}")
369+
370+
371+
@pytest.mark.skip("No unit tests available for all_valid_clocks")
372+
def test_all_valid_clocks():
373+
raise NotImplementedError(f"Unit test for {all_valid_clocks}")

0 commit comments

Comments
 (0)