Skip to content

Commit 2f566ef

Browse files
authored
Merge pull request #266 from PowerGridModel/fix/empty-array-remove
Dont return empty array on filters
2 parents c89d49a + bf085c1 commit 2f566ef

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

src/power_grid_model_io/converters/tabular_converter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ def _convert_table_to_component(
180180

181181
if "filters" in attributes:
182182
table_mask = self._parse_table_filters(data=data, table=table, filtering_functions=attributes["filters"])
183+
if table_mask is not None and not table_mask.any():
184+
return None
183185
else:
184186
table_mask = None
185187

tests/unit/converters/test_tabular_converter.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,16 @@ def tabular_data():
5151
)
5252
lines = pd.DataFrame(data=[[1, 100], [2, 200]], columns=["id_number", "from_node_side"])
5353
loads = pd.DataFrame(data=[[1, 1, 1], [2, 2, 0]], columns=["id_number", "node_id", "switching_status"])
54-
tabular_data = TabularData(nodes=nodes, lines=lines, loads=loads)
55-
return tabular_data
54+
sources = pd.DataFrame(columns=["id_number", "node_side"])
55+
return TabularData(nodes=nodes, lines=lines, loads=loads, sources=sources)
5656

5757

5858
@pytest.fixture
5959
def tabular_data_no_units_no_substitutions():
6060
nodes = pd.DataFrame(data=[[1, 10.5e3], [2, 400.0]], columns=["id_number", "u_nom"])
6161
lines = pd.DataFrame(data=[[1, 2], [3, 1]], columns=["id_number", "from_node_side"])
62-
tabular_data = TabularData(nodes=nodes, lines=lines)
63-
return tabular_data
62+
sources = pd.DataFrame(columns=["id_number", "node_side"])
63+
return TabularData(nodes=nodes, lines=lines, sources=sources)
6464

6565

6666
def test_set_mapping_file(converter: TabularConverter):
@@ -175,6 +175,31 @@ def test_convert_table_to_component__filters(
175175
)
176176

177177

178+
def test_convert_table_to_component__filters_all_false(
179+
converter: TabularConverter, tabular_data_no_units_no_substitutions: TabularData
180+
):
181+
converter._convert_col_def_to_attribute = MagicMock()
182+
converter._parse_table_filters = MagicMock()
183+
converter._parse_table_filters.side_effect = np.array([False, False])
184+
node_attributes_with_filter = {"id": "id_number", "u_rated": "u_nom", "filters": [{"test_fn": {}}]}
185+
actual = converter._convert_table_to_component(
186+
data=tabular_data_no_units_no_substitutions,
187+
data_type="input",
188+
table="nodes",
189+
component="node",
190+
attributes=node_attributes_with_filter,
191+
extra_info=None,
192+
)
193+
194+
assert actual is None
195+
converter._parse_table_filters.assert_called_once_with(
196+
data=tabular_data_no_units_no_substitutions,
197+
table="nodes",
198+
filtering_functions=node_attributes_with_filter["filters"],
199+
)
200+
converter._convert_col_def_to_attribute.assert_not_called()
201+
202+
178203
def test_convert_col_def_to_attribute(
179204
converter: TabularConverter,
180205
tabular_data_no_units_no_substitutions: TabularData,

0 commit comments

Comments
 (0)