grid-data-models 2.3.4__tar.gz → 2.3.5__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 (132) hide show
  1. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/PKG-INFO +2 -2
  2. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/pyproject.toml +1 -1
  3. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/__init__.py +1 -0
  4. grid_data_models-2.3.5/src/gdm/distribution/components/geometry_switch.py +122 -0
  5. grid_data_models-2.3.5/src/gdm/distribution/upgrade_handler/from__2_3_4__to__2_3_5.py +15 -0
  6. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/upgrade_handler.py +6 -0
  7. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/version.py +1 -1
  8. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/.gitignore +0 -0
  9. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/LICENSE.txt +0 -0
  10. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/README.md +0 -0
  11. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/__init__.py +0 -0
  12. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/cli/cli.py +0 -0
  13. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/cli/reducer.py +0 -0
  14. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/constants.py +0 -0
  15. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/dataset/__init__.py +0 -0
  16. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/dataset/cost_model.py +0 -0
  17. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/dataset/dataset_system.py +0 -0
  18. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/__init__.py +0 -0
  19. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/catalog_system.py +0 -0
  20. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/common/__init__.py +0 -0
  21. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/common/curve.py +0 -0
  22. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/common/limitset.py +0 -0
  23. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/common/sequence_pair.py +0 -0
  24. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/base/__init__.py +0 -0
  25. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/base/distribution_branch_base.py +0 -0
  26. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/base/distribution_component_base.py +0 -0
  27. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/base/distribution_switch_base.py +0 -0
  28. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/base/distribution_transformer_base.py +0 -0
  29. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_battery.py +0 -0
  30. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_bus.py +0 -0
  31. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_capacitor.py +0 -0
  32. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_feeder.py +0 -0
  33. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_load.py +0 -0
  34. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_regulator.py +0 -0
  35. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_solar.py +0 -0
  36. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_substation.py +0 -0
  37. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_transformer.py +0 -0
  38. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/distribution_vsource.py +0 -0
  39. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/geometry_branch.py +0 -0
  40. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/matrix_impedance_branch.py +0 -0
  41. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/matrix_impedance_fuse.py +0 -0
  42. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/matrix_impedance_recloser.py +0 -0
  43. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/matrix_impedance_switch.py +0 -0
  44. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/components/sequence_impedance_branch.py +0 -0
  45. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/__init__.py +0 -0
  46. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/base/__init__.py +0 -0
  47. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/base/capacitor_controller_base.py +0 -0
  48. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/base/inverter_controller_base.py +0 -0
  49. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/distribution_capacitor_controller.py +0 -0
  50. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/distribution_inverter_controller.py +0 -0
  51. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/distribution_recloser_controller.py +0 -0
  52. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/distribution_regulator_controller.py +0 -0
  53. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/controllers/distribution_switch_controller.py +0 -0
  54. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/distribution_graph.py +0 -0
  55. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/distribution_system.py +0 -0
  56. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/enums.py +0 -0
  57. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/__init__.py +0 -0
  58. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/bare_conductor_equipment.py +0 -0
  59. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/base/__init__.py +0 -0
  60. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/base/matrix_impedance_branch_equipment_base.py +0 -0
  61. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/battery_equipment.py +0 -0
  62. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/capacitor_equipment.py +0 -0
  63. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/concentric_cable_equipment.py +0 -0
  64. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/distribution_transformer_equipment.py +0 -0
  65. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/geometry_branch_equipment.py +0 -0
  66. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/inverter_equipment.py +0 -0
  67. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/load_equipment.py +0 -0
  68. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/matrix_impedance_branch_equipment.py +0 -0
  69. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/matrix_impedance_fuse_equipment.py +0 -0
  70. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/matrix_impedance_recloser_equipment.py +0 -0
  71. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/matrix_impedance_switch_equipment.py +0 -0
  72. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/phase_capacitor_equipment.py +0 -0
  73. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/phase_load_equipment.py +0 -0
  74. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/phase_voltagesource_equipment.py +0 -0
  75. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/recloser_controller_equipment.py +0 -0
  76. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/sequence_impedance_branch_equipment.py +0 -0
  77. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/solar_equipment.py +0 -0
  78. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/equipment/voltagesource_equipment.py +0 -0
  79. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/market/__init__.py +0 -0
  80. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/market/aggregator.py +0 -0
  81. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/market/tariff.py +0 -0
  82. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/model_reduction/__init__.py +0 -0
  83. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/model_reduction/reducer.py +0 -0
  84. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/sys_functools.py +0 -0
  85. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/__init__.py +0 -0
  86. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_0_1__to__2_1_2.py +0 -0
  87. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_1_2__to__2_1_3.py +0 -0
  88. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_1_3__to__2_1_4.py +0 -0
  89. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_1_4__to__2_1_5.py +0 -0
  90. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_1_5__to__2_2_0.py +0 -0
  91. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_2_0__to__2_2_1.py +0 -0
  92. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_2_1__to__2_3_0.py +0 -0
  93. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_3_0__to__2_3_1.py +0 -0
  94. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_3_1__to__2_3_2.py +0 -0
  95. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_3_2__to__2_3_3.py +0 -0
  96. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/distribution/upgrade_handler/from__2_3_3__to__2_3_4.py +0 -0
  97. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/exceptions.py +0 -0
  98. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/hashing_utils.py +0 -0
  99. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/__init__.py +0 -0
  100. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/exceptions.py +0 -0
  101. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/inspection/__init__.py +0 -0
  102. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/inspection/inspector.py +0 -0
  103. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/inspection/relationships.py +0 -0
  104. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/inspection/topology.py +0 -0
  105. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/knowledge/__init__.py +0 -0
  106. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/knowledge/documentation.py +0 -0
  107. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/operations/__init__.py +0 -0
  108. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/operations/merger.py +0 -0
  109. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/operations/splitter.py +0 -0
  110. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/schemas.py +0 -0
  111. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/server.py +0 -0
  112. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/utilities/__init__.py +0 -0
  113. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/utilities/subsystem.py +0 -0
  114. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/utilities/timeseries.py +0 -0
  115. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/validation/__init__.py +0 -0
  116. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/validation/auto_fixer.py +0 -0
  117. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/validation/diagnostics.py +0 -0
  118. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/validation/suggestions.py +0 -0
  119. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/mcp/version.py +0 -0
  120. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/quantities.py +0 -0
  121. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/__init__.py +0 -0
  122. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/__init__.py +0 -0
  123. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/base.py +0 -0
  124. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/building.py +0 -0
  125. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/overhead_line_segment.py +0 -0
  126. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/pole.py +0 -0
  127. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/pvsystem.py +0 -0
  128. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/transformer.py +0 -0
  129. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/underground_cable.py +0 -0
  130. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/components/underground_junction.py +0 -0
  131. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/src/gdm/structural/structural_system.py +0 -0
  132. {grid_data_models-2.3.4 → grid_data_models-2.3.5}/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.4
