zepben.ewb 1.0.0b1__py3-none-any.whl

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 (639) hide show
  1. zepben/ewb/__init__.py +601 -0
  2. zepben/ewb/auth/__init__.py +10 -0
  3. zepben/ewb/auth/client/__init__.py +5 -0
  4. zepben/ewb/auth/client/zepben_token_fetcher.py +273 -0
  5. zepben/ewb/auth/common/__init__.py +5 -0
  6. zepben/ewb/auth/common/auth_exception.py +16 -0
  7. zepben/ewb/auth/common/auth_method.py +28 -0
  8. zepben/ewb/auth/common/auth_provider_config.py +96 -0
  9. zepben/ewb/database/__init__.py +4 -0
  10. zepben/ewb/database/paths/__init__.py +4 -0
  11. zepben/ewb/database/paths/database_type.py +34 -0
  12. zepben/ewb/database/paths/ewb_data_file_paths.py +237 -0
  13. zepben/ewb/database/sqlite/__init__.py +4 -0
  14. zepben/ewb/database/sqlite/common/__init__.py +4 -0
  15. zepben/ewb/database/sqlite/common/base_cim_reader.py +212 -0
  16. zepben/ewb/database/sqlite/common/base_cim_writer.py +159 -0
  17. zepben/ewb/database/sqlite/common/base_collection_reader.py +96 -0
  18. zepben/ewb/database/sqlite/common/base_collection_writer.py +73 -0
  19. zepben/ewb/database/sqlite/common/base_database_reader.py +127 -0
  20. zepben/ewb/database/sqlite/common/base_database_tables.py +137 -0
  21. zepben/ewb/database/sqlite/common/base_database_writer.py +195 -0
  22. zepben/ewb/database/sqlite/common/base_entry_writer.py +34 -0
  23. zepben/ewb/database/sqlite/common/base_service_reader.py +50 -0
  24. zepben/ewb/database/sqlite/common/base_service_writer.py +104 -0
  25. zepben/ewb/database/sqlite/common/metadata_collection_reader.py +39 -0
  26. zepben/ewb/database/sqlite/common/metadata_collection_writer.py +38 -0
  27. zepben/ewb/database/sqlite/common/metadata_entry_reader.py +45 -0
  28. zepben/ewb/database/sqlite/common/metadata_entry_writer.py +41 -0
  29. zepben/ewb/database/sqlite/common/reader_exceptions.py +30 -0
  30. zepben/ewb/database/sqlite/customer/__init__.py +4 -0
  31. zepben/ewb/database/sqlite/customer/customer_cim_reader.py +169 -0
  32. zepben/ewb/database/sqlite/customer/customer_cim_writer.py +137 -0
  33. zepben/ewb/database/sqlite/customer/customer_database_reader.py +44 -0
  34. zepben/ewb/database/sqlite/customer/customer_database_tables.py +37 -0
  35. zepben/ewb/database/sqlite/customer/customer_database_writer.py +45 -0
  36. zepben/ewb/database/sqlite/customer/customer_service_reader.py +57 -0
  37. zepben/ewb/database/sqlite/customer/customer_service_writer.py +47 -0
  38. zepben/ewb/database/sqlite/diagram/__init__.py +4 -0
  39. zepben/ewb/database/sqlite/diagram/diagram_cim_reader.py +105 -0
  40. zepben/ewb/database/sqlite/diagram/diagram_cim_writer.py +81 -0
  41. zepben/ewb/database/sqlite/diagram/diagram_database_reader.py +45 -0
  42. zepben/ewb/database/sqlite/diagram/diagram_database_tables.py +29 -0
  43. zepben/ewb/database/sqlite/diagram/diagram_database_writer.py +44 -0
  44. zepben/ewb/database/sqlite/diagram/diagram_service_reader.py +49 -0
  45. zepben/ewb/database/sqlite/diagram/diagram_service_writer.py +41 -0
  46. zepben/ewb/database/sqlite/extensions/__init__.py +4 -0
  47. zepben/ewb/database/sqlite/extensions/prepared_statement.py +112 -0
  48. zepben/ewb/database/sqlite/extensions/result_set.py +153 -0
  49. zepben/ewb/database/sqlite/network/__init__.py +4 -0
  50. zepben/ewb/database/sqlite/network/network_cim_reader.py +3167 -0
  51. zepben/ewb/database/sqlite/network/network_cim_writer.py +2561 -0
  52. zepben/ewb/database/sqlite/network/network_database_reader.py +173 -0
  53. zepben/ewb/database/sqlite/network/network_database_tables.py +242 -0
  54. zepben/ewb/database/sqlite/network/network_database_writer.py +43 -0
  55. zepben/ewb/database/sqlite/network/network_service_reader.py +265 -0
  56. zepben/ewb/database/sqlite/network/network_service_writer.py +209 -0
  57. zepben/ewb/database/sqlite/tables/__init__.py +4 -0
  58. zepben/ewb/database/sqlite/tables/associations/__init__.py +4 -0
  59. zepben/ewb/database/sqlite/tables/associations/loop_substation_relationship.py +17 -0
  60. zepben/ewb/database/sqlite/tables/associations/table_asset_organisation_roles_assets.py +40 -0
  61. zepben/ewb/database/sqlite/tables/associations/table_assets_power_system_resources.py +41 -0
  62. zepben/ewb/database/sqlite/tables/associations/table_battery_units_battery_controls.py +40 -0
  63. zepben/ewb/database/sqlite/tables/associations/table_circuits_substations.py +40 -0
  64. zepben/ewb/database/sqlite/tables/associations/table_circuits_terminals.py +40 -0
  65. zepben/ewb/database/sqlite/tables/associations/table_customer_agreements_pricing_structures.py +40 -0
  66. zepben/ewb/database/sqlite/tables/associations/table_end_devices_end_device_functions.py +40 -0
  67. zepben/ewb/database/sqlite/tables/associations/table_equipment_equipment_containers.py +40 -0
  68. zepben/ewb/database/sqlite/tables/associations/table_equipment_operational_restrictions.py +40 -0
  69. zepben/ewb/database/sqlite/tables/associations/table_equipment_usage_points.py +40 -0
  70. zepben/ewb/database/sqlite/tables/associations/table_loops_substations.py +43 -0
  71. zepben/ewb/database/sqlite/tables/associations/table_pricing_structures_tariffs.py +40 -0
  72. zepben/ewb/database/sqlite/tables/associations/table_protection_relay_functions_protected_switches.py +40 -0
  73. zepben/ewb/database/sqlite/tables/associations/table_protection_relay_functions_sensors.py +40 -0
  74. zepben/ewb/database/sqlite/tables/associations/table_protection_relay_schemes_protection_relay_functions.py +40 -0
  75. zepben/ewb/database/sqlite/tables/associations/table_synchronous_machines_reactive_capability_curves.py +39 -0
  76. zepben/ewb/database/sqlite/tables/associations/table_usage_points_end_devices.py +40 -0
  77. zepben/ewb/database/sqlite/tables/column.py +37 -0
  78. zepben/ewb/database/sqlite/tables/exceptions.py +10 -0
  79. zepben/ewb/database/sqlite/tables/extensions/__init__.py +4 -0
  80. zepben/ewb/database/sqlite/tables/extensions/iec61968/__init__.py +4 -0
  81. zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/__init__.py +4 -0
  82. zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/table_reclose_delays.py +38 -0
  83. zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/table_relay_info.py +21 -0
  84. zepben/ewb/database/sqlite/tables/extensions/iec61968/metering/__init__.py +4 -0
  85. zepben/ewb/database/sqlite/tables/extensions/iec61968/metering/table_pan_demand_response_functions.py +21 -0
  86. zepben/ewb/database/sqlite/tables/extensions/iec61970/__init__.py +4 -0
  87. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/__init__.py +4 -0
  88. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/core/__init__.py +4 -0
  89. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/core/table_sites.py +15 -0
  90. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/__init__.py +4 -0
  91. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/table_loops.py +15 -0
  92. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/table_lv_feeders.py +20 -0
  93. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/__init__.py +4 -0
  94. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/production/__init__.py +4 -0
  95. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/production/table_ev_charging_units.py +15 -0
  96. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/__init__.py +4 -0
  97. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_distance_relays.py +28 -0
  98. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_function_thresholds.py +36 -0
  99. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_function_time_limits.py +34 -0
  100. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_functions.py +24 -0
  101. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_schemes.py +20 -0
  102. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_systems.py +20 -0
  103. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_voltage_relays.py +15 -0
  104. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/__init__.py +4 -0
  105. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/table_battery_controls.py +23 -0
  106. zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/table_power_transformer_end_ratings.py +34 -0
  107. zepben/ewb/database/sqlite/tables/iec61968/__init__.py +4 -0
  108. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/__init__.py +4 -0
  109. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_cable_info.py +15 -0
  110. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_no_load_tests.py +24 -0
  111. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_open_circuit_tests.py +24 -0
  112. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_overhead_wire_info.py +15 -0
  113. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_power_transformer_info.py +15 -0
  114. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_short_circuit_tests.py +29 -0
  115. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_shunt_compensator_info.py +23 -0
  116. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_switch_info.py +20 -0
  117. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_end_info.py +46 -0
  118. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_tank_info.py +27 -0
  119. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_test.py +19 -0
  120. zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_wire_info.py +19 -0
  121. zepben/ewb/database/sqlite/tables/iec61968/assets/__init__.py +4 -0
  122. zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_containers.py +14 -0
  123. zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_functions.py +14 -0
  124. zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_info.py +14 -0
  125. zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_organisation_roles.py +14 -0
  126. zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_owners.py +15 -0
  127. zepben/ewb/database/sqlite/tables/iec61968/assets/table_assets.py +18 -0
  128. zepben/ewb/database/sqlite/tables/iec61968/assets/table_streetlights.py +22 -0
  129. zepben/ewb/database/sqlite/tables/iec61968/assets/table_structures.py +14 -0
  130. zepben/ewb/database/sqlite/tables/iec61968/common/__init__.py +4 -0
  131. zepben/ewb/database/sqlite/tables/iec61968/common/table_agreements.py +14 -0
  132. zepben/ewb/database/sqlite/tables/iec61968/common/table_documents.py +23 -0
  133. zepben/ewb/database/sqlite/tables/iec61968/common/table_location_street_address_field.py +18 -0
  134. zepben/ewb/database/sqlite/tables/iec61968/common/table_location_street_addresses.py +33 -0
  135. zepben/ewb/database/sqlite/tables/iec61968/common/table_locations.py +15 -0
  136. zepben/ewb/database/sqlite/tables/iec61968/common/table_organisation_roles.py +18 -0
  137. zepben/ewb/database/sqlite/tables/iec61968/common/table_organisations.py +15 -0
  138. zepben/ewb/database/sqlite/tables/iec61968/common/table_position_points.py +30 -0
  139. zepben/ewb/database/sqlite/tables/iec61968/common/table_street_addresses.py +26 -0
  140. zepben/ewb/database/sqlite/tables/iec61968/common/table_town_details.py +19 -0
  141. zepben/ewb/database/sqlite/tables/iec61968/customers/__init__.py +4 -0
  142. zepben/ewb/database/sqlite/tables/iec61968/customers/table_customer_agreements.py +27 -0
  143. zepben/ewb/database/sqlite/tables/iec61968/customers/table_customers.py +22 -0
  144. zepben/ewb/database/sqlite/tables/iec61968/customers/table_pricing_structures.py +15 -0
  145. zepben/ewb/database/sqlite/tables/iec61968/customers/table_tariffs.py +15 -0
  146. zepben/ewb/database/sqlite/tables/iec61968/infiec61968/__init__.py +4 -0
  147. zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/__init__.py +4 -0
  148. zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/table_current_transformer_info.py +33 -0
  149. zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/table_potential_transformer_info.py +26 -0
  150. zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassets/__init__.py +4 -0
  151. zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassets/table_poles.py +20 -0
  152. zepben/ewb/database/sqlite/tables/iec61968/metering/__init__.py +4 -0
  153. zepben/ewb/database/sqlite/tables/iec61968/metering/table_end_device_functions.py +18 -0
  154. zepben/ewb/database/sqlite/tables/iec61968/metering/table_end_devices.py +19 -0
  155. zepben/ewb/database/sqlite/tables/iec61968/metering/table_meters.py +15 -0
  156. zepben/ewb/database/sqlite/tables/iec61968/metering/table_usage_points.py +23 -0
  157. zepben/ewb/database/sqlite/tables/iec61968/operations/__init__.py +4 -0
  158. zepben/ewb/database/sqlite/tables/iec61968/operations/table_operational_restrictions.py +15 -0
  159. zepben/ewb/database/sqlite/tables/iec61970/__init__.py +4 -0
  160. zepben/ewb/database/sqlite/tables/iec61970/base/__init__.py +4 -0
  161. zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/__init__.py +4 -0
  162. zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_auxiliary_equipment.py +18 -0
  163. zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_current_transformers.py +21 -0
  164. zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_fault_indicators.py +15 -0
  165. zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_potential_transformers.py +21 -0
  166. zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_sensors.py +14 -0
  167. zepben/ewb/database/sqlite/tables/iec61970/base/core/__init__.py +4 -0
  168. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_ac_dc_terminals.py +14 -0
  169. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_base_voltages.py +20 -0
  170. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_conducting_equipment.py +18 -0
  171. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_connectivity_node_containers.py +14 -0
  172. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_connectivity_nodes.py +15 -0
  173. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_curve_data.py +46 -0
  174. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_curves.py +17 -0
  175. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_equipment.py +20 -0
  176. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_equipment_containers.py +14 -0
  177. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_feeders.py +28 -0
  178. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_geographical_regions.py +15 -0
  179. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_identified_objects.py +29 -0
  180. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_name_types.py +28 -0
  181. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_names.py +36 -0
  182. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_power_system_resources.py +19 -0
  183. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_sub_geographical_regions.py +27 -0
  184. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_substations.py +27 -0
  185. zepben/ewb/database/sqlite/tables/iec61970/base/core/table_terminals.py +35 -0
  186. zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/__init__.py +4 -0
  187. zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagram_object_points.py +35 -0
  188. zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagram_objects.py +31 -0
  189. zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagrams.py +21 -0
  190. zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/__init__.py +4 -0
  191. zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/table_equivalent_branches.py +35 -0
  192. zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/table_equivalent_equipment.py +14 -0
  193. zepben/ewb/database/sqlite/tables/iec61970/base/generation/__init__.py +4 -0
  194. zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/__init__.py +4 -0
  195. zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_battery_units.py +22 -0
  196. zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_photo_voltaic_units.py +15 -0
  197. zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_power_electronics_units.py +26 -0
  198. zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_power_electronics_wind_units.py +15 -0
  199. zepben/ewb/database/sqlite/tables/iec61970/base/meas/__init__.py +4 -0
  200. zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_accumulators.py +15 -0
  201. zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_analogs.py +20 -0
  202. zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_controls.py +20 -0
  203. zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_discretes.py +15 -0
  204. zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_io_points.py +14 -0
  205. zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_measurements.py +30 -0
  206. zepben/ewb/database/sqlite/tables/iec61970/base/protection/__init__.py +4 -0
  207. zepben/ewb/database/sqlite/tables/iec61970/base/protection/table_current_relays.py +22 -0
  208. zepben/ewb/database/sqlite/tables/iec61970/base/scada/__init__.py +4 -0
  209. zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_controls.py +20 -0
  210. zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_points.py +14 -0
  211. zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_sources.py +20 -0
  212. zepben/ewb/database/sqlite/tables/iec61970/base/wires/__init__.py +4 -0
  213. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ac_line_segments.py +20 -0
  214. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_breakers.py +20 -0
  215. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_busbar_sections.py +15 -0
  216. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_clamps.py +23 -0
  217. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_conductors.py +21 -0
  218. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_connectors.py +14 -0
  219. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_cuts.py +23 -0
  220. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_disconnectors.py +15 -0
  221. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_earth_fault_compensators.py +22 -0
  222. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_connections.py +14 -0
  223. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_consumer_phases.py +37 -0
  224. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_consumers.py +26 -0
  225. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_source_phases.py +33 -0
  226. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_sources.py +44 -0
  227. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_fuses.py +20 -0
  228. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ground_disconnectors.py +15 -0
  229. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_grounding_impedances.py +24 -0
  230. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_grounds.py +15 -0
  231. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_jumpers.py +15 -0
  232. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_junctions.py +15 -0
  233. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_linear_shunt_compensators.py +23 -0
  234. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_lines.py +14 -0
  235. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_load_break_switches.py +15 -0
  236. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_impedances.py +14 -0
  237. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_line_parameters.py +14 -0
  238. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_phase_impedances.py +18 -0
  239. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_sequence_impedances.py +27 -0
  240. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_petersen_coils.py +27 -0
  241. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_phase_impedance_data.py +52 -0
  242. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_electronics_connection_phases.py +30 -0
  243. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_electronics_connections.py +50 -0
  244. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_transformer_ends.py +43 -0
  245. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_transformers.py +24 -0
  246. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_protected_switches.py +18 -0
  247. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ratio_tap_changers.py +28 -0
  248. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_reactive_capability_curves.py +18 -0
  249. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_reclosers.py +15 -0
  250. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_regulating_cond_eq.py +19 -0
  251. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_regulating_controls.py +29 -0
  252. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_rotating_machines.py +36 -0
  253. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_series_compensators.py +25 -0
  254. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_shunt_compensators.py +22 -0
  255. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_static_var_compensator.py +24 -0
  256. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_switches.py +21 -0
  257. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_synchronous_machines.py +95 -0
  258. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_tap_changer_controls.py +28 -0
  259. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_tap_changers.py +25 -0
  260. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_transformer_ends.py +30 -0
  261. zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_transformer_star_impedances.py +32 -0
  262. zepben/ewb/database/sqlite/tables/iec61970/infiec61970/__init__.py +4 -0
  263. zepben/ewb/database/sqlite/tables/iec61970/infiec61970/feeder/__init__.py +4 -0
  264. zepben/ewb/database/sqlite/tables/iec61970/infiec61970/feeder/table_circuits.py +27 -0
  265. zepben/ewb/database/sqlite/tables/sqlite_table.py +142 -0
  266. zepben/ewb/database/sqlite/tables/table_metadata_data_sources.py +21 -0
  267. zepben/ewb/database/sqlite/tables/table_version.py +38 -0
  268. zepben/ewb/dataclassy/__init__.py +15 -0
  269. zepben/ewb/dataclassy/dataclass.py +192 -0
  270. zepben/ewb/dataclassy/decorator.py +35 -0
  271. zepben/ewb/dataclassy/functions.py +80 -0
  272. zepben/ewb/examples/__init__.py +6 -0
  273. zepben/ewb/examples/simple_test_network.py +158 -0
  274. zepben/ewb/exceptions.py +52 -0
  275. zepben/ewb/model/__init__.py +4 -0
  276. zepben/ewb/model/busbranch/__init__.py +4 -0
  277. zepben/ewb/model/busbranch/bus_branch.py +1051 -0
  278. zepben/ewb/model/cim/__init__.py +4 -0
  279. zepben/ewb/model/cim/extensions/__init__.py +4 -0
  280. zepben/ewb/model/cim/extensions/iec61968/__init__.py +4 -0
  281. zepben/ewb/model/cim/extensions/iec61968/assetinfo/__init__.py +4 -0
  282. zepben/ewb/model/cim/extensions/iec61968/assetinfo/relay_info.py +128 -0
  283. zepben/ewb/model/cim/extensions/iec61968/metering/__init__.py +4 -0
  284. zepben/ewb/model/cim/extensions/iec61968/metering/pan_demand_reponse_function.py +112 -0
  285. zepben/ewb/model/cim/extensions/iec61970/__init__.py +4 -0
  286. zepben/ewb/model/cim/extensions/iec61970/base/__init__.py +4 -0
  287. zepben/ewb/model/cim/extensions/iec61970/base/core/__init__.py +4 -0
  288. zepben/ewb/model/cim/extensions/iec61970/base/core/site.py +37 -0
  289. zepben/ewb/model/cim/extensions/iec61970/base/feeder/__init__.py +4 -0
  290. zepben/ewb/model/cim/extensions/iec61970/base/feeder/loop.py +207 -0
  291. zepben/ewb/model/cim/extensions/iec61970/base/feeder/lv_feeder.py +258 -0
  292. zepben/ewb/model/cim/extensions/iec61970/base/generation/__init__.py +4 -0
  293. zepben/ewb/model/cim/extensions/iec61970/base/generation/production/__init__.py +4 -0
  294. zepben/ewb/model/cim/extensions/iec61970/base/generation/production/ev_charging_unit.py +18 -0
  295. zepben/ewb/model/cim/extensions/iec61970/base/protection/__init__.py +4 -0
  296. zepben/ewb/model/cim/extensions/iec61970/base/protection/distance_relay.py +69 -0
  297. zepben/ewb/model/cim/extensions/iec61970/base/protection/power_direction_kind.py +35 -0
  298. zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_kind.py +113 -0
  299. zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_function.py +448 -0
  300. zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_scheme.py +97 -0
  301. zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_system.py +97 -0
  302. zepben/ewb/model/cim/extensions/iec61970/base/protection/relay_setting.py +35 -0
  303. zepben/ewb/model/cim/extensions/iec61970/base/protection/voltage_relay.py +20 -0
  304. zepben/ewb/model/cim/extensions/iec61970/base/wires/__init__.py +4 -0
  305. zepben/ewb/model/cim/extensions/iec61970/base/wires/battery_control.py +36 -0
  306. zepben/ewb/model/cim/extensions/iec61970/base/wires/battery_control_mode.py +82 -0
  307. zepben/ewb/model/cim/extensions/iec61970/base/wires/transformer_cooling_type.py +56 -0
  308. zepben/ewb/model/cim/extensions/iec61970/base/wires/transformer_end_rated_s.py +26 -0
  309. zepben/ewb/model/cim/extensions/iec61970/base/wires/vector_group.py +292 -0
  310. zepben/ewb/model/cim/extensions/zbex.py +17 -0
  311. zepben/ewb/model/cim/iec61968/__init__.py +4 -0
  312. zepben/ewb/model/cim/iec61968/assetinfo/__init__.py +4 -0
  313. zepben/ewb/model/cim/iec61968/assetinfo/cable_info.py +15 -0
  314. zepben/ewb/model/cim/iec61968/assetinfo/no_load_test.py +42 -0
  315. zepben/ewb/model/cim/iec61968/assetinfo/open_circuit_test.py +42 -0
  316. zepben/ewb/model/cim/iec61968/assetinfo/overhead_wire_info.py +15 -0
  317. zepben/ewb/model/cim/iec61968/assetinfo/power_transformer_info.py +103 -0
  318. zepben/ewb/model/cim/iec61968/assetinfo/short_circuit_test.py +67 -0
  319. zepben/ewb/model/cim/iec61968/assetinfo/shunt_compensator_info.py +26 -0
  320. zepben/ewb/model/cim/iec61968/assetinfo/switch_info.py +17 -0
  321. zepben/ewb/model/cim/iec61968/assetinfo/transformer_end_info.py +137 -0
  322. zepben/ewb/model/cim/iec61968/assetinfo/transformer_tank_info.py +108 -0
  323. zepben/ewb/model/cim/iec61968/assetinfo/transformer_test.py +26 -0
  324. zepben/ewb/model/cim/iec61968/assetinfo/wire_info.py +24 -0
  325. zepben/ewb/model/cim/iec61968/assetinfo/wire_material_kind.py +55 -0
  326. zepben/ewb/model/cim/iec61968/assets/__init__.py +4 -0
  327. zepben/ewb/model/cim/iec61968/assets/asset.py +154 -0
  328. zepben/ewb/model/cim/iec61968/assets/asset_container.py +16 -0
  329. zepben/ewb/model/cim/iec61968/assets/asset_function.py +15 -0
  330. zepben/ewb/model/cim/iec61968/assets/asset_info.py +19 -0
  331. zepben/ewb/model/cim/iec61968/assets/asset_organisation_role.py +13 -0
  332. zepben/ewb/model/cim/iec61968/assets/asset_owner.py +13 -0
  333. zepben/ewb/model/cim/iec61968/assets/streetlight.py +29 -0
  334. zepben/ewb/model/cim/iec61968/assets/structure.py +16 -0
  335. zepben/ewb/model/cim/iec61968/common/__init__.py +4 -0
  336. zepben/ewb/model/cim/iec61968/common/agreement.py +16 -0
  337. zepben/ewb/model/cim/iec61968/common/document.py +36 -0
  338. zepben/ewb/model/cim/iec61968/common/location.py +129 -0
  339. zepben/ewb/model/cim/iec61968/common/organisation.py +15 -0
  340. zepben/ewb/model/cim/iec61968/common/organisation_role.py +22 -0
  341. zepben/ewb/model/cim/iec61968/common/position_point.py +44 -0
  342. zepben/ewb/model/cim/iec61968/common/street_address.py +28 -0
  343. zepben/ewb/model/cim/iec61968/common/street_detail.py +45 -0
  344. zepben/ewb/model/cim/iec61968/common/town_detail.py +25 -0
  345. zepben/ewb/model/cim/iec61968/customers/__init__.py +4 -0
  346. zepben/ewb/model/cim/iec61968/customers/customer.py +93 -0
  347. zepben/ewb/model/cim/iec61968/customers/customer_agreement.py +107 -0
  348. zepben/ewb/model/cim/iec61968/customers/customer_kind.py +67 -0
  349. zepben/ewb/model/cim/iec61968/customers/pricing_structure.py +88 -0
  350. zepben/ewb/model/cim/iec61968/customers/tariff.py +18 -0
  351. zepben/ewb/model/cim/iec61968/infiec61968/__init__.py +4 -0
  352. zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/__init__.py +4 -0
  353. zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/current_transformer_info.py +51 -0
  354. zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/potential_transformer_info.py +33 -0
  355. zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/transformer_construction_kind.py +67 -0
  356. zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/transformer_function_kind.py +43 -0
  357. zepben/ewb/model/cim/iec61968/infiec61968/infassets/__init__.py +4 -0
  358. zepben/ewb/model/cim/iec61968/infiec61968/infassets/pole.py +87 -0
  359. zepben/ewb/model/cim/iec61968/infiec61968/infassets/streetlight_lamp_kind.py +25 -0
  360. zepben/ewb/model/cim/iec61968/infiec61968/infcommon/__init__.py +4 -0
  361. zepben/ewb/model/cim/iec61968/infiec61968/infcommon/ratio.py +34 -0
  362. zepben/ewb/model/cim/iec61968/metering/__init__.py +4 -0
  363. zepben/ewb/model/cim/iec61968/metering/controlled_appliance.py +150 -0
  364. zepben/ewb/model/cim/iec61968/metering/end_device.py +165 -0
  365. zepben/ewb/model/cim/iec61968/metering/end_device_function.py +17 -0
  366. zepben/ewb/model/cim/iec61968/metering/end_device_function_kind.py +46 -0
  367. zepben/ewb/model/cim/iec61968/metering/meter.py +26 -0
  368. zepben/ewb/model/cim/iec61968/metering/usage_point.py +186 -0
  369. zepben/ewb/model/cim/iec61968/operations/__init__.py +4 -0
  370. zepben/ewb/model/cim/iec61968/operations/operational_restriction.py +92 -0
  371. zepben/ewb/model/cim/iec61970/__init__.py +4 -0
  372. zepben/ewb/model/cim/iec61970/base/__init__.py +4 -0
  373. zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/__init__.py +4 -0
  374. zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/auxiliary_equipment.py +24 -0
  375. zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/current_transformer.py +37 -0
  376. zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/fault_indicator.py +18 -0
  377. zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/potential_transformer.py +38 -0
  378. zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/potential_transformer_kind.py +28 -0
  379. zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/sensor.py +92 -0
  380. zepben/ewb/model/cim/iec61970/base/core/__init__.py +4 -0
  381. zepben/ewb/model/cim/iec61970/base/core/ac_dc_terminal.py +16 -0
  382. zepben/ewb/model/cim/iec61970/base/core/base_voltage.py +17 -0
  383. zepben/ewb/model/cim/iec61970/base/core/conducting_equipment.py +198 -0
  384. zepben/ewb/model/cim/iec61970/base/core/connectivity_node.py +105 -0
  385. zepben/ewb/model/cim/iec61970/base/core/connectivity_node_container.py +15 -0
  386. zepben/ewb/model/cim/iec61970/base/core/curve.py +124 -0
  387. zepben/ewb/model/cim/iec61970/base/core/curve_data.py +29 -0
  388. zepben/ewb/model/cim/iec61970/base/core/equipment.py +366 -0
  389. zepben/ewb/model/cim/iec61970/base/core/equipment_container.py +199 -0
  390. zepben/ewb/model/cim/iec61970/base/core/feeder.py +260 -0
  391. zepben/ewb/model/cim/iec61970/base/core/geographical_region.py +82 -0
  392. zepben/ewb/model/cim/iec61970/base/core/identified_object.py +234 -0
  393. zepben/ewb/model/cim/iec61970/base/core/name.py +36 -0
  394. zepben/ewb/model/cim/iec61970/base/core/name_type.py +203 -0
  395. zepben/ewb/model/cim/iec61970/base/core/phase_code.py +201 -0
  396. zepben/ewb/model/cim/iec61970/base/core/power_system_resource.py +106 -0
  397. zepben/ewb/model/cim/iec61970/base/core/sub_geographical_region.py +93 -0
  398. zepben/ewb/model/cim/iec61970/base/core/substation.py +277 -0
  399. zepben/ewb/model/cim/iec61970/base/core/terminal.py +171 -0
  400. zepben/ewb/model/cim/iec61970/base/diagramlayout/__init__.py +4 -0
  401. zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram.py +109 -0
  402. zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_object.py +160 -0
  403. zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_object_point.py +25 -0
  404. zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_style.py +26 -0
  405. zepben/ewb/model/cim/iec61970/base/diagramlayout/orientation_kind.py +27 -0
  406. zepben/ewb/model/cim/iec61970/base/domain/__init__.py +4 -0
  407. zepben/ewb/model/cim/iec61970/base/domain/unit_symbol.py +492 -0
  408. zepben/ewb/model/cim/iec61970/base/equivalents/__init__.py +4 -0
  409. zepben/ewb/model/cim/iec61970/base/equivalents/equivalent_branch.py +113 -0
  410. zepben/ewb/model/cim/iec61970/base/equivalents/equivalent_equipment.py +15 -0
  411. zepben/ewb/model/cim/iec61970/base/generation/__init__.py +4 -0
  412. zepben/ewb/model/cim/iec61970/base/generation/production/__init__.py +4 -0
  413. zepben/ewb/model/cim/iec61970/base/generation/production/battery_state_kind.py +37 -0
  414. zepben/ewb/model/cim/iec61970/base/generation/production/battery_unit.py +108 -0
  415. zepben/ewb/model/cim/iec61970/base/generation/production/photo_voltaic_unit.py +13 -0
  416. zepben/ewb/model/cim/iec61970/base/generation/production/power_electronics_unit.py +28 -0
  417. zepben/ewb/model/cim/iec61970/base/generation/production/power_electronics_wind_unit.py +13 -0
  418. zepben/ewb/model/cim/iec61970/base/meas/__init__.py +4 -0
  419. zepben/ewb/model/cim/iec61970/base/meas/accumulator.py +13 -0
  420. zepben/ewb/model/cim/iec61970/base/meas/accumulator_value.py +20 -0
  421. zepben/ewb/model/cim/iec61970/base/meas/analog.py +16 -0
  422. zepben/ewb/model/cim/iec61970/base/meas/analog_value.py +20 -0
  423. zepben/ewb/model/cim/iec61970/base/meas/control.py +26 -0
  424. zepben/ewb/model/cim/iec61970/base/meas/discrete.py +13 -0
  425. zepben/ewb/model/cim/iec61970/base/meas/discrete_value.py +20 -0
  426. zepben/ewb/model/cim/iec61970/base/meas/iopoint.py +16 -0
  427. zepben/ewb/model/cim/iec61970/base/meas/measurement.py +60 -0
  428. zepben/ewb/model/cim/iec61970/base/meas/measurement_value.py +21 -0
  429. zepben/ewb/model/cim/iec61970/base/protection/__init__.py +4 -0
  430. zepben/ewb/model/cim/iec61970/base/protection/current_relay.py +23 -0
  431. zepben/ewb/model/cim/iec61970/base/scada/__init__.py +4 -0
  432. zepben/ewb/model/cim/iec61970/base/scada/remote_control.py +22 -0
  433. zepben/ewb/model/cim/iec61970/base/scada/remote_point.py +16 -0
  434. zepben/ewb/model/cim/iec61970/base/scada/remote_source.py +22 -0
  435. zepben/ewb/model/cim/iec61970/base/wires/__init__.py +4 -0
  436. zepben/ewb/model/cim/iec61970/base/wires/ac_line_segment.py +214 -0
  437. zepben/ewb/model/cim/iec61970/base/wires/breaker.py +32 -0
  438. zepben/ewb/model/cim/iec61970/base/wires/busbar_section.py +19 -0
  439. zepben/ewb/model/cim/iec61970/base/wires/clamp.py +32 -0
  440. zepben/ewb/model/cim/iec61970/base/wires/conductor.py +49 -0
  441. zepben/ewb/model/cim/iec61970/base/wires/connector.py +16 -0
  442. zepben/ewb/model/cim/iec61970/base/wires/cut.py +36 -0
  443. zepben/ewb/model/cim/iec61970/base/wires/disconnector.py +17 -0
  444. zepben/ewb/model/cim/iec61970/base/wires/earth_fault_compensator.py +21 -0
  445. zepben/ewb/model/cim/iec61970/base/wires/energy_connection.py +15 -0
  446. zepben/ewb/model/cim/iec61970/base/wires/energy_consumer.py +107 -0
  447. zepben/ewb/model/cim/iec61970/base/wires/energy_consumer_phase.py +56 -0
  448. zepben/ewb/model/cim/iec61970/base/wires/energy_source.py +172 -0
  449. zepben/ewb/model/cim/iec61970/base/wires/energy_source_phase.py +45 -0
  450. zepben/ewb/model/cim/iec61970/base/wires/fuse.py +23 -0
  451. zepben/ewb/model/cim/iec61970/base/wires/ground.py +15 -0
  452. zepben/ewb/model/cim/iec61970/base/wires/ground_disconnector.py +15 -0
  453. zepben/ewb/model/cim/iec61970/base/wires/grounding_impedance.py +19 -0
  454. zepben/ewb/model/cim/iec61970/base/wires/jumper.py +16 -0
  455. zepben/ewb/model/cim/iec61970/base/wires/junction.py +15 -0
  456. zepben/ewb/model/cim/iec61970/base/wires/line.py +13 -0
  457. zepben/ewb/model/cim/iec61970/base/wires/linear_shunt_compensator.py +26 -0
  458. zepben/ewb/model/cim/iec61970/base/wires/load_break_switch.py +14 -0
  459. zepben/ewb/model/cim/iec61970/base/wires/per_length_impedance.py +13 -0
  460. zepben/ewb/model/cim/iec61970/base/wires/per_length_line_parameter.py +13 -0
  461. zepben/ewb/model/cim/iec61970/base/wires/per_length_phase_impedance.py +99 -0
  462. zepben/ewb/model/cim/iec61970/base/wires/per_length_sequence_impedance.py +43 -0
  463. zepben/ewb/model/cim/iec61970/base/wires/petersen_coil.py +22 -0
  464. zepben/ewb/model/cim/iec61970/base/wires/phase_impedance_data.py +37 -0
  465. zepben/ewb/model/cim/iec61970/base/wires/phase_shunt_connection_kind.py +38 -0
  466. zepben/ewb/model/cim/iec61970/base/wires/power_electronics_connection.py +524 -0
  467. zepben/ewb/model/cim/iec61970/base/wires/power_electronics_connection_phase.py +34 -0
  468. zepben/ewb/model/cim/iec61970/base/wires/power_transformer.py +217 -0
  469. zepben/ewb/model/cim/iec61970/base/wires/power_transformer_end.py +208 -0
  470. zepben/ewb/model/cim/iec61970/base/wires/protected_switch.py +96 -0
  471. zepben/ewb/model/cim/iec61970/base/wires/ratio_tap_changer.py +30 -0
  472. zepben/ewb/model/cim/iec61970/base/wires/reactive_capability_curve.py +16 -0
  473. zepben/ewb/model/cim/iec61970/base/wires/recloser.py +15 -0
  474. zepben/ewb/model/cim/iec61970/base/wires/regulating_cond_eq.py +45 -0
  475. zepben/ewb/model/cim/iec61970/base/wires/regulating_control.py +173 -0
  476. zepben/ewb/model/cim/iec61970/base/wires/regulating_control_mode_kind.py +46 -0
  477. zepben/ewb/model/cim/iec61970/base/wires/rotating_machine.py +36 -0
  478. zepben/ewb/model/cim/iec61970/base/wires/series_compensator.py +42 -0
  479. zepben/ewb/model/cim/iec61970/base/wires/shunt_compensator.py +59 -0
  480. zepben/ewb/model/cim/iec61970/base/wires/single_phase_kind.py +105 -0
  481. zepben/ewb/model/cim/iec61970/base/wires/static_var_compensator.py +40 -0
  482. zepben/ewb/model/cim/iec61970/base/wires/svc_control_mode.py +28 -0
  483. zepben/ewb/model/cim/iec61970/base/wires/switch.py +119 -0
  484. zepben/ewb/model/cim/iec61970/base/wires/synchronous_machine.py +168 -0
  485. zepben/ewb/model/cim/iec61970/base/wires/synchronous_machine_kind.py +44 -0
  486. zepben/ewb/model/cim/iec61970/base/wires/tap_changer.py +150 -0
  487. zepben/ewb/model/cim/iec61970/base/wires/tap_changer_control.py +49 -0
  488. zepben/ewb/model/cim/iec61970/base/wires/transformer_end.py +73 -0
  489. zepben/ewb/model/cim/iec61970/base/wires/transformer_star_impedance.py +48 -0
  490. zepben/ewb/model/cim/iec61970/base/wires/winding_connection.py +43 -0
  491. zepben/ewb/model/cim/iec61970/infiec61970/__init__.py +4 -0
  492. zepben/ewb/model/cim/iec61970/infiec61970/feeder/__init__.py +4 -0
  493. zepben/ewb/model/cim/iec61970/infiec61970/feeder/circuit.py +144 -0
  494. zepben/ewb/model/phases.py +168 -0
  495. zepben/ewb/model/resistance_reactance.py +40 -0
  496. zepben/ewb/services/__init__.py +4 -0
  497. zepben/ewb/services/common/__init__.py +16 -0
  498. zepben/ewb/services/common/base_service.py +383 -0
  499. zepben/ewb/services/common/base_service_comparator.py +394 -0
  500. zepben/ewb/services/common/difference.py +47 -0
  501. zepben/ewb/services/common/enum_mapper.py +55 -0
  502. zepben/ewb/services/common/meta/__init__.py +4 -0
  503. zepben/ewb/services/common/meta/data_source.py +16 -0
  504. zepben/ewb/services/common/meta/metadata_collection.py +28 -0
  505. zepben/ewb/services/common/meta/metadata_translations.py +47 -0
  506. zepben/ewb/services/common/meta/service_info.py +22 -0
  507. zepben/ewb/services/common/reference_resolvers.py +374 -0
  508. zepben/ewb/services/common/resolver.py +597 -0
  509. zepben/ewb/services/common/translator/__init__.py +4 -0
  510. zepben/ewb/services/common/translator/base_cim2proto.py +92 -0
  511. zepben/ewb/services/common/translator/base_proto2cim.py +112 -0
  512. zepben/ewb/services/common/translator/service_differences.py +81 -0
  513. zepben/ewb/services/common/translator/util.py +78 -0
  514. zepben/ewb/services/customer/__init__.py +4 -0
  515. zepben/ewb/services/customer/customer_service_comparator.py +52 -0
  516. zepben/ewb/services/customer/customers.py +23 -0
  517. zepben/ewb/services/customer/translator/__init__.py +21 -0
  518. zepben/ewb/services/customer/translator/customer_cim2proto.py +71 -0
  519. zepben/ewb/services/customer/translator/customer_enum_mappers.py +18 -0
  520. zepben/ewb/services/customer/translator/customer_proto2cim.py +87 -0
  521. zepben/ewb/services/diagram/__init__.py +4 -0
  522. zepben/ewb/services/diagram/diagram_service_comparator.py +39 -0
  523. zepben/ewb/services/diagram/diagrams.py +107 -0
  524. zepben/ewb/services/diagram/translator/__init__.py +11 -0
  525. zepben/ewb/services/diagram/translator/diagram_cim2proto.py +51 -0
  526. zepben/ewb/services/diagram/translator/diagram_enum_mappers.py +21 -0
  527. zepben/ewb/services/diagram/translator/diagram_proto2cim.py +61 -0
  528. zepben/ewb/services/measurement/__init__.py +4 -0
  529. zepben/ewb/services/measurement/measurements.py +35 -0
  530. zepben/ewb/services/measurement/translator/__init__.py +6 -0
  531. zepben/ewb/services/measurement/translator/measurement_cim2proto.py +42 -0
  532. zepben/ewb/services/measurement/translator/measurement_proto2cim.py +52 -0
  533. zepben/ewb/services/network/__init__.py +4 -0
  534. zepben/ewb/services/network/network_extensions.py +119 -0
  535. zepben/ewb/services/network/network_service.py +302 -0
  536. zepben/ewb/services/network/network_service_comparator.py +1322 -0
  537. zepben/ewb/services/network/network_state.py +34 -0
  538. zepben/ewb/services/network/tracing/__init__.py +4 -0
  539. zepben/ewb/services/network/tracing/busbranch_trace.py +36 -0
  540. zepben/ewb/services/network/tracing/connectivity/__init__.py +4 -0
  541. zepben/ewb/services/network/tracing/connectivity/connectivity_result.py +105 -0
  542. zepben/ewb/services/network/tracing/connectivity/nominal_phase_path.py +23 -0
  543. zepben/ewb/services/network/tracing/connectivity/phase_paths.py +70 -0
  544. zepben/ewb/services/network/tracing/connectivity/terminal_connectivity_connected.py +226 -0
  545. zepben/ewb/services/network/tracing/connectivity/terminal_connectivity_internal.py +64 -0
  546. zepben/ewb/services/network/tracing/connectivity/transformer_phase_paths.py +202 -0
  547. zepben/ewb/services/network/tracing/connectivity/xy_candidate_phase_paths.py +235 -0
  548. zepben/ewb/services/network/tracing/connectivity/xy_phase_step.py +24 -0
  549. zepben/ewb/services/network/tracing/feeder/__init__.py +4 -0
  550. zepben/ewb/services/network/tracing/feeder/assign_to_feeders.py +202 -0
  551. zepben/ewb/services/network/tracing/feeder/assign_to_lv_feeders.py +202 -0
  552. zepben/ewb/services/network/tracing/feeder/clear_direction.py +80 -0
  553. zepben/ewb/services/network/tracing/feeder/direction_status.py +133 -0
  554. zepben/ewb/services/network/tracing/feeder/feeder_direction.py +107 -0
  555. zepben/ewb/services/network/tracing/feeder/set_direction.py +143 -0
  556. zepben/ewb/services/network/tracing/find_swer_equipment.py +175 -0
  557. zepben/ewb/services/network/tracing/networktrace/__init__.py +4 -0
  558. zepben/ewb/services/network/tracing/networktrace/actions/__init__.py +4 -0
  559. zepben/ewb/services/network/tracing/networktrace/actions/equipment_tree_builder.py +71 -0
  560. zepben/ewb/services/network/tracing/networktrace/actions/tree_node.py +37 -0
  561. zepben/ewb/services/network/tracing/networktrace/compute_data.py +60 -0
  562. zepben/ewb/services/network/tracing/networktrace/conditions/__init__.py +4 -0
  563. zepben/ewb/services/network/tracing/networktrace/conditions/conditions.py +73 -0
  564. zepben/ewb/services/network/tracing/networktrace/conditions/direction_condition.py +63 -0
  565. zepben/ewb/services/network/tracing/networktrace/conditions/equipment_step_limit_condition.py +26 -0
  566. zepben/ewb/services/network/tracing/networktrace/conditions/equipment_type_step_limit_condition.py +44 -0
  567. zepben/ewb/services/network/tracing/networktrace/conditions/network_trace_queue_condition.py +67 -0
  568. zepben/ewb/services/network/tracing/networktrace/conditions/network_trace_stop_condition.py +65 -0
  569. zepben/ewb/services/network/tracing/networktrace/conditions/open_condition.py +39 -0
  570. zepben/ewb/services/network/tracing/networktrace/network_trace.py +450 -0
  571. zepben/ewb/services/network/tracing/networktrace/network_trace_action_type.py +42 -0
  572. zepben/ewb/services/network/tracing/networktrace/network_trace_queue_next.py +84 -0
  573. zepben/ewb/services/network/tracing/networktrace/network_trace_step.py +125 -0
  574. zepben/ewb/services/network/tracing/networktrace/network_trace_step_path_provider.py +351 -0
  575. zepben/ewb/services/network/tracing/networktrace/network_trace_tracker.py +39 -0
  576. zepben/ewb/services/network/tracing/networktrace/operators/__init__.py +14 -0
  577. zepben/ewb/services/network/tracing/networktrace/operators/equipment_container_state_operators.py +264 -0
  578. zepben/ewb/services/network/tracing/networktrace/operators/feeder_direction_state_operations.py +181 -0
  579. zepben/ewb/services/network/tracing/networktrace/operators/in_service_state_operators.py +76 -0
  580. zepben/ewb/services/network/tracing/networktrace/operators/network_state_operators.py +120 -0
  581. zepben/ewb/services/network/tracing/networktrace/operators/open_state_operators.py +104 -0
  582. zepben/ewb/services/network/tracing/networktrace/operators/phase_state_operators.py +56 -0
  583. zepben/ewb/services/network/tracing/networktrace/tracing.py +132 -0
  584. zepben/ewb/services/network/tracing/phases/__init__.py +4 -0
  585. zepben/ewb/services/network/tracing/phases/phase_inferrer.py +205 -0
  586. zepben/ewb/services/network/tracing/phases/phase_status.py +101 -0
  587. zepben/ewb/services/network/tracing/phases/remove_phases.py +143 -0
  588. zepben/ewb/services/network/tracing/phases/set_phases.py +490 -0
  589. zepben/ewb/services/network/tracing/traversal/__init__.py +4 -0
  590. zepben/ewb/services/network/tracing/traversal/context_value_computer.py +63 -0
  591. zepben/ewb/services/network/tracing/traversal/debug_logging.py +124 -0
  592. zepben/ewb/services/network/tracing/traversal/queue.py +112 -0
  593. zepben/ewb/services/network/tracing/traversal/queue_condition.py +75 -0
  594. zepben/ewb/services/network/tracing/traversal/step_action.py +83 -0
  595. zepben/ewb/services/network/tracing/traversal/step_context.py +59 -0
  596. zepben/ewb/services/network/tracing/traversal/stop_condition.py +57 -0
  597. zepben/ewb/services/network/tracing/traversal/traversal.py +634 -0
  598. zepben/ewb/services/network/tracing/traversal/traversal_condition.py +22 -0
  599. zepben/ewb/services/network/tracing/traversal/weighted_priority_queue.py +85 -0
  600. zepben/ewb/services/network/tracing/util.py +93 -0
  601. zepben/ewb/services/network/translator/__init__.py +392 -0
  602. zepben/ewb/services/network/translator/network_cim2proto.py +1782 -0
  603. zepben/ewb/services/network/translator/network_enum_mappers.py +78 -0
  604. zepben/ewb/services/network/translator/network_proto2cim.py +2147 -0
  605. zepben/ewb/services/services.py +48 -0
  606. zepben/ewb/streaming/__init__.py +4 -0
  607. zepben/ewb/streaming/data/__init__.py +4 -0
  608. zepben/ewb/streaming/data/current_state_event.py +314 -0
  609. zepben/ewb/streaming/data/current_state_event_batch.py +25 -0
  610. zepben/ewb/streaming/data/set_current_states_status.py +286 -0
  611. zepben/ewb/streaming/exceptions.py +14 -0
  612. zepben/ewb/streaming/get/__init__.py +4 -0
  613. zepben/ewb/streaming/get/consumer.py +209 -0
  614. zepben/ewb/streaming/get/customer_consumer.py +111 -0
  615. zepben/ewb/streaming/get/diagram_consumer.py +107 -0
  616. zepben/ewb/streaming/get/hierarchy/__init__.py +4 -0
  617. zepben/ewb/streaming/get/hierarchy/data.py +27 -0
  618. zepben/ewb/streaming/get/included_energized_containers.py +34 -0
  619. zepben/ewb/streaming/get/included_energizing_containers.py +34 -0
  620. zepben/ewb/streaming/get/network_consumer.py +870 -0
  621. zepben/ewb/streaming/get/query_network_state_client.py +64 -0
  622. zepben/ewb/streaming/get/query_network_state_service.py +94 -0
  623. zepben/ewb/streaming/grpc/__init__.py +4 -0
  624. zepben/ewb/streaming/grpc/auth_token_plugin.py +24 -0
  625. zepben/ewb/streaming/grpc/connect.py +209 -0
  626. zepben/ewb/streaming/grpc/grpc.py +107 -0
  627. zepben/ewb/streaming/grpc/grpc_channel_builder.py +185 -0
  628. zepben/ewb/streaming/mutations/__init__.py +4 -0
  629. zepben/ewb/streaming/mutations/update_network_state_client.py +80 -0
  630. zepben/ewb/streaming/mutations/update_network_state_service.py +61 -0
  631. zepben/ewb/testing/__init__.py +4 -0
  632. zepben/ewb/testing/test_network_builder.py +816 -0
  633. zepben/ewb/types.py +17 -0
  634. zepben/ewb/util.py +189 -0
  635. zepben_ewb-1.0.0b1.dist-info/METADATA +102 -0
  636. zepben_ewb-1.0.0b1.dist-info/RECORD +639 -0
  637. zepben_ewb-1.0.0b1.dist-info/WHEEL +5 -0
  638. zepben_ewb-1.0.0b1.dist-info/licenses/LICENSE +374 -0
  639. zepben_ewb-1.0.0b1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,85 @@
