power-grid-model 1.12.13__py3-none-macosx_13_0_arm64.whl → 1.12.90__py3-none-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- power_grid_model/_core/buffer_handling.py +8 -2
- power_grid_model/_core/data_handling.py +65 -11
- power_grid_model/_core/data_types.py +13 -2
- power_grid_model/_core/power_grid_dataset.py +5 -5
- power_grid_model/_core/power_grid_meta.py +16 -2
- power_grid_model/_core/power_grid_model.py +321 -18
- power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/dataset_definitions.h +8 -0
- power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelConfigVersion.cmake +3 -3
- power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets-release.cmake +3 -3
- power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets.cmake +1 -1
- power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.90.dylib +0 -0
- power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.dylib +0 -0
- power_grid_model/_core/typing.py +2 -2
- power_grid_model/_core/utils.py +13 -8
- power_grid_model/validation/errors.py +1 -1
- {power_grid_model-1.12.13.dist-info → power_grid_model-1.12.90.dist-info}/METADATA +2 -21
- {power_grid_model-1.12.13.dist-info → power_grid_model-1.12.90.dist-info}/RECORD +20 -20
- {power_grid_model-1.12.13.dist-info → power_grid_model-1.12.90.dist-info}/WHEEL +1 -1
- power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.13.dylib +0 -0
- {power_grid_model-1.12.13.dist-info → power_grid_model-1.12.90.dist-info}/entry_points.txt +0 -0
- {power_grid_model-1.12.13.dist-info → power_grid_model-1.12.90.dist-info}/licenses/LICENSE +0 -0
|
@@ -200,9 +200,15 @@ def _get_dense_buffer_properties(
|
|
|
200
200
|
n_total_elements = actual_batch_size * n_elements_per_scenario
|
|
201
201
|
|
|
202
202
|
if is_batch is not None and is_batch != actual_is_batch:
|
|
203
|
-
raise ValueError(
|
|
203
|
+
raise ValueError(
|
|
204
|
+
f"Incorrect/inconsistent data provided: {'batch' if actual_is_batch else 'single'} "
|
|
205
|
+
f"data provided but {'batch' if is_batch else 'single'} data expected. {VALIDATOR_MSG}"
|
|
206
|
+
)
|
|
204
207
|
if batch_size is not None and batch_size != actual_batch_size:
|
|
205
|
-
raise ValueError(
|
|
208
|
+
raise ValueError(
|
|
209
|
+
f"Incorrect/inconsistent batch size provided: {actual_batch_size} scenarios provided "
|
|
210
|
+
f"but {batch_size} scenarios expected. {VALIDATOR_MSG}"
|
|
211
|
+
)
|
|
206
212
|
|
|
207
213
|
return BufferProperties(
|
|
208
214
|
is_sparse=is_sparse_property,
|
|
@@ -6,16 +6,26 @@
|
|
|
6
6
|
Data handling
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
+
from typing import Literal, overload
|
|
10
|
+
|
|
9
11
|
import numpy as np
|
|
10
12
|
|
|
11
|
-
from power_grid_model._core.data_types import
|
|
12
|
-
|
|
13
|
+
from power_grid_model._core.data_types import (
|
|
14
|
+
BatchDataset,
|
|
15
|
+
Dataset,
|
|
16
|
+
DenseBatchArray,
|
|
17
|
+
SingleArray,
|
|
18
|
+
SingleColumnarData,
|
|
19
|
+
SingleDataset,
|
|
20
|
+
)
|
|
21
|
+
from power_grid_model._core.dataset_definitions import ComponentType, ComponentTypeVar, DatasetType
|
|
13
22
|
from power_grid_model._core.enum import CalculationType, ComponentAttributeFilterOptions
|
|
14
23
|
from power_grid_model._core.errors import PowerGridUnreachableHitError
|
|
15
24
|
from power_grid_model._core.power_grid_dataset import CConstDataset, CMutableDataset
|
|
16
25
|
from power_grid_model._core.power_grid_meta import initialize_array, power_grid_meta_data
|
|
17
|
-
from power_grid_model._core.typing import ComponentAttributeMapping
|
|
26
|
+
from power_grid_model._core.typing import ComponentAttributeMapping, ComponentAttributeMappingDict
|
|
18
27
|
from power_grid_model._core.utils import process_data_filter
|
|
28
|
+
from power_grid_model.data_types import DenseBatchColumnarData
|
|
19
29
|
|
|
20
30
|
|
|
21
31
|
def get_output_type(*, calculation_type: CalculationType, symmetric: bool) -> DatasetType:
|
|
@@ -85,6 +95,54 @@ def prepare_output_view(output_data: Dataset, output_type: DatasetType) -> CMuta
|
|
|
85
95
|
return CMutableDataset(output_data, dataset_type=output_type)
|
|
86
96
|
|
|
87
97
|
|
|
98
|
+
@overload
|
|
99
|
+
def create_output_data(
|
|
100
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar],
|
|
101
|
+
output_type: DatasetType,
|
|
102
|
+
all_component_count: dict[ComponentType, int],
|
|
103
|
+
is_batch: Literal[False],
|
|
104
|
+
batch_size: int,
|
|
105
|
+
) -> dict[ComponentType, SingleArray]: ...
|
|
106
|
+
@overload
|
|
107
|
+
def create_output_data(
|
|
108
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar],
|
|
109
|
+
output_type: DatasetType,
|
|
110
|
+
all_component_count: dict[ComponentType, int],
|
|
111
|
+
is_batch: Literal[True],
|
|
112
|
+
batch_size: int,
|
|
113
|
+
) -> dict[ComponentType, DenseBatchArray]: ...
|
|
114
|
+
@overload
|
|
115
|
+
def create_output_data(
|
|
116
|
+
output_component_types: ComponentAttributeFilterOptions,
|
|
117
|
+
output_type: DatasetType,
|
|
118
|
+
all_component_count: dict[ComponentType, int],
|
|
119
|
+
is_batch: Literal[False],
|
|
120
|
+
batch_size: int,
|
|
121
|
+
) -> dict[ComponentType, SingleColumnarData]: ...
|
|
122
|
+
@overload
|
|
123
|
+
def create_output_data(
|
|
124
|
+
output_component_types: ComponentAttributeFilterOptions,
|
|
125
|
+
output_type: DatasetType,
|
|
126
|
+
all_component_count: dict[ComponentType, int],
|
|
127
|
+
is_batch: Literal[True],
|
|
128
|
+
batch_size: int,
|
|
129
|
+
) -> dict[ComponentType, DenseBatchColumnarData]: ...
|
|
130
|
+
@overload
|
|
131
|
+
def create_output_data(
|
|
132
|
+
output_component_types: ComponentAttributeMappingDict,
|
|
133
|
+
output_type: DatasetType,
|
|
134
|
+
all_component_count: dict[ComponentType, int],
|
|
135
|
+
is_batch: Literal[False],
|
|
136
|
+
batch_size: int,
|
|
137
|
+
) -> SingleDataset: ...
|
|
138
|
+
@overload
|
|
139
|
+
def create_output_data(
|
|
140
|
+
output_component_types: ComponentAttributeMappingDict,
|
|
141
|
+
output_type: DatasetType,
|
|
142
|
+
all_component_count: dict[ComponentType, int],
|
|
143
|
+
is_batch: Literal[True],
|
|
144
|
+
batch_size: int,
|
|
145
|
+
) -> BatchDataset: ...
|
|
88
146
|
def create_output_data(
|
|
89
147
|
output_component_types: ComponentAttributeMapping,
|
|
90
148
|
output_type: DatasetType,
|
|
@@ -96,7 +154,7 @@ def create_output_data(
|
|
|
96
154
|
Create the output dataset based on component and batch size from the model; and output attributes requested by user.
|
|
97
155
|
|
|
98
156
|
Args:
|
|
99
|
-
output_component_types:
|
|
157
|
+
output_component_types (ComponentAttributeMapping):
|
|
100
158
|
the output components the user seeks to extract
|
|
101
159
|
output_type:
|
|
102
160
|
the type of output that the user will see (as per the calculation options)
|
|
@@ -118,11 +176,7 @@ def create_output_data(
|
|
|
118
176
|
result_dict: Dataset = {}
|
|
119
177
|
|
|
120
178
|
for name, count in all_component_count.items():
|
|
121
|
-
|
|
122
|
-
if is_batch:
|
|
123
|
-
shape: tuple[int] | tuple[int, int] = (batch_size, count)
|
|
124
|
-
else:
|
|
125
|
-
shape = (count,)
|
|
179
|
+
shape: tuple[int, int] | int = (batch_size, count) if is_batch else count
|
|
126
180
|
|
|
127
181
|
requested_component = processed_output_types[name]
|
|
128
182
|
dtype = power_grid_meta_data[output_type][name].dtype
|
|
@@ -134,8 +188,8 @@ def create_output_data(
|
|
|
134
188
|
ComponentAttributeFilterOptions.everything,
|
|
135
189
|
ComponentAttributeFilterOptions.relevant,
|
|
136
190
|
]:
|
|
137
|
-
result_dict[name] = {attr: np.empty(shape, dtype=dtype[attr]) for attr in dtype.names}
|
|
191
|
+
result_dict[name] = {attr: np.empty(shape=shape, dtype=dtype[attr]) for attr in dtype.names}
|
|
138
192
|
elif isinstance(requested_component, list | set):
|
|
139
|
-
result_dict[name] = {attr: np.empty(shape, dtype=dtype[attr]) for attr in requested_component}
|
|
193
|
+
result_dict[name] = {attr: np.empty(shape=shape, dtype=dtype[attr]) for attr in requested_component}
|
|
140
194
|
|
|
141
195
|
return result_dict
|
|
@@ -13,7 +13,7 @@ from typing import TypeAlias, TypedDict, TypeVar
|
|
|
13
13
|
|
|
14
14
|
import numpy as np
|
|
15
15
|
|
|
16
|
-
from power_grid_model._core.dataset_definitions import ComponentTypeVar
|
|
16
|
+
from power_grid_model._core.dataset_definitions import ComponentType, ComponentTypeVar
|
|
17
17
|
|
|
18
18
|
SingleArray: TypeAlias = np.ndarray
|
|
19
19
|
|
|
@@ -28,7 +28,8 @@ SingleColumnarData = dict[AttributeType, SingleColumn]
|
|
|
28
28
|
_SingleComponentData = TypeVar("_SingleComponentData", SingleArray, SingleColumnarData) # deduction helper
|
|
29
29
|
SingleComponentData = SingleArray | SingleColumnarData
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
SingleRowBasedDataset = dict[ComponentTypeVar, SingleArray]
|
|
32
|
+
SingleColumnarDataset = dict[ComponentTypeVar, SingleColumnarData]
|
|
32
33
|
SingleDataset = dict[ComponentTypeVar, _SingleComponentData]
|
|
33
34
|
|
|
34
35
|
BatchList = list[SingleDataset]
|
|
@@ -113,6 +114,16 @@ Dataset = dict[ComponentTypeVar, _ComponentData]
|
|
|
113
114
|
|
|
114
115
|
DenseBatchData = DenseBatchArray | DenseBatchColumnarData
|
|
115
116
|
|
|
117
|
+
# overloads that only match on latest PGM type
|
|
118
|
+
SingleRowBasedOutputDataset = dict[ComponentType, SingleArray]
|
|
119
|
+
SingleColumnarOutputDataset = dict[ComponentType, SingleColumnarData]
|
|
120
|
+
SingleOutputDataset = dict[ComponentType, SingleComponentData]
|
|
121
|
+
DenseBatchRowBasedOutputDataset = dict[ComponentType, DenseBatchArray]
|
|
122
|
+
DenseBatchColumnarOutputDataset = dict[ComponentType, DenseBatchColumnarData]
|
|
123
|
+
DenseBatchOutputDataset = dict[ComponentType, DenseBatchData]
|
|
124
|
+
OutputDataset = dict[ComponentType, ComponentData]
|
|
125
|
+
|
|
126
|
+
|
|
116
127
|
NominalValue = int
|
|
117
128
|
|
|
118
129
|
RealValue = float
|
|
@@ -37,7 +37,7 @@ from power_grid_model._core.power_grid_core import (
|
|
|
37
37
|
power_grid_core as pgc,
|
|
38
38
|
)
|
|
39
39
|
from power_grid_model._core.power_grid_meta import ComponentMetaData, DatasetMetaData, power_grid_meta_data
|
|
40
|
-
from power_grid_model._core.typing import ComponentAttributeMapping,
|
|
40
|
+
from power_grid_model._core.typing import ComponentAttributeMapping, ComponentAttributeMappingDict
|
|
41
41
|
from power_grid_model._core.utils import (
|
|
42
42
|
get_dataset_type,
|
|
43
43
|
is_columnar,
|
|
@@ -240,7 +240,7 @@ class CMutableDataset:
|
|
|
240
240
|
data: the data.
|
|
241
241
|
|
|
242
242
|
Raises:
|
|
243
|
-
ValueError: if the component is unknown
|
|
243
|
+
ValueError: if the component is unknown.
|
|
244
244
|
ValueError: if the data is inconsistent with the rest of the dataset.
|
|
245
245
|
PowerGridError: if there was an internal error.
|
|
246
246
|
"""
|
|
@@ -294,7 +294,7 @@ class CMutableDataset:
|
|
|
294
294
|
assert_no_error()
|
|
295
295
|
|
|
296
296
|
def _validate_properties(self, data: ComponentData, schema: ComponentMetaData):
|
|
297
|
-
properties = get_buffer_properties(data, schema=schema, is_batch=
|
|
297
|
+
properties = get_buffer_properties(data, schema=schema, is_batch=None, batch_size=None)
|
|
298
298
|
if properties.is_batch != self._is_batch:
|
|
299
299
|
raise ValueError(
|
|
300
300
|
f"Dataset type (single or batch) must be consistent across all components. {VALIDATOR_MSG}"
|
|
@@ -426,11 +426,11 @@ class CWritableDataset:
|
|
|
426
426
|
"""
|
|
427
427
|
return self._data[component]
|
|
428
428
|
|
|
429
|
-
def get_data_filter(self) ->
|
|
429
|
+
def get_data_filter(self) -> ComponentAttributeMappingDict:
|
|
430
430
|
"""Gets the data filter requested
|
|
431
431
|
|
|
432
432
|
Returns:
|
|
433
|
-
|
|
433
|
+
ComponentAttributeMappingDict: data filter
|
|
434
434
|
"""
|
|
435
435
|
return self._data_filter
|
|
436
436
|
|
|
@@ -8,7 +8,7 @@ Load meta data from C core and define numpy structured array
|
|
|
8
8
|
|
|
9
9
|
from dataclasses import dataclass
|
|
10
10
|
from enum import IntEnum
|
|
11
|
-
from typing import Any
|
|
11
|
+
from typing import Any, overload
|
|
12
12
|
|
|
13
13
|
import numpy as np
|
|
14
14
|
|
|
@@ -172,10 +172,24 @@ The data types for all dataset types and components used by the Power Grid Model
|
|
|
172
172
|
"""
|
|
173
173
|
|
|
174
174
|
|
|
175
|
+
@overload
|
|
175
176
|
def initialize_array(
|
|
176
177
|
data_type: DatasetTypeLike,
|
|
177
178
|
component_type: ComponentTypeLike,
|
|
178
|
-
shape:
|
|
179
|
+
shape: int | tuple[int],
|
|
180
|
+
empty: bool = False,
|
|
181
|
+
) -> SingleArray: ...
|
|
182
|
+
@overload
|
|
183
|
+
def initialize_array(
|
|
184
|
+
data_type: DatasetTypeLike,
|
|
185
|
+
component_type: ComponentTypeLike,
|
|
186
|
+
shape: tuple[int, int],
|
|
187
|
+
empty: bool = False,
|
|
188
|
+
) -> DenseBatchArray: ...
|
|
189
|
+
def initialize_array(
|
|
190
|
+
data_type: DatasetTypeLike,
|
|
191
|
+
component_type: ComponentTypeLike,
|
|
192
|
+
shape: int | tuple[int] | tuple[int, int],
|
|
179
193
|
empty: bool = False,
|
|
180
194
|
) -> SingleArray | DenseBatchArray:
|
|
181
195
|
"""
|
|
@@ -7,6 +7,7 @@ Main power grid model class
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from enum import IntEnum
|
|
10
|
+
from typing import Any, overload
|
|
10
11
|
|
|
11
12
|
import numpy as np
|
|
12
13
|
|
|
@@ -17,16 +18,29 @@ from power_grid_model._core.data_handling import (
|
|
|
17
18
|
prepare_output_view,
|
|
18
19
|
prepare_update_view,
|
|
19
20
|
)
|
|
20
|
-
from power_grid_model._core.data_types import
|
|
21
|
+
from power_grid_model._core.data_types import (
|
|
22
|
+
BatchDataset,
|
|
23
|
+
Dataset,
|
|
24
|
+
DenseBatchColumnarOutputDataset,
|
|
25
|
+
DenseBatchOutputDataset,
|
|
26
|
+
DenseBatchRowBasedOutputDataset,
|
|
27
|
+
SingleColumnarOutputDataset,
|
|
28
|
+
SingleDataset,
|
|
29
|
+
SingleOutputDataset,
|
|
30
|
+
SingleRowBasedDataset,
|
|
31
|
+
SingleRowBasedOutputDataset,
|
|
32
|
+
)
|
|
21
33
|
from power_grid_model._core.dataset_definitions import (
|
|
22
34
|
ComponentType,
|
|
23
35
|
ComponentTypeLike,
|
|
36
|
+
ComponentTypeVar,
|
|
24
37
|
_map_to_component_types,
|
|
25
38
|
_str_to_component_type,
|
|
26
39
|
)
|
|
27
40
|
from power_grid_model._core.enum import (
|
|
28
41
|
CalculationMethod,
|
|
29
42
|
CalculationType,
|
|
43
|
+
ComponentAttributeFilterOptions,
|
|
30
44
|
ShortCircuitVoltageScaling,
|
|
31
45
|
TapChangingStrategy,
|
|
32
46
|
_ExperimentalFeatures,
|
|
@@ -35,7 +49,7 @@ from power_grid_model._core.error_handling import PowerGridBatchError, assert_no
|
|
|
35
49
|
from power_grid_model._core.index_integer import IdNp, IdxNp
|
|
36
50
|
from power_grid_model._core.options import Options
|
|
37
51
|
from power_grid_model._core.power_grid_core import ConstDatasetPtr, IDPtr, IdxPtr, ModelPtr, power_grid_core as pgc
|
|
38
|
-
from power_grid_model._core.typing import ComponentAttributeMapping
|
|
52
|
+
from power_grid_model._core.typing import ComponentAttributeMapping, ComponentAttributeMappingDict
|
|
39
53
|
|
|
40
54
|
|
|
41
55
|
class PowerGridModel:
|
|
@@ -94,9 +108,38 @@ class PowerGridModel:
|
|
|
94
108
|
new_model._all_component_count = self._all_component_count
|
|
95
109
|
return new_model
|
|
96
110
|
|
|
97
|
-
def __copy__(self):
|
|
111
|
+
def __copy__(self) -> "PowerGridModel":
|
|
98
112
|
return self.copy()
|
|
99
113
|
|
|
114
|
+
def __deepcopy__(self, memo: dict[int, Any]) -> "PowerGridModel":
|
|
115
|
+
# PowerGridModel.copy makes already a deepcopy
|
|
116
|
+
new_model = self.copy()
|
|
117
|
+
|
|
118
|
+
# memorize that this object (self) has been deepcopied
|
|
119
|
+
memo[id(self)] = new_model
|
|
120
|
+
|
|
121
|
+
return new_model
|
|
122
|
+
|
|
123
|
+
def __repr__(self) -> str:
|
|
124
|
+
"""Return a string representation of the current model.
|
|
125
|
+
|
|
126
|
+
This includes the total number of components and the number of components per component type of the model.
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
String representation of the model
|
|
130
|
+
"""
|
|
131
|
+
try:
|
|
132
|
+
component_count = self.all_component_count
|
|
133
|
+
except TypeError:
|
|
134
|
+
component_count = {}
|
|
135
|
+
|
|
136
|
+
message = f"{self.__class__.__name__} ({sum(component_count.values())} components)\n"
|
|
137
|
+
|
|
138
|
+
for component_type, number in component_count.items():
|
|
139
|
+
message += f" - {component_type.value}: {number}\n"
|
|
140
|
+
|
|
141
|
+
return message
|
|
142
|
+
|
|
100
143
|
def __new__(cls, *_args, **_kwargs):
|
|
101
144
|
instance = super().__new__(cls)
|
|
102
145
|
instance._model_ptr = ModelPtr()
|
|
@@ -199,7 +242,7 @@ class PowerGridModel:
|
|
|
199
242
|
symmetric: bool,
|
|
200
243
|
is_batch: bool,
|
|
201
244
|
batch_size: int,
|
|
202
|
-
)
|
|
245
|
+
):
|
|
203
246
|
all_component_count = self._get_output_component_count(calculation_type=calculation_type)
|
|
204
247
|
return create_output_data(
|
|
205
248
|
output_component_types=output_component_types,
|
|
@@ -215,7 +258,7 @@ class PowerGridModel:
|
|
|
215
258
|
if key_enum in kwargs:
|
|
216
259
|
value_enum = kwargs[key_enum]
|
|
217
260
|
if isinstance(value_enum, str):
|
|
218
|
-
kwargs[key_enum] = type_[value_enum]
|
|
261
|
+
kwargs[key_enum] = type_[value_enum] # NOSONAR(S5864) IntEnum has __getitem__
|
|
219
262
|
|
|
220
263
|
as_enum_value("calculation_method", CalculationMethod)
|
|
221
264
|
as_enum_value("tap_changing_strategy", TapChangingStrategy)
|
|
@@ -244,7 +287,7 @@ class PowerGridModel:
|
|
|
244
287
|
continue_on_batch_error: bool,
|
|
245
288
|
decode_error: bool,
|
|
246
289
|
experimental_features: _ExperimentalFeatures | str, # NOSONAR # noqa: ARG002
|
|
247
|
-
):
|
|
290
|
+
) -> Dataset:
|
|
248
291
|
"""
|
|
249
292
|
Core calculation routine
|
|
250
293
|
|
|
@@ -313,7 +356,7 @@ class PowerGridModel:
|
|
|
313
356
|
decode_error: bool = True,
|
|
314
357
|
tap_changing_strategy: TapChangingStrategy | str = TapChangingStrategy.disabled,
|
|
315
358
|
experimental_features: _ExperimentalFeatures | str = _ExperimentalFeatures.disabled,
|
|
316
|
-
):
|
|
359
|
+
) -> Dataset:
|
|
317
360
|
calculation_type = CalculationType.power_flow
|
|
318
361
|
options = self._options(
|
|
319
362
|
calculation_type=calculation_type,
|
|
@@ -349,7 +392,7 @@ class PowerGridModel:
|
|
|
349
392
|
continue_on_batch_error: bool = False,
|
|
350
393
|
decode_error: bool = True,
|
|
351
394
|
experimental_features: _ExperimentalFeatures | str = _ExperimentalFeatures.disabled,
|
|
352
|
-
) ->
|
|
395
|
+
) -> Dataset:
|
|
353
396
|
calculation_type = CalculationType.state_estimation
|
|
354
397
|
options = self._options(
|
|
355
398
|
calculation_type=calculation_type,
|
|
@@ -382,7 +425,7 @@ class PowerGridModel:
|
|
|
382
425
|
decode_error: bool = True,
|
|
383
426
|
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str = ShortCircuitVoltageScaling.maximum,
|
|
384
427
|
experimental_features: _ExperimentalFeatures | str = _ExperimentalFeatures.disabled,
|
|
385
|
-
) ->
|
|
428
|
+
) -> Dataset:
|
|
386
429
|
calculation_type = CalculationType.short_circuit
|
|
387
430
|
symmetric = False
|
|
388
431
|
|
|
@@ -405,6 +448,110 @@ class PowerGridModel:
|
|
|
405
448
|
experimental_features=experimental_features,
|
|
406
449
|
)
|
|
407
450
|
|
|
451
|
+
@overload
|
|
452
|
+
def calculate_power_flow(
|
|
453
|
+
self,
|
|
454
|
+
*,
|
|
455
|
+
symmetric: bool = ...,
|
|
456
|
+
error_tolerance: float = ...,
|
|
457
|
+
max_iterations: int = ...,
|
|
458
|
+
calculation_method: CalculationMethod | str = ...,
|
|
459
|
+
threading: int = ...,
|
|
460
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar] = ...,
|
|
461
|
+
continue_on_batch_error: bool = ...,
|
|
462
|
+
decode_error: bool = ...,
|
|
463
|
+
tap_changing_strategy: TapChangingStrategy | str = ...,
|
|
464
|
+
) -> SingleRowBasedDataset: ...
|
|
465
|
+
@overload
|
|
466
|
+
def calculate_power_flow(
|
|
467
|
+
self,
|
|
468
|
+
*,
|
|
469
|
+
symmetric: bool = ...,
|
|
470
|
+
error_tolerance: float = ...,
|
|
471
|
+
max_iterations: int = ...,
|
|
472
|
+
calculation_method: CalculationMethod | str = ...,
|
|
473
|
+
update_data: None = ...,
|
|
474
|
+
threading: int = ...,
|
|
475
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar] = ...,
|
|
476
|
+
continue_on_batch_error: bool = ...,
|
|
477
|
+
decode_error: bool = ...,
|
|
478
|
+
tap_changing_strategy: TapChangingStrategy | str = ...,
|
|
479
|
+
) -> SingleRowBasedDataset: ...
|
|
480
|
+
@overload
|
|
481
|
+
def calculate_power_flow(
|
|
482
|
+
self,
|
|
483
|
+
*,
|
|
484
|
+
symmetric: bool = ...,
|
|
485
|
+
error_tolerance: float = ...,
|
|
486
|
+
max_iterations: int = ...,
|
|
487
|
+
calculation_method: CalculationMethod | str = ...,
|
|
488
|
+
update_data: None = ...,
|
|
489
|
+
threading: int = ...,
|
|
490
|
+
output_component_types: ComponentAttributeFilterOptions = ...,
|
|
491
|
+
continue_on_batch_error: bool = ...,
|
|
492
|
+
decode_error: bool = ...,
|
|
493
|
+
tap_changing_strategy: TapChangingStrategy | str = ...,
|
|
494
|
+
) -> SingleColumnarOutputDataset: ...
|
|
495
|
+
@overload
|
|
496
|
+
def calculate_power_flow(
|
|
497
|
+
self,
|
|
498
|
+
*,
|
|
499
|
+
symmetric: bool = ...,
|
|
500
|
+
error_tolerance: float = ...,
|
|
501
|
+
max_iterations: int = ...,
|
|
502
|
+
calculation_method: CalculationMethod | str = ...,
|
|
503
|
+
update_data: None = ...,
|
|
504
|
+
threading: int = ...,
|
|
505
|
+
output_component_types: ComponentAttributeMappingDict = ...,
|
|
506
|
+
continue_on_batch_error: bool = ...,
|
|
507
|
+
decode_error: bool = ...,
|
|
508
|
+
tap_changing_strategy: TapChangingStrategy | str = ...,
|
|
509
|
+
) -> SingleOutputDataset: ...
|
|
510
|
+
@overload
|
|
511
|
+
def calculate_power_flow(
|
|
512
|
+
self,
|
|
513
|
+
*,
|
|
514
|
+
symmetric: bool = ...,
|
|
515
|
+
error_tolerance: float = ...,
|
|
516
|
+
max_iterations: int = ...,
|
|
517
|
+
calculation_method: CalculationMethod | str = ...,
|
|
518
|
+
update_data: BatchDataset = ...,
|
|
519
|
+
threading: int = ...,
|
|
520
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar] = ...,
|
|
521
|
+
continue_on_batch_error: bool = ...,
|
|
522
|
+
decode_error: bool = ...,
|
|
523
|
+
tap_changing_strategy: TapChangingStrategy | str = ...,
|
|
524
|
+
) -> DenseBatchRowBasedOutputDataset: ...
|
|
525
|
+
@overload
|
|
526
|
+
def calculate_power_flow(
|
|
527
|
+
self,
|
|
528
|
+
*,
|
|
529
|
+
symmetric: bool = ...,
|
|
530
|
+
error_tolerance: float = ...,
|
|
531
|
+
max_iterations: int = ...,
|
|
532
|
+
calculation_method: CalculationMethod | str = ...,
|
|
533
|
+
update_data: BatchDataset = ...,
|
|
534
|
+
threading: int = ...,
|
|
535
|
+
output_component_types: ComponentAttributeFilterOptions = ...,
|
|
536
|
+
continue_on_batch_error: bool = ...,
|
|
537
|
+
decode_error: bool = ...,
|
|
538
|
+
tap_changing_strategy: TapChangingStrategy | str = ...,
|
|
539
|
+
) -> DenseBatchColumnarOutputDataset: ...
|
|
540
|
+
@overload
|
|
541
|
+
def calculate_power_flow(
|
|
542
|
+
self,
|
|
543
|
+
*,
|
|
544
|
+
symmetric: bool = ...,
|
|
545
|
+
error_tolerance: float = ...,
|
|
546
|
+
max_iterations: int = ...,
|
|
547
|
+
calculation_method: CalculationMethod | str = ...,
|
|
548
|
+
update_data: BatchDataset = ...,
|
|
549
|
+
threading: int = ...,
|
|
550
|
+
output_component_types: ComponentAttributeMappingDict = ...,
|
|
551
|
+
continue_on_batch_error: bool = ...,
|
|
552
|
+
decode_error: bool = ...,
|
|
553
|
+
tap_changing_strategy: TapChangingStrategy | str = ...,
|
|
554
|
+
) -> DenseBatchOutputDataset: ...
|
|
408
555
|
def calculate_power_flow( # noqa: PLR0913
|
|
409
556
|
self,
|
|
410
557
|
*,
|
|
@@ -412,13 +559,13 @@ class PowerGridModel:
|
|
|
412
559
|
error_tolerance: float = 1e-8,
|
|
413
560
|
max_iterations: int = 20,
|
|
414
561
|
calculation_method: CalculationMethod | str = CalculationMethod.newton_raphson,
|
|
415
|
-
update_data:
|
|
562
|
+
update_data: BatchDataset | None = None,
|
|
416
563
|
threading: int = -1,
|
|
417
564
|
output_component_types: ComponentAttributeMapping = None,
|
|
418
565
|
continue_on_batch_error: bool = False,
|
|
419
566
|
decode_error: bool = True,
|
|
420
567
|
tap_changing_strategy: TapChangingStrategy | str = TapChangingStrategy.disabled,
|
|
421
|
-
) ->
|
|
568
|
+
) -> Dataset:
|
|
422
569
|
"""
|
|
423
570
|
Calculate power flow once with the current model attributes.
|
|
424
571
|
Or calculate in batch with the given update dataset in batch.
|
|
@@ -464,7 +611,7 @@ class PowerGridModel:
|
|
|
464
611
|
- None: Row based data for all component types.
|
|
465
612
|
- set[ComponentTypeVar] or list[ComponentTypeVar]: Row based data for the specified component types.
|
|
466
613
|
- ComponentAttributeFilterOptions: Columnar data for all component types.
|
|
467
|
-
-
|
|
614
|
+
- ComponentAttributeMappingDict:
|
|
468
615
|
key: ComponentType
|
|
469
616
|
value:
|
|
470
617
|
- None: Row based data for the specified component types.
|
|
@@ -504,6 +651,90 @@ class PowerGridModel:
|
|
|
504
651
|
tap_changing_strategy=tap_changing_strategy,
|
|
505
652
|
)
|
|
506
653
|
|
|
654
|
+
@overload
|
|
655
|
+
def calculate_state_estimation(
|
|
656
|
+
self,
|
|
657
|
+
*,
|
|
658
|
+
symmetric: bool = ...,
|
|
659
|
+
error_tolerance: float = ...,
|
|
660
|
+
max_iterations: int = ...,
|
|
661
|
+
calculation_method: CalculationMethod | str = ...,
|
|
662
|
+
update_data: None = ...,
|
|
663
|
+
threading: int = ...,
|
|
664
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar] = ...,
|
|
665
|
+
continue_on_batch_error: bool = ...,
|
|
666
|
+
decode_error: bool = ...,
|
|
667
|
+
) -> SingleRowBasedOutputDataset: ...
|
|
668
|
+
@overload
|
|
669
|
+
def calculate_state_estimation(
|
|
670
|
+
self,
|
|
671
|
+
*,
|
|
672
|
+
symmetric: bool = ...,
|
|
673
|
+
error_tolerance: float = ...,
|
|
674
|
+
max_iterations: int = ...,
|
|
675
|
+
calculation_method: CalculationMethod | str = ...,
|
|
676
|
+
update_data: None = ...,
|
|
677
|
+
threading: int = ...,
|
|
678
|
+
output_component_types: ComponentAttributeFilterOptions = ...,
|
|
679
|
+
continue_on_batch_error: bool = ...,
|
|
680
|
+
decode_error: bool = ...,
|
|
681
|
+
) -> SingleColumnarOutputDataset: ...
|
|
682
|
+
@overload
|
|
683
|
+
def calculate_state_estimation(
|
|
684
|
+
self,
|
|
685
|
+
*,
|
|
686
|
+
symmetric: bool = ...,
|
|
687
|
+
error_tolerance: float = ...,
|
|
688
|
+
max_iterations: int = ...,
|
|
689
|
+
calculation_method: CalculationMethod | str = ...,
|
|
690
|
+
update_data: None = ...,
|
|
691
|
+
threading: int = ...,
|
|
692
|
+
output_component_types: ComponentAttributeMappingDict = ...,
|
|
693
|
+
continue_on_batch_error: bool = ...,
|
|
694
|
+
decode_error: bool = ...,
|
|
695
|
+
) -> SingleOutputDataset: ...
|
|
696
|
+
@overload
|
|
697
|
+
def calculate_state_estimation(
|
|
698
|
+
self,
|
|
699
|
+
*,
|
|
700
|
+
symmetric: bool = ...,
|
|
701
|
+
error_tolerance: float = ...,
|
|
702
|
+
max_iterations: int = ...,
|
|
703
|
+
calculation_method: CalculationMethod | str = ...,
|
|
704
|
+
update_data: BatchDataset = ...,
|
|
705
|
+
threading: int = ...,
|
|
706
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar] = ...,
|
|
707
|
+
continue_on_batch_error: bool = ...,
|
|
708
|
+
decode_error: bool = ...,
|
|
709
|
+
) -> DenseBatchRowBasedOutputDataset: ...
|
|
710
|
+
@overload
|
|
711
|
+
def calculate_state_estimation(
|
|
712
|
+
self,
|
|
713
|
+
*,
|
|
714
|
+
symmetric: bool = ...,
|
|
715
|
+
error_tolerance: float = ...,
|
|
716
|
+
max_iterations: int = ...,
|
|
717
|
+
calculation_method: CalculationMethod | str = ...,
|
|
718
|
+
update_data: BatchDataset = ...,
|
|
719
|
+
threading: int = ...,
|
|
720
|
+
output_component_types: ComponentAttributeFilterOptions = ...,
|
|
721
|
+
continue_on_batch_error: bool = ...,
|
|
722
|
+
decode_error: bool = ...,
|
|
723
|
+
) -> DenseBatchColumnarOutputDataset: ...
|
|
724
|
+
@overload
|
|
725
|
+
def calculate_state_estimation(
|
|
726
|
+
self,
|
|
727
|
+
*,
|
|
728
|
+
symmetric: bool = ...,
|
|
729
|
+
error_tolerance: float = ...,
|
|
730
|
+
max_iterations: int = ...,
|
|
731
|
+
calculation_method: CalculationMethod | str = ...,
|
|
732
|
+
update_data: BatchDataset = ...,
|
|
733
|
+
threading: int = ...,
|
|
734
|
+
output_component_types: ComponentAttributeMappingDict = ...,
|
|
735
|
+
continue_on_batch_error: bool = ...,
|
|
736
|
+
decode_error: bool = ...,
|
|
737
|
+
) -> DenseBatchOutputDataset: ...
|
|
507
738
|
def calculate_state_estimation( # noqa: PLR0913
|
|
508
739
|
self,
|
|
509
740
|
*,
|
|
@@ -511,12 +742,12 @@ class PowerGridModel:
|
|
|
511
742
|
error_tolerance: float = 1e-8,
|
|
512
743
|
max_iterations: int = 20,
|
|
513
744
|
calculation_method: CalculationMethod | str = CalculationMethod.iterative_linear,
|
|
514
|
-
update_data:
|
|
745
|
+
update_data: BatchDataset | None = None,
|
|
515
746
|
threading: int = -1,
|
|
516
747
|
output_component_types: ComponentAttributeMapping = None,
|
|
517
748
|
continue_on_batch_error: bool = False,
|
|
518
749
|
decode_error: bool = True,
|
|
519
|
-
) ->
|
|
750
|
+
) -> Dataset:
|
|
520
751
|
"""
|
|
521
752
|
Calculate state estimation once with the current model attributes.
|
|
522
753
|
Or calculate in batch with the given update dataset in batch.
|
|
@@ -559,7 +790,7 @@ class PowerGridModel:
|
|
|
559
790
|
- None: Row based data for all component types.
|
|
560
791
|
- set[ComponentTypeVar] or list[ComponentTypeVar]: Row based data for the specified component types.
|
|
561
792
|
- ComponentAttributeFilterOptions: Columnar data for all component types.
|
|
562
|
-
-
|
|
793
|
+
- ComponentAttributeMappingDict:
|
|
563
794
|
key: ComponentType
|
|
564
795
|
value:
|
|
565
796
|
- None: Row based data for the specified component types.
|
|
@@ -598,17 +829,89 @@ class PowerGridModel:
|
|
|
598
829
|
decode_error=decode_error,
|
|
599
830
|
)
|
|
600
831
|
|
|
832
|
+
@overload
|
|
833
|
+
def calculate_short_circuit(
|
|
834
|
+
self,
|
|
835
|
+
*,
|
|
836
|
+
calculation_method: CalculationMethod | str = ...,
|
|
837
|
+
update_data: None = ...,
|
|
838
|
+
threading: int = ...,
|
|
839
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar] = ...,
|
|
840
|
+
continue_on_batch_error: bool = ...,
|
|
841
|
+
decode_error: bool = ...,
|
|
842
|
+
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str,
|
|
843
|
+
) -> SingleRowBasedDataset: ...
|
|
844
|
+
@overload
|
|
845
|
+
def calculate_short_circuit(
|
|
846
|
+
self,
|
|
847
|
+
*,
|
|
848
|
+
calculation_method: CalculationMethod | str = ...,
|
|
849
|
+
update_data: None = ...,
|
|
850
|
+
threading: int = ...,
|
|
851
|
+
output_component_types: ComponentAttributeFilterOptions = ...,
|
|
852
|
+
continue_on_batch_error: bool = ...,
|
|
853
|
+
decode_error: bool = ...,
|
|
854
|
+
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str,
|
|
855
|
+
) -> SingleColumnarOutputDataset: ...
|
|
856
|
+
@overload
|
|
857
|
+
def calculate_short_circuit(
|
|
858
|
+
self,
|
|
859
|
+
*,
|
|
860
|
+
calculation_method: CalculationMethod | str = ...,
|
|
861
|
+
update_data: None = ...,
|
|
862
|
+
threading: int = ...,
|
|
863
|
+
output_component_types: ComponentAttributeMappingDict = ...,
|
|
864
|
+
continue_on_batch_error: bool = ...,
|
|
865
|
+
decode_error: bool = ...,
|
|
866
|
+
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str,
|
|
867
|
+
) -> SingleOutputDataset: ...
|
|
868
|
+
@overload
|
|
869
|
+
def calculate_short_circuit(
|
|
870
|
+
self,
|
|
871
|
+
*,
|
|
872
|
+
calculation_method: CalculationMethod | str = ...,
|
|
873
|
+
update_data: BatchDataset = ...,
|
|
874
|
+
threading: int = ...,
|
|
875
|
+
output_component_types: None | set[ComponentTypeVar] | list[ComponentTypeVar] = ...,
|
|
876
|
+
continue_on_batch_error: bool = ...,
|
|
877
|
+
decode_error: bool = ...,
|
|
878
|
+
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str,
|
|
879
|
+
) -> DenseBatchRowBasedOutputDataset: ...
|
|
880
|
+
@overload
|
|
881
|
+
def calculate_short_circuit(
|
|
882
|
+
self,
|
|
883
|
+
*,
|
|
884
|
+
calculation_method: CalculationMethod | str = ...,
|
|
885
|
+
update_data: BatchDataset = ...,
|
|
886
|
+
threading: int = ...,
|
|
887
|
+
output_component_types: ComponentAttributeFilterOptions = ...,
|
|
888
|
+
continue_on_batch_error: bool = ...,
|
|
889
|
+
decode_error: bool = ...,
|
|
890
|
+
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str,
|
|
891
|
+
) -> DenseBatchColumnarOutputDataset: ...
|
|
892
|
+
@overload
|
|
893
|
+
def calculate_short_circuit(
|
|
894
|
+
self,
|
|
895
|
+
*,
|
|
896
|
+
calculation_method: CalculationMethod | str = ...,
|
|
897
|
+
update_data: BatchDataset = ...,
|
|
898
|
+
threading: int = ...,
|
|
899
|
+
output_component_types: ComponentAttributeMappingDict = ...,
|
|
900
|
+
continue_on_batch_error: bool = ...,
|
|
901
|
+
decode_error: bool = ...,
|
|
902
|
+
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str,
|
|
903
|
+
) -> DenseBatchOutputDataset: ...
|
|
601
904
|
def calculate_short_circuit( # noqa: PLR0913
|
|
602
905
|
self,
|
|
603
906
|
*,
|
|
604
907
|
calculation_method: CalculationMethod | str = CalculationMethod.iec60909,
|
|
605
|
-
update_data:
|
|
908
|
+
update_data: BatchDataset | None = None,
|
|
606
909
|
threading: int = -1,
|
|
607
910
|
output_component_types: ComponentAttributeMapping = None,
|
|
608
911
|
continue_on_batch_error: bool = False,
|
|
609
912
|
decode_error: bool = True,
|
|
610
913
|
short_circuit_voltage_scaling: ShortCircuitVoltageScaling | str = ShortCircuitVoltageScaling.maximum,
|
|
611
|
-
) ->
|
|
914
|
+
) -> Dataset:
|
|
612
915
|
"""
|
|
613
916
|
Calculate a short circuit once with the current model attributes.
|
|
614
917
|
Or calculate in batch with the given update dataset in batch
|
|
@@ -643,7 +946,7 @@ class PowerGridModel:
|
|
|
643
946
|
- None: Row based data for all component types.
|
|
644
947
|
- set[ComponentTypeVar] or list[ComponentTypeVar]: Row based data for the specified component types.
|
|
645
948
|
- ComponentAttributeFilterOptions: Columnar data for all component types.
|
|
646
|
-
-
|
|
949
|
+
- ComponentAttributeMappingDict:
|
|
647
950
|
key: ComponentType
|
|
648
951
|
value:
|
|
649
952
|
- None: Row based data for the specified component types.
|
|
@@ -122,6 +122,8 @@ PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_uk;
|
|
|
122
122
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_pk;
|
|
123
123
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_i0;
|
|
124
124
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_p0;
|
|
125
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_i0_zero_sequence;
|
|
126
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_p0_zero_sequence;
|
|
125
127
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_winding_from;
|
|
126
128
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_winding_to;
|
|
127
129
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_input_transformer_clock;
|
|
@@ -424,6 +426,9 @@ PGM_API extern PGM_MetaComponent const* const PGM_def_sym_output_three_winding_t
|
|
|
424
426
|
// attributes of sym_output three_winding_transformer
|
|
425
427
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_id;
|
|
426
428
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_energized;
|
|
429
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_loading_1;
|
|
430
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_loading_2;
|
|
431
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_loading_3;
|
|
427
432
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_loading;
|
|
428
433
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_p_1;
|
|
429
434
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_sym_output_three_winding_transformer_q_1;
|
|
@@ -638,6 +643,9 @@ PGM_API extern PGM_MetaComponent const* const PGM_def_asym_output_three_winding_
|
|
|
638
643
|
// attributes of asym_output three_winding_transformer
|
|
639
644
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_id;
|
|
640
645
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_energized;
|
|
646
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_loading_1;
|
|
647
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_loading_2;
|
|
648
|
+
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_loading_3;
|
|
641
649
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_loading;
|
|
642
650
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_p_1;
|
|
643
651
|
PGM_API extern PGM_MetaAttribute const* const PGM_def_asym_output_three_winding_transformer_q_1;
|
|
@@ -9,19 +9,19 @@
|
|
|
9
9
|
# The variable CVF_VERSION must be set before calling configure_file().
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
set(PACKAGE_VERSION "1.12.
|
|
12
|
+
set(PACKAGE_VERSION "1.12.90")
|
|
13
13
|
|
|
14
14
|
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
|
15
15
|
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
16
16
|
else()
|
|
17
17
|
|
|
18
|
-
if("1.12.
|
|
18
|
+
if("1.12.90" MATCHES "^([0-9]+)\\.")
|
|
19
19
|
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
|
20
20
|
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
|
|
21
21
|
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
|
|
22
22
|
endif()
|
|
23
23
|
else()
|
|
24
|
-
set(CVF_VERSION_MAJOR "1.12.
|
|
24
|
+
set(CVF_VERSION_MAJOR "1.12.90")
|
|
25
25
|
endif()
|
|
26
26
|
|
|
27
27
|
if(PACKAGE_FIND_VERSION_RANGE)
|
|
@@ -8,12 +8,12 @@ set(CMAKE_IMPORT_FILE_VERSION 1)
|
|
|
8
8
|
# Import target "power_grid_model::power_grid_model_c" for configuration "Release"
|
|
9
9
|
set_property(TARGET power_grid_model::power_grid_model_c APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
|
10
10
|
set_target_properties(power_grid_model::power_grid_model_c PROPERTIES
|
|
11
|
-
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libpower_grid_model_c.1.12.
|
|
12
|
-
IMPORTED_SONAME_RELEASE "@rpath/libpower_grid_model_c.1.12.
|
|
11
|
+
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libpower_grid_model_c.1.12.90.dylib"
|
|
12
|
+
IMPORTED_SONAME_RELEASE "@rpath/libpower_grid_model_c.1.12.90.dylib"
|
|
13
13
|
)
|
|
14
14
|
|
|
15
15
|
list(APPEND _cmake_import_check_targets power_grid_model::power_grid_model_c )
|
|
16
|
-
list(APPEND _cmake_import_check_files_for_power_grid_model::power_grid_model_c "${_IMPORT_PREFIX}/lib/libpower_grid_model_c.1.12.
|
|
16
|
+
list(APPEND _cmake_import_check_files_for_power_grid_model::power_grid_model_c "${_IMPORT_PREFIX}/lib/libpower_grid_model_c.1.12.90.dylib" )
|
|
17
17
|
|
|
18
18
|
# Commands beyond this point should not need to know the version.
|
|
19
19
|
set(CMAKE_IMPORT_FILE_VERSION)
|
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets.cmake
CHANGED
|
@@ -7,7 +7,7 @@ if(CMAKE_VERSION VERSION_LESS "3.0.0")
|
|
|
7
7
|
message(FATAL_ERROR "CMake >= 3.0.0 required")
|
|
8
8
|
endif()
|
|
9
9
|
cmake_policy(PUSH)
|
|
10
|
-
cmake_policy(VERSION 3.0.0...
|
|
10
|
+
cmake_policy(VERSION 3.0.0...4.0)
|
|
11
11
|
#----------------------------------------------------------------
|
|
12
12
|
# Generated CMake target import file.
|
|
13
13
|
#----------------------------------------------------------------
|
|
Binary file
|
power_grid_model/_core/typing.py
CHANGED
|
@@ -9,12 +9,12 @@ Type hints for for library-internal use.
|
|
|
9
9
|
from power_grid_model._core.dataset_definitions import ComponentType, ComponentTypeVar
|
|
10
10
|
from power_grid_model._core.enum import ComponentAttributeFilterOptions
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
ComponentAttributeMappingDict = dict[ComponentType, set[str] | list[str] | None | ComponentAttributeFilterOptions]
|
|
13
13
|
|
|
14
14
|
ComponentAttributeMapping = (
|
|
15
15
|
set[ComponentTypeVar]
|
|
16
16
|
| list[ComponentTypeVar]
|
|
17
17
|
| ComponentAttributeFilterOptions
|
|
18
18
|
| None
|
|
19
|
-
|
|
|
19
|
+
| ComponentAttributeMappingDict
|
|
20
20
|
)
|
power_grid_model/_core/utils.py
CHANGED
|
@@ -41,7 +41,7 @@ from power_grid_model._core.enum import ComponentAttributeFilterOptions
|
|
|
41
41
|
from power_grid_model._core.error_handling import VALIDATOR_MSG
|
|
42
42
|
from power_grid_model._core.errors import PowerGridError
|
|
43
43
|
from power_grid_model._core.power_grid_meta import initialize_array, power_grid_meta_data
|
|
44
|
-
from power_grid_model._core.typing import ComponentAttributeMapping,
|
|
44
|
+
from power_grid_model._core.typing import ComponentAttributeMapping, ComponentAttributeMappingDict
|
|
45
45
|
|
|
46
46
|
SINGLE_DATASET_NDIM = 1
|
|
47
47
|
BATCH_DATASET_NDIM = 2
|
|
@@ -455,7 +455,7 @@ def process_data_filter(
|
|
|
455
455
|
dataset_type: DatasetType,
|
|
456
456
|
data_filter: ComponentAttributeMapping,
|
|
457
457
|
available_components: list[ComponentType],
|
|
458
|
-
) ->
|
|
458
|
+
) -> ComponentAttributeMappingDict:
|
|
459
459
|
"""Checks valid type for data_filter. Also checks for any invalid component names and attribute names.
|
|
460
460
|
|
|
461
461
|
Args:
|
|
@@ -464,10 +464,10 @@ def process_data_filter(
|
|
|
464
464
|
available_components (list[ComponentType]): all components available in model instance or data
|
|
465
465
|
|
|
466
466
|
Returns:
|
|
467
|
-
|
|
467
|
+
ComponentAttributeMappingDict: processed data_filter in a dictionary
|
|
468
468
|
"""
|
|
469
469
|
if data_filter is None:
|
|
470
|
-
processed_data_filter:
|
|
470
|
+
processed_data_filter: ComponentAttributeMappingDict = {ComponentType[k]: None for k in available_components}
|
|
471
471
|
elif isinstance(data_filter, ComponentAttributeFilterOptions):
|
|
472
472
|
processed_data_filter = {ComponentType[k]: data_filter for k in available_components}
|
|
473
473
|
elif isinstance(data_filter, (list, set)):
|
|
@@ -485,14 +485,14 @@ def process_data_filter(
|
|
|
485
485
|
|
|
486
486
|
|
|
487
487
|
def validate_data_filter(
|
|
488
|
-
data_filter:
|
|
488
|
+
data_filter: ComponentAttributeMappingDict,
|
|
489
489
|
dataset_type: DatasetType,
|
|
490
490
|
available_components: list[ComponentType],
|
|
491
491
|
) -> None:
|
|
492
492
|
"""Raise error if some specified components or attributes are unknown.
|
|
493
493
|
|
|
494
494
|
Args:
|
|
495
|
-
data_filter (
|
|
495
|
+
data_filter (ComponentAttributeMappingDict): Processed component to attribtue dictionary
|
|
496
496
|
dataset_type (DatasetType): Type of dataset
|
|
497
497
|
available_components (list[ComponentType]): all components available in model instance or data
|
|
498
498
|
|
|
@@ -728,8 +728,13 @@ def check_indptr_consistency(indptr: IndexPointer, batch_size: int | None, conte
|
|
|
728
728
|
raise ValueError(f"indptr should start from zero and end at size of data array. {VALIDATOR_MSG}")
|
|
729
729
|
if np.any(np.diff(indptr) < 0):
|
|
730
730
|
raise ValueError(f"indptr should be increasing. {VALIDATOR_MSG}")
|
|
731
|
-
|
|
732
|
-
|
|
731
|
+
|
|
732
|
+
actual_batch_size = indptr.size - 1
|
|
733
|
+
if batch_size is not None and batch_size != actual_batch_size:
|
|
734
|
+
raise ValueError(
|
|
735
|
+
f"Incorrect/inconsistent batch size provided: {actual_batch_size} scenarios provided "
|
|
736
|
+
f"but {batch_size} scenarios expected. {VALIDATOR_MSG}"
|
|
737
|
+
)
|
|
733
738
|
|
|
734
739
|
|
|
735
740
|
def get_dataset_type(data: Dataset) -> DatasetType:
|
|
@@ -194,7 +194,7 @@ class MultiComponentValidationError(ValidationError):
|
|
|
194
194
|
fields: List of field names, formatted as tuples (component, field)
|
|
195
195
|
ids: List of component IDs (not row indices), formatted as tuples (component, id)
|
|
196
196
|
"""
|
|
197
|
-
self.component = sorted(
|
|
197
|
+
self.component = sorted({component for component, _ in fields}, key=str)
|
|
198
198
|
self.field = sorted(fields)
|
|
199
199
|
self.ids = sorted(ids)
|
|
200
200
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: power-grid-model
|
|
3
|
-
Version: 1.12.
|
|
3
|
+
Version: 1.12.90
|
|
4
4
|
Summary: Python/C++ library for distribution power system analysis
|
|
5
5
|
Author-Email: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
|
|
6
6
|
License-Expression: MPL-2.0
|
|
@@ -20,26 +20,7 @@ Project-URL: Documentation, https://power-grid-model.readthedocs.io/en/stable/
|
|
|
20
20
|
Project-URL: Mailing-list, https://lists.lfenergy.org/g/powergridmodel
|
|
21
21
|
Project-URL: Discussion, https://github.com/orgs/PowerGridModel/discussions
|
|
22
22
|
Requires-Python: >=3.11
|
|
23
|
-
Requires-Dist: numpy>=
|
|
24
|
-
Provides-Extra: dev
|
|
25
|
-
Requires-Dist: msgpack; extra == "dev"
|
|
26
|
-
Requires-Dist: pre-commit; extra == "dev"
|
|
27
|
-
Requires-Dist: pytest; extra == "dev"
|
|
28
|
-
Requires-Dist: pytest-cov; extra == "dev"
|
|
29
|
-
Requires-Dist: ruff; extra == "dev"
|
|
30
|
-
Provides-Extra: doc
|
|
31
|
-
Requires-Dist: sphinx; extra == "doc"
|
|
32
|
-
Requires-Dist: breathe; extra == "doc"
|
|
33
|
-
Requires-Dist: myst_nb; extra == "doc"
|
|
34
|
-
Requires-Dist: sphinx_rtd_theme; extra == "doc"
|
|
35
|
-
Requires-Dist: readthedocs-sphinx-search; extra == "doc"
|
|
36
|
-
Requires-Dist: sphinx-hoverxref; extra == "doc"
|
|
37
|
-
Requires-Dist: sphinxcontrib-mermaid>=1.0.0; extra == "doc"
|
|
38
|
-
Requires-Dist: sphinxcontrib-tikz; extra == "doc"
|
|
39
|
-
Requires-Dist: numpydoc; extra == "doc"
|
|
40
|
-
Requires-Dist: pandas; extra == "doc"
|
|
41
|
-
Requires-Dist: gitpython; extra == "doc"
|
|
42
|
-
Requires-Dist: pylint; extra == "doc"
|
|
23
|
+
Requires-Dist: numpy>=2.0.0
|
|
43
24
|
Description-Content-Type: text/markdown
|
|
44
25
|
|
|
45
26
|
<!--
|
|
@@ -7,20 +7,20 @@ power_grid_model/enum.py,sha256=ZF3C3maM2RGaqR42qNbNQeKjocFxvHDALdHP3Kzn6bY,701
|
|
|
7
7
|
power_grid_model/typing.py,sha256=sKQftXz-LbKoaGn23ijLGMvUZIwhvXHfLwYPGajGCj8,1289
|
|
8
8
|
power_grid_model/_core/options.py,sha256=i__QhCgk0idg-WF1jXUXae5PZ5qh1RMIgwYe8kb4fSI,1878
|
|
9
9
|
power_grid_model/_core/power_grid_core.py,sha256=sE1I6DEanAifUEnAgiVLUzMdMR1CCLO3f8jl20cpR2c,17059
|
|
10
|
-
power_grid_model/_core/power_grid_model.py,sha256=
|
|
10
|
+
power_grid_model/_core/power_grid_model.py,sha256=wf3dZAQVuDAfvUoWAW6lIgxtaKd-8Zblt2iQJyGNcOA,40711
|
|
11
11
|
power_grid_model/_core/__init__.py,sha256=qwbj1j-Aa_yRB-E3j35pEVtF3mgH8CVIXAnog5mOry0,138
|
|
12
|
-
power_grid_model/_core/buffer_handling.py,sha256=
|
|
13
|
-
power_grid_model/_core/data_types.py,sha256=
|
|
12
|
+
power_grid_model/_core/buffer_handling.py,sha256=nEYYE0Hif0Vm5mwIu2A7xiUMnWjX9duXV9NtZ0s68FY,15453
|
|
13
|
+
power_grid_model/_core/data_types.py,sha256=KCOnBpQ6X833jZw61fbAAZ7Rwd-uSQ3J-7Y268YgaMM,4739
|
|
14
14
|
power_grid_model/_core/error_handling.py,sha256=vtZ04Q3c3CC94W4aEXgA1y9-Gps5ZUN2qz295BM_jE4,8816
|
|
15
|
-
power_grid_model/_core/power_grid_meta.py,sha256=
|
|
15
|
+
power_grid_model/_core/power_grid_meta.py,sha256=pR1pLy_jGplTCnzaZBcm8WUSbvbwejyB8U4G-AFwflU,7758
|
|
16
16
|
power_grid_model/_core/dataset_definitions.py,sha256=HytgmDLzjqt8R6VnVO0QwuM5dGPXcWehNVLJ8sWq_-k,3305
|
|
17
|
-
power_grid_model/_core/utils.py,sha256=
|
|
18
|
-
power_grid_model/_core/data_handling.py,sha256=
|
|
17
|
+
power_grid_model/_core/utils.py,sha256=n2n2NnbwiL89kxNIg7-EBHOYNR5e9a4O2ExP5uaxz7M,31171
|
|
18
|
+
power_grid_model/_core/data_handling.py,sha256=TCnoNYoLxYn0yDMN7FPp4PH3nK5wVX_q75QaujHcSyw,6930
|
|
19
19
|
power_grid_model/_core/errors.py,sha256=1votmXwlXbHEW8GL0_DKScJACLr3X7iuj4Wnc0tnT2U,3346
|
|
20
|
-
power_grid_model/_core/power_grid_dataset.py,sha256=
|
|
20
|
+
power_grid_model/_core/power_grid_dataset.py,sha256=W50zKT1IyXVQYRENqoQThtEHDPttwGjM9EMdxR3wSkU,18372
|
|
21
21
|
power_grid_model/_core/index_integer.py,sha256=-9xutg1yIn5lpfFl1jOofAym1922Z5xDDYoO9eqvDS8,351
|
|
22
22
|
power_grid_model/_core/enum.py,sha256=cGRC_Ua0_S6t9w8TxRpQ8OZivQc1_vH98z30ixg4oVA,4936
|
|
23
|
-
power_grid_model/_core/typing.py,sha256=
|
|
23
|
+
power_grid_model/_core/typing.py,sha256=Mt1DJ62tHS3R9SQzdvM64L6Q8tvMCPQVAKGHAt8GM0U,637
|
|
24
24
|
power_grid_model/_core/serialization.py,sha256=aZBr9qjYiYi1jcwfDk267euMf7WSHlMvNgcDYZ5KCBA,10049
|
|
25
25
|
power_grid_model/_core/power_grid_model_c/__init__.py,sha256=qwbj1j-Aa_yRB-E3j35pEVtF3mgH8CVIXAnog5mOry0,138
|
|
26
26
|
power_grid_model/_core/power_grid_model_c/get_pgm_dll_path.py,sha256=GAgIamBAMNA40KejjE9ODny6RpFQ-9MvN3kjr_xC5fc,2161
|
|
@@ -42,13 +42,13 @@ power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/dataset.h,s
|
|
|
42
42
|
power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/buffer.h,sha256=A-ByuDfQmPCYf5HCeOHim872DiwA66ORHcw17HnptIE,4658
|
|
43
43
|
power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/handle.h,sha256=bxHBCqdewukaqKKKfCih95zbf06hDCMKf7tnxE5-jBQ,3100
|
|
44
44
|
power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/model.h,sha256=5YvpIUdMNgI0CTiEERhwpQQy6A3yreEe3bFjSI4ZNnA,5039
|
|
45
|
-
power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/dataset_definitions.h,sha256=
|
|
45
|
+
power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/dataset_definitions.h,sha256=f_ENOS7o4TBLU938C5qgfN6Fxxn0KBtXsiFi802G72I,75366
|
|
46
46
|
power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/basics.h,sha256=ticq5jaRFhjCMVPs2oHk9EicI5m2Vao--OuZpLaSXL8,7514
|
|
47
|
-
power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.dylib,sha256=
|
|
48
|
-
power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.
|
|
49
|
-
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelConfigVersion.cmake,sha256=
|
|
50
|
-
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets-release.cmake,sha256=
|
|
51
|
-
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets.cmake,sha256=
|
|
47
|
+
power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.dylib,sha256=qNZt6X8YLfbQO-SWQZ4oyeOJ18nr_11q0Y94ge_m7Fk,1698912
|
|
48
|
+
power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.90.dylib,sha256=qNZt6X8YLfbQO-SWQZ4oyeOJ18nr_11q0Y94ge_m7Fk,1698912
|
|
49
|
+
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelConfigVersion.cmake,sha256=Mzgg9JBqAwAjVcrIQ9awT2QxiN0n62wlFtbes8XiHE8,2768
|
|
50
|
+
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets-release.cmake,sha256=tJ0dzkfLW30M5mXah2tAQFFtYaxF05ndmVBFmtz_t2I,1022
|
|
51
|
+
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets.cmake,sha256=yjgxvHkoveQQpGCER0cOXFeonsNQOAnCO0oBRqItYW8,6563
|
|
52
52
|
power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelConfig.cmake,sha256=9Dg_TwOMLciG7TTk1TKehfUbAErFtJlRagTeu_QC8Vg,1243
|
|
53
53
|
power_grid_model/_core/power_grid_model_c/share/LICENSE,sha256=7Pm2fWFFHHUG5lDHed1vl5CjzxObIXQglnYsEdtjo_k,14907
|
|
54
54
|
power_grid_model/_core/power_grid_model_c/share/README.md,sha256=X2nGLPPQW6-7ZcyMxAw98j-69z5-gFwSoUCuFFDhjlA,588
|
|
@@ -57,9 +57,9 @@ power_grid_model/validation/__init__.py,sha256=3k2wLJS3nkEdsM17_k4-zNMHgbflLmPOn
|
|
|
57
57
|
power_grid_model/validation/assertions.py,sha256=VmbiLTU04Lu5GDywKrcjNVEQcDiGxQLoUE-hlI790_Q,4102
|
|
58
58
|
power_grid_model/validation/utils.py,sha256=A5ciWb8fwM6r0uzMmgz5TPtmXhr-oJeRKrCtTO4j5TM,12784
|
|
59
59
|
power_grid_model/validation/_validation.py,sha256=z40DDIPAf3MUEGQmwOrZYg3YYAnp_Wq4gkCEIK0pl6g,48781
|
|
60
|
-
power_grid_model/validation/errors.py,sha256=
|
|
61
|
-
power_grid_model-1.12.
|
|
62
|
-
power_grid_model-1.12.
|
|
63
|
-
power_grid_model-1.12.
|
|
64
|
-
power_grid_model-1.12.
|
|
65
|
-
power_grid_model-1.12.
|
|
60
|
+
power_grid_model/validation/errors.py,sha256=FzO_HJeMrOgOh4wlB-bA7zj1DpBKoaJnnmOnmo8c8y0,20450
|
|
61
|
+
power_grid_model-1.12.90.dist-info/RECORD,,
|
|
62
|
+
power_grid_model-1.12.90.dist-info/WHEEL,sha256=fQQdMQRCDutYz-kl2MmbHU93w7vZCOFcPICvhQd1AHs,138
|
|
63
|
+
power_grid_model-1.12.90.dist-info/entry_points.txt,sha256=KgNx7mGcOVAVuwCBeP30AH5h_8UrKf0DQA9Cs5td69w,75
|
|
64
|
+
power_grid_model-1.12.90.dist-info/METADATA,sha256=GLUfV5GgvueXFoyoffQNr60dP567h640wHX1RSPBSgw,8289
|
|
65
|
+
power_grid_model-1.12.90.dist-info/licenses/LICENSE,sha256=7Pm2fWFFHHUG5lDHed1vl5CjzxObIXQglnYsEdtjo_k,14907
|
|
Binary file
|
|
File without changes
|
|
File without changes
|