power-grid-model-io 1.3.3__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.

Files changed (142) hide show
  1. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/PKG-INFO +2 -1
  2. power_grid_model_io-1.3.6/PYPI_VERSION +1 -0
  3. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/pyproject.toml +34 -23
  4. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/__init__.py +2 -0
  5. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/base_converter.py +1 -0
  6. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/pandapower_converter.py +3 -3
  7. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/pgm_json_converter.py +1 -1
  8. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/tabular_converter.py +3 -0
  9. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/vision_excel_file_store.py +1 -0
  10. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_types/__init__.py +2 -0
  11. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/__init__.py +12 -0
  12. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/tabular_mapping.py +1 -0
  13. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/value_mapping.py +1 -0
  14. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/auto_id.py +1 -0
  15. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/dict.py +1 -0
  16. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/excel_ambiguity_checker.py +3 -3
  17. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/modules.py +1 -0
  18. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/PKG-INFO +2 -1
  19. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/requires.txt +1 -0
  20. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/conftest.py +3 -3
  21. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/conftest.py +3 -3
  22. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/converters/test_tabular_converter.py +179 -48
  23. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/converters/test_vision_excel_converter.py +1 -1
  24. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_excel_file_store.py +1 -1
  25. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_field_mapping.py +0 -1
  26. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_json.py +4 -5
  27. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_zip.py +2 -2
  28. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/utils.py +15 -16
  29. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/validation/conftest.py +4 -6
  30. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/validation/converters/test_vision_excel_converter.py +2 -1
  31. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/validation/utils.py +2 -2
  32. power_grid_model_io-1.3.3/PYPI_VERSION +0 -1
  33. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/LICENSE +0 -0
  34. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/MANIFEST.in +0 -0
  35. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/README.md +0 -0
  36. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/VERSION +0 -0
  37. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/setup.cfg +0 -0
  38. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/setup.py +0 -0
  39. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/__init__.py +0 -0
  40. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/__init__.py +0 -0
  41. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/examples/__init__.py +0 -0
  42. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/examples/multipliers.yaml +0 -0
  43. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/__init__.py +0 -0
  44. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_en.yaml +0 -0
  45. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_en_9_7.yaml +0 -0
  46. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_en_9_8.yaml +0 -0
  47. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/config/excel/vision_nl.yaml +0 -0
  48. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/converters/vision_excel_converter.py +0 -0
  49. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/__init__.py +0 -0
  50. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/base_data_store.py +0 -0
  51. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/csv_dir_store.py +0 -0
  52. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/excel_file_store.py +0 -0
  53. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_stores/json_file_store.py +0 -0
  54. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_types/_data_types.py +0 -0
  55. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/data_types/tabular_data.py +0 -0
  56. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/_functions.py +0 -0
  57. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/filters.py +0 -0
  58. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/functions/phase_to_phase.py +0 -0
  59. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/__init__.py +0 -0
  60. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/field_mapping.py +0 -0
  61. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/multiplier_mapping.py +0 -0
  62. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/mappings/unit_mapping.py +0 -0
  63. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/py.typed +0 -0
  64. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/__init__.py +0 -0
  65. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/download.py +0 -0
  66. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/json.py +0 -0
  67. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/parsing.py +0 -0
  68. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/uuid_excel_cvtr.py +0 -0
  69. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io/utils/zip.py +0 -0
  70. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/SOURCES.txt +0 -0
  71. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/dependency_links.txt +0 -0
  72. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/src/power_grid_model_io.egg-info/top_level.txt +0 -0
  73. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/__init__.py +0 -0
  74. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/config/dummy_mapping.yaml +0 -0
  75. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/config/mapping.yaml +0 -0
  76. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_asym_output_data.json +0 -0
  77. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_asym_output_data.json.license +0 -0
  78. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_input_data.json +0 -0
  79. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_input_data.json.license +0 -0
  80. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_output_data.json +0 -0
  81. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pgm_output_data.json.license +0 -0
  82. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_3ph_output.json +0 -0
  83. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_3ph_output.json.license +0 -0
  84. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_output.json +0 -0
  85. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_v2_net_output.json.license +0 -0
  86. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/pandapower/pp_validation.py +0 -0
  87. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/excel_ambiguity_check_data.xlsx +0 -0
  88. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/excel_ambiguity_check_data.xlsx.license +0 -0
  89. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_en.json +0 -0
  90. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_en.json.license +0 -0
  91. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_nl.json +0 -0
  92. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/pgm_input_data_nl.json.license +0 -0
  93. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_9_5_en.yaml +0 -0
  94. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_9_5_nl.yaml +0 -0
  95. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en.xlsx +0 -0
  96. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en.xlsx.license +0 -0
  97. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en_9_7.xlsx +0 -0
  98. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_en_9_7.xlsx.license +0 -0
  99. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_nl.xlsx +0 -0
  100. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_nl.xlsx.license +0 -0
  101. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_validation.vnf +0 -0
  102. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/vision/vision_validation.vnf.license +0 -0
  103. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/zip/foo-bar.zip +0 -0
  104. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/zip/foo-bar.zip.license +0 -0
  105. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/zip/foo.zip +0 -0
  106. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/data/zip/foo.zip.license +0 -0
  107. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/test_utils.py +0 -0
  108. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/__init__.py +0 -0
  109. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/converters/__init__.py +0 -0
  110. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/converters/test_base_converter.py +0 -0
  111. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/converters/test_pandapower_converter_input.py +0 -0
  112. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/converters/test_pandapower_converter_output.py +0 -0
  113. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/converters/test_pgm_json_converter.py +0 -0
  114. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_stores/__init__.py +0 -0
  115. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_base_data_store.py +0 -0
  116. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_csv_dir_store.py +0 -0
  117. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_json_file_store.py +0 -0
  118. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_stores/test_vision_excel_file_store.py +0 -0
  119. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_types/__init__.py +0 -0
  120. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_types/test_data_types.py +0 -0
  121. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/data_types/test_tabular_data.py +0 -0
  122. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/functions/__init__.py +0 -0
  123. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/functions/test_filters.py +0 -0
  124. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/functions/test_functions.py +0 -0
  125. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/functions/test_phase_to_phase.py +0 -0
  126. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/mappings/__init__.py +0 -0
  127. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_multiplier_mapping.py +0 -0
  128. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_tabular_mapping.py +0 -0
  129. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_unit_mapping.py +0 -0
  130. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/mappings/test_value_mapping.py +0 -0
  131. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/__init__.py +0 -0
  132. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_auto_id.py +0 -0
  133. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_dict.py +0 -0
  134. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_download.py +0 -0
  135. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_modules.py +0 -0
  136. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_parsing.py +0 -0
  137. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/unit/utils/test_uuid_excel_cvtr.py +0 -0
  138. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/validation/__init__.py +0 -0
  139. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/validation/converters/__init__.py +0 -0
  140. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/validation/converters/test_pandapower_converter_input.py +0 -0
  141. {power_grid_model_io-1.3.3 → power_grid_model_io-1.3.6}/tests/validation/converters/test_pandapower_converter_output.py +3 -3
  142. {power_grid_model_io-1.3.3 → 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
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.black]
93
+ [tool.ruff]
94
+ # Same as Black.
93
95
  line-length = 120
