grid-data-models 2.3.6__tar.gz → 2.3.7__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.
Files changed (136) hide show
  1. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/PKG-INFO +3 -3
  2. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/pyproject.toml +2 -2
  3. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/distribution_system.py +6 -1
  4. grid_data_models-2.3.7/src/gdm/distribution/upgrade_handler/from__2_3_6__to__2_3_7.py +15 -0
  5. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/upgrade_handler.py +6 -0
  6. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/utils/aggregate_components.py +5 -4
  7. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/version.py +1 -1
  8. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/.gitignore +0 -0
  9. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/LICENSE.txt +0 -0
  10. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/README.md +0 -0
  11. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/__init__.py +0 -0
  12. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/cli/cli.py +0 -0
  13. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/cli/reducer.py +0 -0
  14. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/constants.py +0 -0
  15. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/dataset/__init__.py +0 -0
  16. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/dataset/cost_model.py +0 -0
  17. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/dataset/dataset_system.py +0 -0
  18. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/__init__.py +0 -0
  19. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/catalog_system.py +0 -0
  20. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/common/__init__.py +0 -0
  21. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/common/curve.py +0 -0
  22. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/common/limitset.py +0 -0
  23. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/common/sequence_pair.py +0 -0
  24. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/__init__.py +0 -0
  25. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/base/__init__.py +0 -0
  26. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/base/distribution_branch_base.py +0 -0
  27. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/base/distribution_component_base.py +0 -0
  28. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/base/distribution_switch_base.py +0 -0
  29. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/base/distribution_transformer_base.py +0 -0
  30. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_battery.py +0 -0
  31. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_bus.py +0 -0
  32. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_capacitor.py +0 -0
  33. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_feeder.py +0 -0
  34. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_load.py +0 -0
  35. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_regulator.py +0 -0
  36. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_solar.py +0 -0
  37. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_substation.py +0 -0
  38. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_transformer.py +0 -0
  39. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/distribution_vsource.py +0 -0
  40. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/geometry_branch.py +0 -0
  41. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/geometry_switch.py +0 -0
  42. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/matrix_impedance_branch.py +0 -0
  43. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/matrix_impedance_fuse.py +0 -0
  44. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/matrix_impedance_recloser.py +0 -0
  45. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/matrix_impedance_switch.py +0 -0
  46. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/components/sequence_impedance_branch.py +0 -0
  47. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/__init__.py +0 -0
  48. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/base/__init__.py +0 -0
  49. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/base/capacitor_controller_base.py +0 -0
  50. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/base/inverter_controller_base.py +0 -0
  51. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/distribution_capacitor_controller.py +0 -0
  52. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/distribution_inverter_controller.py +0 -0
  53. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/distribution_recloser_controller.py +0 -0
  54. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/distribution_regulator_controller.py +0 -0
  55. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/controllers/distribution_switch_controller.py +0 -0
  56. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/distribution_graph.py +0 -0
  57. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/enums.py +0 -0
  58. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/__init__.py +0 -0
  59. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/bare_conductor_equipment.py +0 -0
  60. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/base/__init__.py +0 -0
  61. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/base/matrix_impedance_branch_equipment_base.py +0 -0
  62. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/battery_equipment.py +0 -0
  63. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/capacitor_equipment.py +0 -0
  64. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/concentric_cable_equipment.py +0 -0
  65. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/distribution_transformer_equipment.py +0 -0
  66. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/geometry_branch_equipment.py +0 -0
  67. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/inverter_equipment.py +0 -0
  68. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/load_equipment.py +0 -0
  69. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/matrix_impedance_branch_equipment.py +0 -0
  70. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/matrix_impedance_fuse_equipment.py +0 -0
  71. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/matrix_impedance_recloser_equipment.py +0 -0
  72. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/matrix_impedance_switch_equipment.py +0 -0
  73. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/phase_capacitor_equipment.py +0 -0
  74. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/phase_load_equipment.py +0 -0
  75. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/phase_voltagesource_equipment.py +0 -0
  76. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/recloser_controller_equipment.py +0 -0
  77. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/sequence_impedance_branch_equipment.py +0 -0
  78. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/solar_equipment.py +0 -0
  79. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/equipment/voltagesource_equipment.py +0 -0
  80. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/market/__init__.py +0 -0
  81. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/market/aggregator.py +0 -0
  82. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/market/tariff.py +0 -0
  83. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/model_reduction/__init__.py +0 -0
  84. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/model_reduction/reducer.py +0 -0
  85. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/sys_functools.py +0 -0
  86. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/__init__.py +0 -0
  87. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_0_1__to__2_1_2.py +0 -0
  88. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_1_2__to__2_1_3.py +0 -0
  89. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_1_3__to__2_1_4.py +0 -0
  90. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_1_4__to__2_1_5.py +0 -0
  91. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_1_5__to__2_2_0.py +0 -0
  92. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_2_0__to__2_2_1.py +0 -0
  93. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_2_1__to__2_3_0.py +0 -0
  94. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_3_0__to__2_3_1.py +0 -0
  95. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_3_1__to__2_3_2.py +0 -0
  96. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_3_2__to__2_3_3.py +0 -0
  97. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_3_3__to__2_3_4.py +0 -0
  98. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_3_4__to__2_3_5.py +0 -0
  99. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/upgrade_handler/from__2_3_5__to__2_3_6.py +0 -0
  100. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/distribution/utils/__init__.py +0 -0
  101. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/exceptions.py +0 -0
  102. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/hashing_utils.py +0 -0
  103. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/__init__.py +0 -0
  104. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/exceptions.py +0 -0
  105. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/inspection/__init__.py +0 -0
  106. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/inspection/inspector.py +0 -0
  107. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/inspection/relationships.py +0 -0
  108. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/inspection/topology.py +0 -0
  109. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/knowledge/__init__.py +0 -0
  110. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/knowledge/documentation.py +0 -0
  111. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/operations/__init__.py +0 -0
  112. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/operations/merger.py +0 -0
  113. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/operations/splitter.py +0 -0
  114. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/schemas.py +0 -0
  115. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/server.py +0 -0
  116. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/utilities/__init__.py +0 -0
  117. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/utilities/subsystem.py +0 -0
  118. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/utilities/timeseries.py +0 -0
  119. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/validation/__init__.py +0 -0
  120. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/validation/auto_fixer.py +0 -0
  121. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/validation/diagnostics.py +0 -0
  122. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/validation/suggestions.py +0 -0
  123. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/mcp/version.py +0 -0
  124. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/quantities.py +0 -0
  125. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/__init__.py +0 -0
  126. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/__init__.py +0 -0
  127. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/base.py +0 -0
  128. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/building.py +0 -0
  129. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/overhead_line_segment.py +0 -0
  130. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/pole.py +0 -0
  131. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/pvsystem.py +0 -0
  132. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/transformer.py +0 -0
  133. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/underground_cable.py +0 -0
  134. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/components/underground_junction.py +0 -0
  135. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/structural/structural_system.py +0 -0
  136. {grid_data_models-2.3.6 → grid_data_models-2.3.7}/src/gdm/tracked_changes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: grid-data-models
