power-grid-model-io 1.3.5__tar.gz → 1.3.6__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.3.5 → power_grid_model_io-1.3.6}/PKG-INFO +2 -1
- power_grid_model_io-1.3.6/PYPI_VERSION +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/pyproject.toml +34 -23
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/__init__.py +2 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/base_converter.py +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/pandapower_converter.py +3 -3
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/pgm_json_converter.py +1 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/vision_excel_file_store.py +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_types/__init__.py +2 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/__init__.py +12 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/tabular_mapping.py +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/value_mapping.py +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/auto_id.py +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/dict.py +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/excel_ambiguity_checker.py +3 -3
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/modules.py +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/PKG-INFO +2 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/requires.txt +1 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/conftest.py +3 -3
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/conftest.py +3 -3
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/test_tabular_converter.py +1 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/test_vision_excel_converter.py +1 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_excel_file_store.py +1 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_field_mapping.py +0 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_json.py +4 -5
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/utils.py +15 -16
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/conftest.py +4 -6
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/converters/test_vision_excel_converter.py +2 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/utils.py +2 -2
- power_grid_model_io-1.3.5/PYPI_VERSION +0 -1
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/LICENSE +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/MANIFEST.in +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/README.md +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/VERSION +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/setup.cfg +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/setup.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/examples/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/examples/multipliers.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_en.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_en_9_7.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_en_9_8.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_nl.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/tabular_converter.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/vision_excel_converter.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/base_data_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/csv_dir_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/excel_file_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/json_file_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_types/_data_types.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_types/tabular_data.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/_functions.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/filters.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/phase_to_phase.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/field_mapping.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/multiplier_mapping.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/unit_mapping.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/py.typed +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/download.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/json.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/parsing.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/uuid_excel_cvtr.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/zip.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/SOURCES.txt +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/dependency_links.txt +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/top_level.txt +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/config/dummy_mapping.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/config/mapping.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_asym_output_data.json +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_asym_output_data.json.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_input_data.json +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_input_data.json.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_output_data.json +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_output_data.json.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_3ph_output.json +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_3ph_output.json.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_output.json +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_output.json.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_validation.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/excel_ambiguity_check_data.xlsx +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/excel_ambiguity_check_data.xlsx.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_en.json +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_en.json.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_nl.json +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_nl.json.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_9_5_en.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_9_5_nl.yaml +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en.xlsx +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en.xlsx.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en_9_7.xlsx +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en_9_7.xlsx.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_nl.xlsx +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_nl.xlsx.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_validation.vnf +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_validation.vnf.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/zip/foo-bar.zip +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/zip/foo-bar.zip.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/zip/foo.zip +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/zip/foo.zip.license +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/test_utils.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/test_base_converter.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/test_pandapower_converter_input.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/test_pandapower_converter_output.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/test_pgm_json_converter.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_stores/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_base_data_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_csv_dir_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_json_file_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_vision_excel_file_store.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_types/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_types/test_data_types.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_types/test_tabular_data.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/functions/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/functions/test_filters.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/functions/test_functions.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/functions/test_phase_to_phase.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_multiplier_mapping.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_tabular_mapping.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_unit_mapping.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_value_mapping.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_auto_id.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_dict.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_download.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_modules.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_parsing.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_uuid_excel_cvtr.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_zip.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/converters/__init__.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/converters/test_pandapower_converter_input.py +0 -0
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/converters/test_pandapower_converter_output.py +3 -3
- {power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/test_test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: power-grid-model-io
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.6
|
|
4
4
|
Summary: Power Grid Model Input/Output
|
|
5
5
|
Author-email: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
|
|
6
6
|
License: MPL-2.0
|
|
@@ -33,6 +33,7 @@ Requires-Dist: pre-commit; extra == "dev"
|
|
|
33
33
|
Requires-Dist: pylint; extra == "dev"
|
|
34
34
|
Requires-Dist: pytest; extra == "dev"
|
|
35
35
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
36
|
+
Requires-Dist: ruff; extra == "dev"
|
|
36
37
|
Requires-Dist: pydantic>2; extra == "dev"
|
|
37
38
|
Requires-Dist: pandapower>2.11.1; extra == "dev"
|
|
38
39
|
Provides-Extra: examples
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.3.6
|
|
@@ -44,6 +44,7 @@ dev = [
|
|
|
44
44
|
"pylint",
|
|
45
45
|
"pytest",
|
|
46
46
|
"pytest-cov",
|
|
47
|
+
"ruff",
|
|
47
48
|
"pydantic>2", # Used in unit tests
|
|
48
49
|
"pandapower>2.11.1",
|
|
49
50
|
]
|
|
@@ -89,33 +90,43 @@ addopts = [
|
|
|
89
90
|
]
|
|
90
91
|
xfail_strict = true
|
|
91
92
|
|
|
92
|
-
[tool.
|
|
93
|
+
[tool.ruff]
|
|
94
|
+
# Same as Black.
|
|
93
95
|
line-length = 120
|
|
94
|
-
|
|
96
|
+
indent-width = 4
|
|
97
|
+
show-fixes = true
|
|
95
98
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
line_length = 120
|
|
99
|
+
# Assume Python 3.11
|
|
100
|
+
target-version = "py311"
|
|
99
101
|
|
|
100
|
-
[tool.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"
|
|
102
|
+
[tool.ruff.lint]
|
|
103
|
+
select = [
|
|
104
|
+
# pycodestyle
|
|
105
|
+
"E",
|
|
106
|
+
# Pyflakes
|
|
107
|
+
"F",
|
|
108
|
+
# isort
|
|
109
|
+
"I",
|
|
110
|
+
"SIM",
|
|
111
|
+
"YTT",
|
|
112
|
+
"BLE",
|
|
113
|
+
"PERF",
|
|
114
|
+
"Q",
|
|
115
|
+
"ICN",
|
|
116
|
+
"ISC",
|
|
117
|
+
"G",
|
|
118
|
+
"LOG",
|
|
119
|
+
"EXE",
|
|
120
|
+
"FA",
|
|
121
|
+
"FURB",
|
|
122
|
+
"FLY",
|
|
123
|
+
"SLOT",
|
|
118
124
|
]
|
|
125
|
+
ignore = ["SIM108", "SIM118", "SIM110", "SIM211"]
|
|
126
|
+
|
|
127
|
+
[tool.ruff.lint.isort]
|
|
128
|
+
# Imports that are imported using keyword "as" and are from the same source - are combined.
|
|
129
|
+
combine-as-imports = true
|
|
119
130
|
|
|
120
131
|
[tool.mypy]
|
|
121
132
|
follow_imports = "silent"
|
|
@@ -8,3 +8,5 @@ Converters
|
|
|
8
8
|
from power_grid_model_io.converters.pandapower_converter import PandaPowerConverter
|
|
9
9
|
from power_grid_model_io.converters.pgm_json_converter import PgmJsonConverter
|
|
10
10
|
from power_grid_model_io.converters.vision_excel_converter import VisionExcelConverter
|
|
11
|
+
|
|
12
|
+
__all__ = ["PandaPowerConverter", "PgmJsonConverter", "VisionExcelConverter"]
|
|
@@ -461,7 +461,7 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
461
461
|
}
|
|
462
462
|
if not all(checks.values()):
|
|
463
463
|
failed_checks = ", ".join([key for key, value in checks.items() if not value])
|
|
464
|
-
logger.warning(
|
|
464
|
+
logger.warning("Zero sequence parameters given in external grid shall be ignored: %s", failed_checks)
|
|
465
465
|
|
|
466
466
|
pgm_sources = initialize_array(data_type="input", component_type="source", shape=len(pp_ext_grid))
|
|
467
467
|
pgm_sources["id"] = self._generate_ids("ext_grid", pp_ext_grid.index)
|
|
@@ -753,7 +753,7 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
753
753
|
}
|
|
754
754
|
if not all(checks.values()):
|
|
755
755
|
failed_checks = ", ".join([key for key, value in checks.items() if not value])
|
|
756
|
-
logger.warning(
|
|
756
|
+
logger.warning("Zero sequence parameters given in trafo shall be ignored: %s", failed_checks)
|
|
757
757
|
|
|
758
758
|
# Do not use taps when mandatory tap data is not available
|
|
759
759
|
no_taps = np.equal(tap_side, None) | np.isnan(tap_pos) | np.isnan(tap_nom) | np.isnan(tap_size)
|
|
@@ -862,7 +862,7 @@ class PandaPowerConverter(BaseConverter[PandaPowerData]):
|
|
|
862
862
|
}
|
|
863
863
|
if not all(checks.values()):
|
|
864
864
|
failed_checks = ", ".join([key for key, value in checks.items() if not value])
|
|
865
|
-
logger.warning(
|
|
865
|
+
logger.warning("Zero sequence parameters given in trafo3w are ignored: %s", failed_checks)
|
|
866
866
|
|
|
867
867
|
# Do not use taps when mandatory tap data is not available
|
|
868
868
|
no_taps = np.equal(tap_side, None) | np.isnan(tap_pos) | np.isnan(tap_nom) | np.isnan(tap_size)
|
|
@@ -238,7 +238,7 @@ class PgmJsonConverter(BaseConverter[StructuredData]):
|
|
|
238
238
|
"""
|
|
239
239
|
|
|
240
240
|
# This should be a single data set
|
|
241
|
-
for
|
|
241
|
+
for array in data.values():
|
|
242
242
|
if not isinstance(array, np.ndarray) or array.ndim != 1:
|
|
243
243
|
raise ValueError("Invalid data format")
|
|
244
244
|
|
|
@@ -7,3 +7,5 @@ Common data types used in the Power Grid Model project
|
|
|
7
7
|
|
|
8
8
|
from power_grid_model_io.data_types._data_types import ExtraInfo, ExtraInfoLookup, StructuredData
|
|
9
9
|
from power_grid_model_io.data_types.tabular_data import LazyDataFrame, TabularData
|
|
10
|
+
|
|
11
|
+
__all__ = ["ExtraInfo", "ExtraInfoLookup", "StructuredData", "LazyDataFrame", "TabularData"]
|
|
@@ -17,3 +17,15 @@ from power_grid_model_io.functions._functions import (
|
|
|
17
17
|
value_or_default,
|
|
18
18
|
value_or_zero,
|
|
19
19
|
)
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"both_zeros_to_nan",
|
|
23
|
+
"complex_inverse_imaginary_part",
|
|
24
|
+
"complex_inverse_real_part",
|
|
25
|
+
"degrees_to_clock",
|
|
26
|
+
"get_winding",
|
|
27
|
+
"has_value",
|
|
28
|
+
"is_greater_than",
|
|
29
|
+
"value_or_default",
|
|
30
|
+
"value_or_zero",
|
|
31
|
+
]
|
|
@@ -19,6 +19,7 @@ Requirements:
|
|
|
19
19
|
- xml.etree.ElementTree for parsing XML structures within the Excel file.
|
|
20
20
|
- zipfile to handle the Excel file as a ZIP archive for parsing.
|
|
21
21
|
"""
|
|
22
|
+
|
|
22
23
|
import os
|
|
23
24
|
import xml.etree.ElementTree as ET
|
|
24
25
|
import zipfile
|
|
@@ -80,11 +81,10 @@ class ExcelAmbiguityChecker:
|
|
|
80
81
|
list: A list of shared strings used in the Excel file.
|
|
81
82
|
"""
|
|
82
83
|
shared_strings_path = SHARED_STR_PATH
|
|
83
|
-
shared_strings = []
|
|
84
|
+
shared_strings: List[Optional[str]] = []
|
|
84
85
|
with zip_file.open(shared_strings_path) as f:
|
|
85
86
|
tree = ET.parse(f)
|
|
86
|
-
for si in tree.findall(FIND_T, namespaces=XML_NAME_SPACE)
|
|
87
|
-
shared_strings.append(si.text)
|
|
87
|
+
shared_strings.extend(si.text for si in tree.findall(FIND_T, namespaces=XML_NAME_SPACE))
|
|
88
88
|
return shared_strings
|
|
89
89
|
|
|
90
90
|
def _get_column_names_from_row(self, row, shared_strings) -> List[Optional[str]]:
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: power-grid-model-io
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.6
|
|
4
4
|
Summary: Power Grid Model Input/Output
|
|
5
5
|
Author-email: Contributors to the Power Grid Model project <powergridmodel@lfenergy.org>
|
|
6
6
|
License: MPL-2.0
|
|
@@ -33,6 +33,7 @@ Requires-Dist: pre-commit; extra == "dev"
|
|
|
33
33
|
Requires-Dist: pylint; extra == "dev"
|
|
34
34
|
Requires-Dist: pytest; extra == "dev"
|
|
35
35
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
36
|
+
Requires-Dist: ruff; extra == "dev"
|
|
36
37
|
Requires-Dist: pydantic>2; extra == "dev"
|
|
37
38
|
Requires-Dist: pandapower>2.11.1; extra == "dev"
|
|
38
39
|
Provides-Extra: examples
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
|
|
5
|
+
from contextlib import suppress
|
|
6
|
+
|
|
5
7
|
import pandas as pd
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
with suppress(pd.errors.OptionError):
|
|
8
10
|
# TODO(mgovers) We're ready for Pandas 3.x, but pandapower is not. Move to parent conftest when it is.
|
|
9
11
|
pd.set_option("mode.copy_on_write", True)
|
|
10
|
-
except pd.errors.OptionError:
|
|
11
|
-
pass
|
|
@@ -233,7 +233,7 @@ def test_convert_col_def_to_attribute(
|
|
|
233
233
|
):
|
|
234
234
|
with pytest.raises(
|
|
235
235
|
KeyError,
|
|
236
|
-
match=r"Could not find attribute 'incorrect_attribute' for 'nodes'.
|
|
236
|
+
match=r"Could not find attribute 'incorrect_attribute' for 'nodes'. \(choose from: id, u_rated\)",
|
|
237
237
|
):
|
|
238
238
|
converter._convert_col_def_to_attribute(
|
|
239
239
|
data=tabular_data_no_units_no_substitutions,
|
|
@@ -146,4 +146,4 @@ def test_ambiguity_in_vision_excel():
|
|
|
146
146
|
ambiguious_test_file = Path(__file__).parents[2] / "data" / "vision" / "excel_ambiguity_check_data.xlsx"
|
|
147
147
|
excel_file_checker = ExcelAmbiguityChecker(file_path=ambiguious_test_file.as_posix())
|
|
148
148
|
res, _ = excel_file_checker.check_ambiguity()
|
|
149
|
-
assert res
|
|
149
|
+
assert res
|
|
@@ -20,9 +20,8 @@ def test_compact_json_dump():
|
|
|
20
20
|
string_stream = io.StringIO()
|
|
21
21
|
compact_json_dump(data, string_stream, indent=2, max_level=0)
|
|
22
22
|
assert (
|
|
23
|
-
string_stream.getvalue()
|
|
24
|
-
|
|
25
|
-
+ """ "line": [{"id": 5, "x": 6}, {"id": 7, "x": {"y": 8.1, "z": 8.2}}]}"""
|
|
23
|
+
string_stream.getvalue() == """{"node": [{"id": 1, "x": 2}, {"id": 3, "x": 4}],"""
|
|
24
|
+
""" "line": [{"id": 5, "x": 6}, {"id": 7, "x": {"y": 8.1, "z": 8.2}}]}"""
|
|
26
25
|
)
|
|
27
26
|
|
|
28
27
|
string_stream = io.StringIO()
|
|
@@ -165,7 +164,7 @@ def test_json_encoder(numpy_type: type, native_type: type):
|
|
|
165
164
|
value = encoder.default(value)
|
|
166
165
|
|
|
167
166
|
# Assert
|
|
168
|
-
assert type(value)
|
|
167
|
+
assert type(value) is native_type
|
|
169
168
|
assert value == 123
|
|
170
169
|
|
|
171
170
|
|
|
@@ -178,7 +177,7 @@ def test_json_encoder__np_array():
|
|
|
178
177
|
value = encoder.default(value)
|
|
179
178
|
|
|
180
179
|
# Assert
|
|
181
|
-
assert type(value)
|
|
180
|
+
assert type(value) is list
|
|
182
181
|
assert value == [1, 2, 3]
|
|
183
182
|
|
|
184
183
|
|
|
@@ -93,21 +93,20 @@ class MockFn:
|
|
|
93
93
|
obj = copy(left)
|
|
94
94
|
else:
|
|
95
95
|
obj = MockFn(fn, left)
|
|
96
|
-
if MockFn._is_operator(right)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return obj
|
|
96
|
+
if MockFn._is_operator(right) and (
|
|
97
|
+
obj.fn == "+"
|
|
98
|
+
and right.fn == "+"
|
|
99
|
+
or obj.fn == "-"
|
|
100
|
+
and right.fn == "+"
|
|
101
|
+
or obj.fn == "*"
|
|
102
|
+
and right.fn == "*"
|
|
103
|
+
or obj.fn == "/"
|
|
104
|
+
and right.fn == "*"
|
|
105
|
+
or obj.fn == "&"
|
|
106
|
+
and right.fn == "&"
|
|
107
|
+
):
|
|
108
|
+
obj.args += right.args
|
|
109
|
+
return obj
|
|
111
110
|
obj.args += [right]
|
|
112
111
|
return obj
|
|
113
112
|
|
|
@@ -176,7 +175,7 @@ class MockFn:
|
|
|
176
175
|
return False
|
|
177
176
|
|
|
178
177
|
def eq(left, right) -> bool:
|
|
179
|
-
if type(left)
|
|
178
|
+
if type(left) is not type(right):
|
|
180
179
|
return False
|
|
181
180
|
if isinstance(left, pd.DataFrame) and left.columns != right.columns:
|
|
182
181
|
return False
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
|
|
5
|
+
from contextlib import suppress
|
|
6
|
+
|
|
5
7
|
import pandas as pd
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
with suppress(pd.errors.OptionError):
|
|
8
10
|
pd.set_option("future.no_silent_downcasting", True)
|
|
9
|
-
except pd.errors.OptionError:
|
|
10
|
-
pass
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
with suppress(pd.errors.OptionError):
|
|
13
13
|
# TODO(mgovers) We're ready for Pandas 3.x, but pandapower is not. Move to parent conftest when it is.
|
|
14
14
|
pd.set_option("mode.copy_on_write", False)
|
|
15
|
-
except pd.errors.OptionError:
|
|
16
|
-
pass
|
|
@@ -95,7 +95,8 @@ def test_input_data(input_data: Tuple[SingleDataset, SingleDataset]):
|
|
|
95
95
|
|
|
96
96
|
def test_input_data_custom_yaml():
|
|
97
97
|
"""
|
|
98
|
-
Unit test to preload the expected and actual data, using a different
|
|
98
|
+
Unit test to preload the expected and actual data, using a different
|
|
99
|
+
mapping file other than the one in the default location
|
|
99
100
|
"""
|
|
100
101
|
for language in LANGUAGES:
|
|
101
102
|
# Arrange
|
|
@@ -176,7 +176,7 @@ def load_json_single_dataset(file_path: Path, data_type: str) -> Tuple[SingleDat
|
|
|
176
176
|
"""
|
|
177
177
|
try:
|
|
178
178
|
dataset = json_deserialize_from_file(file_path=file_path)
|
|
179
|
-
except PowerGridSerializationError
|
|
179
|
+
except PowerGridSerializationError:
|
|
180
180
|
try:
|
|
181
181
|
with warnings.catch_warnings():
|
|
182
182
|
warnings.simplefilter("ignore")
|
|
@@ -223,7 +223,7 @@ def compare_extra_info(actual: ExtraInfo, expected: ExtraInfo, component: str, o
|
|
|
223
223
|
# If the values don't match, that's an error
|
|
224
224
|
elif act[key] != value:
|
|
225
225
|
errors.append(
|
|
226
|
-
f"Expected extra info '{key}' for {component} #{obj_id} to be {value},
|
|
226
|
+
f"Expected extra info '{key}' for {component} #{obj_id} to be {value}, but it is {act[key]}."
|
|
227
227
|
)
|
|
228
228
|
|
|
229
229
|
return errors
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.3.5
|
|
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.3.5 → power_grid_model_io-1.3.6}/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
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/filters.py
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/__init__.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/download.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/json.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/parsing.py
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/zip.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/config/dummy_mapping.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_input_data.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_output_data.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_output.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_en.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_nl.json
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_9_5_en.yaml
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_9_5_nl.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en.xlsx.license
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en_9_7.xlsx
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en_9_7.xlsx.license
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_nl.xlsx.license
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/data/vision/vision_validation.vnf
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
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/converters/test_base_converter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_csv_dir_store.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_types/test_data_types.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/data_types/test_tabular_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/functions/test_filters.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/functions/test_functions.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/functions/test_phase_to_phase.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_tabular_mapping.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_unit_mapping.py
RENAMED
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/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
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/unit/utils/test_uuid_excel_cvtr.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{power_grid_model_io-1.3.5 → power_grid_model_io-1.3.6}/tests/validation/converters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -15,12 +15,12 @@ from power_grid_model.validation import assert_valid_input_data
|
|
|
15
15
|
from power_grid_model_io.converters import PandaPowerConverter
|
|
16
16
|
from power_grid_model_io.converters.pandapower_converter import PandaPowerData
|
|
17
17
|
|
|
18
|
-
pp = pytest.importorskip("pandapower", reason="pandapower is not installed")
|
|
19
|
-
# we add this to enable python 3.13 testing even though pandapower 3.0 is not yet compatible with it
|
|
20
|
-
|
|
21
18
|
from ...data.pandapower.pp_validation import pp_net, pp_net_3ph
|
|
22
19
|
from ..utils import component_attributes_df, load_json_single_dataset
|
|
23
20
|
|
|
21
|
+
pp = pytest.importorskip("pandapower", reason="pandapower is not installed")
|
|
22
|
+
# we add this to enable python 3.13 testing even though pandapower 3.0 is not yet compatible with it
|
|
23
|
+
|
|
24
24
|
PGM_PP_TEST_DATA = Path(__file__).parents[2] / "data" / "pandapower"
|
|
25
25
|
PGM_OUTPUT_FILE = PGM_PP_TEST_DATA / "pgm_output_data.json"
|
|
26
26
|
PGM_ASYM_OUTPUT_FILE = PGM_PP_TEST_DATA / "pgm_asym_output_data.json"
|
|
File without changes
|