power-grid-model 1.12.50__py3-none-macosx_13_0_arm64.whl → 1.12.93__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.

Potentially problematic release.


This version of power-grid-model might be problematic. Click here for more details.

Files changed (20) hide show
  1. power_grid_model/_core/data_handling.py +65 -11
  2. power_grid_model/_core/data_types.py +13 -2
  3. power_grid_model/_core/power_grid_dataset.py +3 -3
  4. power_grid_model/_core/power_grid_meta.py +16 -2
  5. power_grid_model/_core/power_grid_model.py +321 -18
  6. power_grid_model/_core/power_grid_model_c/include/power_grid_model_c/dataset_definitions.h +8 -0
  7. power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelConfigVersion.cmake +3 -3
  8. power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets-release.cmake +3 -3
  9. power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets.cmake +1 -1
  10. power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.93.dylib +0 -0
  11. power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.dylib +0 -0
  12. power_grid_model/_core/typing.py +2 -2
  13. power_grid_model/_core/utils.py +6 -6
  14. power_grid_model/validation/errors.py +1 -1
  15. {power_grid_model-1.12.50.dist-info → power_grid_model-1.12.93.dist-info}/METADATA +1 -20
  16. {power_grid_model-1.12.50.dist-info → power_grid_model-1.12.93.dist-info}/RECORD +19 -19
  17. power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.50.dylib +0 -0
  18. {power_grid_model-1.12.50.dist-info → power_grid_model-1.12.93.dist-info}/WHEEL +0 -0
  19. {power_grid_model-1.12.50.dist-info → power_grid_model-1.12.93.dist-info}/entry_points.txt +0 -0
  20. {power_grid_model-1.12.50.dist-info → power_grid_model-1.12.93.dist-info}/licenses/LICENSE +0 -0
@@ -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 Dataset, SingleDataset
12
- from power_grid_model._core.dataset_definitions import ComponentType, DatasetType
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
- # shape
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, _ComponentAttributeMappingDict
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,
@@ -426,11 +426,11 @@ class CWritableDataset:
426
426
  """
427
427
  return self._data[component]
428
428
 
429
- def get_data_filter(self) -> _ComponentAttributeMappingDict:
429
+ def get_data_filter(self) -> ComponentAttributeMappingDict:
430
430
  """Gets the data filter requested
431
431
 
432
432
  Returns:
433
- _ComponentAttributeMappingDict: data filter
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: tuple | int,
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 Dataset, SingleDataset
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
- ) -> dict[ComponentType, np.ndarray]:
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
- ) -> dict[ComponentType, np.ndarray]:
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
- ) -> dict[ComponentType, np.ndarray]:
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: dict[str, np.ndarray | dict[str, np.ndarray]] | Dataset | None = None,
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
- ) -> dict[ComponentType, np.ndarray]:
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
- - dict[ComponentType, set[str] | list[str] | None | ComponentAttributeFilterOptions]:
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: dict[str, np.ndarray | dict[str, np.ndarray]] | Dataset | None = None,
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
- ) -> dict[ComponentType, np.ndarray]:
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
- - dict[ComponentType, set[str] | list[str] | None | ComponentAttributeFilterOptions]:
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: dict[str, np.ndarray | dict[str, np.ndarray]] | Dataset | None = None,
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
- ) -> dict[ComponentType, np.ndarray]:
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
- - dict[ComponentType, set[str] | list[str] | None | ComponentAttributeFilterOptions]:
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.50")
12
+ set(PACKAGE_VERSION "1.12.93")
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.50" MATCHES "^([0-9]+)\\.")
18
+ if("1.12.93" 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.50")
24
+ set(CVF_VERSION_MAJOR "1.12.93")
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.50.dylib"
12
- IMPORTED_SONAME_RELEASE "@rpath/libpower_grid_model_c.1.12.50.dylib"
11
+ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libpower_grid_model_c.1.12.93.dylib"
12
+ IMPORTED_SONAME_RELEASE "@rpath/libpower_grid_model_c.1.12.93.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.50.dylib" )
16
+ list(APPEND _cmake_import_check_files_for_power_grid_model::power_grid_model_c "${_IMPORT_PREFIX}/lib/libpower_grid_model_c.1.12.93.dylib" )
17
17
 
18
18
  # Commands beyond this point should not need to know the version.
19
19
  set(CMAKE_IMPORT_FILE_VERSION)
@@ -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...3.31)
10
+ cmake_policy(VERSION 3.0.0...4.0)
11
11
  #----------------------------------------------------------------
12
12
  # Generated CMake target import file.
13
13
  #----------------------------------------------------------------
@@ -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
- _ComponentAttributeMappingDict = dict[ComponentType, set[str] | list[str] | None | ComponentAttributeFilterOptions]
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
- | _ComponentAttributeMappingDict
19
+ | ComponentAttributeMappingDict
20
20
  )
