power-grid-model-io 1.2.95__tar.gz → 1.2.97__tar.gz
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-io might be problematic. Click here for more details.
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/PKG-INFO +1 -1
- power_grid_model_io-1.2.97/PYPI_VERSION +1 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/pyproject.toml +1 -1
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/converters/pandapower_converter.py +30 -9
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/converters/pgm_json_converter.py +7 -4
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/converters/tabular_converter.py +3 -1
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io.egg-info/PKG-INFO +1 -1
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/converters/test_pandapower_converter_input.py +18 -3
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/converters/test_tabular_converter.py +29 -4
- power_grid_model_io-1.2.95/PYPI_VERSION +0 -1
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/LICENSE +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/MANIFEST.in +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/README.md +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/VERSION +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/setup.cfg +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/setup.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/examples/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/examples/multipliers.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/excel/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/excel/vision_en.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/excel/vision_en_9_7.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/excel/vision_nl.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/converters/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/converters/base_converter.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/converters/vision_excel_converter.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_stores/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_stores/base_data_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_stores/csv_dir_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_stores/excel_file_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_stores/json_file_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_stores/vision_excel_file_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_types/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_types/_data_types.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/data_types/tabular_data.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/functions/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/functions/_functions.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/functions/filters.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/functions/phase_to_phase.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/mappings/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/mappings/field_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/mappings/multiplier_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/mappings/tabular_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/mappings/unit_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/mappings/value_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/auto_id.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/dict.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/download.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/excel_ambiguity_checker.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/json.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/modules.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/parsing.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/uuid_excel_cvtr.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/zip.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io.egg-info/SOURCES.txt +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io.egg-info/dependency_links.txt +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io.egg-info/requires.txt +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io.egg-info/top_level.txt +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/conftest.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/config/dummy_mapping.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/config/mapping.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_asym_output_data.json +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_asym_output_data.json.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_input_data.json +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_input_data.json.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_output_data.json +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_output_data.json.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pp_validation.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/excel_ambiguity_check_data.xlsx +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/excel_ambiguity_check_data.xlsx.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/pgm_input_data_en.json +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/pgm_input_data_en.json.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/pgm_input_data_nl.json +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/pgm_input_data_nl.json.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_9_5_en.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_9_5_nl.yaml +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_en.xlsx +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_en.xlsx.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_en_9_7.xlsx +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_en_9_7.xlsx.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_nl.xlsx +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_nl.xlsx.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_validation.vnf +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_validation.vnf.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/zip/foo-bar.zip +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/zip/foo-bar.zip.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/zip/foo.zip +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/zip/foo.zip.license +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/test_utils.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/conftest.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/converters/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/converters/test_base_converter.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/converters/test_pandapower_converter_output.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/converters/test_pgm_json_converter.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/converters/test_vision_excel_converter.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_stores/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_stores/test_base_data_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_stores/test_csv_dir_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_stores/test_excel_file_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_stores/test_json_file_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_stores/test_vision_excel_file_store.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_types/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_types/test_data_types.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_types/test_tabular_data.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/functions/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/functions/test_filters.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/functions/test_functions.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/functions/test_phase_to_phase.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_field_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_multiplier_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_tabular_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_unit_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_value_mapping.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_auto_id.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_dict.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_download.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_json.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_modules.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_parsing.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_uuid_excel_cvtr.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_zip.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/utils.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/conftest.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/converters/__init__.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/converters/test_pandapower_converter_input.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/converters/test_pandapower_converter_output.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/converters/test_vision_excel_converter.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/test_test_utils.py +0 -0
- {power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/utils.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.2.97
|
|
@@ -80,7 +80,7 @@ power_grid_model_io = ["config/**/*.yaml"]
|
|
|
80
80
|
|
|
81
81
|
[tool.pytest.ini_options]
|
|
82
82
|
testpaths = ["tests/unit"]
|
|
83
|
-
addopts = ["--cov=power_grid_model_io", "--cov-report=term", "--cov-report=html:cov_html", "--cov-fail-under=
|
|
83
|
+
addopts = ["--cov=power_grid_model_io", "--cov-report=term", "--cov-report=html:cov_html", "--cov-fail-under=98.5"]
|
|
84
84
|
|
|
85
85
|
[tool.black]
|
|
86
86
|
line-length = 120
|
|
@@ -12,7 +12,15 @@ from typing import Dict, List, MutableMapping, Optional, Tuple, Type, Union
|
|
|
12
12
|
import numpy as np
|
|
13
13
|
import pandas as pd
|
|
14
14
|
import structlog
|
|
15
|
-
from power_grid_model import
|
|
15
|
+
from power_grid_model import (
|
|
16
|
+
Branch3Side,
|
|
17
|
+
BranchSide,
|
|
18
|
+
DatasetType,
|
|
19
|
+
LoadGenType,
|
|
20
|
+
WindingType,
|
|
21
|
+
initialize_array,
|
|
22
|
+
power_grid_meta_data,
|
|
23
|
+
)
|
|
16
24
|
from power_grid_model.data_types import Dataset, SingleDataset
|
|
17
25
|
|
|
18
26
|
from power_grid_model_io.converters.base_converter import BaseConverter
|
|
@@ -113,10 +121,10 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
113
121
|
self._extra_info_to_pgm_input_data(extra_info)
|
|
114
122
|
|
|
115
123
|
# Convert
|
|
116
|
-
def pgm_output_dtype_checker(check_type: str) -> bool:
|
|
124
|
+
def pgm_output_dtype_checker(check_type: DatasetType | str) -> bool:
|
|
117
125
|
return all(
|
|
118
126
|
(
|
|
119
|
-
comp_array.dtype == power_grid_meta_data[check_type][component]
|
|
127
|
+
comp_array.dtype == power_grid_meta_data[DatasetType[check_type]][component]
|
|
120
128
|
for component, comp_array in self.pgm_output_data.items()
|
|
121
129
|
)
|
|
122
130
|
)
|
|
@@ -248,7 +256,10 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
248
256
|
nan = np.iinfo(dtype).min
|
|
249
257
|
all_other_cols = ["i_n"]
|
|
250
258
|
for component, data in self.pgm_output_data.items():
|
|
251
|
-
input_cols = power_grid_meta_data[
|
|
259
|
+
input_cols = power_grid_meta_data[DatasetType.input][component].dtype.names
|
|
260
|
+
if input_cols is None:
|
|
261
|
+
input_cols = tuple()
|
|
262
|
+
|
|
252
263
|
node_cols = [col for col in input_cols if is_node_ref(col)]
|
|
253
264
|
other_cols = [col for col in input_cols if col in all_other_cols]
|
|
254
265
|
if not node_cols + other_cols:
|
|
@@ -747,8 +758,12 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
747
758
|
pgm_transformers["sn"] = sn_mva * parallel * 1e6
|
|
748
759
|
pgm_transformers["uk"] = vk_percent * 1e-2
|
|
749
760
|
pgm_transformers["pk"] = vkr_percent * sn_mva * parallel * (1e6 * 1e-2)
|
|
750
|
-
pgm_transformers["i0"] = i_no_load * 1e-2
|
|
751
761
|
pgm_transformers["p0"] = pfe * parallel * 1e3
|
|
762
|
+
pgm_transformers["i0"] = i_no_load * 1e-2
|
|
763
|
+
i0_min_threshold = pgm_transformers["p0"] / pgm_transformers["sn"]
|
|
764
|
+
if any(np.less(pgm_transformers["i0"], i0_min_threshold)):
|
|
765
|
+
logger.warning("Minimum value of i0_percent is clipped to p0/sn")
|
|
766
|
+
pgm_transformers["i0"] = np.clip(pgm_transformers["i0"], a_min=i0_min_threshold, a_max=None)
|
|
752
767
|
pgm_transformers["clock"] = clocks
|
|
753
768
|
pgm_transformers["winding_from"] = winding_types["winding_from"]
|
|
754
769
|
pgm_transformers["winding_to"] = winding_types["winding_to"]
|
|
@@ -875,8 +890,12 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
875
890
|
pgm_3wtransformers["pk_13"] = vkr_lv_percent * np.minimum(sn_hv_mva, sn_lv_mva) * (1e-2 * 1e6)
|
|
876
891
|
pgm_3wtransformers["pk_23"] = vkr_mv_percent * np.minimum(sn_mv_mva, sn_lv_mva) * (1e-2 * 1e6)
|
|
877
892
|
|
|
878
|
-
pgm_3wtransformers["i0"] = self._get_pp_attr("trafo3w", "i0_percent", expected_type="f8") * 1e-2
|
|
879
893
|
pgm_3wtransformers["p0"] = self._get_pp_attr("trafo3w", "pfe_kw", expected_type="f8") * 1e3
|
|
894
|
+
pgm_3wtransformers["i0"] = self._get_pp_attr("trafo3w", "i0_percent", expected_type="f8") * 1e-2
|
|
895
|
+
i0_min_threshold = pgm_3wtransformers["p0"] / pgm_3wtransformers["sn_1"]
|
|
896
|
+
if any(np.less(pgm_3wtransformers["i0"], i0_min_threshold)):
|
|
897
|
+
logger.warning("Minimum value of i0_percent is clipped to p0/sn_1")
|
|
898
|
+
pgm_3wtransformers["i0"] = np.clip(pgm_3wtransformers["i0"], a_min=i0_min_threshold, a_max=None)
|
|
880
899
|
pgm_3wtransformers["clock_12"] = clocks_12
|
|
881
900
|
pgm_3wtransformers["clock_13"] = clocks_13
|
|
882
901
|
pgm_3wtransformers["winding_1"] = winding_types["winding_1"]
|
|
@@ -1594,9 +1613,11 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
1594
1613
|
# Combine all branch bus, current and et in one dataframe
|
|
1595
1614
|
all_i_df = pd.concat(
|
|
1596
1615
|
[
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1616
|
+
(
|
|
1617
|
+
join_currents(table, bus_name, i_name)
|
|
1618
|
+
if not rest_switches_absent[table]
|
|
1619
|
+
else pd.DataFrame(columns=["bus", "element", "et", "i_ka"])
|
|
1620
|
+
)
|
|
1600
1621
|
for table, attr_names in switch_attrs.items()
|
|
1601
1622
|
for bus_name, i_name in attr_names.items()
|
|
1602
1623
|
]
|
|
@@ -151,9 +151,12 @@ class PgmJsonConverter(BaseConverter[StructuredData]):
|
|
|
151
151
|
|
|
152
152
|
# If an attribute doesn't exist, it is added to the extra_info lookup table
|
|
153
153
|
elif extra_info is not None:
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
154
|
+
obj_id = obj["id"]
|
|
155
|
+
if not isinstance(obj_id, int):
|
|
156
|
+
raise ValueError(f"Invalid 'id' value for {component} {data_type} data")
|
|
157
|
+
if obj_id not in extra_info:
|
|
158
|
+
extra_info[obj_id] = {}
|
|
159
|
+
extra_info[obj_id][attribute] = value
|
|
157
160
|
return array
|
|
158
161
|
|
|
159
162
|
def _serialize_data(self, data: Dataset, extra_info: Optional[ExtraInfo]) -> StructuredData:
|
|
@@ -271,7 +274,7 @@ class PgmJsonConverter(BaseConverter[StructuredData]):
|
|
|
271
274
|
self._extract_extra_component_info(component, entry, reserialized_data, extra_info)
|
|
272
275
|
|
|
273
276
|
def _extract_extra_component_info(
|
|
274
|
-
self, component: str, attributes: Dict[str, Any], reserialized_data:
|
|
277
|
+
self, component: str, attributes: Dict[str, Any], reserialized_data: SinglePythonDataset, extra_info: ExtraInfo
|
|
275
278
|
):
|
|
276
279
|
entry_id = attributes["id"]
|
|
277
280
|
reserialized_entry = self._get_first_by(reserialized_data[component], "id", entry_id)
|
|
@@ -180,6 +180,8 @@ class TabularConverter(BaseConverter[TabularData]):
|
|
|
180
180
|
|
|
181
181
|
if "filters" in attributes:
|
|
182
182
|
table_mask = self._parse_table_filters(data=data, table=table, filtering_functions=attributes["filters"])
|
|
183
|
+
if table_mask is not None and not table_mask.any():
|
|
184
|
+
return None
|
|
183
185
|
else:
|
|
184
186
|
table_mask = None
|
|
185
187
|
|
|
@@ -219,7 +221,7 @@ class TabularConverter(BaseConverter[TabularData]):
|
|
|
219
221
|
for filtering_fn in filtering_functions:
|
|
220
222
|
for fn_name, kwargs in filtering_fn.items():
|
|
221
223
|
fn_ptr = get_function(fn_name)
|
|
222
|
-
table_mask &= data[table].apply(fn_ptr, axis=1, **kwargs).values
|
|
224
|
+
table_mask &= cast(pd.DataFrame, data[table]).apply(fn_ptr, axis=1, **kwargs).values
|
|
223
225
|
return table_mask
|
|
224
226
|
|
|
225
227
|
# pylint: disable = too-many-arguments
|
|
@@ -822,6 +822,7 @@ def test_create_pgm_input_shunts(mock_init_array: MagicMock, two_pp_objs, conver
|
|
|
822
822
|
|
|
823
823
|
@patch("power_grid_model_io.converters.pandapower_converter.initialize_array")
|
|
824
824
|
@patch("power_grid_model_io.converters.pandapower_converter.np.round", new=lambda x: x)
|
|
825
|
+
@patch("power_grid_model_io.converters.pandapower_converter.np.less", new=lambda x, _, **kwargs: x)
|
|
825
826
|
@patch("power_grid_model_io.converters.pandapower_converter.np.divide", new=lambda x, _, **kwargs: x)
|
|
826
827
|
@patch("power_grid_model_io.converters.pandapower_converter.np.bitwise_and", new=lambda x, _: x)
|
|
827
828
|
@patch("power_grid_model_io.converters.pandapower_converter.np.logical_and", new=lambda x, _: x)
|
|
@@ -1031,7 +1032,14 @@ def test_create_pgm_input_sym_gens(mock_init_array: MagicMock, two_pp_objs, conv
|
|
|
1031
1032
|
|
|
1032
1033
|
@pytest.mark.parametrize(
|
|
1033
1034
|
"kwargs",
|
|
1034
|
-
[
|
|
1035
|
+
[
|
|
1036
|
+
{"pfe_kw": 2},
|
|
1037
|
+
{"vk0_percent": 2},
|
|
1038
|
+
{"vkr0_percent": 1},
|
|
1039
|
+
{"mag0_percent": 5},
|
|
1040
|
+
{"mag0_rx": 0.2},
|
|
1041
|
+
{"si0_hv_partial": 0.3},
|
|
1042
|
+
],
|
|
1035
1043
|
)
|
|
1036
1044
|
@patch(
|
|
1037
1045
|
"power_grid_model_io.converters.pandapower_converter.PandaPowerConverter.get_switch_states",
|
|
@@ -1049,11 +1057,14 @@ def test_create_pgm_input_sym_gens(mock_init_array: MagicMock, two_pp_objs, conv
|
|
|
1049
1057
|
"power_grid_model_io.converters.pandapower_converter.PandaPowerConverter._get_pgm_ids",
|
|
1050
1058
|
new=MagicMock(return_value=pd.Series([0])),
|
|
1051
1059
|
)
|
|
1052
|
-
def
|
|
1060
|
+
def test_create_pgm_input_transformers__warnings(kwargs) -> None:
|
|
1053
1061
|
# Arrange
|
|
1054
1062
|
pp_net: pp.pandapowerNet = pp.create_empty_network()
|
|
1055
1063
|
pp.create_bus(net=pp_net, vn_kv=0.0)
|
|
1056
1064
|
args = [0, 0, 0, 0, 0, 0, 0, 0, 0]
|
|
1065
|
+
if "pfe_kw" in kwargs:
|
|
1066
|
+
args[-2] = kwargs["pfe_kw"]
|
|
1067
|
+
kwargs = {}
|
|
1057
1068
|
pp.create_transformer_from_parameters(pp_net, *args, **kwargs)
|
|
1058
1069
|
|
|
1059
1070
|
converter = PandaPowerConverter()
|
|
@@ -1387,6 +1398,7 @@ def test_create_pgm_input_transformers3w__default() -> None:
|
|
|
1387
1398
|
@pytest.mark.parametrize(
|
|
1388
1399
|
"kwargs",
|
|
1389
1400
|
[
|
|
1401
|
+
{"pfe_kw": 2},
|
|
1390
1402
|
{"vk0_hv_percent": 1},
|
|
1391
1403
|
{"vkr0_hv_percent": 2},
|
|
1392
1404
|
{"vk0_mv_percent": 3},
|
|
@@ -1411,11 +1423,14 @@ def test_create_pgm_input_transformers3w__default() -> None:
|
|
|
1411
1423
|
"power_grid_model_io.converters.pandapower_converter.PandaPowerConverter._get_pgm_ids",
|
|
1412
1424
|
new=MagicMock(return_value=pd.Series([0])),
|
|
1413
1425
|
)
|
|
1414
|
-
def
|
|
1426
|
+
def test_create_pgm_input_transformers3w__warnings(kwargs) -> None:
|
|
1415
1427
|
# Arrange
|
|
1416
1428
|
pp_net: pp.pandapowerNet = pp.create_empty_network()
|
|
1417
1429
|
pp.create_bus(net=pp_net, vn_kv=0.0)
|
|
1418
1430
|
args = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
|
1431
|
+
if "pfe_kw" in kwargs:
|
|
1432
|
+
args[-2] = kwargs["pfe_kw"]
|
|
1433
|
+
kwargs = {}
|
|
1419
1434
|
pp.create_transformer3w_from_parameters(pp_net, *args, **kwargs)
|
|
1420
1435
|
|
|
1421
1436
|
converter = PandaPowerConverter()
|
|
@@ -51,16 +51,16 @@ def tabular_data():
|
|
|
51
51
|
)
|
|
52
52
|
lines = pd.DataFrame(data=[[1, 100], [2, 200]], columns=["id_number", "from_node_side"])
|
|
53
53
|
loads = pd.DataFrame(data=[[1, 1, 1], [2, 2, 0]], columns=["id_number", "node_id", "switching_status"])
|
|
54
|
-
|
|
55
|
-
return
|
|
54
|
+
sources = pd.DataFrame(columns=["id_number", "node_side"])
|
|
55
|
+
return TabularData(nodes=nodes, lines=lines, loads=loads, sources=sources)
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
@pytest.fixture
|
|
59
59
|
def tabular_data_no_units_no_substitutions():
|
|
60
60
|
nodes = pd.DataFrame(data=[[1, 10.5e3], [2, 400.0]], columns=["id_number", "u_nom"])
|
|
61
61
|
lines = pd.DataFrame(data=[[1, 2], [3, 1]], columns=["id_number", "from_node_side"])
|
|
62
|
-
|
|
63
|
-
return
|
|
62
|
+
sources = pd.DataFrame(columns=["id_number", "node_side"])
|
|
63
|
+
return TabularData(nodes=nodes, lines=lines, sources=sources)
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
def test_set_mapping_file(converter: TabularConverter):
|
|
@@ -175,6 +175,31 @@ def test_convert_table_to_component__filters(
|
|
|
175
175
|
)
|
|
176
176
|
|
|
177
177
|
|
|
178
|
+
def test_convert_table_to_component__filters_all_false(
|
|
179
|
+
converter: TabularConverter, tabular_data_no_units_no_substitutions: TabularData
|
|
180
|
+
):
|
|
181
|
+
converter._convert_col_def_to_attribute = MagicMock()
|
|
182
|
+
converter._parse_table_filters = MagicMock()
|
|
183
|
+
converter._parse_table_filters.side_effect = np.array([False, False])
|
|
184
|
+
node_attributes_with_filter = {"id": "id_number", "u_rated": "u_nom", "filters": [{"test_fn": {}}]}
|
|
185
|
+
actual = converter._convert_table_to_component(
|
|
186
|
+
data=tabular_data_no_units_no_substitutions,
|
|
187
|
+
data_type="input",
|
|
188
|
+
table="nodes",
|
|
189
|
+
component="node",
|
|
190
|
+
attributes=node_attributes_with_filter,
|
|
191
|
+
extra_info=None,
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
assert actual is None
|
|
195
|
+
converter._parse_table_filters.assert_called_once_with(
|
|
196
|
+
data=tabular_data_no_units_no_substitutions,
|
|
197
|
+
table="nodes",
|
|
198
|
+
filtering_functions=node_attributes_with_filter["filters"],
|
|
199
|
+
)
|
|
200
|
+
converter._convert_col_def_to_attribute.assert_not_called()
|
|
201
|
+
|
|
202
|
+
|
|
178
203
|
def test_convert_col_def_to_attribute(
|
|
179
204
|
converter: TabularConverter,
|
|
180
205
|
tabular_data_no_units_no_substitutions: TabularData,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.2.95
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/__init__.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/config/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/__init__.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/auto_id.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/dict.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/download.py
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/json.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/modules.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/parsing.py
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/src/power_grid_model_io/utils/zip.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/config/dummy_mapping.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_input_data.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pgm_output_data.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/pandapower/pp_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/pgm_input_data_en.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/pgm_input_data_nl.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_9_5_en.yaml
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_9_5_nl.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_en.xlsx.license
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_en_9_7.xlsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_nl.xlsx.license
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/vision/vision_validation.vnf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/data/zip/foo-bar.zip.license
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_stores/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_types/test_data_types.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/data_types/test_tabular_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/functions/test_filters.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/functions/test_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_field_mapping.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_unit_mapping.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/mappings/test_value_mapping.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/unit/utils/test_uuid_excel_cvtr.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/converters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.2.95 → power_grid_model_io-1.2.97}/tests/validation/test_test_utils.py
RENAMED
|
File without changes
|
|
File without changes
|