Skip to content

Commit 72a33d8

Browse files
authored
Update pp control and timeseries (#16)
1 parent 3e22976 commit 72a33d8

File tree

7 files changed

+106
-77
lines changed

7 files changed

+106
-77
lines changed
Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,59 @@
1-
from _typeshed import Incomplete
1+
from typing import Any, SupportsIndex as Int
22

3+
from pandapower.auxiliary import pandapowerNet
34
from pandapower.io_utils import JSONSerializableClass
45

56
class BasicCtrl(JSONSerializableClass):
6-
index: Incomplete
7-
def __init__(self, container, index: Incomplete | None = None, **kwargs) -> None: ...
8-
def time_step(self, container, time) -> None: ...
9-
def initialize_control(self, container) -> None: ...
10-
def is_converged(self, container): ...
11-
def control_step(self, container) -> None: ...
12-
def repair_control(self, container) -> None: ...
13-
def restore_init_state(self, container) -> None: ...
14-
def finalize_control(self, container) -> None: ...
15-
def finalize_step(self, container, time) -> None: ...
16-
def set_active(self, container, in_service) -> None: ...
7+
index: int
8+
def __init__(self, container: pandapowerNet, index: Int | None = None, **kwargs) -> None: ...
9+
def time_step(self, container: pandapowerNet, time: Any) -> None: ...
10+
def initialize_control(self, container: pandapowerNet) -> None: ...
11+
def is_converged(self, container: pandapowerNet): ...
12+
def control_step(self, container: pandapowerNet) -> None: ...
13+
def repair_control(self, container: pandapowerNet) -> None: ...
14+
def restore_init_state(self, container: pandapowerNet) -> None: ...
15+
def finalize_control(self, container: pandapowerNet) -> None: ...
16+
def finalize_step(self, container: pandapowerNet, time: Any) -> None: ...
17+
def set_active(self, container: pandapowerNet, in_service: bool) -> None: ...
1718
def level_reset(self, prosumer) -> None: ...
1819

1920
class Controller(BasicCtrl):
20-
matching_params: Incomplete
21-
index: Incomplete
21+
matching_params: dict[str, Any]
22+
index: int
2223
def __init__(
2324
self,
24-
net,
25+
net: pandapowerNet,
2526
in_service: bool = True,
26-
order: int = 0,
27-
level: int = 0,
28-
index: Incomplete | None = None,
27+
order: Int = 0,
28+
level: Int = 0,
29+
index: Int | None = None,
2930
recycle: bool = False,
3031
drop_same_existing_ctrl: bool = False,
3132
initial_run: bool = True,
3233
overwrite: bool = False,
33-
matching_params: Incomplete | None = None,
34+
matching_params: dict[str, Any] | None = None,
3435
**kwargs,
3536
) -> None: ...
3637
def add_controller_to_net(
37-
self, net, in_service, initial_run, order, level, index, recycle, drop_same_existing_ctrl, overwrite, **kwargs
38-
): ...
39-
def time_step(self, net, time) -> None: ...
40-
def initialize_control(self, net) -> None: ...
41-
def is_converged(self, net): ...
42-
def control_step(self, net) -> None: ...
43-
def repair_control(self, net) -> None: ...
44-
def restore_init_state(self, net) -> None: ...
45-
def finalize_control(self, net) -> None: ...
46-
def finalize_step(self, net, time) -> None: ...
47-
def set_active(self, net, in_service) -> None: ...
48-
def set_recycle(self, net) -> None: ...
38+
self,
39+
net: pandapowerNet,
40+
in_service: bool,
41+
initial_run: bool,
42+
order: Int,
43+
level: Int,
44+
index: Int,
45+
recycle: bool,
46+
drop_same_existing_ctrl: bool,
47+
overwrite: bool,
48+
**kwargs,
49+
) -> int: ...
50+
def time_step(self, net: pandapowerNet, time: Any) -> None: ...
51+
def initialize_control(self, net: pandapowerNet) -> None: ...
52+
def is_converged(self, net: pandapowerNet): ...
53+
def control_step(self, net: pandapowerNet) -> None: ...
54+
def repair_control(self, net: pandapowerNet) -> None: ...
55+
def restore_init_state(self, net: pandapowerNet) -> None: ...
56+
def finalize_control(self, net: pandapowerNet) -> None: ...
57+
def finalize_step(self, net: pandapowerNet, time: Any) -> None: ...
58+
def set_active(self, net: pandapowerNet, in_service: bool) -> None: ...
59+
def set_recycle(self, net: pandapowerNet) -> None: ...
Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,39 @@
1-
from _typeshed import Incomplete
1+
from collections.abc import Iterable
2+
from typing import Any, SupportsIndex as Int
23

4+
from pandas._typing import Axes, Scalar
5+
6+
from pandapower.auxiliary import pandapowerNet
37
from pandapower.control.basic_controller import Controller
8+
from pandapower.timeseries.data_source import DataSource
49