3
- Version: 2.3.6
3
+ Version: 2.3.7
4
4
  Project-URL: Documentation, https://github.com/NREL-Distribution-Suites/grid-data-models#readme
5
5
  Project-URL: Issues, https://github.com/NREL-Distribution-Suites/grid-data-models/issues
6
6
  Project-URL: Source, https://github.com/NREL-Distribution-Suites/grid-data-models
@@ -30,13 +30,13 @@ Requires-Dist: pytest-doctestplus; extra == 'dev'
30
30
  Requires-Dist: ruff; extra == 'dev'
31
31
  Provides-Extra: doc
32
32
  Requires-Dist: autodoc-pydantic[erdantic]; extra == 'doc'
33
- Requires-Dist: jupyter-book<3,>=2.1.5; extra == 'doc'
33
+ Requires-Dist: jupyter-book<3,>=2.1.6; extra == 'doc'
34
34
  Requires-Dist: myst-parser; extra == 'doc'
35
35
  Requires-Dist: pydata-sphinx-theme; extra == 'doc'
36
36
  Requires-Dist: sphinx; extra == 'doc'
37
37
  Requires-Dist: sphinxcontrib-mermaid; extra == 'doc'
38
38
  Provides-Extra: mcp
39
- Requires-Dist: mcp>=1.28.0; extra == 'mcp'
39
+ Requires-Dist: mcp>=1.28.1; extra == 'mcp'
40
40
  Description-Content-Type: text/markdown
41
41
 
42
42
 
@@ -33,10 +33,10 @@ dependencies = [
33
33
  ]
34
34
 
35
35
  [project.optional-dependencies]
36
- mcp = ["mcp>=1.28.0"]
36
+ mcp = ["mcp>=1.28.1"]
37
37
  dev = ["pre-commit", "pytest", "pytest-cov", "pytest-doctestplus", "pytest-asyncio", "ruff", "docutils"]
