Skip to content

Commit

Permalink
Merge pull request #492 from ekiwaka/remove-code-smell/python
Browse files Browse the repository at this point in the history
Refactoring Python code to eliminate code smells
  • Loading branch information
mgovers committed Feb 12, 2024
2 parents e7ea632 + c402ec8 commit 4353d99
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 29 deletions.
1 change: 0 additions & 1 deletion src/power_grid_model/core/power_grid_meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ def _generate_meta_component(component: ComponentPtr) -> ComponentMetaData:
nan_scalar = np.empty(1, dtype=dtype)
for key, value in nans.items():
nan_scalar[key] = value
# return component
return ComponentMetaData(dtype=dtype, dtype_dict=dtype_dict, nans=nans, nan_scalar=nan_scalar)


Expand Down
8 changes: 5 additions & 3 deletions src/power_grid_model/validation/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ class ValidationError(ABC):

_message: str = "An unknown validation error occurred."

_delimiter: str = " and "

@property
def component_str(self) -> str:
"""
Expand Down Expand Up @@ -153,7 +155,7 @@ def __init__(self, component: str, fields: List[str], ids: List[int]):

@property
def field_str(self) -> str:
return " and ".join(f"'{field}'" for field in self.field)
return self._delimiter.join(f"'{field}'" for field in self.field)


class MultiComponentValidationError(ValidationError):
Expand Down Expand Up @@ -189,7 +191,7 @@ def component_str(self) -> str:

@property
def field_str(self) -> str:
return " and ".join(f"{component}.{field}" for component, field in self.field)
return self._delimiter.join(f"{component}.{field}" for component, field in self.field)


class NotIdenticalError(SingleFieldValidationError):
Expand Down Expand Up @@ -377,7 +379,7 @@ def ref_value_str(self):
A string representation of the reference value. E.g. 'zero', 'one', 'field_a and field_b' or '123'.
"""
if isinstance(self.ref_value, tuple):
return " and ".join(map(str, self.ref_value))
return self._delimiter.join(map(str, self.ref_value))
if self.ref_value == 0:
return "zero"
if self.ref_value == 1:
Expand Down
43 changes: 18 additions & 25 deletions src/power_grid_model/validation/validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -334,9 +334,7 @@ def validate_required_values(
return list(chain(*(none_missing(data, component, required.get(component, [])) for component in data)))


def validate_values( # pylint: disable=too-many-branches
data: SingleDataset, calculation_type: Optional[CalculationType] = None
) -> List[ValidationError]:
def validate_values(data: SingleDataset, calculation_type: Optional[CalculationType] = None) -> List[ValidationError]:
"""
For each component supplied in the data, call the appropriate validation function
Expand All @@ -360,28 +358,23 @@ def validate_values( # pylint: disable=too-many-branches
)
)

if "node" in data:
errors += validate_node(data)
if "line" in data:
errors += validate_line(data)
if "link" in data:
errors += validate_branch(data, "link")
if "transformer" in data:
errors += validate_transformer(data)
if "three_winding_transformer" in data:
errors += validate_three_winding_transformer(data)
if "source" in data:
errors += validate_source(data)
if "sym_load" in data:
errors += validate_generic_load_gen(data, "sym_load")
if "sym_gen" in data:
errors += validate_generic_load_gen(data, "sym_gen")
if "asym_load" in data:
errors += validate_generic_load_gen(data, "asym_load")
if "asym_gen" in data:
errors += validate_generic_load_gen(data, "asym_gen")
if "shunt" in data:
errors += validate_shunt(data)
component_validators = {
"node": validate_node,
"line": validate_line,
"link": lambda d: validate_branch(d, "link"),
"transformer": validate_transformer,
"three_winding_transformer": validate_three_winding_transformer,
"source": validate_source,
"sym_load": lambda d: validate_generic_load_gen(d, "sym_load"),
"sym_gen": lambda d: validate_generic_load_gen(d, "sym_gen"),
"asym_load": lambda d: validate_generic_load_gen(d, "asym_load"),
"asym_gen": lambda d: validate_generic_load_gen(d, "asym_gen"),
"shunt": validate_shunt,
}

for component, validator in component_validators.items():
if component in data:
errors += validator(data)

if calculation_type in (None, CalculationType.state_estimation):
if "sym_voltage_sensor" in data:
Expand Down

0 comments on commit 4353d99

Please sign in to comment.