3
+ Version: 2.3.5
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
@@ -36,7 +36,7 @@ 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.27.2; extra == 'mcp'
39
+ Requires-Dist: mcp>=1.28.0; extra == 'mcp'
40
40
  Description-Content-Type: text/markdown
41
41
 
42
42
 
@@ -33,7 +33,7 @@ dependencies = [
33
33
  ]
34
34
 
35
35
  [project.optional-dependencies]
36
- mcp = ["mcp>=1.27.2"]
36
+ mcp = ["mcp>=1.28.0"]
37
37
  dev = ["pre-commit", "pytest", "pytest-cov", "pytest-doctestplus", "pytest-asyncio", "ruff", "docutils"]
38
38
  doc = [
39
39
  "jupyter-book>=2.1.5,<3",
@@ -7,6 +7,7 @@ from gdm.distribution.components.distribution_solar import DistributionSolar
7
7
  from gdm.distribution.components.distribution_transformer import DistributionTransformer
8
8
  from gdm.distribution.components.distribution_vsource import DistributionVoltageSource
9
9
  from gdm.distribution.components.geometry_branch import GeometryBranch
10
+ from gdm.distribution.components.geometry_switch import GeometrySwitch
10
11
  from gdm.distribution.components.matrix_impedance_branch import MatrixImpedanceBranch
11
12
  from gdm.distribution.components.matrix_impedance_fuse import MatrixImpedanceFuse
12
13
  from gdm.distribution.components.matrix_impedance_recloser import MatrixImpedanceRecloser
@@ -0,0 +1,122 @@
1
+ """This module contains geometry branch."""
2
+
3
+ from typing import Annotated
4
+
5
+ from pydantic import Field
6
+
7
+ from gdm.distribution.components.base.distribution_switch_base import (
8
+ DistributionSwitchBase,
9
+ )
10
+ from gdm.distribution.equipment.geometry_branch_equipment import (
11
+ GeometryBranchEquipment,
12
+ )
13
+ from gdm.distribution.components.distribution_feeder import DistributionFeeder
14
+ from gdm.distribution.components.distribution_substation import (
15
+ DistributionSubstation,
16
+ )
17
+ from gdm.distribution.components.distribution_bus import DistributionBus
18
+ from gdm.distribution.enums import Phase
19
+ from gdm.quantities import Voltage, Distance
20
+
21
+ from gdm.distribution.components.matrix_impedance_switch import MatrixImpedanceSwitch
22
+ from gdm.distribution.equipment import (
23
+ ConcentricCableEquipment,
24
+ )
25
+ from gdm.distribution.equipment.matrix_impedance_switch_equipment import (
26
+ MatrixImpedanceSwitchEquipment,
27
+ )
28
+
29
+
30
+ class GeometrySwitch(DistributionSwitchBase):
31
+ """Data model for distribution branches based on line geometry."""
32
+
33
+ equipment: Annotated[
34
+ GeometryBranchEquipment,
35
+ Field(..., description="Geometry branch equipment."),
36
+ ]
37
+
38
+ def validate_fields(self) -> "GeometrySwitch":
39
+ """Custom validator for geometry branch fields."""
40
+ if len(self.phases) != len(self.equipment.conductors):
41
+ msg = "Number of phases is not equal to number of wires."
42
+ raise ValueError(msg)
43
+ return self
44
+
45
+ def to_matrix_representation(
46
+ self, frequency_hz: float = 60, soil_resistivity_ohm_m: float = 100
47
+ ) -> MatrixImpedanceSwitch:
48
+ """
49
+ Converts the geometry-based branch model to a matrix impedance representation.
50
+
51
+ This method transforms the current `GeometryBranch` instance into a `MatrixImpedanceBranch`
52
+ by calculating the impedance matrix based on the specified frequency and soil resistivity.
53
+ The conversion process involves using the equipment's matrix representation method to obtain
54
+ the necessary impedance data.
55
+
56
+ Parameters
57
+ ----------
58
+ frequency_hz : float, optional
59
+ The frequency in hertz used for impedance calculations. Defaults to 60 Hz.
60
+ soil_resistivity_ohm_m : float, optional
61
+ The soil resistivity in ohm-meters used for impedance calculations. Defaults to 100 ohm-m.
62
+
63
+ Returns
64
+ -------
65
+ MatrixImpedanceBranch
66
+ A new instance of `MatrixImpedanceBranch` representing the converted geometry branch.
67
+
68
+ Notes
69
+ -----
70
+ - The method uses the number of neutral phases to assist in the impedance calculation.
71
+ - This conversion is essential for systems that require matrix impedance representations
72
+ for detailed electrical analysis.
73
+
74
+ """
75
+ equipment = self.equipment.to_matrix_representation(
76
+ frequency_hz,
77
+ soil_resistivity_ohm_m,
78
+ n_neutrals=len([phs for phs in self.phases if phs == Phase.N]),
79
+ )
80
+ if isinstance(self.equipment.conductors[0], ConcentricCableEquipment):
81
+ phases = self.phases + [Phase.N for _ in self.phases]
82
+ equipment.kron_reduce(phases)
83
+
84
+ switch_equipment = MatrixImpedanceSwitchEquipment(
85
+ **equipment.model_dump(exclude_none=True)
86
+ )
87
+
88
+ return MatrixImpedanceSwitch(
89
+ buses=self.buses,
90
+ length=self.length,
91
+ phases=self.phases,
92
+ substation=self.substation,
93
+ feeder=self.feeder,
94
+ name=self.name,
95
+ equipment=switch_equipment,
96
+ is_closed=self.is_closed,
97
+ )
98
+
99
+ @classmethod
100
+ def example(cls) -> "GeometrySwitch":
101
+ """Example for geometry branch."""
102
+ buses = [
103
+ DistributionBus(
104
+ voltage_type="line-to-ground",
105
+ phases=[Phase.A, Phase.B, Phase.C],
106
+ rated_voltage=Voltage(400, "volt"),
107
+ substation=DistributionSubstation.example(),
108
+ feeder=DistributionFeeder.example(),
109
+ name=bus_name,
110
+ )
111
+ for bus_name in ["Branch-DistBus1", "Branch-DistBus2"]
112
+ ]
113
+ return GeometrySwitch(
114
+ buses=buses,
115
+ length=Distance(130.2, "meter"),
116
+ phases=[Phase.A, Phase.B, Phase.C],
117
+ substation=DistributionSubstation.example(),
118
+ feeder=DistributionFeeder.example(),
119
+ name="DistBranch1",
120
+ is_closed=[True, True, True],
121
+ equipment=GeometryBranchEquipment.example(),
122
+ )
@@ -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_4__to__2_3_5(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
@@ -22,6 +22,7 @@ from gdm.distribution.upgrade_handler.from__2_3_0__to__2_3_1 import from__2_3_0_
22
22
  from gdm.distribution.upgrade_handler.from__2_3_1__to__2_3_2 import from__2_3_1__to__2_3_2
23
23
  from gdm.distribution.upgrade_handler.from__2_3_2__to__2_3_3 import from__2_3_2__to__2_3_3
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
+ from gdm.distribution.upgrade_handler.from__2_3_4__to__2_3_5 import from__2_3_4__to__2_3_5
25
26
 
26
27
 
27
28
  def fix_version(version):
@@ -124,6 +125,11 @@ class UpgradeHandler(BaseModel):
124
125
  from_version="2.3.3",
125
126
  to_version="2.3.4",
126
127
  ),
128
+ UpgradeSchema(
129
+ method=from__2_3_4__to__2_3_5,
130
+ from_version="2.3.4",
131
+ to_version="2.3.5",
132
+ ),
127
133
  ]
128
134
 
129
135
  @model_validator(mode="after")
@@ -3,7 +3,7 @@ import subprocess
3
3
  import platform
4
4
  import sys
5
5
 
6
- VERSION = "2.3.4"
6
+ VERSION = "2.3.5"
7
7
  SUPPORTED_VERSIONS = [VERSION]
8
8
 
9
9