38
38
  doc = [
39
- "jupyter-book>=2.1.5,<3",
39
+ "jupyter-book>=2.1.6,<3",
40
40
  "sphinx",
41
41
  "pydata-sphinx-theme",
42
42
  "myst-parser",
@@ -213,6 +213,9 @@ class DistributionSystem(System):
213
213
  "type": edge.__class__,
214
214
  "is_closed": True,
215
215
  "in_service": edge.in_service,
216
+ "phases": [phase.value for phase in edge.winding_phases[0]]
217
+ if isinstance(edge, DistributionTransformerBase)
218
+ else [phase.value for phase in edge.phases],
216
219
  }
217
220
  if isinstance(edge, DistributionSwitchBase):
218
221
  data["is_closed"] = True if len(edge.is_closed) == sum(edge.is_closed) else False
@@ -952,7 +955,9 @@ class DistributionSystem(System):
952
955
  logger.info("Converting models from GeometryBranch to MatrixImpedanceBranch...")
953
956
  auto_add = self.auto_add_composed_components
954
957
  self.auto_add_composed_components = True
955
- branches = list(self.get_components(GeometryBranch)) + list(self.get_components(GeometrySwitch))
958
+ branches = list(self.get_components(GeometryBranch)) + list(
959
+ self.get_components(GeometrySwitch)
960
+ )
956
961
  for branch in branches:
957
962
  impedence_branch = branch.to_matrix_representation(
958
963
  frequency_hz, soil_resistivity_ohm_m
@@ -0,0 +1,15 @@
1
+ from loguru import logger
2
+ from infrasys.migrations.metadata_migration import migrate_component_metadata
3
+
4
+
5
+ def from__2_3_6__to__2_3_7(data: dict, from_version: str, to_version: str) -> dict:
6
+ logger.info(f"Upgrading DistributionSystem from verion {from_version} to {to_version}")
7
+ data["data_format_version"] = str(to_version)
8
+ number_of_components_before = len(data["components"])
9
+ data["components"] = migrate_component_metadata(data["components"])
10
+ number_of_components_after = len(data["components"])
11
+ assert (
12
+ number_of_components_before == number_of_components_after
13
+ ), "Number of components should be the same before and after model upgrade"
14
+
15
+ return data
@@ -24,6 +24,7 @@ from gdm.distribution.upgrade_handler.from__2_3_2__to__2_3_3 import from__2_3_2_
24
24
  from gdm.distribution.upgrade_handler.from__2_3_3__to__2_3_4 import from__2_3_3__to__2_3_4
25
25
  from gdm.distribution.upgrade_handler.from__2_3_4__to__2_3_5 import from__2_3_4__to__2_3_5
26
26
  from gdm.distribution.upgrade_handler.from__2_3_5__to__2_3_6 import from__2_3_5__to__2_3_6
27
+ from gdm.distribution.upgrade_handler.from__2_3_6__to__2_3_7 import from__2_3_6__to__2_3_7
27
28
 
28
29
 
29
30
  def fix_version(version):
@@ -136,6 +137,11 @@ class UpgradeHandler(BaseModel):
136
137
  from_version="2.3.5",
137
138
  to_version="2.3.6",
138
139
  ),
140
+ UpgradeSchema(
141
+ method=from__2_3_6__to__2_3_7,
142
+ from_version="2.3.6",
143
+ to_version="2.3.7",
144
+ ),
139
145
  ]
140
146
 
141
147
  @model_validator(mode="after")
@@ -139,8 +139,9 @@ def aggregate_single_phase_transformers(
139
139
  - Single-phase (all windings have num_phases == 1)
140
140
  - Connected to the same set of buses
141
141
 
142
- Groups of 3 such components are merged into one three-phase component.
143
- The original single-phase components are removed and the merged component is added.
142
+ Groups of 2 (open-wye / open-delta) or 3 such components are merged into one
143
+ multi-phase equivalent. The original single-phase components are removed and
144
+ the merged component is added.
144
145
 
145
146
  Parameters
146
147
  ----------
@@ -159,9 +160,9 @@ def aggregate_single_phase_transformers(
159
160
  if _is_single_phase(comp):
160
161
  groups[_bus_key(comp)].append(comp)
161
162
 
162
- # Merge groups of exactly 3 parallel single-phase components
163
+ # Merge groups of 2 (open-wye/open-delta) or 3 parallel single-phase components
163
164
  for key, group in groups.items():
164
- if len(group) != 3:
165
+ if len(group) < 2 or len(group) > 3:
165
166
  continue
166
167
 
167
168
  merged = _merge_group(group)
@@ -3,7 +3,7 @@ import subprocess
3
3
  import platform
4
4
  import sys
5
5
 
6
- VERSION = "2.3.6"
6
+ VERSION = "2.3.7"
7
7
  SUPPORTED_VERSIONS = [VERSION]
8
8
 
9
9