1
+ # Copyright 2025 Zeppelin Bend Pty Ltd
2
+ # This Source Code Form is subject to the terms of the Mozilla Public
3
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ # file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
+
6
+ __all__ = ['WeightedPriorityQueue']
7
+
8
+ from collections import defaultdict
9
+ from typing import TypeVar, Callable, Iterable
10
+
11
+ from zepben.ewb.services.network.tracing.traversal.queue import TraversalQueue
12
+ from zepben.ewb.services.network.tracing.traversal.traversal import Traversal
13
+
14
+ T = TypeVar('T')
15
+ U = TypeVar('U')
16
+
17
+
18
+ class SortedDefaultDict(defaultdict):
19
+ def keys(self):
20
+ return sorted(super().keys())
21
+
22
+ def items(self):
23
+ return sorted(super().items())
24
+
25
+
26
+ class WeightedPriorityQueue(TraversalQueue[T]):
27
+ """
28
+ A traversal queue which uses a weighted order. The higher the weight, the higher the priority.
29
+
30
+ :param queue_provider: A queue provider. This allows you to customise the priority of items with the same weight.
31
+ :param get_weight: A method to extract the weight of an item being added to the queue.
32
+ """
33
+
34
+ def __init__(self, queue_provider: Callable[[], TraversalQueue[T]], get_weight: Callable[[T], int]):
35
+ self._queue_provider = queue_provider
36
+ self._get_weight = get_weight
37
+
38
+ self.queue: SortedDefaultDict[int, TraversalQueue[T]] = SortedDefaultDict(self._queue_provider)
39
+
40
+ def __len__(self) -> int:
41
+ """need to aggregate the lengths of all queues"""
42
+ return sum(len(v) for v in self.queue.values())
43
+
44
+ def pop(self):
45
+ for weight in reversed(self.queue.keys()):
46
+ if self.queue[weight].has_next():
47
+ return self.queue[weight].pop()
48
+
49
+ def append(self, item: T) -> bool:
50
+ weight = self._get_weight(item)
51
+ self.queue[weight].append(item)
52
+ return True
53
+
54
+ def extend(self, items: Iterable[T]) -> bool:
55
+ raise NotImplementedError()
56
+
57
+ @classmethod
58
+ def process_queue(cls, get_weight: Callable[[T], int]) -> TraversalQueue[T]:
59
+ """Special priority queue that queues items with the largest weight as the highest priority."""
60
+ return cls(TraversalQueue.depth_first, get_weight)
61
+
62
+ @classmethod
63
+ def branch_queue(cls, get_weight: Callable[[T], int]) -> TraversalQueue[T]:
64
+ """Special priority queue that queues branch items with the largest weight on the starting item as the highest priority"""
65
+
66
+ def condition(traversal: Traversal):
67
+ items = traversal.start_items
68
+ if len(items) == 0:
69
+ return -1
70
+ return get_weight(items[0]) or -1
71
+
72
+ return cls(TraversalQueue.breadth_first, condition)
73
+
74
+ def has_next(self) -> bool:
75
+ for weight in self.queue.keys():
76
+ _next = self.queue.get(weight)
77
+ if _next:
78
+ return True
79
+ return False
80
+
81
+ def peek(self) -> T:
82
+ raise Exception
83
+
84
+ def clear(self):
85
+ self.queue.clear()
@@ -0,0 +1,93 @@
1
+ # Copyright 2024 Zeppelin Bend Pty Ltd
2
+ # This Source Code Form is subject to the terms of the Mozilla Public
3
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ # file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
+
6
+ from __future__ import annotations
7
+
8
+ __all__ = ["normally_open", "currently_open", "ignore_open", "phase_log"]
9
+
10
+ import logging
11
+ from typing import Optional
12
+
13
+ from zepben.ewb.model.cim.iec61970.base.core.conducting_equipment import ConductingEquipment
14
+ from zepben.ewb.model.cim.iec61970.base.wires.single_phase_kind import SinglePhaseKind
15
+ from zepben.ewb.model.cim.iec61970.base.wires.switch import Switch
16
+ from zepben.ewb.services.network.tracing.traversal.traversal import Traversal
17
+ phase_logger = logging.getLogger("phase_logger")
18
+ tracing_logger = logging.getLogger("queue_next")
19
+
20
+
21
+ def normally_open(equip: ConductingEquipment, phase: Optional[SinglePhaseKind] = None) -> bool:
22
+ """
23
+ Test if a given phase on an equipment is normally open.
24
+ `equip` The equipment to test
25
+ `phase` The Phase to test. If None tests all phases.
26
+ Returns True if the equipment is open (de-energised), False otherwise
27
+ """
28
+ if isinstance(equip, Switch):
29
+ # noinspection PyUnresolvedReferences
30
+ return not equip.normally_in_service or equip.is_normally_open(phase)
31
+ else:
32
+ return not equip.normally_in_service
33
+
34
+
35
+ def currently_open(equip: ConductingEquipment, phase: Optional[SinglePhaseKind] = None) -> bool:
36
+ """
37
+ Test if a given phase on an equipment is open.
38
+ `equip` The equipment to test
39
+ `phase` The phase to test. If None tests all phases.
40
+ Returns True if the equipment is open (de-energised), False otherwise
41
+ """
42
+ if isinstance(equip, Switch):
43
+ # noinspection PyUnresolvedReferences
44
+ return not equip.in_service or equip.is_open(phase)
45
+ else:
46
+ return not equip.in_service
47
+
48
+
49
+ def ignore_open(_ce: ConductingEquipment, _phase: Optional[SinglePhaseKind] = None) -> bool:
50
+ """
51
+ Test that always returns that the phase is closed.
52
+ `equip` The equipment to test
53
+ `phase` The phase to test. If None tests all cores.
54
+ Returns False
55
+ """
56
+ return False
57
+
58
+
59
+ async def phase_log(cond_equip):
60
+ msg = ""
61
+ try:
62
+ for e in cond_equip:
63
+ msg = await _phase_log_trace(e)
64
+ except:
65
+ msg = await _phase_log_trace(cond_equip)
66
+ phase_logger.debug(msg)
67
+
68
+
69
+ async def _phase_log_trace(cond_equip):
70
+ log_msg = []
71
+
72
+ async def log(e, exc):
73
+ equip_msgs = []
74
+ for term in e.terminals:
75
+ e_msg = f"{e.mrid}-T{term.sequence_number}:"
76
+ for n in term.phases.single_phases:
77
+ ps_n = normal_phases(term, n)
78
+ phase_n_msg = f"n: {ps_n.phase().short_name}:{ps_n.direction().short_name}"
79
+ ps_c = current_phases(term, n)
80
+ phase_c_msg = f"c: {ps_c.phase().short_name}:{ps_c.direction().short_name}"
81
+ e_msg = f"{e_msg} {{core {n}: {phase_n_msg} {phase_c_msg}}}"
82
+ equip_msgs.append(e_msg)
83
+ log_msg.append(equip_msgs)
84
+
85
+ trace = Traversal(queue_next=queue_next_equipment, start_item=cond_equip, step_actions=[log])
86
+ await trace.run()
87
+ return "\n".join([", ".join(x) for x in log_msg])
88
+
89
+
90
+ def queue_next_equipment(item, traversal):
91
+ connected_equips = item.get_connected_equipment()
92
+ tracing_logger.debug(f"Queuing connections [{', '.join(e.mrid for e in connected_equips)}] from {item.mrid}")
93
+ return traversal.process_queue.extend(connected_equips)
@@ -0,0 +1,392 @@
1
+ # Copyright 2024 Zeppelin Bend Pty Ltd
2
+ # This Source Code Form is subject to the terms of the Mozilla Public
3
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ # file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
+
6
+ __all__ = []
7
+
8
+ from zepben.protobuf.cim.extensions.iec61968.assetinfo.RelayInfo_pb2 import RelayInfo
9
+ from zepben.protobuf.cim.extensions.iec61968.metering.PanDemandResponseFunction_pb2 import PanDemandResponseFunction
10
+ from zepben.protobuf.cim.extensions.iec61970.base.core.Site_pb2 import Site
11
+ from zepben.protobuf.cim.extensions.iec61970.base.feeder.Loop_pb2 import Loop
12
+ from zepben.protobuf.cim.extensions.iec61970.base.feeder.LvFeeder_pb2 import LvFeeder
13
+ from zepben.protobuf.cim.extensions.iec61970.base.generation.production.EvChargingUnit_pb2 import EvChargingUnit
14
+ from zepben.protobuf.cim.extensions.iec61970.base.protection.DistanceRelay_pb2 import DistanceRelay
15
+ from zepben.protobuf.cim.extensions.iec61970.base.protection.ProtectionRelayFunction_pb2 import ProtectionRelayFunction
16
+ from zepben.protobuf.cim.extensions.iec61970.base.protection.ProtectionRelayScheme_pb2 import ProtectionRelayScheme
17
+ from zepben.protobuf.cim.extensions.iec61970.base.protection.ProtectionRelaySystem_pb2 import ProtectionRelaySystem
18
+ from zepben.protobuf.cim.extensions.iec61970.base.protection.VoltageRelay_pb2 import VoltageRelay
19
+ from zepben.protobuf.cim.extensions.iec61970.base.wires.BatteryControl_pb2 import BatteryControl
20
+ from zepben.protobuf.cim.iec61968.assetinfo.CableInfo_pb2 import CableInfo
21
+ from zepben.protobuf.cim.iec61968.assetinfo.NoLoadTest_pb2 import NoLoadTest
22
+ from zepben.protobuf.cim.iec61968.assetinfo.OpenCircuitTest_pb2 import OpenCircuitTest
23
+ from zepben.protobuf.cim.iec61968.assetinfo.OverheadWireInfo_pb2 import OverheadWireInfo
24
+ from zepben.protobuf.cim.iec61968.assetinfo.PowerTransformerInfo_pb2 import PowerTransformerInfo
25
+ from zepben.protobuf.cim.iec61968.assetinfo.ShortCircuitTest_pb2 import ShortCircuitTest
26
+ from zepben.protobuf.cim.iec61968.assetinfo.ShuntCompensatorInfo_pb2 import ShuntCompensatorInfo
27
+ from zepben.protobuf.cim.iec61968.assetinfo.SwitchInfo_pb2 import SwitchInfo
28
+ from zepben.protobuf.cim.iec61968.assetinfo.TransformerEndInfo_pb2 import TransformerEndInfo
29
+ from zepben.protobuf.cim.iec61968.assetinfo.TransformerTankInfo_pb2 import TransformerTankInfo
30
+ from zepben.protobuf.cim.iec61968.assetinfo.TransformerTest_pb2 import TransformerTest
31
+ from zepben.protobuf.cim.iec61968.assetinfo.WireInfo_pb2 import WireInfo
32
+ from zepben.protobuf.cim.iec61968.assets.AssetContainer_pb2 import AssetContainer
33
+ from zepben.protobuf.cim.iec61968.assets.AssetFunction_pb2 import AssetFunction
34
+ from zepben.protobuf.cim.iec61968.assets.AssetInfo_pb2 import AssetInfo
35
+ from zepben.protobuf.cim.iec61968.assets.AssetOrganisationRole_pb2 import AssetOrganisationRole
36
+ from zepben.protobuf.cim.iec61968.assets.AssetOwner_pb2 import AssetOwner
37
+ from zepben.protobuf.cim.iec61968.assets.Asset_pb2 import Asset
38
+ from zepben.protobuf.cim.iec61968.assets.Streetlight_pb2 import Streetlight
39
+ from zepben.protobuf.cim.iec61968.assets.Structure_pb2 import Structure
40
+ from zepben.protobuf.cim.iec61968.common.Document_pb2 import Document
41
+ from zepben.protobuf.cim.iec61968.common.Location_pb2 import Location
42
+ from zepben.protobuf.cim.iec61968.customers.CustomerAgreement_pb2 import CustomerAgreement
43
+ from zepben.protobuf.cim.iec61968.customers.Customer_pb2 import Customer
44
+ from zepben.protobuf.cim.iec61968.customers.PricingStructure_pb2 import PricingStructure
45
+ from zepben.protobuf.cim.iec61968.customers.Tariff_pb2 import Tariff
46
+ from zepben.protobuf.cim.iec61968.infiec61968.infassetinfo.CurrentTransformerInfo_pb2 import CurrentTransformerInfo
47
+ from zepben.protobuf.cim.iec61968.infiec61968.infassetinfo.PotentialTransformerInfo_pb2 import PotentialTransformerInfo
48
+ from zepben.protobuf.cim.iec61968.infiec61968.infassets.Pole_pb2 import Pole
49
+ from zepben.protobuf.cim.iec61968.metering.EndDeviceFunction_pb2 import EndDeviceFunction
50
+ from zepben.protobuf.cim.iec61968.metering.EndDevice_pb2 import EndDevice
51
+ from zepben.protobuf.cim.iec61968.metering.Meter_pb2 import Meter
52
+ from zepben.protobuf.cim.iec61968.metering.UsagePoint_pb2 import UsagePoint
53
+ from zepben.protobuf.cim.iec61968.operations.OperationalRestriction_pb2 import OperationalRestriction
54
+ from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.AuxiliaryEquipment_pb2 import AuxiliaryEquipment
55
+ from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.CurrentTransformer_pb2 import CurrentTransformer
56
+ from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.FaultIndicator_pb2 import FaultIndicator
57
+ from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.PotentialTransformer_pb2 import PotentialTransformer
58
+ from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.Sensor_pb2 import Sensor
59
+ from zepben.protobuf.cim.iec61970.base.core.AcDcTerminal_pb2 import AcDcTerminal
60
+ from zepben.protobuf.cim.iec61970.base.core.BaseVoltage_pb2 import BaseVoltage
61
+ from zepben.protobuf.cim.iec61970.base.core.ConductingEquipment_pb2 import ConductingEquipment
62
+ from zepben.protobuf.cim.iec61970.base.core.ConnectivityNodeContainer_pb2 import ConnectivityNodeContainer
63
+ from zepben.protobuf.cim.iec61970.base.core.ConnectivityNode_pb2 import ConnectivityNode
64
+ from zepben.protobuf.cim.iec61970.base.core.Curve_pb2 import Curve
65
+ from zepben.protobuf.cim.iec61970.base.core.EquipmentContainer_pb2 import EquipmentContainer
66
+ from zepben.protobuf.cim.iec61970.base.core.Equipment_pb2 import Equipment
67
+ from zepben.protobuf.cim.iec61970.base.core.Feeder_pb2 import Feeder
68
+ from zepben.protobuf.cim.iec61970.base.core.GeographicalRegion_pb2 import GeographicalRegion
69
+ from zepben.protobuf.cim.iec61970.base.core.IdentifiedObject_pb2 import IdentifiedObject
70
+ from zepben.protobuf.cim.iec61970.base.core.PowerSystemResource_pb2 import PowerSystemResource
71
+ from zepben.protobuf.cim.iec61970.base.core.SubGeographicalRegion_pb2 import SubGeographicalRegion
72
+ from zepben.protobuf.cim.iec61970.base.core.Substation_pb2 import Substation
73
+ from zepben.protobuf.cim.iec61970.base.core.Terminal_pb2 import Terminal
74
+ from zepben.protobuf.cim.iec61970.base.diagramlayout.DiagramObject_pb2 import DiagramObject
75
+ from zepben.protobuf.cim.iec61970.base.diagramlayout.Diagram_pb2 import Diagram
76
+ from zepben.protobuf.cim.iec61970.base.equivalents.EquivalentBranch_pb2 import EquivalentBranch
77
+ from zepben.protobuf.cim.iec61970.base.equivalents.EquivalentEquipment_pb2 import EquivalentEquipment
78
+ from zepben.protobuf.cim.iec61970.base.generation.production.BatteryUnit_pb2 import BatteryUnit
79
+ from zepben.protobuf.cim.iec61970.base.generation.production.PhotoVoltaicUnit_pb2 import PhotoVoltaicUnit
80
+ from zepben.protobuf.cim.iec61970.base.generation.production.PowerElectronicsUnit_pb2 import PowerElectronicsUnit
81
+ from zepben.protobuf.cim.iec61970.base.generation.production.PowerElectronicsWindUnit_pb2 import PowerElectronicsWindUnit
82
+ from zepben.protobuf.cim.iec61970.base.meas.Accumulator_pb2 import Accumulator
83
+ from zepben.protobuf.cim.iec61970.base.meas.Analog_pb2 import Analog
84
+ from zepben.protobuf.cim.iec61970.base.meas.Control_pb2 import Control
85
+ from zepben.protobuf.cim.iec61970.base.meas.Discrete_pb2 import Discrete
86
+ from zepben.protobuf.cim.iec61970.base.meas.IoPoint_pb2 import IoPoint
87
+ from zepben.protobuf.cim.iec61970.base.meas.Measurement_pb2 import Measurement
88
+ from zepben.protobuf.cim.iec61970.base.protection.CurrentRelay_pb2 import CurrentRelay
89
+ from zepben.protobuf.cim.iec61970.base.scada.RemoteControl_pb2 import RemoteControl
90
+ from zepben.protobuf.cim.iec61970.base.scada.RemotePoint_pb2 import RemotePoint
91
+ from zepben.protobuf.cim.iec61970.base.scada.RemoteSource_pb2 import RemoteSource
92
+ from zepben.protobuf.cim.iec61970.base.wires.AcLineSegment_pb2 import AcLineSegment
93
+ from zepben.protobuf.cim.iec61970.base.wires.Breaker_pb2 import Breaker
94
+ from zepben.protobuf.cim.iec61970.base.wires.BusbarSection_pb2 import BusbarSection
95
+ from zepben.protobuf.cim.iec61970.base.wires.Clamp_pb2 import Clamp
96
+ from zepben.protobuf.cim.iec61970.base.wires.Conductor_pb2 import Conductor
97
+ from zepben.protobuf.cim.iec61970.base.wires.Connector_pb2 import Connector
98
+ from zepben.protobuf.cim.iec61970.base.wires.Cut_pb2 import Cut
99
+ from zepben.protobuf.cim.iec61970.base.wires.Disconnector_pb2 import Disconnector
100
+ from zepben.protobuf.cim.iec61970.base.wires.EarthFaultCompensator_pb2 import EarthFaultCompensator
101
+ from zepben.protobuf.cim.iec61970.base.wires.EnergyConnection_pb2 import EnergyConnection
102
+ from zepben.protobuf.cim.iec61970.base.wires.EnergyConsumerPhase_pb2 import EnergyConsumerPhase
103
+ from zepben.protobuf.cim.iec61970.base.wires.EnergyConsumer_pb2 import EnergyConsumer
104
+ from zepben.protobuf.cim.iec61970.base.wires.EnergySourcePhase_pb2 import EnergySourcePhase
105
+ from zepben.protobuf.cim.iec61970.base.wires.EnergySource_pb2 import EnergySource
106
+ from zepben.protobuf.cim.iec61970.base.wires.Fuse_pb2 import Fuse
107
+ from zepben.protobuf.cim.iec61970.base.wires.GroundDisconnector_pb2 import GroundDisconnector
108
+ from zepben.protobuf.cim.iec61970.base.wires.Ground_pb2 import Ground
109
+ from zepben.protobuf.cim.iec61970.base.wires.GroundingImpedance_pb2 import GroundingImpedance
110
+ from zepben.protobuf.cim.iec61970.base.wires.Jumper_pb2 import Jumper
111
+ from zepben.protobuf.cim.iec61970.base.wires.Junction_pb2 import Junction
112
+ from zepben.protobuf.cim.iec61970.base.wires.Line_pb2 import Line
113
+ from zepben.protobuf.cim.iec61970.base.wires.LinearShuntCompensator_pb2 import LinearShuntCompensator
114
+ from zepben.protobuf.cim.iec61970.base.wires.LoadBreakSwitch_pb2 import LoadBreakSwitch
115
+ from zepben.protobuf.cim.iec61970.base.wires.PerLengthImpedance_pb2 import PerLengthImpedance
116
+ from zepben.protobuf.cim.iec61970.base.wires.PerLengthLineParameter_pb2 import PerLengthLineParameter
117
+ from zepben.protobuf.cim.iec61970.base.wires.PerLengthPhaseImpedance_pb2 import PerLengthPhaseImpedance
118
+ from zepben.protobuf.cim.iec61970.base.wires.PerLengthSequenceImpedance_pb2 import PerLengthSequenceImpedance
119
+ from zepben.protobuf.cim.iec61970.base.wires.PetersenCoil_pb2 import PetersenCoil
120
+ from zepben.protobuf.cim.iec61970.base.wires.PowerElectronicsConnectionPhase_pb2 import PowerElectronicsConnectionPhase
121
+ from zepben.protobuf.cim.iec61970.base.wires.PowerElectronicsConnection_pb2 import PowerElectronicsConnection
122
+ from zepben.protobuf.cim.iec61970.base.wires.PowerTransformerEnd_pb2 import PowerTransformerEnd
123
+ from zepben.protobuf.cim.iec61970.base.wires.PowerTransformer_pb2 import PowerTransformer
124
+ from zepben.protobuf.cim.iec61970.base.wires.ProtectedSwitch_pb2 import ProtectedSwitch
125
+ from zepben.protobuf.cim.iec61970.base.wires.RatioTapChanger_pb2 import RatioTapChanger
126
+ from zepben.protobuf.cim.iec61970.base.wires.ReactiveCapabilityCurve_pb2 import ReactiveCapabilityCurve
127
+ from zepben.protobuf.cim.iec61970.base.wires.Recloser_pb2 import Recloser
128
+ from zepben.protobuf.cim.iec61970.base.wires.RegulatingCondEq_pb2 import RegulatingCondEq
129
+ from zepben.protobuf.cim.iec61970.base.wires.RegulatingControl_pb2 import RegulatingControl
130
+ from zepben.protobuf.cim.iec61970.base.wires.RotatingMachine_pb2 import RotatingMachine
131
+ from zepben.protobuf.cim.iec61970.base.wires.SeriesCompensator_pb2 import SeriesCompensator
132
+ from zepben.protobuf.cim.iec61970.base.wires.ShuntCompensator_pb2 import ShuntCompensator
133
+ from zepben.protobuf.cim.iec61970.base.wires.StaticVarCompensator_pb2 import StaticVarCompensator
134
+ from zepben.protobuf.cim.iec61970.base.wires.Switch_pb2 import Switch
135
+ from zepben.protobuf.cim.iec61970.base.wires.SynchronousMachine_pb2 import SynchronousMachine
136
+ from zepben.protobuf.cim.iec61970.base.wires.TapChangerControl_pb2 import TapChangerControl
137
+ from zepben.protobuf.cim.iec61970.base.wires.TapChanger_pb2 import TapChanger
138
+ from zepben.protobuf.cim.iec61970.base.wires.TransformerEnd_pb2 import TransformerEnd
139
+ from zepben.protobuf.cim.iec61970.base.wires.TransformerStarImpedance_pb2 import TransformerStarImpedance
140
+ from zepben.protobuf.cim.iec61970.infiec61970.feeder.Circuit_pb2 import Circuit
141
+
142
+ PanDemandResponseFunction.mrid = lambda self: self.edf.mrid()
143
+ BatteryControl.mrid = lambda self: self.rc.mrid()
144
+ CableInfo.mrid = lambda self: self.wi.mrid()
145
+ NoLoadTest.mrid = lambda self: self.tt.mrid()
146
+ OpenCircuitTest.mrid = lambda self: self.tt.mrid()
147
+ OverheadWireInfo.mrid = lambda self: self.wi.mrid()
148
+ PowerTransformerInfo.mrid = lambda self: self.ai.mrid()
149
+ ShortCircuitTest.mrid = lambda self: self.tt.mrid()
150
+ ShuntCompensatorInfo.mrid = lambda self: self.ai.mrid()
151
+ SwitchInfo.mrid = lambda self: self.ai.mrid()
152
+ TransformerEndInfo.mrid = lambda self: self.ai.mrid()
153
+ TransformerTankInfo.mrid = lambda self: self.ai.mrid()
154
+ TransformerTest.mrid = lambda self: self.io.mrid()
155
+ TransformerStarImpedance.mrid = lambda self: self.io.mrid()
156
+ WireInfo.mrid = lambda self: self.ai.mrid()
157
+ Asset.mrid = lambda self: self.io.mrid()
158
+ AssetContainer.mrid = lambda self: self.at.mrid()
159
+ AssetFunction.mrid = lambda self: self.io.mrid()
160
+ AssetInfo.mrid = lambda self: self.io.mrid()
161
+ AssetOrganisationRole.mrid = lambda self: getattr(self, "or").mrid()
162
+ AssetOwner.mrid = lambda self: self.aor.mrid()
163
+ Document.mrid = lambda self: self.io.mrid()
164
+ Pole.mrid = lambda self: self.st.mrid()
165
+ Streetlight.mrid = lambda self: self.at.mrid()
166
+ Structure.mrid = lambda self: self.ac.mrid()
167
+ Location.mrid = lambda self: self.io.mrid()
168
+ Customer.mrid = lambda self: getattr(self, "or").mrid()
169
+ CustomerAgreement.mrid = lambda self: self.agr.mrid()
170
+ PricingStructure.mrid = lambda self: self.doc.mrid()
171
+ Tariff.mrid = lambda self: self.doc.mrid()
172
+ RelayInfo.mrid = lambda self: self.ai.mrid()
173
+ CurrentTransformerInfo.mrid = lambda self: self.ai.mrid()
174
+ PotentialTransformerInfo.mrid = lambda self: self.ai.mrid()
175
+ EndDevice.mrid = lambda self: self.ac.mrid()
176
+ EndDeviceFunction.mrid = lambda self: self.af.mrid()
177
+ Meter.mrid = lambda self: self.ed.mrid()
178
+ UsagePoint.mrid = lambda self: self.io.mrid()
179
+ OperationalRestriction.mrid = lambda self: self.doc.mrid()
180
+ AuxiliaryEquipment.mrid = lambda self: self.eq.mrid()
181
+ CurrentTransformer.mrid = lambda self: self.sn.mrid()
182
+ FaultIndicator.mrid = lambda self: self.ae.mrid()
183
+ PotentialTransformer.mrid = lambda self: self.sn.mrid()
184
+ Sensor.mrid = lambda self: self.ae.mrid()
185
+ AcDcTerminal.mrid = lambda self: self.io.mrid()
186
+ BaseVoltage.mrid = lambda self: self.io.mrid()
187
+ ConductingEquipment.mrid = lambda self: self.eq.mrid()
188
+ ConnectivityNode.mrid = lambda self: self.io.mrid()
189
+ ConnectivityNodeContainer.mrid = lambda self: self.psr.mrid()
190
+ Curve.mrid = lambda self: self.io.mrid()
191
+ Equipment.mrid = lambda self: self.psr.mrid()
192
+ EquipmentContainer.mrid = lambda self: self.cnc.mrid()
193
+ Feeder.mrid = lambda self: self.ec.mrid()
194
+ GeographicalRegion.mrid = lambda self: self.io.mrid()
195
+ IdentifiedObject.mrid = lambda self: self.mRID
196
+ PowerSystemResource.mrid = lambda self: self.io.mrid()
197
+ Site.mrid = lambda self: self.ec.mrid()
198
+ SubGeographicalRegion.mrid = lambda self: self.io.mrid()
199
+ Substation.mrid = lambda self: self.ec.mrid()
200
+ Terminal.mrid = lambda self: self.ad.mrid()
201
+ Diagram.mrid = lambda self: self.io.mrid()
202
+ DiagramObject.mrid = lambda self: self.io.mrid()
203
+ EquivalentBranch.mrid = lambda self: self.ee.mrid()
204
+ EquivalentEquipment.mrid = lambda self: self.ce.mrid()
205
+ Accumulator.mrid = lambda self: self.measurement.mrid()
206
+ Analog.mrid = lambda self: self.measurement.mrid()
207
+ Discrete.mrid = lambda self: self.measurement.mrid()
208
+ Control.mrid = lambda self: self.ip.mrid()
209
+ IoPoint.mrid = lambda self: self.io.mrid()
210
+ Measurement.mrid = lambda self: self.io.mrid()
211
+ CurrentRelay.mrid = lambda self: self.prf.mrid()
212
+ DistanceRelay.mrid = lambda self: self.prf.mrid()
213
+ ProtectionRelayFunction.mrid = lambda self: self.psr.mrid()
214
+ ProtectionRelayScheme.mrid = lambda self: self.io.mrid()
215
+ ProtectionRelaySystem.mrid = lambda self: self.eq.mrid()
216
+ VoltageRelay.mrid = lambda self: self.prf.mrid()
217
+ RemoteControl.mrid = lambda self: self.rp.mrid()
218
+ RemotePoint.mrid = lambda self: self.io.mrid()
219
+ RemoteSource.mrid = lambda self: self.rp.mrid()
220
+ BatteryUnit.mrid = lambda self: self.peu.mrid()
221
+ PhotoVoltaicUnit.mrid = lambda self: self.peu.mrid()
222
+ PowerElectronicsUnit.mrid = lambda self: self.eq.mrid()
223
+ PowerElectronicsWindUnit.mrid = lambda self: self.peu.mrid()
224
+ AcLineSegment.mrid = lambda self: self.cd.mrid()
225
+ Breaker.mrid = lambda self: self.sw.mrid()
226
+ BusbarSection.mrid = lambda self: self.cn.mrid()
227
+ Clamp.mrid = lambda self: self.ce.mrid()
228
+ Conductor.mrid = lambda self: self.ce.mrid()
229
+ Connector.mrid = lambda self: self.ce.mrid()
230
+ Cut.mrid = lambda self: self.sw.mrid()
231
+ Disconnector.mrid = lambda self: self.sw.mrid()
232
+ EarthFaultCompensator.mrid = lambda self: self.ce.mrid()
233
+ EnergyConnection.mrid = lambda self: self.ce.mrid()
234
+ EnergyConsumer.mrid = lambda self: self.ec.mrid()
235
+ EnergyConsumerPhase.mrid = lambda self: self.psr.mrid()
236
+ EnergySource.mrid = lambda self: self.ec.mrid()
237
+ EnergySourcePhase.mrid = lambda self: self.psr.mrid()
238
+ Fuse.mrid = lambda self: self.sw.mrid()
239
+ Ground.mrid = lambda self: self.ce.mrid()
240
+ GroundDisconnector.mrid = lambda self: self.sw.mrid()
241
+ GroundingImpedance.mrid = lambda self: self.efc.mrid()
242
+ Jumper.mrid = lambda self: self.sw.mrid()
243
+ Junction.mrid = lambda self: self.cn.mrid()
244
+ Line.mrid = lambda self: self.ec.mrid()
245
+ LinearShuntCompensator.mrid = lambda self: self.sc.mrid()
246
+ LoadBreakSwitch.mrid = lambda self: self.ps.mrid()
247
+ PerLengthImpedance.mrid = lambda self: self.lp.mrid()
248
+ PerLengthLineParameter.mrid = lambda self: self.io.mrid()
249
+ PerLengthPhaseImpedance.mrid = lambda self: self.pli.mrid()
250
+ PerLengthSequenceImpedance.mrid = lambda self: self.pli.mrid()
251
+ PetersenCoil.mrid = lambda self: self.efc.mrid()
252
+ PowerTransformer.mrid = lambda self: self.ce.mrid()
253
+ PowerElectronicsConnection.mrid = lambda self: self.rce.mrid()
254
+ PowerElectronicsConnectionPhase.mrid = lambda self: self.psr.mrid()
255
+ PowerTransformerEnd.mrid = lambda self: self.te.mrid()
256
+ ProtectedSwitch.mrid = lambda self: self.sw.mrid()
257
+ RatioTapChanger.mrid = lambda self: self.tc.mrid()
258
+ ReactiveCapabilityCurve.mrid = lambda self: self.c.mrid()
259
+ Recloser.mrid = lambda self: self.sw.mrid()
260
+ RegulatingCondEq.mrid = lambda self: self.ec.mrid()
261
+ RegulatingControl.mrid = lambda self: self.psr.mrid()
262
+ RotatingMachine.mrid = lambda self: self.rce.mrid()
263
+ SeriesCompensator.mrid = lambda self: self.ce.mrid()
264
+ ShuntCompensator.mrid = lambda self: self.rce.mrid()
265
+ StaticVarCompensator.mrid = lambda self: self.rce.mrid()
266
+ Switch.mrid = lambda self: self.ce.mrid()
267
+ SynchronousMachine.mrid = lambda self: self.rm.mrid()
268
+ TapChanger.mrid = lambda self: self.psr.mrid()
269
+ TapChangerControl.mrid = lambda self: self.rc.mrid()
270
+ TransformerEnd.mrid = lambda self: self.io.mrid()
271
+ Loop.mrid = lambda self: self.io.mrid()
272
+ Circuit.mrid = lambda self: self.l.mrid()
273
+ LvFeeder.mrid = lambda self: self.ec.mrid()
274
+ EvChargingUnit.mrid = lambda self: self.peu.mrid()
275
+
276
+ PowerSystemResource.name_and_mrid = lambda self: self.io.name_and_mrid()
277
+ ConductingEquipment.name_and_mrid = lambda self: self.eq.name_and_mrid()
278
+ Equipment.name_and_mrid = lambda self: self.psr.name_and_mrid()
279
+ ConnectivityNodeContainer.name_and_mrid = lambda self: self.psr.name_and_mrid()
280
+ EquipmentContainer.name_and_mrid = lambda self: self.cnc.name_and_mrid()
281
+ Feeder.name_and_mrid = lambda self: self.ec.name_and_mrid()
282
+ EnergyConsumerPhase.name_and_mrid = lambda self: self.psr.name_and_mrid()
283
+ EnergySourcePhase.name_and_mrid = lambda self: self.psr.name_and_mrid()
284
+ PowerTransformerEnd.name_and_mrid = lambda self: self.te.name_and_mrid()
285
+ AcDcTerminal.name_and_mrid = lambda self: self.io.name_and_mrid()
286
+ TransformerEnd.name_and_mrid = lambda self: self.io.name_and_mrid()
287
+ Terminal.name_and_mrid = lambda self: self.ad.name_and_mrid()
288
+ PowerTransformerInfo.name_and_mrid = lambda self: self.ce.eq.psr.io.name_and_mrid()
289
+
290
+ # location_mrid
291
+ PowerSystemResource.location_mrid = lambda self: getattr(self, "locationMRID", None)
292
+ Equipment.location_mrid = lambda self: self.psr.location_mrid()
293
+ AuxiliaryEquipment.location_mrid = lambda self: self.eq.location_mrid()
294
+ FaultIndicator.location_mrid = lambda self: self.ae.location_mrid()
295
+ ConductingEquipment.location_mrid = lambda self: self.eq.location_mrid()
296
+ Conductor.location_mrid = lambda self: self.ce.location_mrid()
297
+ Connector.location_mrid = lambda self: self.ce.location_mrid()
298
+ EnergyConnection.location_mrid = lambda self: self.ce.location_mrid()
299
+ PowerTransformer.location_mrid = lambda self: self.ce.location_mrid()
300
+ Switch.location_mrid = lambda self: self.ce.location_mrid()
301
+ AcLineSegment.location_mrid = lambda self: self.cd.location_mrid()
302
+ Junction.location_mrid = lambda self: self.cn.location_mrid()
303
+ EnergyConsumer.location_mrid = lambda self: self.ec.location_mrid()
304
+ EnergySource.location_mrid = lambda self: self.ec.location_mrid()
305
+ RegulatingCondEq.location_mrid = lambda self: self.ec.location_mrid()
306
+ Disconnector.location_mrid = lambda self: self.sw.location_mrid()
307
+ Fuse.location_mrid = lambda self: self.sw.location_mrid()
308
+ Jumper.location_mrid = lambda self: self.sw.location_mrid()
309
+ ProtectedSwitch.location_mrid = lambda self: self.sw.location_mrid()
310
+ ShuntCompensator.location_mrid = lambda self: self.rce.location_mrid()
311
+ Breaker.location_mrid = lambda self: self.sw.location_mrid()
312
+ Recloser.location_mrid = lambda self: self.sw.location_mrid()
313
+ LinearShuntCompensator.location_mrid = lambda self: self.sc.location_mrid()
314
+
315
+ # service_location_mrid
316
+ EndDevice.service_location_mrid = lambda self: getattr(self, "serviceLocationMRID", None)
317
+ Meter.service_location_mrid = lambda self: self.ed.service_location_mrid()
318
+
319
+ # usage_point_location_mrid
320
+ UsagePoint.usage_point_location_mrid = lambda self: getattr(self, "usagePointLocationMRID", None)
321
+
322
+ # terminal_mrid
323
+ AuxiliaryEquipment.terminal_mrid = lambda self: getattr(self, "terminalMRID", None)
324
+ FaultIndicator.terminal_mrid = lambda self: self.ae.terminal_mrid()
325
+
326
+ # terminal_mrids
327
+ ConductingEquipment.terminal_mrids = lambda self: getattr(self, "terminalMRIDs", [])
328
+ Conductor.terminal_mrids = lambda self: self.ce.terminal_mrids()
329
+ Connector.terminal_mrids = lambda self: self.ce.terminal_mrids()
330
+ EnergyConnection.terminal_mrids = lambda self: self.ce.terminal_mrids()
331
+ PowerTransformer.terminal_mrids = lambda self: self.ce.terminal_mrids()
332
+ Switch.terminal_mrids = lambda self: self.ce.terminal_mrids()
333
+ AcLineSegment.terminal_mrids = lambda self: self.cd.terminal_mrids()
334
+ Junction.terminal_mrids = lambda self: self.cn.terminal_mrids()
335
+ EnergyConsumer.terminal_mrids = lambda self: self.ec.terminal_mrids()
336
+ EnergySource.terminal_mrids = lambda self: self.ec.terminal_mrids()
337
+ RegulatingCondEq.terminal_mrids = lambda self: self.ec.terminal_mrids()
338
+ Disconnector.terminal_mrids = lambda self: self.sw.terminal_mrids()
339
+ Fuse.terminal_mrids = lambda self: self.sw.terminal_mrids()
340
+ Jumper.terminal_mrids = lambda self: self.sw.terminal_mrids()
341
+ ProtectedSwitch.terminal_mrids = lambda self: self.sw.terminal_mrids()
342
+ ShuntCompensator.terminal_mrids = lambda self: self.rce.terminal_mrids()
343
+ Breaker.terminal_mrids = lambda self: self.sw.terminal_mrids()
344
+ Recloser.terminal_mrids = lambda self: self.sw.terminal_mrids()
345
+ LinearShuntCompensator.terminal_mrids = lambda self: self.sc.terminal_mrids()
346
+
347
+ # base_voltage_mrid
348
+ ConductingEquipment.base_voltage_mrid = lambda self: getattr(self, "baseVoltageMRID", None)
349
+ Conductor.base_voltage_mrid = lambda self: self.ce.base_voltage_mrid()
350
+ Connector.base_voltage_mrid = lambda self: self.ce.base_voltage_mrid()
351
+ EnergyConnection.base_voltage_mrid = lambda self: self.ce.base_voltage_mrid()
352
+ PowerTransformer.base_voltage_mrid = lambda self: self.ce.base_voltage_mrid()
353
+ Switch.base_voltage_mrid = lambda self: self.ce.base_voltage_mrid()
354
+ AcLineSegment.base_voltage_mrid = lambda self: self.cd.base_voltage_mrid()
355
+ Junction.base_voltage_mrid = lambda self: self.cn.base_voltage_mrid()
356
+ EnergyConsumer.base_voltage_mrid = lambda self: self.ec.base_voltage_mrid()
357
+ EnergySource.base_voltage_mrid = lambda self: self.ec.base_voltage_mrid()
358
+ RegulatingCondEq.base_voltage_mrid = lambda self: self.ec.base_voltage_mrid()
359
+ Disconnector.base_voltage_mrid = lambda self: self.sw.base_voltage_mrid()
360
+ Fuse.base_voltage_mrid = lambda self: self.sw.base_voltage_mrid()
361
+ Jumper.base_voltage_mrid = lambda self: self.sw.base_voltage_mrid()
362
+ ProtectedSwitch.base_voltage_mrid = lambda self: self.sw.base_voltage_mrid()
363
+ ShuntCompensator.base_voltage_mrid = lambda self: self.rce.base_voltage_mrid()
364
+ Breaker.base_voltage_mrid = lambda self: self.sw.base_voltage_mrid()
365
+ Recloser.base_voltage_mrid = lambda self: self.sw.base_voltage_mrid()
366
+ LinearShuntCompensator.base_voltage_mrid = lambda self: self.sc.base_voltage_mrid()
367
+
368
+ # normal_energizing_substation_mrid
369
+ Feeder.normal_energizing_substation_mrid = lambda self: getattr(self, "normalEnergizingSubstationMRID", None)
370
+
371
+ # per_length_impedance_mrid
372
+ AcLineSegment.per_length_impedance_mrid = lambda self: getattr(self, "perLengthImpedanceMRID", None)
373
+ AcLineSegment.per_length_phase_impedance_mrid = lambda self: self.pli.per_length_impedance_mrid()
374
+ AcLineSegment.per_length_sequence_impedance_mrid = lambda self: self.pli.per_length_impedance_mrid()
375
+
376
+ # asset_info_mrid
377
+ CurrentRelay.asset_info_mrid = lambda self: self.prf.asset_info_mrid
378
+ ConductingEquipment.asset_info_mrid = lambda self: self.eq.asset_info_mrid()
379
+ Conductor.asset_info_mrid = lambda self: self.ce.asset_info_mrid()
380
+ CurrentTransformer.asset_info_mrid = lambda self: self.sn.ae.eq.asset_info_mrid()
381
+ DistanceRelay.asset_info_mrid = lambda self: self.prf.asset_info_mrid
382
+ Equipment.asset_info_mrid = lambda self: self.psr.assetInfoMRID
383
+ PotentialTransformer.asset_info_mrid = lambda self: self.sn.ae.eq.asset_info_mrid()
384
+ PowerTransformer.asset_info_mrid = lambda self: self.ce.asset_info_mrid()
385
+ ProtectionRelayFunction.asset_info_mrid = lambda self: self.psr.assetInfoMRID
386
+ ShuntCompensator.asset_info_mrid = lambda self: self.rce.ec.ce.asset_info_mrid()
387
+ Switch.asset_info_mrid = lambda self: self.ce.asset_info_mrid()
388
+ VoltageRelay.asset_info_mrid = lambda self: self.prf.asset_info_mrid
389
+
390
+ # ratio_tap_changer_mrid
391
+ TransformerEnd.ratio_tap_changer_mrid = lambda self: getattr(self, "ratioTapChangerMRID", None)
392
+ PowerTransformerEnd.ratio_tap_changer_mrid = lambda self: self.te.ratio_tap_changer_mrid()