Skip to content

Commit 226eb67

Browse files
authored
More pp tests (#29)
1 parent b7cf7cc commit 226eb67

27 files changed

+442
-115
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ repos:
1212
- repo: https://github.com/astral-sh/ruff-pre-commit
1313
rev: v0.12.1 # must match uv.lock
1414
hooks:
15-
- id: ruff
15+
- id: ruff-check
1616
- id: ruff-format

stubs/pandapower-stubs/_typing.pyi

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,8 @@ class SupportsGeoInterface(Protocol):
3737
def __geo_interface__(self) -> dict[str, Any]: ... # values are arbitrary
3838

3939
ConvertibleToCRS: TypeAlias = str | int | tuple[str, str] | list[str] | dict[str, Any] | SupportsToWkt
40+
41+
from pandapower.auxiliary import pandapowerNet # noqa: E402
42+
43+
class RunPPFunc(Protocol):
44+
def __call__(self, net: pandapowerNet, *, calculate_voltage_angles: bool, **kwargs) -> object: ...

stubs/pandapower-stubs/auxiliary.pyi

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,13 @@ import pandas as pd
99
from numpy.typing import ArrayLike, DTypeLike, NDArray
1010
from shapely.geometry.base import BaseGeometry
1111

12-
from pandapower._typing import Float, Int
12+
from pandapower._typing import Array2D, Float, Int
1313
from pandapower.std_types import _StdTypes
1414

1515
_T = TypeVar("_T")
16-
_KT = TypeVar("_KT")
17-
_VT = TypeVar("_VT")
1816

1917
def log_to_level(msg: str, passed_logger: logging.Logger, level: str) -> None: ...
20-
def version_check(package_name: str, level="UserWarning", ignore_not_installed: bool = False) -> None: ...
18+
def version_check(package_name: str, level: str = "UserWarning", ignore_not_installed: bool = False) -> None: ...
2119
def soft_dependency_error(fct_name: str, required_packages: str | Iterable[str]) -> NoReturn: ...
2220
def warn_and_fix_parameter_renaming(
2321
old_parameter_name: str,
@@ -28,14 +26,14 @@ def warn_and_fix_parameter_renaming(
2826
**kwargs: Any,
2927
) -> _T: ...
3028

31-
class ADict(dict[_KT, _VT], MutableMapping[_KT, _VT]):
32-
def __setattr__(self, key: str, value: _VT) -> None: ...
33-
def __delattr__(self, key: _KT, force: bool = False) -> None: ... # type: ignore[override]
34-
def __call__(self, key: _KT) -> _VT: ...
35-
def __getattr__(self, name: str) -> _VT: ...
29+
class ADict(dict[str, _T], MutableMapping[str, _T]):
30+
def __setattr__(self, key: str, value: _T) -> None: ...
31+
def __delattr__(self, key: str, force: bool = False) -> None: ...
32+
def __call__(self, key: str) -> _T: ...
33+
def __getattr__(self, key: str) -> _T: ...
3634
def __deepcopy__(self, memo: dict[int, Any] | None) -> Self: ...
3735

38-
class pandapowerNet(ADict[str, pd.DataFrame]):
36+
class pandapowerNet(ADict[pd.DataFrame]):
3937
# These attributes are not defined in the class body, but are added via __getitem__
4038
bus: pd.DataFrame
4139
bus_dc: pd.DataFrame
@@ -197,8 +195,8 @@ def phase_shift_unit_operator(angle_deg: Float) -> np.complex128: ...
197195

198196
a: Final[np.complex128]
199197
asq: Final[np.complex128]
200-
Tabc: Final[np.ndarray[tuple[int, int], np.dtype[np.complex128]]]
201-
T012: Final[np.ndarray[tuple[int, int], np.dtype[np.complex128]]]
198+
Tabc: Final[Array2D[np.complex128]]
199+
T012: Final[Array2D[np.complex128]]
202200

203201
def sequence_to_phase(X012: ArrayLike) -> NDArray[np.complex128]: ...
204202
def phase_to_sequence(Xabc: ArrayLike) -> NDArray[np.complex128]: ...
Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,48 @@
11
from _typeshed import Incomplete
2-
from typing import TypeVar
2+
from collections.abc import Collection
3+
from typing import Literal, TypeVar
34

45
import numpy as np
56
from numpy.typing import NDArray
67

8+
from pandapower._typing import Array1D, Bool, Float, Int, ScalarOrVector
79
from pandapower.auxiliary import pandapowerNet
810

911
_T = TypeVar("_T")
1012

1113
def ds_find(ar, bus): ...
12-
def ds_union(ar, bus1, bus2, bus_is_pv) -> None: ...
13-
def ds_create(ar, switch_bus, switch_elm, switch_et_bus, switch_closed, switch_z_ohm, bus_is_pv, bus_in_service) -> None: ...
14-
def fill_bus_lookup(ar, bus_lookup, bus_index) -> None: ...
15-
def create_bus_lookup_numba(net: pandapowerNet, bus_index, bus_is_idx, gen_is_mask, eg_is_mask) -> NDArray[np.int_]: ...
14+
def ds_union(ar, bus1: Int, bus2: Int, bus_is_pv, bus_is_active, merged_bus) -> None: ...
15+
def ds_create(
16+
ar,
17+
switch_bus: Collection[Int],
18+
switch_elm: Collection[Int],
19+
switch_et_bus: Collection[Int],
20+
switch_closed: Collection[Bool],
21+
switch_z_ohm: Collection[Float],
22+
bus_is_pv,
23+
bus_is_active,
24+
bus_in_service,
25+
merged_bus,
26+
) -> None: ...
27+
def fill_bus_lookup(ar, bus_lookup, bus_index: Collection[Int]) -> None: ...
28+
def create_bus_lookup_numba(
29+
net: pandapowerNet, bus_index: Collection[Int], bus_is_idx: ScalarOrVector[Int]
30+
) -> tuple[Array1D[np.int64], Array1D[np.bool]]: ...
1631

1732
class DisjointSet(dict[_T, _T]):
1833
def add(self, item: _T) -> None: ...
1934
def find(self, item: _T) -> _T: ...
2035
def union(self, item1: _T, item2: _T) -> None: ...
2136

22-
def create_consecutive_bus_lookup(net: pandapowerNet, bus_index): ...
37+
def create_consecutive_bus_lookup(net: pandapowerNet, bus_index: Collection[Int]) -> Array1D[np.int64]: ...
2338
def create_bus_lookup_numpy(
24-
net: pandapowerNet, bus_index, bus_is_idx, gen_is_mask, eg_is_mask, closed_bb_switch_mask
25-
) -> NDArray[np.int_]: ...
26-
def create_bus_lookup(net: pandapowerNet, bus_index, bus_is_idx, gen_is_mask, eg_is_mask, numba: bool) -> NDArray[np.int_]: ...
27-
def get_voltage_init_vector(net: pandapowerNet, init_v, mode, sequence: Incomplete | None = None): ...
28-
def set_reference_buses(net: pandapowerNet, ppc, bus_lookup, mode) -> None: ...
39+
net: pandapowerNet, bus_index: Collection[Int], closed_bb_switch_mask: NDArray[np.bool]
40+
) -> tuple[Array1D[np.int64], Array1D[np.bool]]: ...
41+
def create_bus_lookup(
42+
net: pandapowerNet, bus_index: Collection[Int], bus_is_idx: ScalarOrVector[Int], numba: Bool
43+
) -> tuple[Array1D[np.int64], Array1D[np.bool]]: ...
44+
def get_voltage_init_vector(
45+
net: pandapowerNet, init_v, mode: Literal["magnitude", "angle"], sequence: Incomplete | None = None
46+
): ...
47+
def set_reference_buses(net: pandapowerNet, ppc, bus_lookup, mode: str) -> None: ...
48+
def set_reference_buses_dc(net: pandapowerNet, ppc, bus_lookup, mode: str) -> None: ...
Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,40 @@
1-
from _typeshed import Incomplete
1+
from _typeshed import SupportsGetItem
2+
from collections.abc import Collection, Iterable
3+
from typing import TypeVar
24

3-
home: Incomplete
4-
desktop: Incomplete
5+
import pandas as pd
6+
7+
from pandapower._typing import Bool, Int, RunPPFunc
8+
from pandapower.auxiliary import pandapowerNet
9+
10+
_S = TypeVar("_S", tuple[Int, ...], list[Int])
11+
12+
impedance_columns: list[str]
513

614
def add_ext_grids_to_boundaries(
7-
net,
8-
boundary_buses,
9-
adapt_va_degree: bool = False,
10-
runpp_fct=...,
11-
calc_volt_angles: bool = True,
12-
allow_net_change_for_convergence: bool = False,
15+
net: pandapowerNet,
16+
boundary_buses: Iterable[Int],
17+
adapt_va_degree: Bool = False,
18+
runpp_fct: RunPPFunc = ...,
19+
calc_volt_angles: Bool = True,
20+
allow_net_change_for_convergence: Bool = False,
21+
) -> pd.Index[int]: ...
22+
def drop_internal_branch_elements(
23+
net: pandapowerNet, internal_buses: Collection[Int], branch_elements: Iterable[Int] | None = None
24+
) -> None: ...
25+
def calc_zpbn_parameters(
26+
net: pandapowerNet, boundary_buses: _S, all_external_buses: _S, slack_as: str = "gen", existing_shift_degree: Bool = False
27+
) -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame, pd.DataFrame]: ...
28+
def drop_assist_elms_by_creating_ext_net(net: pandapowerNet, elms: Iterable[str] | None = None) -> None: ...
29+
def build_ppc_and_Ybus(net: pandapowerNet) -> None: ...
30+
def drop_measurements_and_controllers(net: pandapowerNet, buses: Collection[Int], skip_controller: Bool = False) -> None: ...
31+
def ensure_origin_id(net: pandapowerNet, elms: Iterable[str] | None = None) -> None: ...
32+
def drop_and_edit_cost_functions(
33+
net: pandapowerNet, buses: Collection[Int], drop_cost: Bool, add_origin_id: Bool, check_unique_elms_name: Bool = True
1334
) -> None: ...
14-
def drop_internal_branch_elements(net, internal_buses, branch_elements: Incomplete | None = None) -> None: ...
15-
def calc_zpbn_parameters(net, boundary_buses, all_external_buses, slack_as: str = "gen", existing_shift_degree: bool = False): ...
16-
def check_validity_of_Ybus_eq(net_zpbn, Ybus_eq, bus_lookups): ...
17-
def drop_assist_elms_by_creating_ext_net(net, elms: Incomplete | None = None) -> None: ...
18-
def build_ppc_and_Ybus(net) -> None: ...
19-
def drop_measurements_and_controller(net, buses, skip_controller: bool = False) -> None: ...
20-
def match_controller_and_new_elements(net, net_org) -> None: ...
21-
def ensure_origin_id(net, no_start: int = 0, elms: Incomplete | None = None) -> None: ...
22-
def drop_and_edit_cost_functions(net, buses, drop_cost, add_origin_id, check_unique_elms_name: bool = True) -> None: ...
23-
def match_cost_functions_and_eq_net(net, boundary_buses, eq_type) -> None: ...
24-
def check_network(net) -> None: ...
25-
def get_boundary_vp(net_eq, bus_lookups): ...
26-
def adaptation_phase_shifter(net, v_boundary, p_boundary): ...
27-
def replace_motor_by_load(net, all_external_buses) -> None: ...
35+
def match_cost_functions_and_eq_net(net: pandapowerNet, boundary_buses: Iterable[Int], eq_type: str) -> None: ...
36+
def get_boundary_vp(
37+
net_eq: pandapowerNet, bus_lookups: SupportsGetItem[str, SupportsGetItem[str, Collection[Int]]]
38+
) -> tuple[pd.DataFrame, pd.DataFrame]: ...
39+
def adaptation_phase_shifter(net: pandapowerNet, v_boundary: pd.DataFrame, p_boundary: pd.DataFrame) -> pandapowerNet: ...
40+
def replace_motor_by_load(net: pandapowerNet, all_external_buses: Collection[Int]) -> None: ...
Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1+
from collections.abc import Collection
2+
from typing import Literal
3+
4+
from pandapower._typing import Bool, Int, RunPPFunc
5+
from pandapower.auxiliary import pandapowerNet
6+
17
def get_equivalent(
2-
net,
3-
eq_type,
4-
boundary_buses,
5-
internal_buses,
6-
return_internal: bool = True,
7-
show_computing_time: bool = False,
8+
net: pandapowerNet,
9+
eq_type: Literal["rei", "ward", "xward"],
10+
boundary_buses: Collection[Int],
11+
internal_buses: Collection[Int],
12+
return_internal: Bool = True,
13+
show_computing_time: Bool = False,
814
ward_type: str = "ward_injection",
9-
adapt_va_degree: bool = False,
10-
calculate_voltage_angles: bool = True,
11-
allow_net_change_for_convergence: bool = False,
12-
runpp_fct=...,
15+
adapt_va_degree: Bool = False,
16+
calculate_voltage_angles: Bool = True,
17+
allow_net_change_for_convergence: Bool = False,
18+
runpp_fct: RunPPFunc = ...,
1319
**kwargs,
14-
): ...
20+
) -> pandapowerNet | None: ...
1521
def merge_internal_net_and_equivalent_external_net(
16-
net_eq, net_internal, eq_type, show_computing_time: bool = False, calc_volt_angles: bool = False, **kwargs
17-
): ...
18-
def drop_repeated_characteristic(net) -> None: ...
22+
net_eq: pandapowerNet, net_internal: pandapowerNet, fuse_bus_column: str = "auto", show_computing_time: bool = False, **kwargs
23+
) -> pandapowerNet: ...
24+
def drop_repeated_characteristic(net: pandapowerNet) -> None: ...
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,12 @@
1-
def adapt_impedance_params(Z, sign: int = 1, adaption: float = 1e-15): ...
1+
from typing import TypeVar, overload
2+
3+
import numpy as np
4+
5+
_S = TypeVar("_S", bound=tuple[int, ...])
6+
7+
@overload
8+
def adapt_impedance_params(Z: complex, sign: int = 1, adaption: float = 1e-15) -> float: ...
9+
@overload
10+
def adapt_impedance_params(
11+
Z: np.ndarray[_S, np.dtype[np.complexfloating]], sign: int = 1, adaption: float = 1e-15
12+
) -> np.ndarray[_S, np.dtype[np.float64]]: ...
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
1+
from _typeshed import SupportsKeysAndGetItem
2+
from collections.abc import Collection, Iterable
3+
4+
from pandapower._typing import Int
5+
from pandapower.auxiliary import pandapowerNet
6+
17
def getFromDict(dict_, keys): ...
28
def setInDict(dict_, keys, value) -> None: ...
39
def appendSetInDict(dict_, keys, set_) -> None: ...
410
def setSetInDict(dict_, keys, set_) -> None: ...
511
def append_set_to_dict(dict_, set_, keys) -> None: ...
6-
def set_bus_zone_by_boundary_branches(net, all_boundary_branches) -> None: ...
7-
def get_boundaries_by_bus_zone_with_boundary_branches(net): ...
8-
def get_connected_switch_buses_groups(net, buses): ...
12+
def set_bus_zone_by_boundary_branches(
13+
net: pandapowerNet, all_boundary_branches: SupportsKeysAndGetItem[str, Collection[Int]]
14+
) -> None: ...
15+
def get_boundaries_by_bus_zone_with_boundary_branches(
16+
net: pandapowerNet,
17+
) -> tuple[dict[str, dict[str, set[int]]], dict[str, dict[str, set[int]]]]: ...
18+
def get_connected_switch_buses_groups(net: pandapowerNet, buses: Iterable[Int]) -> tuple[set[int], list[list[int]]]: ...