@@ -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, _ComponentAttributeMappingDict
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
- ) -> _ComponentAttributeMappingDict:
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
- _ComponentAttributeMappingDict: processed data_filter in a dictionary
467
+ ComponentAttributeMappingDict: processed data_filter in a dictionary
468
468
  """
469
469
  if data_filter is None:
470
- processed_data_filter: _ComponentAttributeMappingDict = {ComponentType[k]: None for k in available_components}
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: _ComponentAttributeMappingDict,
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 (_ComponentAttributeMappingDict): Processed component to attribtue dictionary
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
 
@@ -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(set(component for component, _ in fields), key=str)
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.50
3
+ Version: 1.12.93
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
@@ -21,25 +21,6 @@ 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
23
  Requires-Dist: numpy>=2.0.0
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"
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=2gBabLtTWhnU89wA-tEgB_y_O4dMVNB-A3otkk2G6Fk,30028
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
12
  power_grid_model/_core/buffer_handling.py,sha256=nEYYE0Hif0Vm5mwIu2A7xiUMnWjX9duXV9NtZ0s68FY,15453
13
- power_grid_model/_core/data_types.py,sha256=HvKbVZLA-jyuVK7oVSaGHXHUbEYzzplR9DiWQPijvkY,4091
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=lQwVrmLKLzShSkmNQ55thea5r1pdYRjpiM_-YxSsSww,7364
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=eA4WFHr2jq1J8sy3p3qlqeqiTDNDqRhmKL6OnSdq_F4,31177
18
- power_grid_model/_core/data_handling.py,sha256=bvPMtm8bZ_BGMQbRq81CmY8jV5CG4G3-a8LZrEZ8Fr0,5075
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=ibIfaveVd1ElmYGCEQf0ZsLZN0GqqzGmqq6SAI-YkKE,18375
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=JpJhBFHUd0W8w5qxUFszDBD-zDRbJKlnmU8zTLuaDwg,639
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=d87mYGjzDjlk5oD_5OAsHpYhjPyiFtjbG0Gu9LHDi-Y,74571
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=iW4be3fL03nxH-Xi_ArWAB98ugCS-fMj4nQFKlOIRgI,1681200
48
- power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.50.dylib,sha256=iW4be3fL03nxH-Xi_ArWAB98ugCS-fMj4nQFKlOIRgI,1681200
49
- power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelConfigVersion.cmake,sha256=VOCLT4n28NFo9NQqoAT7NmIY6Z8HOJvfNoIW6_17X0o,2768
50
- power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets-release.cmake,sha256=zObsm5pdt-Vqqj8eTLj5bLC6npJa-kgPb45Kb5hf4Vc,1022
51
- power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets.cmake,sha256=q8v9QYCdmb_xsFXU1A_iSJv9_-euneAsmIgKBS4dBCI,6564
47
+ power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.dylib,sha256=Dq19g8f6OZS7KMjmJ3ML4XikuPoaJt_egDyBC_KYQTk,1682400
48
+ power_grid_model/_core/power_grid_model_c/lib/libpower_grid_model_c.1.12.93.dylib,sha256=Dq19g8f6OZS7KMjmJ3ML4XikuPoaJt_egDyBC_KYQTk,1682400
49
+ power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelConfigVersion.cmake,sha256=x-XMhiSVKseUF1PcNNwlF7W2y8JAkJX0q9LRaz0Gqzc,2768
50
+ power_grid_model/_core/power_grid_model_c/lib/cmake/power_grid_model/power_grid_modelTargets-release.cmake,sha256=te-hu8kAsisvqhWx5yAZG7UcbmRft3Izhfc2gZSNysU,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=hpXM46rNvlELJvyr3_rLOoGeJb6MLdPx-CylFuPuRF0,20453
61
- power_grid_model-1.12.50.dist-info/RECORD,,
62
- power_grid_model-1.12.50.dist-info/WHEEL,sha256=fQQdMQRCDutYz-kl2MmbHU93w7vZCOFcPICvhQd1AHs,138
63
- power_grid_model-1.12.50.dist-info/entry_points.txt,sha256=KgNx7mGcOVAVuwCBeP30AH5h_8UrKf0DQA9Cs5td69w,75
64
- power_grid_model-1.12.50.dist-info/METADATA,sha256=KqfafDbGymcBFEddQW2BOiB5hR5bAOQq6Uchuq6Dl74,9062
65
- power_grid_model-1.12.50.dist-info/licenses/LICENSE,sha256=7Pm2fWFFHHUG5lDHed1vl5CjzxObIXQglnYsEdtjo_k,14907
60
+ power_grid_model/validation/errors.py,sha256=FzO_HJeMrOgOh4wlB-bA7zj1DpBKoaJnnmOnmo8c8y0,20450
61
+ power_grid_model-1.12.93.dist-info/RECORD,,
62
+ power_grid_model-1.12.93.dist-info/WHEEL,sha256=fQQdMQRCDutYz-kl2MmbHU93w7vZCOFcPICvhQd1AHs,138
63
+ power_grid_model-1.12.93.dist-info/entry_points.txt,sha256=KgNx7mGcOVAVuwCBeP30AH5h_8UrKf0DQA9Cs5td69w,75
64
+ power_grid_model-1.12.93.dist-info/METADATA,sha256=Su9jGe28aCH7xkTOoX9ukBKJapMWk1mo2XVRRzGclno,8289
65
+ power_grid_model-1.12.93.dist-info/licenses/LICENSE,sha256=7Pm2fWFFHHUG5lDHed1vl5CjzxObIXQglnYsEdtjo_k,14907