510
class ConstControl(Controller):
6-
data_source: Incomplete
7-
element_index: Incomplete
8-
element: Incomplete
9-
values: Incomplete
10-
profile_name: Incomplete
11-
scale_factor: Incomplete
11+
data_source: DataSource
12+
element_index: Axes | Scalar
13+
element: str
14+
values: Any
15+
profile_name: str | Iterable[str]
16+
scale_factor: float
1217
applied: bool
1318
def __init__(
1419
self,
15-
net,
16-
element,
17-
variable,
18-
element_index,
19-
profile_name: Incomplete | None = None,
20-
data_source: Incomplete | None = None,
20+
net: pandapowerNet,
21+
element: str,
22+
variable: str,
23+
element_index: Axes | Scalar,
24+
profile_name: str | Iterable[str] | None = None,
25+
data_source: DataSource | None = None,
2126
scale_factor: float = 1.0,
2227
in_service: bool = True,
2328
recycle: bool = True,
24-
order: int = -1,
25-
level: int = -1,
29+
order: Int = -1,
30+
level: Int = -1,
2631
drop_same_existing_ctrl: bool = False,
27-
matching_params: Incomplete | None = None,
32+
matching_params: dict[str, Any] | None = None,
2833
initial_run: bool = False,
2934
**kwargs,
3035
) -> None: ...
31-
def set_recycle(self, net) -> None: ...
32-
def time_step(self, net, time) -> None: ...
33-
def is_converged(self, net): ...
34-
def control_step(self, net) -> None: ...
36+
def set_recycle(self, net: pandapowerNet) -> None: ...
37+
def time_step(self, net: pandapowerNet, time: Any) -> None: ...
38+
def is_converged(self, net: pandapowerNet) -> bool: ...
39+
def control_step(self, net: pandapowerNet) -> None: ...

stubs/pandapower-stubs/io_utils.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import json
22
from _typeshed import Incomplete, ReadableBuffer, StrOrBytesPath, SupportsRead
33
from collections.abc import Callable, Container, Mapping
44
from functools import singledispatch
5-
from typing import Any, TypeVar
5+
from typing import Any, SupportsIndex as Int, TypeVar
66
from typing_extensions import Self
77

88
import pandas as pd
@@ -106,11 +106,11 @@ class JSONSerializableClass:
106106
self,
107107
net: pandapowerNet,
108108
element: str,
109-
index: int | None = None,
109+
index: Int | None = None,
110110
column: str = "object",
111111
overwrite: bool = False,
112112
preserve_dtypes: bool = False,
113-
fill_dict: dict[str, Incomplete] | None = None,
113+
fill_dict: dict[str, Any] | None = None,
114114
) -> int: ...
115115
def equals(self, other: object) -> bool: ...
116116
@classmethod
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
from _typeshed import Incomplete
1+
from collections.abc import Iterable
2+
from typing import Any
3+
4+
from pandas._typing import Scalar
25

36
from pandapower.io_utils import JSONSerializableClass
47

58
class DataSource(JSONSerializableClass):
6-
def get_time_step_value(self, time_step: Incomplete, profile_name: str, scale_factor: float = 1.0) -> Incomplete: ...
9+
def get_time_step_value(self, time_step: Scalar, profile_name: str | Iterable[str], scale_factor: float = 1.0) -> Any: ...
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
from _typeshed import Incomplete
1+
from collections.abc import Iterable
2+
from typing import Any
3+
4+
import pandas as pd
5+
from pandas._typing import Scalar
26

37
from pandapower.timeseries.data_source import DataSource
48

59
class DFData(DataSource):
6-
df: Incomplete
7-
def __init__(self, df, multi: bool = False) -> None: ...
8-
def get_time_step_value(self, time_step, profile_name, scale_factor: float = 1.0): ...
9-
def get_time_steps_len(self): ...
10+
df: pd.DataFrame
11+
def __init__(self, df: pd.DataFrame, multi: bool = False) -> None: ...
12+
def get_time_step_value(self, time_step: Scalar, profile_name: str | Iterable[str], scale_factor: float = 1.0) -> Any: ...
13+
def get_time_steps_len(self) -> int: ...

stubs/pandapower-stubs/timeseries/output_writer.pyi

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
from _typeshed import Incomplete
22
from collections.abc import Callable, Mapping, Sequence
33
from functools import partial
4-
from typing import Generic, Literal, TypeVar
4+
from typing import Any, Generic, Literal
55

66
import pandas as pd
77
from numpy.typing import NDArray
8+
from pandas._typing import S1 as _T
89

910
from pandapower.auxiliary import pandapowerNet
1011
from pandapower.io_utils import JSONSerializableClass
1112

