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,265 @@
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__ = ["NetworkServiceReader"]
7
+
8
+ from sqlite3 import Connection
9
+
10
+ from zepben.ewb.database.sqlite.common.base_service_reader import BaseServiceReader
11
+ from zepben.ewb.database.sqlite.network.network_cim_reader import NetworkCimReader
12
+ from zepben.ewb.database.sqlite.network.network_database_tables import NetworkDatabaseTables
13
+ from zepben.ewb.database.sqlite.tables.associations.table_asset_organisation_roles_assets import TableAssetOrganisationRolesAssets
14
+ from zepben.ewb.database.sqlite.tables.associations.table_assets_power_system_resources import TableAssetsPowerSystemResources
15
+ from zepben.ewb.database.sqlite.tables.associations.table_battery_units_battery_controls import TableBatteryUnitsBatteryControls
16
+ from zepben.ewb.database.sqlite.tables.associations.table_circuits_substations import TableCircuitsSubstations
17
+ from zepben.ewb.database.sqlite.tables.associations.table_circuits_terminals import TableCircuitsTerminals
18
+ from zepben.ewb.database.sqlite.tables.associations.table_end_devices_end_device_functions import TableEndDevicesEndDeviceFunctions
19
+ from zepben.ewb.database.sqlite.tables.associations.table_equipment_equipment_containers import TableEquipmentEquipmentContainers
20
+ from zepben.ewb.database.sqlite.tables.associations.table_equipment_operational_restrictions import TableEquipmentOperationalRestrictions
21
+ from zepben.ewb.database.sqlite.tables.associations.table_equipment_usage_points import TableEquipmentUsagePoints
22
+ from zepben.ewb.database.sqlite.tables.associations.table_loops_substations import TableLoopsSubstations
23
+ from zepben.ewb.database.sqlite.tables.associations.table_protection_relay_functions_protected_switches import TableProtectionRelayFunctionsProtectedSwitches
24
+ from zepben.ewb.database.sqlite.tables.associations.table_protection_relay_functions_sensors import TableProtectionRelayFunctionsSensors
25
+ from zepben.ewb.database.sqlite.tables.associations.table_protection_relay_schemes_protection_relay_functions import \
26
+ TableProtectionRelaySchemesProtectionRelayFunctions
27
+ from zepben.ewb.database.sqlite.tables.associations.table_synchronous_machines_reactive_capability_curves import \
28
+ TableSynchronousMachinesReactiveCapabilityCurves
29
+ from zepben.ewb.database.sqlite.tables.associations.table_usage_points_end_devices import TableUsagePointsEndDevices
30
+ from zepben.ewb.database.sqlite.tables.extensions.iec61968.assetinfo.table_reclose_delays import TableRecloseDelays
31
+ from zepben.ewb.database.sqlite.tables.extensions.iec61968.assetinfo.table_relay_info import TableRelayInfo
32
+ from zepben.ewb.database.sqlite.tables.extensions.iec61968.metering.table_pan_demand_response_functions import TablePanDemandResponseFunctions
33
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.core.table_sites import TableSites
34
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.feeder.table_loops import TableLoops
35
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.feeder.table_lv_feeders import TableLvFeeders
36
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.generation.production.table_ev_charging_units import TableEvChargingUnits
37
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.protection.table_distance_relays import TableDistanceRelays
38
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.protection.table_protection_relay_function_thresholds import \
39
+ TableProtectionRelayFunctionThresholds
40
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.protection.table_protection_relay_function_time_limits import \
41
+ TableProtectionRelayFunctionTimeLimits
42
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.protection.table_protection_relay_schemes import TableProtectionRelaySchemes
43
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.protection.table_protection_relay_systems import TableProtectionRelaySystems
44
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.protection.table_voltage_relays import TableVoltageRelays
45
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.wires.table_battery_controls import TableBatteryControls
46
+ from zepben.ewb.database.sqlite.tables.extensions.iec61970.base.wires.table_power_transformer_end_ratings import TablePowerTransformerEndRatings
47
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_cable_info import TableCableInfo
48
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_no_load_tests import TableNoLoadTests
49
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_open_circuit_tests import TableOpenCircuitTests
50
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_overhead_wire_info import TableOverheadWireInfo
51
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_power_transformer_info import TablePowerTransformerInfo
52
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_short_circuit_tests import TableShortCircuitTests
53
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_shunt_compensator_info import TableShuntCompensatorInfo
54
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_switch_info import TableSwitchInfo
55
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_transformer_end_info import TableTransformerEndInfo
56
+ from zepben.ewb.database.sqlite.tables.iec61968.assetinfo.table_transformer_tank_info import TableTransformerTankInfo
57
+ from zepben.ewb.database.sqlite.tables.iec61968.assets.table_asset_owners import TableAssetOwners
58
+ from zepben.ewb.database.sqlite.tables.iec61968.assets.table_streetlights import TableStreetlights
59
+ from zepben.ewb.database.sqlite.tables.iec61968.common.table_location_street_addresses import TableLocationStreetAddresses
60
+ from zepben.ewb.database.sqlite.tables.iec61968.common.table_locations import TableLocations
61
+ from zepben.ewb.database.sqlite.tables.iec61968.common.table_organisations import TableOrganisations
62
+ from zepben.ewb.database.sqlite.tables.iec61968.common.table_position_points import TablePositionPoints
63
+ from zepben.ewb.database.sqlite.tables.iec61968.infiec61968.infassetinfo.table_current_transformer_info import TableCurrentTransformerInfo
64
+ from zepben.ewb.database.sqlite.tables.iec61968.infiec61968.infassetinfo.table_potential_transformer_info import TablePotentialTransformerInfo
65
+ from zepben.ewb.database.sqlite.tables.iec61968.infiec61968.infassets.table_poles import TablePoles
66
+ from zepben.ewb.database.sqlite.tables.iec61968.metering.table_meters import TableMeters
67
+ from zepben.ewb.database.sqlite.tables.iec61968.metering.table_usage_points import TableUsagePoints
68
+ from zepben.ewb.database.sqlite.tables.iec61968.operations.table_operational_restrictions import TableOperationalRestrictions
69
+ from zepben.ewb.database.sqlite.tables.iec61970.base.auxiliaryequipment.table_current_transformers import TableCurrentTransformers
70
+ from zepben.ewb.database.sqlite.tables.iec61970.base.auxiliaryequipment.table_fault_indicators import TableFaultIndicators
71
+ from zepben.ewb.database.sqlite.tables.iec61970.base.auxiliaryequipment.table_potential_transformers import TablePotentialTransformers
72
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_base_voltages import TableBaseVoltages
73
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_connectivity_nodes import TableConnectivityNodes
74
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_curve_data import TableCurveData
75
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_feeders import TableFeeders
76
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_geographical_regions import TableGeographicalRegions
77
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_sub_geographical_regions import TableSubGeographicalRegions
78
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_substations import TableSubstations
79
+ from zepben.ewb.database.sqlite.tables.iec61970.base.core.table_terminals import TableTerminals
80
+ from zepben.ewb.database.sqlite.tables.iec61970.base.equivalents.table_equivalent_branches import TableEquivalentBranches
81
+ from zepben.ewb.database.sqlite.tables.iec61970.base.generation.production.table_battery_units import TableBatteryUnits
82
+ from zepben.ewb.database.sqlite.tables.iec61970.base.generation.production.table_photo_voltaic_units import TablePhotoVoltaicUnits
83
+ from zepben.ewb.database.sqlite.tables.iec61970.base.generation.production.table_power_electronics_wind_units import TablePowerElectronicsWindUnits
84
+ from zepben.ewb.database.sqlite.tables.iec61970.base.meas.table_accumulators import TableAccumulators
85
+ from zepben.ewb.database.sqlite.tables.iec61970.base.meas.table_analogs import TableAnalogs
86
+ from zepben.ewb.database.sqlite.tables.iec61970.base.meas.table_controls import TableControls
87
+ from zepben.ewb.database.sqlite.tables.iec61970.base.meas.table_discretes import TableDiscretes
88
+ from zepben.ewb.database.sqlite.tables.iec61970.base.protection.table_current_relays import TableCurrentRelays
89
+ from zepben.ewb.database.sqlite.tables.iec61970.base.scada.table_remote_controls import TableRemoteControls
90
+ from zepben.ewb.database.sqlite.tables.iec61970.base.scada.table_remote_sources import TableRemoteSources
91
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_ac_line_segments import TableAcLineSegments
92
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_breakers import TableBreakers
93
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_busbar_sections import TableBusbarSections
94
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_clamps import TableClamps
95
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_cuts import TableCuts
96
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_disconnectors import TableDisconnectors
97
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_energy_consumer_phases import TableEnergyConsumerPhases
98
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_energy_consumers import TableEnergyConsumers
99
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_energy_source_phases import TableEnergySourcePhases
100
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_energy_sources import TableEnergySources
101
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_fuses import TableFuses
102
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_ground_disconnectors import TableGroundDisconnectors
103
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_grounding_impedances import TableGroundingImpedances
104
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_grounds import TableGrounds
105
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_jumpers import TableJumpers
106
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_junctions import TableJunctions
107
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_linear_shunt_compensators import TableLinearShuntCompensators
108
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_load_break_switches import TableLoadBreakSwitches
109
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_per_length_phase_impedances import TablePerLengthPhaseImpedances
110
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_per_length_sequence_impedances import TablePerLengthSequenceImpedances
111
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_petersen_coils import TablePetersenCoils
112
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_phase_impedance_data import TablePhaseImpedanceData
113
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_power_electronics_connection_phases import TablePowerElectronicsConnectionPhases
114
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_power_electronics_connections import TablePowerElectronicsConnections
115
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_power_transformer_ends import TablePowerTransformerEnds
116
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_power_transformers import TablePowerTransformers
117
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_ratio_tap_changers import TableRatioTapChangers
118
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_reactive_capability_curves import TableReactiveCapabilityCurves
119
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_reclosers import TableReclosers
120
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_series_compensators import TableSeriesCompensators
121
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_static_var_compensator import TableStaticVarCompensators
122
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_synchronous_machines import TableSynchronousMachines
123
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_tap_changer_controls import TableTapChangerControls
124
+ from zepben.ewb.database.sqlite.tables.iec61970.base.wires.table_transformer_star_impedances import TableTransformerStarImpedances
125
+ from zepben.ewb.database.sqlite.tables.iec61970.infiec61970.feeder.table_circuits import TableCircuits
126
+ from zepben.ewb.services.network.network_service import NetworkService
127
+
128
+
129
+ class NetworkServiceReader(BaseServiceReader):
130
+ """
131
+ A class for reading a `NetworkService` from the database.
132
+
133
+ :param service: The `NetworkService` to populate from the database.
134
+ :param database_tables: The tables available in the database.
135
+ :param connection: A connection to the database.
136
+
137
+ :param reader: The `NetworkCimReader` used to load the objects from the database.
138
+ """
139
+
140
+ def __init__(
141
+ self,
142
+ service: NetworkService,
143
+ database_tables: NetworkDatabaseTables,
144
+ connection: Connection,
145
+ reader: NetworkCimReader = None
146
+ ):
147
+ reader = reader if reader else NetworkCimReader(service)
148
+ super().__init__(database_tables, connection, reader)
149
+
150
+ # This is not strictly necessary, it is just to update the type of the reader. It could be done with a generic
151
+ # on the base class which looks like it works, but that actually silently breaks code insight and completion
152
+ self._reader = reader
153
+
154
+ def _do_load(self) -> bool:
155
+ return all([
156
+ self._load_each(TableCableInfo, self._reader.load_cable_info),
157
+ self._load_each(TableOverheadWireInfo, self._reader.load_overhead_wire_info),
158
+ self._load_each(TablePowerTransformerInfo, self._reader.load_power_transformer_info),
159
+ self._load_each(TableTransformerTankInfo, self._reader.load_transformer_tank_info),
160
+ self._load_each(TableNoLoadTests, self._reader.load_no_load_test),
161
+ self._load_each(TableOpenCircuitTests, self._reader.load_open_circuit_test),
162
+ self._load_each(TableShortCircuitTests, self._reader.load_short_circuit_test),
163
+ self._load_each(TableShuntCompensatorInfo, self._reader.load_shunt_compensator_info),
164
+ self._load_each(TableSwitchInfo, self._reader.load_switch_info),
165
+ self._load_each(TableTransformerEndInfo, self._reader.load_transformer_end_info),
166
+ self._load_each(TableCurrentTransformerInfo, self._reader.load_current_transformer_info),
167
+ self._load_each(TablePotentialTransformerInfo, self._reader.load_potential_transformer_info),
168
+ self._load_each(TableRelayInfo, self._reader.load_relay_info),
169
+ self._load_each(TableRecloseDelays, self._reader.load_reclose_delay),
170
+ self._load_each(TableLocations, self._reader.load_location),
171
+ self._load_each(TableOrganisations, self._reader.load_organisations),
172
+ self._load_each(TableAssetOwners, self._reader.load_asset_owner),
173
+ self._load_each(TablePoles, self._reader.load_pole),
174
+ self._load_each(TableStreetlights, self._reader.load_streetlight),
175
+ self._load_each(TablePanDemandResponseFunctions, self._reader.load_pan_demand_response_function),
176
+ self._load_each(TableMeters, self._reader.load_meter),
177
+ self._load_each(TableEndDevicesEndDeviceFunctions, self._reader.load_end_devices_end_device_functions),
178
+ self._load_each(TableUsagePoints, self._reader.load_usage_point),
179
+ self._load_each(TableOperationalRestrictions, self._reader.load_operational_restriction),
180
+ self._load_each(TableBaseVoltages, self._reader.load_base_voltage),
181
+ self._load_each(TableConnectivityNodes, self._reader.load_connectivity_node),
182
+ self._load_each(TableGeographicalRegions, self._reader.load_geographical_region),
183
+ self._load_each(TableSubGeographicalRegions, self._reader.load_sub_geographical_region),
184
+ self._load_each(TableSubstations, self._reader.load_substation),
185
+ self._load_each(TableSites, self._reader.load_site),
186
+ self._load_each(TablePerLengthPhaseImpedances, self._reader.load_per_length_phase_impedance),
187
+ self._load_each(TablePhaseImpedanceData, self._reader.load_phase_impedance_data),
188
+ self._load_each(TablePerLengthSequenceImpedances, self._reader.load_per_length_sequence_impedance),
189
+ self._load_each(TableEquivalentBranches, self._reader.load_equivalent_branch),
190
+ self._load_each(TableAcLineSegments, self._reader.load_ac_line_segment),
191
+ self._load_each(TableBreakers, self._reader.load_breaker),
192
+ self._load_each(TableLoadBreakSwitches, self._reader.load_load_break_switch),
193
+ self._load_each(TableBusbarSections, self._reader.load_busbar_section),
194
+ self._load_each(TableClamps, self._reader.load_clamp),
195
+ self._load_each(TableCuts, self._reader.load_cut),
196
+ self._load_each(TableCurrentRelays, self._reader.load_current_relay),
197
+ self._load_each(TableDistanceRelays, self._reader.load_distance_relay),
198
+ self._load_each(TableVoltageRelays, self._reader.load_voltage_relay),
199
+ self._load_each(TableProtectionRelayFunctionThresholds, self._reader.load_protection_relay_function_threshold),
200
+ self._load_each(TableProtectionRelayFunctionTimeLimits, self._reader.load_protection_relay_function_time_limit),
201
+ self._load_each(TableProtectionRelaySystems, self._reader.load_protection_relay_system),
202
+ self._load_each(TableProtectionRelaySchemes, self._reader.load_protection_relay_scheme),
203
+ self._load_each(TableDisconnectors, self._reader.load_disconnector),
204
+ self._load_each(TableEnergyConsumers, self._reader.load_energy_consumer),
205
+ self._load_each(TableEnergyConsumerPhases, self._reader.load_energy_consumer_phase),
206
+ self._load_each(TableEnergySources, self._reader.load_energy_source),
207
+ self._load_each(TableEnergySourcePhases, self._reader.load_energy_source_phase),
208
+ self._load_each(TableFuses, self._reader.load_fuse),
209
+ self._load_each(TableJumpers, self._reader.load_jumper),
210
+ self._load_each(TableJunctions, self._reader.load_junction),
211
+ self._load_each(TableGrounds, self._reader.load_ground),
212
+ self._load_each(TableGroundDisconnectors, self._reader.load_ground_disconnector),
213
+ self._load_each(TableSeriesCompensators, self._reader.load_series_compensator),
214
+ self._load_each(TableStaticVarCompensators, self._reader.load_static_var_compensator),
215
+ self._load_each(TableLinearShuntCompensators, self._reader.load_linear_shunt_compensator),
216
+ self._load_each(TablePowerTransformers, self._reader.load_power_transformer),
217
+ self._load_each(TableReclosers, self._reader.load_recloser),
218
+ self._load_each(TablePowerElectronicsConnections, self._reader.load_power_electronics_connection),
219
+ self._load_each(TableReactiveCapabilityCurves, self._reader.load_reactive_capability_curve),
220
+ self._load_each(TableCurveData, self._reader.load_curve_data),
221
+ self._load_each(TablePetersenCoils, self._reader.load_petersen_coil),
222
+ self._load_each(TableGroundingImpedances, self._reader.load_grounding_impedance),
223
+ self._load_each(TableSynchronousMachines, self._reader.load_synchronous_machine),
224
+ self._load_each(TableTerminals, self._reader.load_terminal),
225
+ self._load_each(TableTapChangerControls, self._reader.load_tap_changer_control),
226
+ self._load_each(TablePowerElectronicsConnectionPhases, self._reader.load_power_electronics_connection_phase),
227
+ self._load_each(TableBatteryControls, self._reader.load_battery_controls),
228
+ self._load_each(TableBatteryUnits, self._reader.load_battery_unit),
229
+ self._load_each(TableBatteryUnitsBatteryControls, self._reader.load_battery_units_battery_controls),
230
+ self._load_each(TablePhotoVoltaicUnits, self._reader.load_photo_voltaic_unit),
231
+ self._load_each(TablePowerElectronicsWindUnits, self._reader.load_power_electronics_wind_unit),
232
+ self._load_each(TableEvChargingUnits, self._reader.load_ev_charging_unit),
233
+ self._load_each(TableTransformerStarImpedances, self._reader.load_transformer_star_impedance),
234
+ self._load_each(TablePowerTransformerEnds, self._reader.load_power_transformer_end),
235
+ self._load_each(TablePowerTransformerEndRatings, self._reader.load_power_transformer_end_rating),
236
+ self._load_each(TableRatioTapChangers, self._reader.load_ratio_tap_changer),
237
+ self._load_each(TableCurrentTransformers, self._reader.load_current_transformer),
238
+ self._load_each(TableFaultIndicators, self._reader.load_fault_indicator),
239
+ self._load_each(TablePotentialTransformers, self._reader.load_potential_transformer),
240
+ self._load_each(TableFeeders, self._reader.load_feeder),
241
+ self._load_each(TableLoops, self._reader.load_loop),
242
+ self._load_each(TableLvFeeders, self._reader.load_lv_feeder),
243
+ self._load_each(TableCircuits, self._reader.load_circuit),
244
+ self._load_each(TablePositionPoints, self._reader.load_position_point),
245
+ self._load_each(TableLocationStreetAddresses, self._reader.load_location_street_address),
246
+ self._load_each(TableAssetOrganisationRolesAssets, self._reader.load_asset_organisation_roles_asset),
247
+ self._load_each(TableAssetsPowerSystemResources, self._reader.load_asset_power_system_resources),
248
+ self._load_each(TableUsagePointsEndDevices, self._reader.load_usage_points_end_device),
249
+ self._load_each(TableEquipmentUsagePoints, self._reader.load_equipment_usage_point),
250
+ self._load_each(TableEquipmentOperationalRestrictions, self._reader.load_equipment_operational_restriction),
251
+ self._load_each(TableEquipmentEquipmentContainers, self._reader.load_equipment_equipment_container),
252
+ self._load_each(TableCircuitsSubstations, self._reader.load_circuits_substation),
253
+ self._load_each(TableCircuitsTerminals, self._reader.load_circuits_terminal),
254
+ self._load_each(TableLoopsSubstations, self._reader.load_loops_substation),
255
+ self._load_each(TableProtectionRelayFunctionsProtectedSwitches, self._reader.load_protection_relay_functions_protected_switch),
256
+ self._load_each(TableProtectionRelayFunctionsSensors, self._reader.load_protection_relay_functions_sensor),
257
+ self._load_each(TableProtectionRelaySchemesProtectionRelayFunctions, self._reader.load_protection_relay_schemes_protection_relay_function),
258
+ self._load_each(TableSynchronousMachinesReactiveCapabilityCurves, self._reader.load_synchronous_machines_reactive_capability_curve),
259
+ self._load_each(TableControls, self._reader.load_control),
260
+ self._load_each(TableRemoteControls, self._reader.load_remote_control),
261
+ self._load_each(TableRemoteSources, self._reader.load_remote_source),
262
+ self._load_each(TableAnalogs, self._reader.load_analog),
263
+ self._load_each(TableAccumulators, self._reader.load_accumulator),
264
+ self._load_each(TableDiscretes, self._reader.load_discrete),
265
+ ])
@@ -0,0 +1,209 @@
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__ = ["NetworkServiceWriter"]
7
+
8
+ from zepben.ewb.database.sqlite.common.base_service_writer import BaseServiceWriter
9
+ from zepben.ewb.database.sqlite.network.network_cim_writer import NetworkCimWriter
10
+ from zepben.ewb.database.sqlite.network.network_database_tables import NetworkDatabaseTables
11
+ from zepben.ewb.model.cim.extensions.iec61968.assetinfo.relay_info import RelayInfo
12
+ from zepben.ewb.model.cim.extensions.iec61968.metering.pan_demand_reponse_function import PanDemandResponseFunction
13
+ from zepben.ewb.model.cim.extensions.iec61970.base.core.site import Site
14
+ from zepben.ewb.model.cim.extensions.iec61970.base.feeder.loop import Loop
15
+ from zepben.ewb.model.cim.extensions.iec61970.base.feeder.lv_feeder import LvFeeder
16
+ from zepben.ewb.model.cim.extensions.iec61970.base.generation.production.ev_charging_unit import EvChargingUnit
17
+ from zepben.ewb.model.cim.extensions.iec61970.base.protection.distance_relay import DistanceRelay
18
+ from zepben.ewb.model.cim.extensions.iec61970.base.protection.protection_relay_scheme import ProtectionRelayScheme
19
+ from zepben.ewb.model.cim.extensions.iec61970.base.protection.protection_relay_system import ProtectionRelaySystem
20
+ from zepben.ewb.model.cim.extensions.iec61970.base.protection.voltage_relay import VoltageRelay
21
+ from zepben.ewb.model.cim.extensions.iec61970.base.wires.battery_control import BatteryControl
22
+ from zepben.ewb.model.cim.iec61968.assetinfo.cable_info import CableInfo
23
+ from zepben.ewb.model.cim.iec61968.assetinfo.no_load_test import NoLoadTest
24
+ from zepben.ewb.model.cim.iec61968.assetinfo.open_circuit_test import OpenCircuitTest
25
+ from zepben.ewb.model.cim.iec61968.assetinfo.overhead_wire_info import OverheadWireInfo
26
+ from zepben.ewb.model.cim.iec61968.assetinfo.power_transformer_info import PowerTransformerInfo
27
+ from zepben.ewb.model.cim.iec61968.assetinfo.short_circuit_test import ShortCircuitTest
28
+ from zepben.ewb.model.cim.iec61968.assetinfo.shunt_compensator_info import ShuntCompensatorInfo
29
+ from zepben.ewb.model.cim.iec61968.assetinfo.switch_info import SwitchInfo
30
+ from zepben.ewb.model.cim.iec61968.assetinfo.transformer_end_info import TransformerEndInfo
31
+ from zepben.ewb.model.cim.iec61968.assetinfo.transformer_tank_info import TransformerTankInfo
32
+ from zepben.ewb.model.cim.iec61968.assets.asset_owner import AssetOwner
33
+ from zepben.ewb.model.cim.iec61968.assets.streetlight import Streetlight
34
+ from zepben.ewb.model.cim.iec61968.common.location import Location
35
+ from zepben.ewb.model.cim.iec61968.common.organisation import Organisation
36
+ from zepben.ewb.model.cim.iec61968.infiec61968.infassetinfo.current_transformer_info import CurrentTransformerInfo
37
+ from zepben.ewb.model.cim.iec61968.infiec61968.infassetinfo.potential_transformer_info import PotentialTransformerInfo
38
+ from zepben.ewb.model.cim.iec61968.infiec61968.infassets.pole import Pole
39
+ from zepben.ewb.model.cim.iec61968.metering.meter import Meter
40
+ from zepben.ewb.model.cim.iec61968.metering.usage_point import UsagePoint
41
+ from zepben.ewb.model.cim.iec61968.operations.operational_restriction import OperationalRestriction
42
+ from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.current_transformer import CurrentTransformer
43
+ from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.fault_indicator import FaultIndicator
44
+ from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.potential_transformer import PotentialTransformer
45
+ from zepben.ewb.model.cim.iec61970.base.core.base_voltage import BaseVoltage
46
+ from zepben.ewb.model.cim.iec61970.base.core.connectivity_node import ConnectivityNode
47
+ from zepben.ewb.model.cim.iec61970.base.core.feeder import Feeder
48
+ from zepben.ewb.model.cim.iec61970.base.core.geographical_region import GeographicalRegion
49
+ from zepben.ewb.model.cim.iec61970.base.core.sub_geographical_region import SubGeographicalRegion
50
+ from zepben.ewb.model.cim.iec61970.base.core.substation import Substation
51
+ from zepben.ewb.model.cim.iec61970.base.core.terminal import Terminal
52
+ from zepben.ewb.model.cim.iec61970.base.equivalents.equivalent_branch import EquivalentBranch
53
+ from zepben.ewb.model.cim.iec61970.base.generation.production.battery_unit import BatteryUnit
54
+ from zepben.ewb.model.cim.iec61970.base.generation.production.photo_voltaic_unit import PhotoVoltaicUnit
55
+ from zepben.ewb.model.cim.iec61970.base.generation.production.power_electronics_wind_unit import PowerElectronicsWindUnit
56
+ from zepben.ewb.model.cim.iec61970.base.meas.accumulator import Accumulator
57
+ from zepben.ewb.model.cim.iec61970.base.meas.analog import Analog
58
+ from zepben.ewb.model.cim.iec61970.base.meas.control import Control
59
+ from zepben.ewb.model.cim.iec61970.base.meas.discrete import Discrete
60
+ from zepben.ewb.model.cim.iec61970.base.protection.current_relay import CurrentRelay
61
+ from zepben.ewb.model.cim.iec61970.base.scada.remote_control import RemoteControl
62
+ from zepben.ewb.model.cim.iec61970.base.scada.remote_source import RemoteSource
63
+ from zepben.ewb.model.cim.iec61970.base.wires.ac_line_segment import AcLineSegment
64
+ from zepben.ewb.model.cim.iec61970.base.wires.breaker import Breaker
65
+ from zepben.ewb.model.cim.iec61970.base.wires.busbar_section import BusbarSection
66
+ from zepben.ewb.model.cim.iec61970.base.wires.clamp import Clamp
67
+ from zepben.ewb.model.cim.iec61970.base.wires.cut import Cut
68
+ from zepben.ewb.model.cim.iec61970.base.wires.disconnector import Disconnector
69
+ from zepben.ewb.model.cim.iec61970.base.wires.energy_consumer import EnergyConsumer
70
+ from zepben.ewb.model.cim.iec61970.base.wires.energy_consumer_phase import EnergyConsumerPhase
71
+ from zepben.ewb.model.cim.iec61970.base.wires.energy_source import EnergySource
72
+ from zepben.ewb.model.cim.iec61970.base.wires.energy_source_phase import EnergySourcePhase
73
+ from zepben.ewb.model.cim.iec61970.base.wires.fuse import Fuse
74
+ from zepben.ewb.model.cim.iec61970.base.wires.ground import Ground
75
+ from zepben.ewb.model.cim.iec61970.base.wires.ground_disconnector import GroundDisconnector
76
+ from zepben.ewb.model.cim.iec61970.base.wires.grounding_impedance import GroundingImpedance
77
+ from zepben.ewb.model.cim.iec61970.base.wires.jumper import Jumper
78
+ from zepben.ewb.model.cim.iec61970.base.wires.junction import Junction
79
+ from zepben.ewb.model.cim.iec61970.base.wires.linear_shunt_compensator import LinearShuntCompensator
80
+ from zepben.ewb.model.cim.iec61970.base.wires.load_break_switch import LoadBreakSwitch
81
+ from zepben.ewb.model.cim.iec61970.base.wires.per_length_phase_impedance import PerLengthPhaseImpedance
82
+ from zepben.ewb.model.cim.iec61970.base.wires.per_length_sequence_impedance import PerLengthSequenceImpedance
83
+ from zepben.ewb.model.cim.iec61970.base.wires.petersen_coil import PetersenCoil
84
+ from zepben.ewb.model.cim.iec61970.base.wires.power_electronics_connection import PowerElectronicsConnection
85
+ from zepben.ewb.model.cim.iec61970.base.wires.power_electronics_connection_phase import PowerElectronicsConnectionPhase
86
+ from zepben.ewb.model.cim.iec61970.base.wires.power_transformer import PowerTransformer
87
+ from zepben.ewb.model.cim.iec61970.base.wires.power_transformer_end import PowerTransformerEnd
88
+ from zepben.ewb.model.cim.iec61970.base.wires.ratio_tap_changer import RatioTapChanger
89
+ from zepben.ewb.model.cim.iec61970.base.wires.reactive_capability_curve import ReactiveCapabilityCurve
90
+ from zepben.ewb.model.cim.iec61970.base.wires.recloser import Recloser
91
+ from zepben.ewb.model.cim.iec61970.base.wires.series_compensator import SeriesCompensator
92
+ from zepben.ewb.model.cim.iec61970.base.wires.static_var_compensator import StaticVarCompensator
93
+ from zepben.ewb.model.cim.iec61970.base.wires.synchronous_machine import SynchronousMachine
94
+ from zepben.ewb.model.cim.iec61970.base.wires.tap_changer_control import TapChangerControl
95
+ from zepben.ewb.model.cim.iec61970.base.wires.transformer_star_impedance import TransformerStarImpedance
96
+ from zepben.ewb.model.cim.iec61970.infiec61970.feeder.circuit import Circuit
97
+ from zepben.ewb.services.network.network_service import NetworkService
98
+
99
+
100
+ class NetworkServiceWriter(BaseServiceWriter):
101
+ """
102
+ A class for writing a `NetworkService` into the database.
103
+
104
+ :param service: The `NetworkService` to save to the database.
105
+ :param database_tables: The `NetworkDatabaseTables` to add to the database.
106
+ """
107
+
108
+ def __init__(
109
+ self,
110
+ service: NetworkService,
111
+ database_tables: NetworkDatabaseTables,
112
+ writer: NetworkCimWriter = None
113
+ ):
114
+ writer = writer if writer is not None else NetworkCimWriter(database_tables)
115
+ super().__init__(service, writer)
116
+
117
+ # This is not strictly necessary, it is just to update the type of the writer. It could be done with a generic
118
+ # on the base class which looks like it works, but that actually silently breaks code insight and completion
119
+ self._writer = writer
120
+
121
+ def _do_save(self) -> bool:
122
+ return all([
123
+ self._save_each_object(CableInfo, self._writer.save_cable_info),
124
+ self._save_each_object(OverheadWireInfo, self._writer.save_overhead_wire_info),
125
+ self._save_each_object(PowerTransformerInfo, self._writer.save_power_transformer_info),
126
+ self._save_each_object(TransformerTankInfo, self._writer.save_transformer_tank_info),
127
+ self._save_each_object(NoLoadTest, self._writer.save_no_load_test),
128
+ self._save_each_object(OpenCircuitTest, self._writer.save_open_circuit_test),
129
+ self._save_each_object(ShortCircuitTest, self._writer.save_short_circuit_test),
130
+ self._save_each_object(ShuntCompensatorInfo, self._writer.save_shunt_compensator_info),
131
+ self._save_each_object(SwitchInfo, self._writer.save_switch_info),
132
+ self._save_each_object(TransformerEndInfo, self._writer.save_transformer_end_info),
133
+ self._save_each_object(AssetOwner, self._writer.save_asset_owner),
134
+ self._save_each_object(Pole, self._writer.save_pole),
135
+ self._save_each_object(Streetlight, self._writer.save_streetlight),
136
+ self._save_each_object(Location, self._writer.save_location),
137
+ self._save_each_object(Organisation, self._writer.save_organisation),
138
+ self._save_each_object(Meter, self._writer.save_meter),
139
+ self._save_each_object(UsagePoint, self._writer.save_usage_point),
140
+ self._save_each_object(OperationalRestriction, self._writer.save_operational_restriction),
141
+ self._save_each_object(FaultIndicator, self._writer.save_fault_indicator),
142
+ self._save_each_object(BaseVoltage, self._writer.save_base_voltage),
143
+ self._save_each_object(ConnectivityNode, self._writer.save_connectivity_node),
144
+ self._save_each_object(Feeder, self._writer.save_feeder),
145
+ self._save_each_object(GeographicalRegion, self._writer.save_geographical_region),
146
+ self._save_each_object(Site, self._writer.save_site),
147
+ self._save_each_object(SubGeographicalRegion, self._writer.save_sub_geographical_region),
148
+ self._save_each_object(Substation, self._writer.save_substation),
149
+ self._save_each_object(Terminal, self._writer.save_terminal),
150
+ self._save_each_object(EquivalentBranch, self._writer.save_equivalent_branch),
151
+ self._save_each_object(BatteryUnit, self._writer.save_battery_unit),
152
+ self._save_each_object(PhotoVoltaicUnit, self._writer.save_photo_voltaic_unit),
153
+ self._save_each_object(PowerElectronicsWindUnit, self._writer.save_power_electronics_wind_unit),
154
+ self._save_each_object(AcLineSegment, self._writer.save_ac_line_segment),
155
+ self._save_each_object(Breaker, self._writer.save_breaker),
156
+ self._save_each_object(LoadBreakSwitch, self._writer.save_load_break_switch),
157
+ self._save_each_object(BusbarSection, self._writer.save_busbar_section),
158
+ self._save_each_object(Clamp, self._writer.save_clamp),
159
+ self._save_each_object(Cut, self._writer.save_cut),
160
+ self._save_each_object(Disconnector, self._writer.save_disconnector),
161
+ self._save_each_object(EnergyConsumer, self._writer.save_energy_consumer),
162
+ self._save_each_object(EnergyConsumerPhase, self._writer.save_energy_consumer_phase),
163
+ self._save_each_object(EnergySource, self._writer.save_energy_source),
164
+ self._save_each_object(EnergySourcePhase, self._writer.save_energy_source_phase),
165
+ self._save_each_object(Fuse, self._writer.save_fuse),
166
+ self._save_each_object(Jumper, self._writer.save_jumper),
167
+ self._save_each_object(Junction, self._writer.save_junction),
168
+ self._save_each_object(LinearShuntCompensator, self._writer.save_linear_shunt_compensator),
169
+ self._save_each_object(PerLengthPhaseImpedance, self._writer.save_per_length_phase_impedance),
170
+ self._save_each_object(PerLengthSequenceImpedance, self._writer.save_per_length_sequence_impedance),
171
+ self._save_each_object(PowerElectronicsConnection, self._writer.save_power_electronics_connection),
172
+ self._save_each_object(PowerElectronicsConnectionPhase, self._writer.save_power_electronics_connection_phase),
173
+ self._save_each_object(PowerTransformer, self._writer.save_power_transformer),
174
+ self._save_each_object(PowerTransformerEnd, self._writer.save_power_transformer_end),
175
+ self._save_each_object(RatioTapChanger, self._writer.save_ratio_tap_changer),
176
+ self._save_each_object(Recloser, self._writer.save_recloser),
177
+ self._save_each_object(TransformerStarImpedance, self._writer.save_transformer_star_impedance),
178
+ self._save_each_object(Circuit, self._writer.save_circuit),
179
+ self._save_each_object(Loop, self._writer.save_loop),
180
+ self._save_each_object(LvFeeder, self._writer.save_lv_feeder),
181
+ self._save_each_object(Analog, self._writer.save_analog),
182
+ self._save_each_object(Accumulator, self._writer.save_accumulator),
183
+ self._save_each_object(Discrete, self._writer.save_discrete),
184
+ self._save_each_object(Control, self._writer.save_control),
185
+ self._save_each_object(RemoteControl, self._writer.save_remote_control),
186
+ self._save_each_object(RemoteSource, self._writer.save_remote_source),
187
+ self._save_each_object(CurrentTransformerInfo, self._writer.save_current_transformer_info),
188
+ self._save_each_object(PotentialTransformerInfo, self._writer.save_potential_transformer_info),
189
+ self._save_each_object(CurrentTransformer, self._writer.save_current_transformer),
190
+ self._save_each_object(PotentialTransformer, self._writer.save_potential_transformer),
191
+ self._save_each_object(RelayInfo, self._writer.save_relay_info),
192
+ self._save_each_object(CurrentRelay, self._writer.save_current_relay),
193
+ self._save_each_object(TapChangerControl, self._writer.save_tap_changer_control),
194
+ self._save_each_object(EvChargingUnit, self._writer.save_ev_charging_unit),
195
+ self._save_each_object(DistanceRelay, self._writer.save_distance_relay),
196
+ self._save_each_object(ProtectionRelayScheme, self._writer.save_protection_relay_scheme),
197
+ self._save_each_object(ProtectionRelaySystem, self._writer.save_protection_relay_system),
198
+ self._save_each_object(VoltageRelay, self._writer.save_voltage_relay),
199
+ self._save_each_object(Ground, self._writer.save_ground),
200
+ self._save_each_object(GroundDisconnector, self._writer.save_ground_disconnector),
201
+ self._save_each_object(SeriesCompensator, self._writer.save_series_compensator),
202
+ self._save_each_object(SynchronousMachine, self._writer.save_synchronous_machine),
203
+ self._save_each_object(PetersenCoil, self._writer.save_petersen_coil),
204
+ self._save_each_object(GroundingImpedance, self._writer.save_grounding_impedance),
205
+ self._save_each_object(ReactiveCapabilityCurve, self._writer.save_reactive_capability_curve),
206
+ self._save_each_object(PanDemandResponseFunction, self._writer.save_pan_demand_response_function),
207
+ self._save_each_object(BatteryControl, self._writer.save_battery_control),
208
+ self._save_each_object(StaticVarCompensator, self._writer.save_static_var_compensator),
209
+ ])
@@ -0,0 +1,4 @@
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/.
@@ -0,0 +1,4 @@
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/.
@@ -0,0 +1,17 @@
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__ = ["LoopSubstationRelationship"]
7
+
8
+ from enum import Enum
9
+
10
+
11
+ class LoopSubstationRelationship(Enum):
12
+ SUBSTATION_ENERGIZES_LOOP = 0
13
+ LOOP_ENERGIZES_SUBSTATION = 1
14
+
15
+ @property
16
+ def short_name(self):
17
+ return str(self)[27:]
@@ -0,0 +1,40 @@
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__ = ["TableAssetOrganisationRolesAssets"]
7
+
8
+ from typing import List, Generator
9
+
10
+ from zepben.ewb.database.sqlite.tables.column import Column, Nullable
11
+ from zepben.ewb.database.sqlite.tables.sqlite_table import SqliteTable
12
+
13
+
14
+ class TableAssetOrganisationRolesAssets(SqliteTable):
15
+ """
16
+ A class representing the association between AssetOrganisationRoles and Assets.
17
+ """
18
+
19
+ def __init__(self):
20
+ super().__init__()
21
+ self.asset_organisation_role_mrid: Column = self._create_column("asset_organisation_role_mrid", "TEXT", Nullable.NOT_NULL)
22
+ """A column storing the mRID of AssetOrganisationRoles."""
23
+
24
+ self.asset_mrid: Column = self._create_column("asset_mrid", "TEXT", Nullable.NOT_NULL)
25
+ """A column storing the mRID of Assets."""
26
+
27
+ @property
28
+ def name(self) -> str:
29
+ return "asset_organisation_roles_assets"
30
+
31
+ @property
32
+ def unique_index_columns(self) -> Generator[List[Column], None, None]:
33
+ yield from super().unique_index_columns
34
+ yield [self.asset_organisation_role_mrid, self.asset_mrid]
35
+
36
+ @property
37
+ def non_unique_index_columns(self) -> Generator[List[Column], None, None]:
38
+ yield from super().non_unique_index_columns
39
+ yield [self.asset_organisation_role_mrid]
40
+ yield [self.asset_mrid]
@@ -0,0 +1,41 @@
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__ = ["TableAssetsPowerSystemResources"]
7
+
8
+ from typing import List, Generator
9
+
10
+ from zepben.ewb.database.sqlite.tables.column import Column, Nullable
11
+ from zepben.ewb.database.sqlite.tables.sqlite_table import SqliteTable
12
+
13
+
14
+ class TableAssetsPowerSystemResources(SqliteTable):
15
+ """
16
+ A class representing the association between AssetOrganisationRoles and Assets.
17
+ """
18
+
19
+ def __init__(self):
20
+ super().__init__()
21
+
22
+ self.asset_mrid: Column = self._create_column("asset_mrid", "TEXT", Nullable.NOT_NULL)
23
+ """A column storing the mRID of Assets."""
24
+
25
+ self.power_system_resource_mrid: Column = self._create_column("power_system_resource_mrid", "TEXT", Nullable.NOT_NULL)
26
+ """A column storing the mRID of PowerSystemResources."""
27
+
28
+ @property
29
+ def name(self) -> str:
30
+ return "assets_power_system_resources"
31
+
32
+ @property
33
+ def unique_index_columns(self) -> Generator[List[Column], None, None]:
34
+ yield from super().unique_index_columns
35
+ yield [self.asset_mrid, self.power_system_resource_mrid]
36
+
37
+ @property
38
+ def non_unique_index_columns(self) -> Generator[List[Column], None, None]:
39
+ yield from super().non_unique_index_columns
40
+ yield [self.asset_mrid]
41
+ yield [self.power_system_resource_mrid]
@@ -0,0 +1,40 @@
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__ = ["TableBatteryUnitsBatteryControls"]
7
+
8
+ from typing import List, Generator
9
+
10
+ from zepben.ewb.database.sqlite.tables.column import Column, Nullable
11
+ from zepben.ewb.database.sqlite.tables.sqlite_table import SqliteTable
12
+
13
+
14
+ class TableBatteryUnitsBatteryControls(SqliteTable):
15
+ """
16
+ A class representing the association between BatteryUnits and BatteryControls.
17
+ """
18
+
19
+ def __init__(self):
20
+ super().__init__()
21
+ self.battery_unit_mrid: Column = self._create_column("battery_unit_mrid", "TEXT", Nullable.NOT_NULL)
22
+ """A column storing the mRID of BatteryUnits."""
23
+
24
+ self.battery_control_mrid: Column = self._create_column("battery_control_mrid", "TEXT", Nullable.NOT_NULL)
25
+ """A column storing the mRID of BatteryControls."""
26
+
27
+ @property
28
+ def name(self) -> str:
29
+ return "battery_units_battery_controls"
30
+
31
+ @property
32
+ def unique_index_columns(self) -> Generator[List[Column], None, None]:
33
+ yield from super().unique_index_columns
34
+ yield [self.battery_unit_mrid, self.battery_control_mrid]
35
+
36
+ @property
37
+ def non_unique_index_columns(self) -> Generator[List[Column], None, None]:
38
+ yield from super().non_unique_index_columns
39
+ yield [self.battery_unit_mrid]
40
+ yield [self.battery_control_mrid]