Skip to content

Commit 1dc8a6d

Browse files
committed
fixes for merge of develop
added standard types dict type fixed all mypy issues
1 parent fb177e9 commit 1dc8a6d

File tree

11 files changed

+57
-33
lines changed

11 files changed

+57
-33
lines changed

pandapower/estimation/algorithm/base.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# and Energy System Technology (IEE), Kassel. All rights reserved.
55

66
import numpy as np
7+
from numpy.linalg import LinAlgError
78
from scipy.sparse import csr_matrix, vstack, hstack
89
from scipy.sparse.linalg import spsolve, norm, inv
910

@@ -144,7 +145,7 @@ def estimate(self, eppci: ExtendedPPCI, debug_mode=False, **kwargs):
144145
# prepare next iteration
145146
cur_it += 1
146147

147-
except np.linalg.linalg.LinAlgError:
148+
except LinAlgError:
148149
self.logger.error("A problem appeared while using the linear algebra methods."
149150
"Check and change the measurement set.")
150151
return False
@@ -227,7 +228,7 @@ def estimate(self, eppci: ExtendedPPCI, **kwargs):
227228
cur_it += 1
228229
current_error = np.max(np.abs(d_E_ext[:len(eppci.non_slack_buses) + num_bus]))
229230
self.logger.debug("Current error: {:.7f}".format(current_error))
230-
except np.linalg.linalg.LinAlgError:
231+
except LinAlgError:
231232
self.logger.error("A problem appeared while using the linear algebra methods."
232233
"Check and change the measurement set.")
233234
return False
@@ -269,7 +270,7 @@ def estimate(self, eppci: ExtendedPPCI, estimator="wls", **kwargs):
269270
cur_it += 1
270271
current_error = np.max(np.abs(d_E))
271272
self.logger.debug("Current error: {:.7f}".format(current_error))
272-
except np.linalg.linalg.LinAlgError:
273+
except LinAlgError:
273274
self.logger.error("A problem appeared while using the linear algebra methods."
274275
"Check and change the measurement set.")
275276
return False
@@ -350,12 +351,12 @@ def estimate(self, eppci: ExtendedPPCI, debug_mode=False, **kwargs):
350351
# prepare next iteration
351352
cur_it += 1
352353

353-
except np.linalg.linalg.LinAlgError:
354+
except LinAlgError:
354355
self.logger.error("A problem appeared while using the linear algebra methods."
355356
"Check and change the measurement set.")
356357
return False
357358

358-
# check if the estimation is successfull
359+
# check if the estimation is successful
359360
self.check_result(current_error, cur_it)
360361
self.iterations = cur_it
361362
if debug_mode:

pandapower/estimation/algorithm/matrix_base.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111

1212
from pandapower.estimation.ppc_conversion import ExtendedPPCI
1313

14+
try:
15+
from numpy import isin
16+
except ImportError:
17+
from numpy import in1d as isin
18+
1419
__all__ = ['BaseAlgebra', 'BaseAlgebraZeroInjConstraints']
1520

1621

@@ -295,8 +300,8 @@ def _define_mask(self, idx, mask1, mask2):
295300
@staticmethod
296301
def _merge_mask(mask1, mask2):
297302
new_mask_tot = np.unique(np.concatenate((mask1,mask2),0))
298-
new_mask1 = np.in1d(new_mask_tot, mask1)
299-
new_mask2 = np.in1d(new_mask_tot, mask2)
303+
new_mask1 = isin(new_mask_tot, mask1)
304+
new_mask2 = isin(new_mask_tot, mask2)
300305
return new_mask_tot, new_mask1, new_mask2
301306

302307

pandapower/file_io.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def from_pickle(filename, convert=True):
158158
>>> net2 = from_pickle("example2.p") #relative path
159159
"""
160160

161-
net = pandapowerNet(get_raw_data_from_pickle(filename))
161+
net = pandapowerNet(net=get_raw_data_from_pickle(filename))
162162
transform_net_with_df_and_geo(net, ["bus_geodata"], ["line_geodata"])
163163

164164
if convert:

pandapower/network.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
from pandapower.network_structure import get_structure_dict
3737
from pandapower.std_types import add_basic_std_types
38+
from pandapower.pp_types import StandardTypesDict
3839

3940
logger = logging.getLogger(__name__)
4041

@@ -233,22 +234,28 @@ class pandapowerNet(ADict):
233234
"""
234235
@overload
235236
def __init__(
236-
self, name: str, f_hz: float = 50., sn_mva: float = 1., add_stdtypes: bool = True, custom_data: dict = None
237+
self,
238+
name: str,
239+
f_hz: float = 50.,
240+
sn_mva: float = 1.,
241+
add_stdtypes: bool = True,
242+
custom_data: dict | None = None
237243
) -> None: ...
238244

239245
@overload
240246
@deprecated("Calling pandapowerNet to copy a network is no longer supported. Use copy.deepcopy(net) instead.")
241-
def __init__(self, net: "pandapowerNet") -> None: ...
247+
def __init__(self, *, net: "pandapowerNet | dict") -> None: ...
242248

243249