stubs/pandapower-stubs/grid_equivalents/ward_generation.pyi

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
def create_passive_external_net_for_ward_addmittance(
2-
net, all_external_buses, boundary_buses, calc_volt_angles: bool = ..., runpp_fct=...
1+
from collections.abc import Collection
2+
3+
from pandapower._typing import Bool, Int, RunPPFunc
4+
from pandapower.auxiliary import pandapowerNet
5+
6+
def create_passive_external_net_for_ward_admittance(
7+
net: pandapowerNet,
8+
all_external_buses: Collection[Int],
9+
boundary_buses: Collection[Int] | object, # not used!
10+
calc_volt_angles: Bool = True,
11+
runpp_fct: RunPPFunc = ...,
12+
**kwargs,
313
) -> None: ...
4-
def get_ppc_buses(net, buses, nogo_buses): ...

stubs/pandapower-stubs/io_utils.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class JSONSerializableClass:
126126
overwrite: bool = False,
127127
preserve_dtypes: bool = False,
128128
fill_dict: dict[str, Any] | None = None,
129-
) -> int: ...
129+
) -> np.int64: ...
130130
def equals(self, other: object) -> bool: ...
131131
@classmethod
132132
def from_dict(cls, d: dict[str, object]) -> Self: ...

0 commit comments

Comments
 (0)