Skip to content

Commit 3442008

Browse files
committed
dependencies compatibility pandapower 2 and 3 and numpy 1 and 2
dependencies checked: pandapower==3 numpy==1.26.4 pandas==2.2.3 scipy==1.13.1 Signed-off-by: Martijn Govers <[email protected]> dependencies checked: pandapower==3 numpy>=2 pandas==2.2.3 scipy==1.13.1 Signed-off-by: Martijn Govers <[email protected]> dependencies checked: pandapower==2.14.11 numpy==1.26.4 pandas==2.2.3 scipy==1.13.1 Signed-off-by: Martijn Govers <[email protected]>
1 parent b2b5097 commit 3442008

File tree

4 files changed

+32
-16
lines changed

4 files changed

+32
-16
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ dynamic = ["version"]
4040

4141
[project.optional-dependencies]
4242
dev = [
43-
"pandapower>2.11.1, <3.0",
43+
"pandapower>2.11.1",
4444
"pre-commit",
4545
"pylint",
4646
"pytest",

src/power_grid_model_io/converters/pandapower_converter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ def _create_pgm_input_sym_loads(self):
598598
if pp_loads.empty:
599599
return
600600

601-
if self._get_pp_attr("load", "type", expected_type="O", default=None).any() == "delta":
601+
if np.any(self._get_pp_attr("load", "type", expected_type="O", default=None) == "delta"):
602602
raise NotImplementedError("Delta loads are not implemented, only wye loads are supported in PGM.")
603603

604604
scaling = self._get_pp_attr("load", "scaling", expected_type="f8", default=1.0)
@@ -656,7 +656,7 @@ def _create_pgm_input_asym_loads(self):
656656
if pp_asym_loads.empty:
657657
return
658658

659-
if self._get_pp_attr("asymmetric_load", "type", expected_type="O", default=None).any() == "delta":
659+
if np.any(self._get_pp_attr("asymmetric_load", "type", expected_type="O", default=None) == "delta"):
660660
raise NotImplementedError("Delta loads are not implemented, only wye loads are supported in PGM.")
661661

662662
scaling = self._get_pp_attr("asymmetric_load", "scaling", expected_type="f8")

tests/unit/converters/test_pandapower_converter_input.py

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
#
33
# SPDX-License-Identifier: MPL-2.0
44

5+
from importlib import metadata
56
from typing import Callable
67
from unittest.mock import ANY, MagicMock, call, patch
78

89
import numpy as np
910
import pandapower as pp
1011
import pandas as pd
1112
import pytest
13+
from packaging import version
1214
from power_grid_model import Branch3Side, BranchSide, LoadGenType, WindingType, initialize_array
1315

1416
from power_grid_model_io.converters.pandapower_converter import PandaPowerConverter
@@ -756,14 +758,19 @@ def test_create_pgm_input_transformers__tap_dependent_impedance() -> None:
756758
pp_net: pp.pandapowerNet = pp.create_empty_network()
757759
pp.create_bus(net=pp_net, vn_kv=0.0)
758760
args = [0, 0, 0, 0, 0, 0, 0, 0, 0]
759-
pp.create_transformer_from_parameters(pp_net, *args, tap_dependent_impedance=True)
760761

761-
converter = PandaPowerConverter()
762-
converter.pp_input_data = {k: v for k, v in pp_net.items() if isinstance(v, pd.DataFrame)}
762+
if version.Version(metadata.version("pandapower")) >= version.Version("3"):
763+
with pytest.deprecated_call():
764+
pp.create_transformer_from_parameters(pp_net, *args, tap_dependent_impedance=True)
765+
else:
766+
pp.create_transformer_from_parameters(pp_net, *args, tap_dependent_impedance=True)
763767

764-
# Act/Assert
765-
with pytest.raises(RuntimeError, match="not supported"):
766-
converter._create_pgm_input_transformers()
768+
converter = PandaPowerConverter()
769+
converter.pp_input_data = {k: v for k, v in pp_net.items() if isinstance(v, pd.DataFrame)}
770+
771+
# Act/Assert
772+
with pytest.raises(RuntimeError, match="not supported"):
773+
converter._create_pgm_input_transformers()
767774

768775

769776
@patch("power_grid_model_io.converters.pandapower_converter.initialize_array")
@@ -1462,14 +1469,19 @@ def test_create_pgm_input_three_winding_transformers__tap_dependent_impedance()
14621469
pp_net: pp.pandapowerNet = pp.create_empty_network()
14631470
pp.create_bus(net=pp_net, vn_kv=0.0)
14641471
args = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1465-
pp.create_transformer3w_from_parameters(pp_net, *args, tap_dependent_impedance=True)
14661472

1467-
converter = PandaPowerConverter()
1468-
converter.pp_input_data = {k: v for k, v in pp_net.items() if isinstance(v, pd.DataFrame)}
1473+
if version.Version(metadata.version("pandapower")) >= version.Version("3"):
1474+
with pytest.deprecated_call():
1475+
pp.create_transformer3w_from_parameters(pp_net, *args, tap_dependent_impedance=True)
1476+
else:
1477+
pp.create_transformer3w_from_parameters(pp_net, *args, tap_dependent_impedance=True)
14691478

1470-
# Act/Assert
1471-
with pytest.raises(RuntimeError, match="not supported"):
1472-
converter._create_pgm_input_three_winding_transformers()
1479+
converter = PandaPowerConverter()
1480+
converter.pp_input_data = {k: v for k, v in pp_net.items() if isinstance(v, pd.DataFrame)}
1481+
1482+
# Act/Assert
1483+
with pytest.raises(RuntimeError, match="not supported"):
1484+
converter._create_pgm_input_three_winding_transformers()
14731485

14741486

14751487
@patch("power_grid_model_io.converters.pandapower_converter.initialize_array")

tests/utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44

55
import sys
66
from copy import copy, deepcopy
7+
from importlib import metadata
78
from itertools import chain
89
from typing import Any, Dict, List, Mapping, MutableMapping, Optional, Tuple, Union
910
from unittest.mock import MagicMock
1011

1112
import numpy as np
1213
import pandas as pd
14+
from packaging import version
1315
from pandas.core.generic import NDFrame
1416

1517

@@ -71,7 +73,9 @@ class MockFn:
7173
__slots__ = ["fn", "args", "kwargs", "postfix"]
7274

7375
__array_struct__ = np.array([]).__array_struct__
74-
__array_prepare__ = np.array([]).__array_prepare__
76+
77+
if version.Version(metadata.version("numpy")) < version.Version("2"):
78+
__array_prepare__ = np.array([]).__array_prepare__ # type: ignore[attr-defined]
7579

7680
def __init__(self, fn: str, *args, **kwargs):
7781
self.fn = fn

0 commit comments

Comments
 (0)