244250
def __init__(
245251
self,
246-
net: "pandapowerNet" = None,
247-
name: str = None,
252+
name: str | None = None,
248253
f_hz: float = 50.,
249254
sn_mva: float = 1.,
250255
add_stdtypes: bool = True,
251-
custom_data: dict = None,
256+
custom_data: dict | None = None,
257+
*,
258+
net: "pandapowerNet | dict | None" = None,
252259
**kwargs
253260
) -> None:
254261
# TODO: remove once deprecations are removed
@@ -297,7 +304,7 @@ def __init__(
297304
if add_stdtypes:
298305
add_basic_std_types(self) # TODO: Test this
299306
else:
300-
self.std_types = {"line": {}, "line_dc": {}, "trafo": {}, "trafo3w": {}, "fuse": {}} # TODO: this should not be set here. a function to return the empty std_types would be sensible
307+
self.std_types: StandardTypesDict = {"line": {}, "line_dc": {}, "trafo": {}, "trafo3w": {}, "fuse": {}}
301308
# reset res_… objects:
302309
for suffix in [None, "est", "sc", "3ph"]:
303310
elements = []
@@ -329,7 +336,7 @@ def __init__(
329336
)
330337
if "res_cost" in self.keys():
331338
del self["res_cost"]
332-
self.user_pf_options = {}
339+
self.user_pf_options: dict = {}
333340

334341

335342
@staticmethod

pandapower/pp_types.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Union
1+
from typing import Literal, Union, TypedDict, Any
22

33
import numpy as np
44

@@ -32,4 +32,18 @@
3232
TapChangerType = Literal["Ratio", "Symmetrical", "Ideal"]
3333
TapChangerWithTabularType = Literal["Ratio", "Symmetrical", "Ideal", "Tabular"]
3434
UnderOverExcitedType = Literal["underexcited", "overexcited"]
35-
WyeDeltaType = Literal["wye", "delta"]
35+
WyeDeltaType = Literal["wye", "delta"]
36+
37+
38+
class StandardTypesDict(TypedDict):
39+
"""
40+
Typing for the Standard Types.
41+
"""
42+
line: dict[str, Any]
43+
line_dc: dict[str, Any]
44+
trafo: dict[str, Any]
45+
trafo3w: dict[str, Any]
46+
fuse: dict[str, Any]
47+
48+
49+
StandardTypesDictKeys = Literal["line", "line_dc", "trafo", "trafo3w", "fuse"]

pandapower/results_bus.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ def write_voltage_dependend_load_results(net, p, q, b):
190190
# TODO: many tests fail if this function fails, yet i could not find tests for it
191191
def write_pq_results_to_element(
192192
net: pandapowerNet, ppc: pd.DataFrame, element, suffix=None
193-
) -> None:
193+
) -> pandapowerNet:
194194
"""
195195
get p_mw and q_mvar for a specific pq element ("load", "sgen"...).
196196
This function basically writes values element table to res_element table

pandapower/std_types.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
import pandas as pd
1212

13+
from pandapower.pp_types import StandardTypesDictKeys
14+
1315
if TYPE_CHECKING:
1416
from pandapower.network import pandapowerNet
1517

@@ -42,7 +44,7 @@ def create_std_type(
4244
net: 'pandapowerNet',
4345
data: dict,
4446
name: str,
45-
element: str = "line",
47+
element: StandardTypesDictKeys = "line",
4648
overwrite=True,
4749
check_required=True):
4850
"""
@@ -121,6 +123,7 @@ def create_std_types(net, data, element="line", overwrite=True, check_required=T
121123
- "line_dc"
122124
- "trafo"
123125
- "trafo3w"
126+
- "fuse"
124127
125128
overwrite: whether overwriteing existing standard type is allowed
126129
check_required: check if required standard type parameters are present

pandapower/test/loadflow/test_facts_b2b_vsc.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
import numpy as np
44
import pytest
55

6-
from pandapower import create_line_dc_from_parameters
76
from pandapower.create import (
87
create_buses, create_bus, create_line_from_parameters, create_load, create_ext_grid, create_bus_dc, create_b2b_vsc,
9-
create_line_dc, create_source_dc, create_load_dc
8+
create_line_dc, create_source_dc, create_load_dc, create_line_dc_from_parameters
109
)
1110
from pandapower.network import pandapowerNet
1211
from pandapower.run import runpp

pandapower/test/loadflow/test_rundcpp.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@
99
import numpy as np
1010
import pytest
1111

12-
from pandapower import create_bus_dc, create_vsc
13-
from pandapower.create.line_create import create_line_from_parameters, create_line_dc_from_parameters
14-
1512
from pandapower.auxiliary import LoadflowNotConverged
1613
from pandapower.create import (
17-
create_bus, create_transformer, create_transformer3w, create_load, create_xward, create_switch, create_ext_grid
14+
create_bus, create_transformer, create_transformer3w, create_load, create_xward, create_switch, create_ext_grid,
15+
create_line_from_parameters, create_line_dc_from_parameters, create_bus_dc, create_vsc
1816
)
1917
from pandapower.network import pandapowerNet
2018
from pandapower.networks.power_system_test_cases import case4gs, case118

pandapower/test/loadflow/test_runpp.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,11 @@
4444

4545
logger = logging.getLogger(__name__)
4646

47-
try:
48-
from pandapower.pf.makeYbus_numba import makeYbus as makeYbus_numba
47+
from pandapower.auxiliary import _check_if_numba_is_installed
4948

50-
numba_installed = True
51-
except ImportError:
52-
def makeYbus_numba():
53-
pass
54-
numba_installed = False
49+
numba_installed = _check_if_numba_is_installed()
50+
if numba_installed:
51+
from pandapower.pf.makeYbus_numba import makeYbus as makeYbus_numba
5552

5653

5754
def test_minimal_net(**kwargs):

0 commit comments

Comments
 (0)