grid-data-models 2.3.8__tar.gz → 2.4.0__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 (164) hide show
  1. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/PKG-INFO +13 -5
  2. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/README.md +8 -1
  3. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/pyproject.toml +4 -3
  4. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/cli/reducer.py +2 -2
  5. grid_data_models-2.4.0/src/gdm/distribution/__init__.py +44 -0
  6. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/inspector.py +1 -1
  7. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/relationships.py +1 -1
  8. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/topology.py +1 -1
  9. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/knowledge/documentation.py +2 -3
  10. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/operations/merger.py +1 -1
  11. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/operations/splitter.py +2 -2
  12. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/server.py +2 -2
  13. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/utilities/subsystem.py +2 -2
  14. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/utilities/timeseries.py +1 -1
  15. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/validation/auto_fixer.py +1 -1
  16. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/validation/diagnostics.py +1 -1
  17. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/quantities.py +6 -0
  18. grid_data_models-2.4.0/src/gdm/systems/__init__.py +1 -0
  19. grid_data_models-2.4.0/src/gdm/systems/distribution/__init__.py +13 -0
  20. grid_data_models-2.4.0/src/gdm/systems/distribution/common/__init__.py +4 -0
  21. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/common/limitset.py +1 -1
  22. grid_data_models-2.4.0/src/gdm/systems/distribution/components/__init__.py +31 -0
  23. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_branch_base.py +18 -7
  24. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_component_base.py +2 -2
  25. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_switch_base.py +3 -1
  26. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_transformer_base.py +4 -4
  27. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_battery.py +9 -9
  28. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_bus.py +5 -5
  29. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_capacitor.py +11 -9
  30. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_load.py +7 -7
  31. grid_data_models-2.4.0/src/gdm/systems/distribution/components/distribution_reactor.py +48 -0
  32. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_regulator.py +9 -7
  33. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_solar.py +11 -9
  34. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_substation.py +1 -1
  35. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_transformer.py +6 -6
  36. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_vsource.py +6 -6
  37. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/geometry_branch.py +8 -8
  38. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/geometry_switch.py +9 -9
  39. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_branch.py +8 -6
  40. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_fuse.py +10 -6
  41. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_recloser.py +9 -7
  42. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_switch.py +8 -6
  43. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/sequence_impedance_branch.py +8 -6
  44. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/__init__.py +8 -6
  45. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_capacitor_controller.py +3 -1
  46. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_inverter_controller.py +4 -4
  47. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_recloser_controller.py +4 -2
  48. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_regulator_controller.py +2 -2
  49. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/distribution_graph.py +1 -1
  50. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/distribution_system.py +166 -23
  51. grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/__init__.py +57 -0
  52. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/base/matrix_impedance_branch_equipment_base.py +1 -1
  53. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/battery_equipment.py +1 -1
  54. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/capacitor_equipment.py +2 -2
  55. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/concentric_cable_equipment.py +1 -1
  56. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/distribution_transformer_equipment.py +2 -2
  57. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/geometry_branch_equipment.py +4 -4
  58. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/inverter_equipment.py +1 -1
  59. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/load_equipment.py +2 -2
  60. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_branch_equipment.py +2 -2
  61. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_fuse_equipment.py +3 -3
  62. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_recloser_equipment.py +2 -2
  63. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_switch_equipment.py +3 -3
  64. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/phase_voltagesource_equipment.py +1 -1
  65. grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/power_transformer_equipment.py +82 -0
  66. grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/reactor_equipment.py +38 -0
  67. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/solar_equipment.py +2 -2
  68. grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/station_switch_equipment.py +38 -0
  69. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/voltagesource_equipment.py +3 -1
  70. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/market/__init__.py +1 -1
  71. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/market/aggregator.py +5 -5
  72. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/market/tariff.py +1 -1
  73. grid_data_models-2.4.0/src/gdm/systems/distribution/model_reduction/__init__.py +4 -0
  74. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/model_reduction/reducer.py +325 -20
  75. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/sys_functools.py +11 -7
  76. grid_data_models-2.4.0/src/gdm/systems/distribution/upgrade_handler/from__2_3_8__to__2_4_0.py +9 -0
  77. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/upgrade_handler.py +21 -15
  78. grid_data_models-2.4.0/src/gdm/systems/distribution/utils/__init__.py +5 -0
  79. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/utils/aggregate_components.py +5 -5
  80. grid_data_models-2.4.0/src/gdm/systems/substation/__init__.py +167 -0
  81. grid_data_models-2.4.0/src/gdm/systems/substation/automation.py +140 -0
  82. grid_data_models-2.4.0/src/gdm/systems/substation/builder.py +859 -0
  83. grid_data_models-2.4.0/src/gdm/systems/substation/components.py +173 -0
  84. grid_data_models-2.4.0/src/gdm/systems/substation/detailed_reference.py +303 -0
  85. grid_data_models-2.4.0/src/gdm/systems/substation/enums.py +109 -0
  86. grid_data_models-2.4.0/src/gdm/systems/substation/equipment.py +91 -0
  87. grid_data_models-2.4.0/src/gdm/systems/substation/metering.py +90 -0
  88. grid_data_models-2.4.0/src/gdm/systems/substation/models.py +166 -0
  89. grid_data_models-2.4.0/src/gdm/systems/substation/protection.py +138 -0
  90. grid_data_models-2.4.0/src/gdm/systems/substation/reference_designs.py +1097 -0
  91. grid_data_models-2.4.0/src/gdm/systems/substation/renewable.py +251 -0
  92. grid_data_models-2.4.0/src/gdm/systems/substation/substation_system.py +891 -0
  93. grid_data_models-2.4.0/src/gdm/systems/substation/topology.py +167 -0
  94. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/tracked_changes.py +1 -1
  95. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/version.py +1 -1
  96. grid_data_models-2.3.8/src/gdm/dataset/cost_model.py +0 -54
  97. grid_data_models-2.3.8/src/gdm/dataset/dataset_system.py +0 -76
  98. grid_data_models-2.3.8/src/gdm/distribution/__init__.py +0 -13
  99. grid_data_models-2.3.8/src/gdm/distribution/common/__init__.py +0 -4
  100. grid_data_models-2.3.8/src/gdm/distribution/components/__init__.py +0 -24
  101. grid_data_models-2.3.8/src/gdm/distribution/equipment/__init__.py +0 -46
  102. grid_data_models-2.3.8/src/gdm/distribution/model_reduction/__init__.py +0 -3
  103. grid_data_models-2.3.8/src/gdm/distribution/upgrade_handler/__init__.py +0 -0
  104. grid_data_models-2.3.8/src/gdm/distribution/utils/__init__.py +0 -5
  105. grid_data_models-2.3.8/src/gdm/structural/__init__.py +0 -22
  106. grid_data_models-2.3.8/src/gdm/structural/components/__init__.py +0 -0
  107. grid_data_models-2.3.8/src/gdm/structural/components/base.py +0 -23
  108. grid_data_models-2.3.8/src/gdm/structural/components/building.py +0 -25
  109. grid_data_models-2.3.8/src/gdm/structural/components/overhead_line_segment.py +0 -59
  110. grid_data_models-2.3.8/src/gdm/structural/components/pole.py +0 -187
  111. grid_data_models-2.3.8/src/gdm/structural/components/pvsystem.py +0 -29
  112. grid_data_models-2.3.8/src/gdm/structural/components/transformer.py +0 -81
  113. grid_data_models-2.3.8/src/gdm/structural/components/underground_cable.py +0 -41
  114. grid_data_models-2.3.8/src/gdm/structural/components/underground_junction.py +0 -29
  115. grid_data_models-2.3.8/src/gdm/structural/structural_system.py +0 -11
  116. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/.gitignore +0 -0
  117. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/LICENSE.txt +0 -0
  118. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/__init__.py +0 -0
  119. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/cli/cli.py +0 -0
  120. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/constants.py +0 -0
  121. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/exceptions.py +0 -0
  122. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/hashing_utils.py +0 -0
  123. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/__init__.py +0 -0
  124. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/exceptions.py +0 -0
  125. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/__init__.py +0 -0
  126. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/knowledge/__init__.py +0 -0
  127. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/operations/__init__.py +0 -0
  128. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/schemas.py +0 -0
  129. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/utilities/__init__.py +0 -0
  130. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/validation/__init__.py +0 -0
  131. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/validation/suggestions.py +0 -0
  132. {grid_data_models-2.3.8 → grid_data_models-2.4.0}/src/gdm/mcp/version.py +0 -0
  133. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/catalog_system.py +0 -0
  134. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/common/curve.py +0 -0
  135. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/common/sequence_pair.py +0 -0
  136. {grid_data_models-2.3.8/src/gdm/dataset → grid_data_models-2.4.0/src/gdm/systems/distribution/components/base}/__init__.py +0 -0
  137. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_feeder.py +0 -0
  138. {grid_data_models-2.3.8/src/gdm/distribution/components → grid_data_models-2.4.0/src/gdm/systems/distribution/controllers}/base/__init__.py +0 -0
  139. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/base/capacitor_controller_base.py +0 -0
  140. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/base/inverter_controller_base.py +0 -0
  141. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_switch_controller.py +0 -0
  142. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/enums.py +0 -0
  143. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/bare_conductor_equipment.py +0 -0
  144. {grid_data_models-2.3.8/src/gdm/distribution/controllers → grid_data_models-2.4.0/src/gdm/systems/distribution/equipment}/base/__init__.py +0 -0
  145. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/phase_capacitor_equipment.py +0 -0
  146. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/phase_load_equipment.py +0 -0
  147. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/recloser_controller_equipment.py +0 -0
  148. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/sequence_impedance_branch_equipment.py +0 -0
  149. {grid_data_models-2.3.8/src/gdm/distribution/equipment/base → grid_data_models-2.4.0/src/gdm/systems/distribution/upgrade_handler}/__init__.py +0 -0
  150. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_0_1__to__2_1_2.py +0 -0
  151. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_1_2__to__2_1_3.py +0 -0
  152. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_1_3__to__2_1_4.py +0 -0
  153. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_1_4__to__2_1_5.py +0 -0
  154. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_1_5__to__2_2_0.py +0 -0
  155. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_2_0__to__2_2_1.py +0 -0
  156. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_2_1__to__2_3_0.py +0 -0
  157. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_0__to__2_3_1.py +0 -0
  158. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_1__to__2_3_2.py +0 -0
  159. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_2__to__2_3_3.py +0 -0
  160. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_3__to__2_3_4.py +0 -0
  161. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_4__to__2_3_5.py +0 -0
  162. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_5__to__2_3_6.py +0 -0
  163. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_6__to__2_3_7.py +0 -0
  164. {grid_data_models-2.3.8/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_7__to__2_3_8.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: grid-data-models
3
- Version: 2.3.8
3
+ Version: 2.4.0
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
@@ -10,12 +10,13 @@ License-File: LICENSE.txt
10
10
  Classifier: License :: OSI Approved :: BSD License
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
13
14
  Requires-Python: >=3.11
14
15
  Requires-Dist: geopandas
15
16
  Requires-Dist: importlib-metadata
16
17
  Requires-Dist: infrasys==1.2.1
17
18
  Requires-Dist: networkx
18
- Requires-Dist: pandas~=3.0.5
19
+ Requires-Dist: pandas~=3.0.6
19
20
  Requires-Dist: plotly
20
21
  Requires-Dist: pydantic
21
22
  Requires-Dist: semver
@@ -30,23 +31,30 @@ Requires-Dist: pytest-doctestplus; extra == 'dev'
30
31
  Requires-Dist: ruff; extra == 'dev'
31
32
  Provides-Extra: doc
32
33
  Requires-Dist: autodoc-pydantic[erdantic]; extra == 'doc'
33
- Requires-Dist: jupyter-book<3,>=2.1.6; extra == 'doc'
34
+ Requires-Dist: jupyter-book<3,>=2.1.7; extra == 'doc'
34
35
  Requires-Dist: myst-parser; extra == 'doc'
35
36
  Requires-Dist: pydata-sphinx-theme; extra == 'doc'
36
37
  Requires-Dist: sphinx; extra == 'doc'
37
38
  Requires-Dist: sphinxcontrib-mermaid; extra == 'doc'
38
39
  Provides-Extra: mcp
39
- Requires-Dist: mcp>=2.1.0; extra == 'mcp'
40
+ Requires-Dist: mcp>=2.2.0; extra == 'mcp'
40
41
  Description-Content-Type: text/markdown
41
42
 
42
43
 
43
44
 
44
- [![Upload to PyPi](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [![Pytest](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [![deploy-book](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) • ![PyPI - Downloads](https://img.shields.io/pypi/dm/grid-data-models) • [![codecov](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models/branch/main/graph/badge.svg?token=K0X11EXOX8)](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [![CodeFactor](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models/badge)](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) • ![MCP Server](https://img.shields.io/badge/MCP_Server-enabled-brightgreen) • ![MCP Tools](https://img.shields.io/badge/MCP_Tools-20-blue) • [![GitHub issues](https://img.shields.io/github/issues/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [![License](https://img.shields.io/github/license/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [![PyPI Downloads](https://static.pepy.tech/personalized-badge/grid-data-models?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/grid-data-models) • [![Generate LinkedIn Post Draft](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml)
45
+ [![Upload to PyPi](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [![Pytest](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [![deploy-book](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml/badge.svg?branch=main)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) • ![PyPI - Downloads](https://img.shields.io/pypi/dm/grid-data-models) • [![codecov](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models/branch/main/graph/badge.svg?token=K0X11EXOX8)](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [![CodeFactor](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models/badge)](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) • ![MCP Server](https://img.shields.io/badge/MCP_Server-enabled-brightgreen) • ![MCP Tools](https://img.shields.io/badge/MCP_Tools-20-blue) • [![GitHub issues](https://img.shields.io/github/issues/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [![License](https://img.shields.io/github/license/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [![PyPI Downloads](https://static.pepy.tech/personalized-badge/grid-data-models?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/grid-data-models) • [![Generate LinkedIn Post Draft](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml)
45
46
 
46
47
  # Grid Data Models (GDM)
47
48
 
48
49
  GDM is a python package containing data models for power system assets and datasets. This package is actively being developed at [National Renewable Energy Laboratory (NREL)](https://www.nrel.gov/).
49
50
 
51
+ GDM models distribution networks and utility substations as complementary
52
+ systems. `DistributionSystem` represents feeder and network connectivity;
53
+ `SubstationSystem` represents station topology, primary equipment, protection,
54
+ metering, and automation. They can remain separate or be joined at explicit
55
+ feeder boundaries. See the [system model guide](docs/systems/index.md) and the
56
+ [guide to connecting systems](docs/systems/connecting-systems.md).
57
+
50
58
  ## Installation
51
59
 
52
60
  You can install the latest version of `grid-data-models` from PyPi.
@@ -1,11 +1,18 @@
1
1
 
2
2
 
3
- [![Upload to PyPi](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [![Pytest](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [![deploy-book](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) • ![PyPI - Downloads](https://img.shields.io/pypi/dm/grid-data-models) • [![codecov](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models/branch/main/graph/badge.svg?token=K0X11EXOX8)](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [![CodeFactor](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models/badge)](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) • ![MCP Server](https://img.shields.io/badge/MCP_Server-enabled-brightgreen) • ![MCP Tools](https://img.shields.io/badge/MCP_Tools-20-blue) • [![GitHub issues](https://img.shields.io/github/issues/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [![License](https://img.shields.io/github/license/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [![PyPI Downloads](https://static.pepy.tech/personalized-badge/grid-data-models?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/grid-data-models) • [![Generate LinkedIn Post Draft](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml)
3
+ [![Upload to PyPi](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [![Pytest](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [![deploy-book](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml/badge.svg?branch=main)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) • ![PyPI - Downloads](https://img.shields.io/pypi/dm/grid-data-models) • [![codecov](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models/branch/main/graph/badge.svg?token=K0X11EXOX8)](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [![CodeFactor](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models/badge)](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) • ![MCP Server](https://img.shields.io/badge/MCP_Server-enabled-brightgreen) • ![MCP Tools](https://img.shields.io/badge/MCP_Tools-20-blue) • [![GitHub issues](https://img.shields.io/github/issues/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [![License](https://img.shields.io/github/license/NLR-Distribution-Suite/grid-data-models)](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [![PyPI Downloads](https://static.pepy.tech/personalized-badge/grid-data-models?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/grid-data-models) • [![Generate LinkedIn Post Draft](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml/badge.svg)](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml)
4
4
 
5
5
  # Grid Data Models (GDM)
6
6
 
7
7
  GDM is a python package containing data models for power system assets and datasets. This package is actively being developed at [National Renewable Energy Laboratory (NREL)](https://www.nrel.gov/).
8
8
 
9
+ GDM models distribution networks and utility substations as complementary
10
+ systems. `DistributionSystem` represents feeder and network connectivity;
11
+ `SubstationSystem` represents station topology, primary equipment, protection,
12
+ metering, and automation. They can remain separate or be joined at explicit
13
+ feeder boundaries. See the [system model guide](docs/systems/index.md) and the
14
+ [guide to connecting systems](docs/systems/connecting-systems.md).
15
+
9
16
  ## Installation
10
17
 
11
18
  You can install the latest version of `grid-data-models` from PyPi.
@@ -17,6 +17,7 @@ authors = [
17
17
  ]
18
18
  classifiers = [
19
19
  "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
20
21
  "License :: OSI Approved :: BSD License",
21
22
  "Operating System :: OS Independent",
22
23
  ]
@@ -27,16 +28,16 @@ dependencies = [
27
28
  "infrasys==1.2.1",
28
29
  "importlib_metadata",
29
30
  "typer",
30
- "pandas~=3.0.5",
31
+ "pandas~=3.0.6",
31
32
  "geopandas",
32
33
  "plotly",
33
34
  ]
34
35
 
35
36
  [project.optional-dependencies]
36
- mcp = ["mcp>=2.1.0"]
37
+ mcp = ["mcp>=2.2.0"]
37
38
  dev = ["pre-commit", "pytest", "pytest-cov", "pytest-doctestplus", "pytest-asyncio", "ruff", "docutils"]
38
39
  doc = [
39
- "jupyter-book>=2.1.6,<3",
40
+ "jupyter-book>=2.1.7,<3",
40
41
  "sphinx",
41
42
  "pydata-sphinx-theme",
42
43
  "myst-parser",
@@ -5,8 +5,8 @@ from typing import Annotated
5
5
 
6
6
  import typer
7
7
 
8
- from gdm.distribution.model_reduction.reducer import reduce_to_three_phase_system
9
- from gdm.distribution.distribution_system import DistributionSystem
8
+ from gdm.systems.distribution.model_reduction.reducer import reduce_to_three_phase_system
9
+ from gdm.systems.distribution.distribution_system import DistributionSystem
10
10
  from gdm.exceptions import FolderAlreadyExistsError
11
11
 
12
12
 
@@ -0,0 +1,44 @@
1
+ """Compatibility namespace for the former ``gdm.distribution`` package.
2
+
3
+ The implementation now lives under :mod:`gdm.systems.distribution`. Legacy imports and
4
+ serialized component module paths are mapped to the canonical modules so
5
+ classes are not duplicated during a migration.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import importlib
11
+ import pkgutil
12
+ import sys
13
+ import warnings
14
+
15
+
16
+ _CANONICAL_PACKAGE = "gdm.systems.distribution"
17
+ warnings.warn(
18
+ "gdm.distribution is deprecated and will be removed in a future release; "
19
+ "use gdm.systems.distribution instead.",
20
+ DeprecationWarning,
21
+ stacklevel=2,
22
+ )
23
+ _canonical_package = importlib.import_module(_CANONICAL_PACKAGE)
24
+
25
+ for name, value in vars(_canonical_package).items():
26
+ if not name.startswith("__") or name in {"__version__"}:
27
+ globals()[name] = value
28
+
29
+ _module_names = [
30
+ module_info.name
31
+ for module_info in pkgutil.walk_packages(
32
+ _canonical_package.__path__, prefix=f"{_CANONICAL_PACKAGE}."
33
+ )
34
+ ]
35
+
36
+ for canonical_name in sorted(_module_names, key=lambda name: (name.count("."), name)):
37
+ legacy_name = f"{__name__}{canonical_name[len(_CANONICAL_PACKAGE) :]}"
38
+ module = importlib.import_module(canonical_name)
39
+ sys.modules[legacy_name] = module
40
+
41
+ parent_name, child_name = legacy_name.rsplit(".", 1)
42
+ parent = sys.modules.get(parent_name)
43
+ if parent is not None:
44
+ setattr(parent, child_name, module)
@@ -4,7 +4,7 @@ import contextlib
4
4
  from collections import defaultdict
5
5
  from uuid import UUID
6
6
 
7
- from gdm.distribution import DistributionSystem
7
+ from gdm.systems.distribution import DistributionSystem
8
8
 
9
9
  from gdm.mcp.exceptions import ComponentNotFoundError
10
10
  from gdm.mcp.schemas import (
@@ -3,7 +3,7 @@
3
3
  import contextlib
4
4
  from uuid import UUID
5
5
 
6
- from gdm.distribution import DistributionSystem
6
+ from gdm.systems.distribution import DistributionSystem
7
7
 
8
8
  from gdm.mcp.schemas import ComponentInfo
9
9
 
@@ -3,7 +3,7 @@
3
3
  from typing import Optional
4
4
 
5
5
  import networkx as nx
6
- from gdm.distribution import DistributionSystem
6
+ from gdm.systems.distribution import DistributionSystem
7
7
  from gdm.exceptions import MultipleOrEmptyVsourceFound
8
8
 
9
9
  from gdm.mcp.exceptions import TopologyError
@@ -6,7 +6,7 @@ from pathlib import Path
6
6
  from typing import List, Optional, Dict, Any
7
7
  import inspect
8
8
 
9
- from gdm.distribution.components import (
9
+ from gdm.systems.distribution.components import (
10
10
  DistributionBus,
11
11
  DistributionSubstation,
12
12
  DistributionFeeder,
@@ -56,11 +56,10 @@ def find_gdm_repo() -> Optional[Path]:
56
56
  possible_paths = [
57
57
  Path.cwd().parent / "grid-data-models", # Sibling directory
58
58
  Path.cwd() / ".." / "grid-data-models", # Relative sibling
59
- Path(__file__).parent.parent.parent.parent.parent / "grid-data-models", # From this file
59
+ Path(__file__).resolve().parents[4], # This checkout's repository root
60
60
  Path.home() / "Documents" / "GitHub" / "grid-data-models",
61
61
  Path.home() / "Documents" / "grid-data-models",
62
62
  Path.home() / "grid-data-models",
63
- Path("/Users/alatif/Documents/GitHub/grid-data-models"), # Known location
64
63
  ]
65
64
 
66
65
  # Also check GDM_REPO_PATH environment variable
@@ -3,7 +3,7 @@
3
3
  from collections import defaultdict
4
4
  from uuid import UUID
5
5
 
6
- from gdm.distribution import DistributionSystem
6
+ from gdm.systems.distribution import DistributionSystem
7
7
 
8
8
  from gdm.mcp.exceptions import MergeConflictError
9
9
  from gdm.mcp.schemas import MergeConflict, MergeReport
@@ -3,8 +3,8 @@
3
3
  from collections import defaultdict
4
4
  from typing import Optional
5
5
 
6
- from gdm.distribution import DistributionSystem
7
- from gdm.distribution.components import DistributionBus
6
+ from gdm.systems.distribution import DistributionSystem
7
+ from gdm.systems.distribution.components import DistributionBus
8
8
 
9
9
  from gdm.mcp.schemas import SplitReport
10
10
 
@@ -12,7 +12,7 @@ import sqlite3
12
12
  from typing import Annotated, Any
13
13
 
14
14
  import typer
15
- from gdm.distribution import DistributionSystem
15
+ from gdm.systems.distribution import DistributionSystem
16
16
  from mcp.server import Server, ServerRequestContext
17
17
  from mcp.server.stdio import stdio_server
18
18
  from mcp.types import CallToolResult, ListToolsResult, TextContent, Tool
@@ -42,7 +42,7 @@ from gdm.mcp.knowledge.documentation import (
42
42
  list_available_components as list_components_doc,
43
43
  get_component_fields as get_fields_doc,
44
44
  )
45
- from gdm.distribution.model_reduction.reducer import (
45
+ from gdm.systems.distribution.model_reduction.reducer import (
46
46
  reduce_to_primary_system,
47
47
  reduce_to_three_phase_system,
48
48
  )
@@ -1,7 +1,7 @@
1
1
  """Subsystem extraction utilities."""
2
2
 
3
- from gdm.distribution import DistributionSystem
4
- from gdm.distribution.components import DistributionBus
3
+ from gdm.systems.distribution import DistributionSystem
4
+ from gdm.systems.distribution.components import DistributionBus
5
5
  from infrasys import SingleTimeSeries
6
6
 
7
7
 
@@ -4,7 +4,7 @@ from collections import defaultdict
4
4
  from typing import Optional
5
5
  from uuid import UUID
6
6
 
7
- from gdm.distribution import DistributionSystem
7
+ from gdm.systems.distribution import DistributionSystem
8
8
 
9
9
  from gdm.mcp.schemas import TimeSeriesInfo
10
10
 
@@ -4,7 +4,7 @@ import copy
4
4
  from datetime import datetime
5
5
  from typing import Any
6
6
 
7
- from gdm.distribution import DistributionSystem
7
+ from gdm.systems.distribution import DistributionSystem
8
8
 
9
9
  from gdm.mcp.schemas import (
10
10
  ChangeLogEntry,
@@ -5,7 +5,7 @@ import traceback
5
5
  from typing import Any
6
6
  from uuid import UUID
7
7
 
8
- from gdm.distribution import DistributionSystem
8
+ from gdm.systems.distribution import DistributionSystem
9
9
  from pydantic import ValidationError as PydanticValidationError
10
10
 
11
11
  from gdm.mcp.schemas import (
@@ -84,3 +84,9 @@ class Irradiance(BaseQuantity):
84
84
  """Quantity representing irradiance in kilowatt per meter**2"""
85
85
 
86
86
  __base_unit__ = "kilowatt/meter**2"
87
+
88
+
89
+ class Frequency(BaseQuantity):
90
+ """Quantity representing frequency."""
91
+
92
+ __base_unit__ = "hertz"
@@ -0,0 +1 @@
1
+ """System model namespaces."""
@@ -0,0 +1,13 @@
1
+ from gdm.version import VERSION
2
+
3
+ __version__ = VERSION
4
+
5
+ # from gdm.tracked_changes import apply_tracked_changes, apply_update_scenario, get_distribution_system_on_date
6
+ from gdm.systems.distribution.model_reduction.reducer import (
7
+ reduce_to_primary_system,
8
+ reduce_to_radial_network,
9
+ reduce_to_three_phase_system,
10
+ )
11
+ from gdm.systems.distribution.distribution_graph import build_graph_from_system
12
+ from gdm.systems.distribution.distribution_system import DistributionSystem
13
+ from gdm.systems.distribution.catalog_system import CatalogSystem
@@ -0,0 +1,4 @@
1
+ from gdm.systems.distribution.common.limitset import ThermalLimitSet, VoltageLimitSet
2
+ from gdm.systems.distribution.common.curve import Curve, TimeCurrentCurve
3
+ from gdm.systems.distribution.common.sequence_pair import SequencePair
4
+ from infrasys import Location
@@ -5,7 +5,7 @@ from infrasys import Component
5
5
  from pydantic import Field
6
6
 
7
7
  from gdm.quantities import Current, Voltage
8
- from gdm.distribution.enums import LimitType
8
+ from gdm.systems.distribution.enums import LimitType
9
9
  from gdm.constants import PINT_SCHEMA
10
10
 
11
11
 
@@ -0,0 +1,31 @@
1
+ from gdm.systems.distribution.components.distribution_battery import DistributionBattery
2
+ from gdm.systems.distribution.components.distribution_bus import DistributionBus
3
+ from gdm.systems.distribution.components.distribution_capacitor import DistributionCapacitor
4
+ from gdm.systems.distribution.components.distribution_load import DistributionLoad
5
+ from gdm.systems.distribution.components.distribution_regulator import DistributionRegulator
6
+ from gdm.systems.distribution.components.distribution_solar import DistributionSolar
7
+ from gdm.systems.distribution.components.distribution_transformer import DistributionTransformer
8
+ from gdm.systems.distribution.components.distribution_vsource import DistributionVoltageSource
9
+ from gdm.systems.distribution.components.geometry_branch import GeometryBranch
10
+ from gdm.systems.distribution.components.geometry_switch import GeometrySwitch
11
+ from gdm.systems.distribution.components.matrix_impedance_branch import MatrixImpedanceBranch
12
+ from gdm.systems.distribution.components.matrix_impedance_fuse import MatrixImpedanceFuse
13
+ from gdm.systems.distribution.components.matrix_impedance_recloser import MatrixImpedanceRecloser
14
+ from gdm.systems.distribution.components.matrix_impedance_switch import MatrixImpedanceSwitch
15
+ from gdm.systems.distribution.components.sequence_impedance_branch import SequenceImpedanceBranch
16
+ from gdm.systems.distribution.components.distribution_reactor import DistributionReactor
17
+ from gdm.systems.distribution.components.distribution_feeder import DistributionFeeder
18
+
19
+ from gdm.systems.distribution.components.base.distribution_branch_base import (
20
+ DistributionBranchBase,
21
+ )
22
+ from gdm.systems.distribution.components.base.distribution_component_base import (
23
+ DistributionComponentBase,
24
+ )
25
+ from gdm.systems.distribution.components.base.distribution_switch_base import (
26
+ DistributionSwitchBase,
27
+ )
28
+ from gdm.systems.distribution.components.base.distribution_transformer_base import (
29
+ DistributionTransformerBase,
30
+ )
31
+ from gdm.systems.distribution.components.distribution_substation import DistributionSubstation
@@ -7,9 +7,9 @@ import math
7
7
 
8
8
  from pydantic import model_validator, Field
9
9
 
10
- from gdm.distribution.components.distribution_bus import DistributionBus
11
- from gdm.distribution.enums import Phase
12
- from gdm.distribution.components.base.distribution_component_base import (
10
+ from gdm.systems.distribution.components.distribution_bus import DistributionBus
11
+ from gdm.systems.distribution.enums import Phase, VoltageTypes
12
+ from gdm.systems.distribution.components.base.distribution_component_base import (
13
13
  InServiceDistributionComponentBase,
14
14
  )
15
15
  from gdm.quantities import Distance
@@ -48,14 +48,25 @@ class DistributionBranchBase(InServiceDistributionComponentBase, ABC):
48
48
  )
49
49
  raise ValueError(msg)
50
50
 
51
+ rated_voltage_LN_from = (
52
+ self.buses[0].rated_voltage
53
+ if self.buses[0].voltage_type == VoltageTypes.LINE_TO_GROUND
54
+ else self.buses[0].rated_voltage / math.sqrt(3)
55
+ )
56
+ rated_voltage_LN_to = (
57
+ self.buses[1].rated_voltage
58
+ if self.buses[1].voltage_type == VoltageTypes.LINE_TO_GROUND
59
+ else self.buses[1].rated_voltage / math.sqrt(3)
60
+ )
61
+
51
62
  if not math.isclose(
52
- self.buses[0].rated_voltage.magnitude,
53
- self.buses[1].rated_voltage.magnitude,
63
+ rated_voltage_LN_from.magnitude,
64
+ rated_voltage_LN_to.magnitude,
54
65
  rel_tol=0.001, # 10^-3
55
66
  ):
56
67
  msg = (
57
- f"From bus {self.buses[0].rated_voltage=}"
58
- f"and to bus voltage {self.buses[1].rated_voltage=} rating should be same."
68
+ f"From bus line to ground voltage {rated_voltage_LN_from=}"
69
+ f"and to bus line to ground voltage {rated_voltage_LN_to=} rating should be same."
59
70
  )
60
71
  raise ValueError(msg)
61
72
 
@@ -7,8 +7,8 @@ from abc import ABC
7
7
  from pydantic import Field
8
8
  from infrasys import Component
9
9
 
10
- from gdm.distribution.components.distribution_feeder import DistributionFeeder
11
- from gdm.distribution.components.distribution_substation import DistributionSubstation
10
+ from gdm.systems.distribution.components.distribution_feeder import DistributionFeeder
11
+ from gdm.systems.distribution.components.distribution_substation import DistributionSubstation
12
12
 
13
13
 
14
14
  class DistributionComponentBase(Component, ABC):
@@ -3,7 +3,9 @@ from abc import ABC
3
3
 
4
4
  from pydantic import model_validator, Field
5
5
 
6
- from gdm.distribution.components.base.distribution_branch_base import DistributionBranchBase
6
+ from gdm.systems.distribution.components.base.distribution_branch_base import (
7
+ DistributionBranchBase,
8
+ )
7
9
 
8
10
 
9
11
  class DistributionSwitchBase(DistributionBranchBase, ABC):
@@ -7,12 +7,12 @@ from abc import ABC
7
7
  from infrasys.quantities import Voltage
8
8
  from pydantic import Field, model_validator
9
9
 
10
- from gdm.distribution.enums import Phase, VoltageTypes
11
- from gdm.distribution.components.distribution_bus import DistributionBus
12
- from gdm.distribution.components.base.distribution_component_base import (
10
+ from gdm.systems.distribution.enums import Phase, VoltageTypes
11
+ from gdm.systems.distribution.components.distribution_bus import DistributionBus
12
+ from gdm.systems.distribution.components.base.distribution_component_base import (
13
13
  InServiceDistributionComponentBase,
14
14
  )
15
- from gdm.distribution.equipment.distribution_transformer_equipment import (
15
+ from gdm.systems.distribution.equipment.distribution_transformer_equipment import (
16
16
  DistributionTransformerEquipment,
17
17
  )
18
18
 
@@ -4,24 +4,24 @@ from typing import Annotated
4
4
 
5
5
  from pydantic import Field, model_validator
6
6
 
7
- from gdm.distribution.components.distribution_feeder import DistributionFeeder
8
- from gdm.distribution.equipment.inverter_equipment import InverterEquipment
9
- from gdm.distribution.controllers.distribution_inverter_controller import (
7
+ from gdm.systems.distribution.components.distribution_feeder import DistributionFeeder
8
+ from gdm.systems.distribution.equipment.inverter_equipment import InverterEquipment
9
+ from gdm.systems.distribution.controllers.distribution_inverter_controller import (
10
10
  PeakShavingBaseLoadingControlSetting,
11
11
  VoltVarControlSetting,
12
12
  InverterController,
13
13
  )
14
- from gdm.distribution.components.base.distribution_component_base import (
14
+ from gdm.systems.distribution.components.base.distribution_component_base import (
15
15
  InServiceDistributionComponentBase,
16
16
  )
17
- from gdm.distribution.equipment.battery_equipment import BatteryEquipment
18
- from gdm.distribution.components.distribution_bus import DistributionBus
17
+ from gdm.systems.distribution.equipment.battery_equipment import BatteryEquipment
18
+ from gdm.systems.distribution.components.distribution_bus import DistributionBus
19
19
  from gdm.quantities import Voltage, ActivePower, ReactivePower
20
- from gdm.distribution.components.distribution_substation import (
20
+ from gdm.systems.distribution.components.distribution_substation import (
21
21
  DistributionSubstation,
22
22
  )
23
- from gdm.distribution.enums import ControllerSupport
24
- from gdm.distribution.enums import Phase
23
+ from gdm.systems.distribution.enums import ControllerSupport
24
+ from gdm.systems.distribution.enums import Phase
25
25
 
26
26
 
27
27
  class DistributionBattery(InServiceDistributionComponentBase):
@@ -3,13 +3,13 @@ from typing import Annotated, Optional
3
3
  from infrasys import Location
4
4
  from pydantic import Field
5
5
 
6
- from gdm.distribution.enums import LimitType, Phase, VoltageTypes
7
- from gdm.distribution.components.base.distribution_component_base import (
6
+ from gdm.systems.distribution.enums import LimitType, Phase, VoltageTypes
7
+ from gdm.systems.distribution.components.base.distribution_component_base import (
8
8
  InServiceDistributionComponentBase,
9
9
  )
10
- from gdm.distribution.components.distribution_feeder import DistributionFeeder
11
- from gdm.distribution.components.distribution_substation import DistributionSubstation
12
- from gdm.distribution.common.limitset import VoltageLimitSet
10
+ from gdm.systems.distribution.components.distribution_feeder import DistributionFeeder
11
+ from gdm.systems.distribution.components.distribution_substation import DistributionSubstation
12
+ from gdm.systems.distribution.common.limitset import VoltageLimitSet
13
13
  from gdm.quantities import Voltage
14
14
  from gdm.constants import PINT_SCHEMA
15
15
 
@@ -5,20 +5,22 @@ from typing import Annotated
5
5
 
6
6
  from pydantic import Field, computed_field, model_validator
7
7
 
8
- from gdm.distribution.components.distribution_bus import DistributionBus
9
- from gdm.distribution.equipment.capacitor_equipment import CapacitorEquipment
10
- from gdm.distribution.components.base.distribution_component_base import (
8
+ from gdm.systems.distribution.components.distribution_bus import DistributionBus
9
+ from gdm.systems.distribution.equipment.capacitor_equipment import CapacitorEquipment
10
+ from gdm.systems.distribution.components.base.distribution_component_base import (
11
11
  InServiceDistributionComponentBase,
12
12
  )
13
- from gdm.distribution.components.distribution_feeder import DistributionFeeder
14
- from gdm.distribution.components.distribution_substation import DistributionSubstation
15
- from gdm.distribution.equipment.phase_capacitor_equipment import PhaseCapacitorEquipment
13
+ from gdm.systems.distribution.components.distribution_feeder import DistributionFeeder
14
+ from gdm.systems.distribution.components.distribution_substation import DistributionSubstation
15
+ from gdm.systems.distribution.equipment.phase_capacitor_equipment import PhaseCapacitorEquipment
16
16
  from gdm.quantities import Voltage
17
- from gdm.distribution.enums import Phase
18
- from gdm.distribution.controllers.distribution_capacitor_controller import (
17
+ from gdm.systems.distribution.enums import Phase
18
+ from gdm.systems.distribution.controllers.distribution_capacitor_controller import (
19
19
  VoltageCapacitorController,
20
20
  )
21
- from gdm.distribution.controllers.base.capacitor_controller_base import CapacitorControllerBase
21
+ from gdm.systems.distribution.controllers.base.capacitor_controller_base import (
22
+ CapacitorControllerBase,
23
+ )
22
24
 
23
25
 
24
26
  class DistributionCapacitor(InServiceDistributionComponentBase):
@@ -5,18 +5,18 @@ from typing import Annotated, Self
5
5
 
6
6
  from pydantic import model_validator, Field
7
7
 
8
- from gdm.distribution.enums import Phase
9
- from gdm.distribution.components.distribution_bus import DistributionBus
10
- from gdm.distribution.components.base.distribution_component_base import (
8
+ from gdm.systems.distribution.enums import Phase
9
+ from gdm.systems.distribution.components.distribution_bus import DistributionBus
10
+ from gdm.systems.distribution.components.base.distribution_component_base import (
11
11
  InServiceDistributionComponentBase,
12
12
  )
13
- from gdm.distribution.components.distribution_feeder import DistributionFeeder
14
- from gdm.distribution.components.distribution_substation import (
13
+ from gdm.systems.distribution.components.distribution_feeder import DistributionFeeder
14
+ from gdm.systems.distribution.components.distribution_substation import (
15
15
  DistributionSubstation,
16
16
  )
17
- from gdm.distribution.equipment.phase_load_equipment import PhaseLoadEquipment
17
+ from gdm.systems.distribution.equipment.phase_load_equipment import PhaseLoadEquipment
18
18
  from gdm.quantities import Voltage
19
- from gdm.distribution.equipment.load_equipment import LoadEquipment
19
+ from gdm.systems.distribution.equipment.load_equipment import LoadEquipment
20
20
 
21
21
 
22
22
  class DistributionLoad(InServiceDistributionComponentBase):