12-
_T = TypeVar("_T")
13-
1413
class OutputWriter(JSONSerializableClass, Generic[_T]):
1514
output_path: str | None
1615
output_file_type: Literal[".xls", ".xlsx", ".csv", ".p", ".json"]
@@ -30,7 +29,7 @@ class OutputWriter(JSONSerializableClass, Generic[_T]):
3029
def __init__(
3130
self,
3231
net: pandapowerNet,
33-
time_steps: Sequence[_T] | None = None,
32+
time_steps: Sequence[_T] | pd.Index[_T] | pd.Series[_T] | NDArray[Any] | None = None,
3433
output_path: str | None = None,
3534
output_file_type: Literal[".xls", ".xlsx", ".csv", ".p", ".json"] = ".p",
3635
write_time: float | None = None,
Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from _typeshed import Incomplete, Unused
1+
from _typeshed import Incomplete, SupportsGetItem, Unused
22
from collections.abc import Callable, Iterable, Mapping
33
from typing import Any, Literal, TypeVar, overload
44

@@ -7,26 +7,28 @@ from pandapower.auxiliary import pandapowerNet
77
_T = TypeVar("_T")
88

99
def init_default_outputwriter(net: pandapowerNet, time_steps: Iterable[Incomplete]) -> None: ...
10-
def init_output_writer(net: pandapowerNet, time_steps: Incomplete) -> None: ...
11-
def controller_not_converged(time_step: object, ts_variables: Mapping[str, Any]) -> None: ...
12-
def pf_not_converged(time_step: object, ts_variables: Mapping[str, Any]) -> None: ...
13-
def control_time_step(controller_order: Iterable[Incomplete], time_step: Incomplete) -> None: ...
14-
def finalize_step(controller_order: Iterable[Incomplete], time_step: Incomplete) -> None: ...
10+
def init_output_writer(net: pandapowerNet, time_steps) -> None: ...
11+
def controller_not_converged(time_step: object, ts_variables: SupportsGetItem[str, Any]) -> None: ...
12+
def pf_not_converged(time_step: object, ts_variables: SupportsGetItem[str, Any]) -> None: ...
13+
def control_time_step(controller_order: Iterable[Iterable[tuple[Incomplete, pandapowerNet]]], time_step) -> None: ...
14+
def finalize_step(controller_order: Iterable[Iterable[tuple[Incomplete, pandapowerNet]]], time_step) -> None: ...
1515
def output_writer_routine(
16-
net: pandapowerNet, time_step: Incomplete, pf_converged: bool, ctrl_converged: bool, recycle_options: Mapping[str, Any]
16+
net: pandapowerNet, time_step, pf_converged: bool, ctrl_converged: bool, recycle_options: Mapping[str, Any]
1717
) -> None: ...
1818
def run_time_step(
1919
net: pandapowerNet,
20-
time_step: Incomplete,
20+
time_step,
2121
ts_variables: dict[str, Incomplete],
2222
run_control_fct: Callable[..., object] = ...,
2323
output_writer_fct: Callable[[pandapowerNet, Incomplete, bool, bool, dict[str, Incomplete]], object] = ...,
2424
**kwargs,
2525
) -> None: ...
2626
@overload
27-
def get_recycle_settings(net: pandapowerNet, recycle: Literal[False], **kwargs: Unused) -> Literal[False]: ...
27+
def get_recycle_settings(net: pandapowerNet, *, recycle: Literal[False], **kwargs: Unused) -> Literal[False]: ...
2828
@overload
29-
def get_recycle_settings(net: pandapowerNet, **kwargs: Incomplete) -> dict[str, Any] | Literal[False]: ...
29+
def get_recycle_settings(
30+
net: pandapowerNet, *, recycle: Incomplete | None = None, **kwargs
31+
) -> dict[str, Any] | Literal[False]: ...
3032
@overload
3133
def init_time_steps(net: pandapowerNet, time_steps: Iterable[_T], **kwargs: Unused) -> Iterable[_T]: ... # type: ignore[overload-overlap]
3234
@overload
@@ -41,7 +43,7 @@ def init_time_series(
4143
**kwargs,
4244
) -> dict[str, Any]: ...
4345
def cleanup(net: pandapowerNet, ts_variables: dict[str, Incomplete]) -> None: ...
44-
def print_progress(i: int, time_step: Incomplete, time_steps: Incomplete, verbose: bool, **kwargs: Incomplete) -> None: ...
46+
def print_progress(i: int, time_step, time_steps, verbose: bool, **kwargs) -> None: ...
4547
def run_loop(
4648
net: pandapowerNet,
4749
ts_variables: dict[str, Incomplete],
@@ -50,5 +52,10 @@ def run_loop(
5052
**kwargs,
5153
) -> None: ...
5254
def run_timeseries(
53-
net: pandapowerNet, time_steps: Incomplete | None = None, continue_on_divergence: bool = False, verbose: bool = True, **kwargs
55+
net: pandapowerNet,
56+
time_steps: Incomplete | None = None,
57+
continue_on_divergence: bool = False,
58+
verbose: bool = True,
59+
check_controllers: bool = True,
60+
**kwargs,
5461
) -> None: ...

0 commit comments

Comments
 (0)