94
- target-version = ["py311", "py312", "py313"]
96
+ indent-width = 4
97
+ show-fixes = true
95
98
 
96
- [tool.isort]
97
- profile = "black"
98
- line_length = 120
99
+ # Assume Python 3.11
100
+ target-version = "py311"
99
101
 
100
- [tool.pylint]
101
- max-line-length = 120
102
- ignore-paths = [
103
- "docs/",
104
- "examples/",
105
- "tests/",
106
- "setup.py",
107
- ]
108
- disable = [
109
- "fixme", # allow todos
110
- ]
111
- good-names=[
112
- "ex", # exception
113
- "i", # iterator or current
114
- "p", # active power
115
- "q", # reactive power
116
- "s", # power (p + q)
117
- "v", # voltage
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"]
@@ -4,6 +4,7 @@
4
4
  """
5
5
  Abstract converter class
6
6
  """
7
+
7
8
  import logging
8
9
  from abc import ABC, abstractmethod
9
10
  from typing import Generic, Optional, Tuple, TypeVar
@@ -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(f"Zero sequence parameters given in external grid shall be ignored:{failed_checks}")
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(f"Zero sequence parameters given in trafo shall be ignored:{failed_checks}")
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(f"Zero sequence parameters given in trafo3w are ignored: {failed_checks}")
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 component, array in data.items():
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
 
@@ -265,6 +265,9 @@ class TabularConverter(BaseConverter[TabularData]):
265
265
  """
266
266
  # To avoid mistakes, the attributes in the mapping should exist. There is one extra attribute called
267
267
  # 'extra' in which extra information can be captured.
268
+ if pgm_data.dtype.names is None:
269
+ raise ValueError(f"pgm_data for '{component}s' has no attributes defined. (dtype.names is None)")
270
+
268
271
  if attr not in pgm_data.dtype.names and attr not in ["extra", "filters"]:
269
272
  attrs = ", ".join(pgm_data.dtype.names)
270
273
  raise KeyError(f"Could not find attribute '{attr}' for '{component}s'. (choose from: {attrs})")
@@ -4,6 +4,7 @@
4
4
  """
5
5
  Vision Excel file store
6
6
  """
7
+
7
8
  from pathlib import Path
8
9
  from typing import Optional
9
10
 
@@ -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
+ ]
@@ -4,6 +4,7 @@
4
4
  """
5
5
  Tabular data mapping helper class
6
6
  """
7
+
7
8
  from typing import Dict, Generator, List, Tuple, Union
8
9
 
9
10
  import structlog
@@ -4,6 +4,7 @@
4
4
  """
5
5
  Value substitution helper class
6
6
  """
7
+
7
8
  from typing import Dict, Optional, Union
8
9
 
9
10
  import structlog
@@ -4,6 +4,7 @@
4
4
  """
5
5
  Automatic ID generator class
6
6
  """
7
+
7
8
  import collections
8
9
  from collections.abc import Hashable
9
10
  from typing import Any, Dict, List, Optional, Union
@@ -4,6 +4,7 @@
4
4
  """
5
5
  General dictionary utilities
6
6
  """
7
+
7
8
  from copy import deepcopy
8
9
  from typing import Dict
9
10
 
@@ -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]]:
@@ -4,6 +4,7 @@
4
4
  """
5
5
  Module utilities, expecially useful for loading optional dependencies
6
6
  """
7
+
7
8
  from importlib import import_module
8
9
  from typing import Callable
9
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: power-grid-model-io
3
- Version: 1.3.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
@@ -11,6 +11,7 @@ pre-commit
11
11
  pylint
12
12
  pytest
13
13
  pytest-cov
14
+ ruff
14
15
  pydantic>2
15
16
  pandapower>2.11.1
16
17
 
@@ -2,9 +2,9 @@
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
- try:
9
+ with suppress(pd.errors.OptionError):
8
10
  pd.set_option("future.no_silent_downcasting", True)
9
- except pd.errors.OptionError:
10
- pass
@@ -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
- try:
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