grid-data-models 2.3.7__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.
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/PKG-INFO +15 -7
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/README.md +8 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/pyproject.toml +5 -4
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/cli/reducer.py +2 -2
- grid_data_models-2.4.0/src/gdm/distribution/__init__.py +44 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/inspector.py +1 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/relationships.py +1 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/topology.py +1 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/knowledge/documentation.py +2 -3
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/operations/merger.py +1 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/operations/splitter.py +2 -2
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/server.py +49 -33
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/utilities/subsystem.py +2 -2
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/utilities/timeseries.py +1 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/validation/auto_fixer.py +1 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/validation/diagnostics.py +1 -1
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/quantities.py +6 -0
- grid_data_models-2.4.0/src/gdm/systems/__init__.py +1 -0
- grid_data_models-2.4.0/src/gdm/systems/distribution/__init__.py +13 -0
- grid_data_models-2.4.0/src/gdm/systems/distribution/common/__init__.py +4 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/common/limitset.py +1 -1
- grid_data_models-2.4.0/src/gdm/systems/distribution/components/__init__.py +31 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_branch_base.py +18 -7
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_component_base.py +2 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_switch_base.py +3 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/base/distribution_transformer_base.py +4 -4
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_battery.py +9 -9
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_bus.py +5 -5
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_capacitor.py +11 -9
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_load.py +7 -7
- grid_data_models-2.4.0/src/gdm/systems/distribution/components/distribution_reactor.py +48 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_regulator.py +9 -7
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_solar.py +11 -9
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_substation.py +1 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_transformer.py +6 -6
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_vsource.py +6 -6
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/geometry_branch.py +8 -8
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/geometry_switch.py +9 -9
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_branch.py +8 -6
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_fuse.py +10 -6
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_recloser.py +9 -7
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/matrix_impedance_switch.py +8 -6
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/sequence_impedance_branch.py +8 -6
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/__init__.py +8 -6
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_capacitor_controller.py +3 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_inverter_controller.py +4 -4
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_recloser_controller.py +4 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_regulator_controller.py +2 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/distribution_graph.py +1 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/distribution_system.py +195 -45
- grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/__init__.py +57 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/base/matrix_impedance_branch_equipment_base.py +1 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/battery_equipment.py +1 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/capacitor_equipment.py +2 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/concentric_cable_equipment.py +1 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/distribution_transformer_equipment.py +2 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/geometry_branch_equipment.py +4 -4
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/inverter_equipment.py +1 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/load_equipment.py +2 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_branch_equipment.py +2 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_fuse_equipment.py +3 -3
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_recloser_equipment.py +2 -2
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/matrix_impedance_switch_equipment.py +3 -3
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/phase_voltagesource_equipment.py +1 -1
- grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/power_transformer_equipment.py +82 -0
- grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/reactor_equipment.py +38 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/solar_equipment.py +2 -2
- grid_data_models-2.4.0/src/gdm/systems/distribution/equipment/station_switch_equipment.py +38 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/voltagesource_equipment.py +3 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/market/__init__.py +1 -1
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/market/aggregator.py +5 -5
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/market/tariff.py +1 -1
- grid_data_models-2.4.0/src/gdm/systems/distribution/model_reduction/__init__.py +4 -0
- grid_data_models-2.4.0/src/gdm/systems/distribution/model_reduction/reducer.py +713 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/sys_functools.py +156 -79
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/from__2_3_2__to__2_3_3.py +6 -2
- grid_data_models-2.4.0/src/gdm/systems/distribution/upgrade_handler/from__2_3_7__to__2_3_8.py +15 -0
- grid_data_models-2.4.0/src/gdm/systems/distribution/upgrade_handler/from__2_3_8__to__2_4_0.py +9 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/upgrade_handler/upgrade_handler.py +26 -14
- grid_data_models-2.4.0/src/gdm/systems/distribution/utils/__init__.py +5 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/utils/aggregate_components.py +5 -5
- grid_data_models-2.4.0/src/gdm/systems/substation/__init__.py +167 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/automation.py +140 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/builder.py +859 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/components.py +173 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/detailed_reference.py +303 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/enums.py +109 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/equipment.py +91 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/metering.py +90 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/models.py +166 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/protection.py +138 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/reference_designs.py +1097 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/renewable.py +251 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/substation_system.py +891 -0
- grid_data_models-2.4.0/src/gdm/systems/substation/topology.py +167 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/tracked_changes.py +38 -2
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/version.py +1 -1
- grid_data_models-2.3.7/src/gdm/dataset/cost_model.py +0 -54
- grid_data_models-2.3.7/src/gdm/dataset/dataset_system.py +0 -76
- grid_data_models-2.3.7/src/gdm/distribution/__init__.py +0 -12
- grid_data_models-2.3.7/src/gdm/distribution/common/__init__.py +0 -4
- grid_data_models-2.3.7/src/gdm/distribution/components/__init__.py +0 -24
- grid_data_models-2.3.7/src/gdm/distribution/equipment/__init__.py +0 -46
- grid_data_models-2.3.7/src/gdm/distribution/model_reduction/__init__.py +0 -2
- grid_data_models-2.3.7/src/gdm/distribution/model_reduction/reducer.py +0 -176
- grid_data_models-2.3.7/src/gdm/distribution/upgrade_handler/__init__.py +0 -0
- grid_data_models-2.3.7/src/gdm/distribution/utils/__init__.py +0 -5
- grid_data_models-2.3.7/src/gdm/structural/__init__.py +0 -22
- grid_data_models-2.3.7/src/gdm/structural/components/__init__.py +0 -0
- grid_data_models-2.3.7/src/gdm/structural/components/base.py +0 -23
- grid_data_models-2.3.7/src/gdm/structural/components/building.py +0 -25
- grid_data_models-2.3.7/src/gdm/structural/components/overhead_line_segment.py +0 -59
- grid_data_models-2.3.7/src/gdm/structural/components/pole.py +0 -187
- grid_data_models-2.3.7/src/gdm/structural/components/pvsystem.py +0 -29
- grid_data_models-2.3.7/src/gdm/structural/components/transformer.py +0 -81
- grid_data_models-2.3.7/src/gdm/structural/components/underground_cable.py +0 -41
- grid_data_models-2.3.7/src/gdm/structural/components/underground_junction.py +0 -29
- grid_data_models-2.3.7/src/gdm/structural/structural_system.py +0 -11
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/.gitignore +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/LICENSE.txt +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/__init__.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/cli/cli.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/constants.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/exceptions.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/hashing_utils.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/__init__.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/exceptions.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/inspection/__init__.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/knowledge/__init__.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/operations/__init__.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/schemas.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/utilities/__init__.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/validation/__init__.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/validation/suggestions.py +0 -0
- {grid_data_models-2.3.7 → grid_data_models-2.4.0}/src/gdm/mcp/version.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/catalog_system.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/common/curve.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/common/sequence_pair.py +0 -0
- {grid_data_models-2.3.7/src/gdm/dataset → grid_data_models-2.4.0/src/gdm/systems/distribution/components/base}/__init__.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/components/distribution_feeder.py +0 -0
- {grid_data_models-2.3.7/src/gdm/distribution/components → grid_data_models-2.4.0/src/gdm/systems/distribution/controllers}/base/__init__.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/base/capacitor_controller_base.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/base/inverter_controller_base.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/controllers/distribution_switch_controller.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/enums.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/bare_conductor_equipment.py +0 -0
- {grid_data_models-2.3.7/src/gdm/distribution/controllers → grid_data_models-2.4.0/src/gdm/systems/distribution/equipment}/base/__init__.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/phase_capacitor_equipment.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/phase_load_equipment.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/recloser_controller_equipment.py +0 -0
- {grid_data_models-2.3.7/src/gdm → grid_data_models-2.4.0/src/gdm/systems}/distribution/equipment/sequence_impedance_branch_equipment.py +0 -0
- {grid_data_models-2.3.7/src/gdm/distribution/equipment/base → grid_data_models-2.4.0/src/gdm/systems/distribution/upgrade_handler}/__init__.py +0 -0
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
- {grid_data_models-2.3.7/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
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: grid-data-models
|
|
3
|
-
Version: 2.
|
|
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
|
-
Requires-Dist: infrasys
|
|
17
|
+
Requires-Dist: infrasys==1.2.1
|
|
17
18
|
Requires-Dist: networkx
|
|
18
|
-
Requires-Dist: pandas~=3.0.
|
|
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.
|
|
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>=
|
|
40
|
+
Requires-Dist: mcp>=2.2.0; extra == 'mcp'
|
|
40
41
|
Description-Content-Type: text/markdown
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
|
|
44
|
-
[](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) •  • [](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) •  •  • [](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [](https://pepy.tech/projects/grid-data-models) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml)
|
|
45
|
+
[](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) •  • [](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) •  •  • [](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [](https://pepy.tech/projects/grid-data-models) • [](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
|
-
[](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) •  • [](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) •  •  • [](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [](https://pepy.tech/projects/grid-data-models) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/linkedin_draft.yml)
|
|
3
|
+
[](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/publish_to_pypi.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/pull_request_tests.yml) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/actions/workflows/deploy.yml) •  • [](https://codecov.io/github/NLR-Distribution-Suite/grid-data-models) • [](https://www.codefactor.io/repository/github/nlr-distribution-suite/grid-data-models) •  •  • [](https://github.com/NLR-Distribution-Suite/grid-data-models/issues) • [](https://github.com/NLR-Distribution-Suite/grid-data-models/blob/main/LICENSE.txt) • [](https://pepy.tech/projects/grid-data-models) • [](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
|
]
|
|
@@ -24,19 +25,19 @@ dependencies = [
|
|
|
24
25
|
"semver",
|
|
25
26
|
"networkx",
|
|
26
27
|
"pydantic",
|
|
27
|
-
"infrasys
|
|
28
|
+
"infrasys==1.2.1",
|
|
28
29
|
"importlib_metadata",
|
|
29
30
|
"typer",
|
|
30
|
-
"pandas~=3.0.
|
|
31
|
+
"pandas~=3.0.6",
|
|
31
32
|
"geopandas",
|
|
32
33
|
"plotly",
|
|
33
34
|
]
|
|
34
35
|
|
|
35
36
|
[project.optional-dependencies]
|
|
36
|
-
mcp = ["mcp>=
|
|
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.
|
|
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
|
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__).
|
|
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,10 +12,10 @@ import sqlite3
|
|
|
12
12
|
from typing import Annotated, Any
|
|
13
13
|
|
|
14
14
|
import typer
|
|
15
|
-
from gdm.distribution import DistributionSystem
|
|
16
|
-
from mcp.server import Server
|
|
15
|
+
from gdm.systems.distribution import DistributionSystem
|
|
16
|
+
from mcp.server import Server, ServerRequestContext
|
|
17
17
|
from mcp.server.stdio import stdio_server
|
|
18
|
-
from mcp.types import TextContent, Tool
|
|
18
|
+
from mcp.types import CallToolResult, ListToolsResult, TextContent, Tool
|
|
19
19
|
|
|
20
20
|
from gdm.mcp import __version__
|
|
21
21
|
from gdm.mcp.exceptions import GDMMCPException
|
|
@@ -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
|
)
|
|
@@ -51,9 +51,6 @@ from gdm.distribution.model_reduction.reducer import (
|
|
|
51
51
|
logging.basicConfig(level=logging.INFO)
|
|
52
52
|
logger = logging.getLogger("gdm_mcp")
|
|
53
53
|
|
|
54
|
-
# Create MCP server instance
|
|
55
|
-
app = Server("grid-data-models-mcp")
|
|
56
|
-
|
|
57
54
|
# Runtime toggle for serving tool calls. Control tools remain available.
|
|
58
55
|
_TOOL_CALLS_ENABLED = True
|
|
59
56
|
_CONTROL_TOOLS = {"set_tool_calls_enabled", "get_tool_calls_enabled"}
|
|
@@ -185,10 +182,9 @@ def _split_tool_input_schema() -> dict[str, Any]:
|
|
|
185
182
|
}
|
|
186
183
|
|
|
187
184
|
|
|
188
|
-
|
|
189
|
-
async def list_tools() -> list[Tool]:
|
|
185
|
+
async def list_tools(ctx: ServerRequestContext, params=None) -> ListToolsResult:
|
|
190
186
|
"""List all available MCP tools."""
|
|
191
|
-
|
|
187
|
+
tools = [
|
|
192
188
|
# Validation tools
|
|
193
189
|
Tool(
|
|
194
190
|
name="diagnose_system",
|
|
@@ -686,6 +682,7 @@ async def list_tools() -> list[Tool]:
|
|
|
686
682
|
},
|
|
687
683
|
),
|
|
688
684
|
]
|
|
685
|
+
return ListToolsResult(tools=tools)
|
|
689
686
|
|
|
690
687
|
|
|
691
688
|
# Tool dispatch map
|
|
@@ -717,27 +714,30 @@ _TOOL_HANDLERS: dict[str, Any] = {
|
|
|
717
714
|
}
|
|
718
715
|
|
|
719
716
|
|
|
720
|
-
|
|
721
|
-
async def call_tool(name: str, arguments: Any) -> list[TextContent]:
|
|
717
|
+
async def call_tool(ctx: ServerRequestContext, params: Any) -> CallToolResult:
|
|
722
718
|
"""Handle tool calls from MCP clients."""
|
|
719
|
+
name = params.name
|
|
720
|
+
arguments = params.arguments or {}
|
|
723
721
|
try:
|
|
724
722
|
logger.info(f"Tool called: {name} with arguments: {arguments}")
|
|
725
723
|
|
|
726
724
|
if not _TOOL_CALLS_ENABLED and name not in _CONTROL_TOOLS:
|
|
727
|
-
return
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
"
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
725
|
+
return CallToolResult(
|
|
726
|
+
content=[
|
|
727
|
+
TextContent(
|
|
728
|
+
type="text",
|
|
729
|
+
text=json.dumps(
|
|
730
|
+
{
|
|
731
|
+
"error": (
|
|
732
|
+
"Tool calls are currently disabled. "
|
|
733
|
+
"Use set_tool_calls_enabled to re-enable."
|
|
734
|
+
)
|
|
735
|
+
},
|
|
736
|
+
indent=2,
|
|
737
|
+
),
|
|
738
|
+
)
|
|
739
|
+
]
|
|
740
|
+
)
|
|
741
741
|
|
|
742
742
|
handler = _TOOL_HANDLERS.get(name)
|
|
743
743
|
if handler is not None:
|
|
@@ -745,18 +745,27 @@ async def call_tool(name: str, arguments: Any) -> list[TextContent]:
|
|
|
745
745
|
else:
|
|
746
746
|
result = {"error": f"Unknown tool: {name}"}
|
|
747
747
|
|
|
748
|
-
return
|
|
748
|
+
return CallToolResult(
|
|
749
|
+
content=[TextContent(type="text", text=json.dumps(result, indent=2, default=str))]
|
|
750
|
+
)
|
|
749
751
|
|
|
750
752
|
except GDMMCPException as e:
|
|
751
753
|
logger.error(f"GDM MCP error in {name}: {str(e)}")
|
|
752
|
-
return
|
|
754
|
+
return CallToolResult(
|
|
755
|
+
content=[TextContent(type="text", text=json.dumps({"error": str(e)}, indent=2))],
|
|
756
|
+
is_error=True,
|
|
757
|
+
)
|
|
753
758
|
except Exception as e:
|
|
754
759
|
logger.error(f"Unexpected error in {name}: {str(e)}", exc_info=True)
|
|
755
|
-
return
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
+
return CallToolResult(
|
|
761
|
+
content=[
|
|
762
|
+
TextContent(
|
|
763
|
+
type="text",
|
|
764
|
+
text=json.dumps({"error": f"Unexpected error: {str(e)}"}, indent=2),
|
|
765
|
+
)
|
|
766
|
+
],
|
|
767
|
+
is_error=True,
|
|
768
|
+
)
|
|
760
769
|
|
|
761
770
|
|
|
762
771
|
# Tool implementations
|
|
@@ -1079,6 +1088,13 @@ def _run_server(
|
|
|
1079
1088
|
# Run the server
|
|
1080
1089
|
import asyncio
|
|
1081
1090
|
|
|
1091
|
+
app = Server(
|
|
1092
|
+
"grid-data-models-mcp",
|
|
1093
|
+
version=__version__,
|
|
1094
|
+
on_list_tools=list_tools,
|
|
1095
|
+
on_call_tool=call_tool,
|
|
1096
|
+
)
|
|
1097
|
+
|
|
1082
1098
|
async def run():
|
|
1083
1099
|
async with stdio_server() as (read_stream, write_stream):
|
|
1084
1100
|
await app.run(read_stream, write_stream, app.create_initialization_options())
|
|
@@ -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
|
|
|
@@ -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 (
|
|
@@ -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,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
|
-
|
|
53
|
-
|
|
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 {
|
|
58
|
-
f"and to bus voltage {
|
|
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
|
|
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
|
|