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.
- zepben/ewb/__init__.py +601 -0
- zepben/ewb/auth/__init__.py +10 -0
- zepben/ewb/auth/client/__init__.py +5 -0
- zepben/ewb/auth/client/zepben_token_fetcher.py +273 -0
- zepben/ewb/auth/common/__init__.py +5 -0
- zepben/ewb/auth/common/auth_exception.py +16 -0
- zepben/ewb/auth/common/auth_method.py +28 -0
- zepben/ewb/auth/common/auth_provider_config.py +96 -0
- zepben/ewb/database/__init__.py +4 -0
- zepben/ewb/database/paths/__init__.py +4 -0
- zepben/ewb/database/paths/database_type.py +34 -0
- zepben/ewb/database/paths/ewb_data_file_paths.py +237 -0
- zepben/ewb/database/sqlite/__init__.py +4 -0
- zepben/ewb/database/sqlite/common/__init__.py +4 -0
- zepben/ewb/database/sqlite/common/base_cim_reader.py +212 -0
- zepben/ewb/database/sqlite/common/base_cim_writer.py +159 -0
- zepben/ewb/database/sqlite/common/base_collection_reader.py +96 -0
- zepben/ewb/database/sqlite/common/base_collection_writer.py +73 -0
- zepben/ewb/database/sqlite/common/base_database_reader.py +127 -0
- zepben/ewb/database/sqlite/common/base_database_tables.py +137 -0
- zepben/ewb/database/sqlite/common/base_database_writer.py +195 -0
- zepben/ewb/database/sqlite/common/base_entry_writer.py +34 -0
- zepben/ewb/database/sqlite/common/base_service_reader.py +50 -0
- zepben/ewb/database/sqlite/common/base_service_writer.py +104 -0
- zepben/ewb/database/sqlite/common/metadata_collection_reader.py +39 -0
- zepben/ewb/database/sqlite/common/metadata_collection_writer.py +38 -0
- zepben/ewb/database/sqlite/common/metadata_entry_reader.py +45 -0
- zepben/ewb/database/sqlite/common/metadata_entry_writer.py +41 -0
- zepben/ewb/database/sqlite/common/reader_exceptions.py +30 -0
- zepben/ewb/database/sqlite/customer/__init__.py +4 -0
- zepben/ewb/database/sqlite/customer/customer_cim_reader.py +169 -0
- zepben/ewb/database/sqlite/customer/customer_cim_writer.py +137 -0
- zepben/ewb/database/sqlite/customer/customer_database_reader.py +44 -0
- zepben/ewb/database/sqlite/customer/customer_database_tables.py +37 -0
- zepben/ewb/database/sqlite/customer/customer_database_writer.py +45 -0
- zepben/ewb/database/sqlite/customer/customer_service_reader.py +57 -0
- zepben/ewb/database/sqlite/customer/customer_service_writer.py +47 -0
- zepben/ewb/database/sqlite/diagram/__init__.py +4 -0
- zepben/ewb/database/sqlite/diagram/diagram_cim_reader.py +105 -0
- zepben/ewb/database/sqlite/diagram/diagram_cim_writer.py +81 -0
- zepben/ewb/database/sqlite/diagram/diagram_database_reader.py +45 -0
- zepben/ewb/database/sqlite/diagram/diagram_database_tables.py +29 -0
- zepben/ewb/database/sqlite/diagram/diagram_database_writer.py +44 -0
- zepben/ewb/database/sqlite/diagram/diagram_service_reader.py +49 -0
- zepben/ewb/database/sqlite/diagram/diagram_service_writer.py +41 -0
- zepben/ewb/database/sqlite/extensions/__init__.py +4 -0
- zepben/ewb/database/sqlite/extensions/prepared_statement.py +112 -0
- zepben/ewb/database/sqlite/extensions/result_set.py +153 -0
- zepben/ewb/database/sqlite/network/__init__.py +4 -0
- zepben/ewb/database/sqlite/network/network_cim_reader.py +3167 -0
- zepben/ewb/database/sqlite/network/network_cim_writer.py +2561 -0
- zepben/ewb/database/sqlite/network/network_database_reader.py +173 -0
- zepben/ewb/database/sqlite/network/network_database_tables.py +242 -0
- zepben/ewb/database/sqlite/network/network_database_writer.py +43 -0
- zepben/ewb/database/sqlite/network/network_service_reader.py +265 -0
- zepben/ewb/database/sqlite/network/network_service_writer.py +209 -0
- zepben/ewb/database/sqlite/tables/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/associations/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/associations/loop_substation_relationship.py +17 -0
- zepben/ewb/database/sqlite/tables/associations/table_asset_organisation_roles_assets.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_assets_power_system_resources.py +41 -0
- zepben/ewb/database/sqlite/tables/associations/table_battery_units_battery_controls.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_circuits_substations.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_circuits_terminals.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_customer_agreements_pricing_structures.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_end_devices_end_device_functions.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_equipment_equipment_containers.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_equipment_operational_restrictions.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_equipment_usage_points.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_loops_substations.py +43 -0
- zepben/ewb/database/sqlite/tables/associations/table_pricing_structures_tariffs.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_protection_relay_functions_protected_switches.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_protection_relay_functions_sensors.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_protection_relay_schemes_protection_relay_functions.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_synchronous_machines_reactive_capability_curves.py +39 -0
- zepben/ewb/database/sqlite/tables/associations/table_usage_points_end_devices.py +40 -0
- zepben/ewb/database/sqlite/tables/column.py +37 -0
- zepben/ewb/database/sqlite/tables/exceptions.py +10 -0
- zepben/ewb/database/sqlite/tables/extensions/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/table_reclose_delays.py +38 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/table_relay_info.py +21 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/metering/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/metering/table_pan_demand_response_functions.py +21 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/core/table_sites.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/table_loops.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/table_lv_feeders.py +20 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/production/table_ev_charging_units.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_distance_relays.py +28 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_function_thresholds.py +36 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_function_time_limits.py +34 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_functions.py +24 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_schemes.py +20 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_systems.py +20 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_voltage_relays.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/table_battery_controls.py +23 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/table_power_transformer_end_ratings.py +34 -0
- zepben/ewb/database/sqlite/tables/iec61968/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_cable_info.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_no_load_tests.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_open_circuit_tests.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_overhead_wire_info.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_power_transformer_info.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_short_circuit_tests.py +29 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_shunt_compensator_info.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_switch_info.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_end_info.py +46 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_tank_info.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_test.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_wire_info.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_containers.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_functions.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_info.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_organisation_roles.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_owners.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_assets.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_streetlights.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_structures.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_agreements.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_documents.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_location_street_address_field.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_location_street_addresses.py +33 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_locations.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_organisation_roles.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_organisations.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_position_points.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_street_addresses.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_town_details.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_customer_agreements.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_customers.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_pricing_structures.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_tariffs.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/table_current_transformer_info.py +33 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/table_potential_transformer_info.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassets/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassets/table_poles.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_end_device_functions.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_end_devices.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_meters.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_usage_points.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61968/operations/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/operations/table_operational_restrictions.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_auxiliary_equipment.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_current_transformers.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_fault_indicators.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_potential_transformers.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_sensors.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_ac_dc_terminals.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_base_voltages.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_conducting_equipment.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_connectivity_node_containers.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_connectivity_nodes.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_curve_data.py +46 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_curves.py +17 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_equipment.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_equipment_containers.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_feeders.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_geographical_regions.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_identified_objects.py +29 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_name_types.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_names.py +36 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_power_system_resources.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_sub_geographical_regions.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_substations.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_terminals.py +35 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagram_object_points.py +35 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagram_objects.py +31 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagrams.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/table_equivalent_branches.py +35 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/table_equivalent_equipment.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_battery_units.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_photo_voltaic_units.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_power_electronics_units.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_power_electronics_wind_units.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_accumulators.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_analogs.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_controls.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_discretes.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_io_points.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_measurements.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/protection/table_current_relays.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_controls.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_points.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_sources.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ac_line_segments.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_breakers.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_busbar_sections.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_clamps.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_conductors.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_connectors.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_cuts.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_disconnectors.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_earth_fault_compensators.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_connections.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_consumer_phases.py +37 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_consumers.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_source_phases.py +33 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_sources.py +44 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_fuses.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ground_disconnectors.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_grounding_impedances.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_grounds.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_jumpers.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_junctions.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_linear_shunt_compensators.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_lines.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_load_break_switches.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_impedances.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_line_parameters.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_phase_impedances.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_sequence_impedances.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_petersen_coils.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_phase_impedance_data.py +52 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_electronics_connection_phases.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_electronics_connections.py +50 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_transformer_ends.py +43 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_transformers.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_protected_switches.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ratio_tap_changers.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_reactive_capability_curves.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_reclosers.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_regulating_cond_eq.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_regulating_controls.py +29 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_rotating_machines.py +36 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_series_compensators.py +25 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_shunt_compensators.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_static_var_compensator.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_switches.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_synchronous_machines.py +95 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_tap_changer_controls.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_tap_changers.py +25 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_transformer_ends.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_transformer_star_impedances.py +32 -0
- zepben/ewb/database/sqlite/tables/iec61970/infiec61970/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/infiec61970/feeder/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/infiec61970/feeder/table_circuits.py +27 -0
- zepben/ewb/database/sqlite/tables/sqlite_table.py +142 -0
- zepben/ewb/database/sqlite/tables/table_metadata_data_sources.py +21 -0
- zepben/ewb/database/sqlite/tables/table_version.py +38 -0
- zepben/ewb/dataclassy/__init__.py +15 -0
- zepben/ewb/dataclassy/dataclass.py +192 -0
- zepben/ewb/dataclassy/decorator.py +35 -0
- zepben/ewb/dataclassy/functions.py +80 -0
- zepben/ewb/examples/__init__.py +6 -0
- zepben/ewb/examples/simple_test_network.py +158 -0
- zepben/ewb/exceptions.py +52 -0
- zepben/ewb/model/__init__.py +4 -0
- zepben/ewb/model/busbranch/__init__.py +4 -0
- zepben/ewb/model/busbranch/bus_branch.py +1051 -0
- zepben/ewb/model/cim/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/assetinfo/relay_info.py +128 -0
- zepben/ewb/model/cim/extensions/iec61968/metering/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/metering/pan_demand_reponse_function.py +112 -0
- zepben/ewb/model/cim/extensions/iec61970/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/core/site.py +37 -0
- zepben/ewb/model/cim/extensions/iec61970/base/feeder/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/feeder/loop.py +207 -0
- zepben/ewb/model/cim/extensions/iec61970/base/feeder/lv_feeder.py +258 -0
- zepben/ewb/model/cim/extensions/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/generation/production/ev_charging_unit.py +18 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/distance_relay.py +69 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/power_direction_kind.py +35 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_kind.py +113 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_function.py +448 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_scheme.py +97 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_system.py +97 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/relay_setting.py +35 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/voltage_relay.py +20 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/battery_control.py +36 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/battery_control_mode.py +82 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/transformer_cooling_type.py +56 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/transformer_end_rated_s.py +26 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/vector_group.py +292 -0
- zepben/ewb/model/cim/extensions/zbex.py +17 -0
- zepben/ewb/model/cim/iec61968/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/assetinfo/cable_info.py +15 -0
- zepben/ewb/model/cim/iec61968/assetinfo/no_load_test.py +42 -0
- zepben/ewb/model/cim/iec61968/assetinfo/open_circuit_test.py +42 -0
- zepben/ewb/model/cim/iec61968/assetinfo/overhead_wire_info.py +15 -0
- zepben/ewb/model/cim/iec61968/assetinfo/power_transformer_info.py +103 -0
- zepben/ewb/model/cim/iec61968/assetinfo/short_circuit_test.py +67 -0
- zepben/ewb/model/cim/iec61968/assetinfo/shunt_compensator_info.py +26 -0
- zepben/ewb/model/cim/iec61968/assetinfo/switch_info.py +17 -0
- zepben/ewb/model/cim/iec61968/assetinfo/transformer_end_info.py +137 -0
- zepben/ewb/model/cim/iec61968/assetinfo/transformer_tank_info.py +108 -0
- zepben/ewb/model/cim/iec61968/assetinfo/transformer_test.py +26 -0
- zepben/ewb/model/cim/iec61968/assetinfo/wire_info.py +24 -0
- zepben/ewb/model/cim/iec61968/assetinfo/wire_material_kind.py +55 -0
- zepben/ewb/model/cim/iec61968/assets/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/assets/asset.py +154 -0
- zepben/ewb/model/cim/iec61968/assets/asset_container.py +16 -0
- zepben/ewb/model/cim/iec61968/assets/asset_function.py +15 -0
- zepben/ewb/model/cim/iec61968/assets/asset_info.py +19 -0
- zepben/ewb/model/cim/iec61968/assets/asset_organisation_role.py +13 -0
- zepben/ewb/model/cim/iec61968/assets/asset_owner.py +13 -0
- zepben/ewb/model/cim/iec61968/assets/streetlight.py +29 -0
- zepben/ewb/model/cim/iec61968/assets/structure.py +16 -0
- zepben/ewb/model/cim/iec61968/common/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/common/agreement.py +16 -0
- zepben/ewb/model/cim/iec61968/common/document.py +36 -0
- zepben/ewb/model/cim/iec61968/common/location.py +129 -0
- zepben/ewb/model/cim/iec61968/common/organisation.py +15 -0
- zepben/ewb/model/cim/iec61968/common/organisation_role.py +22 -0
- zepben/ewb/model/cim/iec61968/common/position_point.py +44 -0
- zepben/ewb/model/cim/iec61968/common/street_address.py +28 -0
- zepben/ewb/model/cim/iec61968/common/street_detail.py +45 -0
- zepben/ewb/model/cim/iec61968/common/town_detail.py +25 -0
- zepben/ewb/model/cim/iec61968/customers/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/customers/customer.py +93 -0
- zepben/ewb/model/cim/iec61968/customers/customer_agreement.py +107 -0
- zepben/ewb/model/cim/iec61968/customers/customer_kind.py +67 -0
- zepben/ewb/model/cim/iec61968/customers/pricing_structure.py +88 -0
- zepben/ewb/model/cim/iec61968/customers/tariff.py +18 -0
- zepben/ewb/model/cim/iec61968/infiec61968/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/current_transformer_info.py +51 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/potential_transformer_info.py +33 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/transformer_construction_kind.py +67 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/transformer_function_kind.py +43 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassets/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassets/pole.py +87 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassets/streetlight_lamp_kind.py +25 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infcommon/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infcommon/ratio.py +34 -0
- zepben/ewb/model/cim/iec61968/metering/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/metering/controlled_appliance.py +150 -0
- zepben/ewb/model/cim/iec61968/metering/end_device.py +165 -0
- zepben/ewb/model/cim/iec61968/metering/end_device_function.py +17 -0
- zepben/ewb/model/cim/iec61968/metering/end_device_function_kind.py +46 -0
- zepben/ewb/model/cim/iec61968/metering/meter.py +26 -0
- zepben/ewb/model/cim/iec61968/metering/usage_point.py +186 -0
- zepben/ewb/model/cim/iec61968/operations/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/operations/operational_restriction.py +92 -0
- zepben/ewb/model/cim/iec61970/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/auxiliary_equipment.py +24 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/current_transformer.py +37 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/fault_indicator.py +18 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/potential_transformer.py +38 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/potential_transformer_kind.py +28 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/sensor.py +92 -0
- zepben/ewb/model/cim/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/core/ac_dc_terminal.py +16 -0
- zepben/ewb/model/cim/iec61970/base/core/base_voltage.py +17 -0
- zepben/ewb/model/cim/iec61970/base/core/conducting_equipment.py +198 -0
- zepben/ewb/model/cim/iec61970/base/core/connectivity_node.py +105 -0
- zepben/ewb/model/cim/iec61970/base/core/connectivity_node_container.py +15 -0
- zepben/ewb/model/cim/iec61970/base/core/curve.py +124 -0
- zepben/ewb/model/cim/iec61970/base/core/curve_data.py +29 -0
- zepben/ewb/model/cim/iec61970/base/core/equipment.py +366 -0
- zepben/ewb/model/cim/iec61970/base/core/equipment_container.py +199 -0
- zepben/ewb/model/cim/iec61970/base/core/feeder.py +260 -0
- zepben/ewb/model/cim/iec61970/base/core/geographical_region.py +82 -0
- zepben/ewb/model/cim/iec61970/base/core/identified_object.py +234 -0
- zepben/ewb/model/cim/iec61970/base/core/name.py +36 -0
- zepben/ewb/model/cim/iec61970/base/core/name_type.py +203 -0
- zepben/ewb/model/cim/iec61970/base/core/phase_code.py +201 -0
- zepben/ewb/model/cim/iec61970/base/core/power_system_resource.py +106 -0
- zepben/ewb/model/cim/iec61970/base/core/sub_geographical_region.py +93 -0
- zepben/ewb/model/cim/iec61970/base/core/substation.py +277 -0
- zepben/ewb/model/cim/iec61970/base/core/terminal.py +171 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram.py +109 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_object.py +160 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_object_point.py +25 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_style.py +26 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/orientation_kind.py +27 -0
- zepben/ewb/model/cim/iec61970/base/domain/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/domain/unit_symbol.py +492 -0
- zepben/ewb/model/cim/iec61970/base/equivalents/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/equivalents/equivalent_branch.py +113 -0
- zepben/ewb/model/cim/iec61970/base/equivalents/equivalent_equipment.py +15 -0
- zepben/ewb/model/cim/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/battery_state_kind.py +37 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/battery_unit.py +108 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/photo_voltaic_unit.py +13 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/power_electronics_unit.py +28 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/power_electronics_wind_unit.py +13 -0
- zepben/ewb/model/cim/iec61970/base/meas/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/meas/accumulator.py +13 -0
- zepben/ewb/model/cim/iec61970/base/meas/accumulator_value.py +20 -0
- zepben/ewb/model/cim/iec61970/base/meas/analog.py +16 -0
- zepben/ewb/model/cim/iec61970/base/meas/analog_value.py +20 -0
- zepben/ewb/model/cim/iec61970/base/meas/control.py +26 -0
- zepben/ewb/model/cim/iec61970/base/meas/discrete.py +13 -0
- zepben/ewb/model/cim/iec61970/base/meas/discrete_value.py +20 -0
- zepben/ewb/model/cim/iec61970/base/meas/iopoint.py +16 -0
- zepben/ewb/model/cim/iec61970/base/meas/measurement.py +60 -0
- zepben/ewb/model/cim/iec61970/base/meas/measurement_value.py +21 -0
- zepben/ewb/model/cim/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/protection/current_relay.py +23 -0
- zepben/ewb/model/cim/iec61970/base/scada/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/scada/remote_control.py +22 -0
- zepben/ewb/model/cim/iec61970/base/scada/remote_point.py +16 -0
- zepben/ewb/model/cim/iec61970/base/scada/remote_source.py +22 -0
- zepben/ewb/model/cim/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/wires/ac_line_segment.py +214 -0
- zepben/ewb/model/cim/iec61970/base/wires/breaker.py +32 -0
- zepben/ewb/model/cim/iec61970/base/wires/busbar_section.py +19 -0
- zepben/ewb/model/cim/iec61970/base/wires/clamp.py +32 -0
- zepben/ewb/model/cim/iec61970/base/wires/conductor.py +49 -0
- zepben/ewb/model/cim/iec61970/base/wires/connector.py +16 -0
- zepben/ewb/model/cim/iec61970/base/wires/cut.py +36 -0
- zepben/ewb/model/cim/iec61970/base/wires/disconnector.py +17 -0
- zepben/ewb/model/cim/iec61970/base/wires/earth_fault_compensator.py +21 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_connection.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_consumer.py +107 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_consumer_phase.py +56 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_source.py +172 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_source_phase.py +45 -0
- zepben/ewb/model/cim/iec61970/base/wires/fuse.py +23 -0
- zepben/ewb/model/cim/iec61970/base/wires/ground.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/ground_disconnector.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/grounding_impedance.py +19 -0
- zepben/ewb/model/cim/iec61970/base/wires/jumper.py +16 -0
- zepben/ewb/model/cim/iec61970/base/wires/junction.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/line.py +13 -0
- zepben/ewb/model/cim/iec61970/base/wires/linear_shunt_compensator.py +26 -0
- zepben/ewb/model/cim/iec61970/base/wires/load_break_switch.py +14 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_impedance.py +13 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_line_parameter.py +13 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_phase_impedance.py +99 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_sequence_impedance.py +43 -0
- zepben/ewb/model/cim/iec61970/base/wires/petersen_coil.py +22 -0
- zepben/ewb/model/cim/iec61970/base/wires/phase_impedance_data.py +37 -0
- zepben/ewb/model/cim/iec61970/base/wires/phase_shunt_connection_kind.py +38 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_electronics_connection.py +524 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_electronics_connection_phase.py +34 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_transformer.py +217 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_transformer_end.py +208 -0
- zepben/ewb/model/cim/iec61970/base/wires/protected_switch.py +96 -0
- zepben/ewb/model/cim/iec61970/base/wires/ratio_tap_changer.py +30 -0
- zepben/ewb/model/cim/iec61970/base/wires/reactive_capability_curve.py +16 -0
- zepben/ewb/model/cim/iec61970/base/wires/recloser.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/regulating_cond_eq.py +45 -0
- zepben/ewb/model/cim/iec61970/base/wires/regulating_control.py +173 -0
- zepben/ewb/model/cim/iec61970/base/wires/regulating_control_mode_kind.py +46 -0
- zepben/ewb/model/cim/iec61970/base/wires/rotating_machine.py +36 -0
- zepben/ewb/model/cim/iec61970/base/wires/series_compensator.py +42 -0
- zepben/ewb/model/cim/iec61970/base/wires/shunt_compensator.py +59 -0
- zepben/ewb/model/cim/iec61970/base/wires/single_phase_kind.py +105 -0
- zepben/ewb/model/cim/iec61970/base/wires/static_var_compensator.py +40 -0
- zepben/ewb/model/cim/iec61970/base/wires/svc_control_mode.py +28 -0
- zepben/ewb/model/cim/iec61970/base/wires/switch.py +119 -0
- zepben/ewb/model/cim/iec61970/base/wires/synchronous_machine.py +168 -0
- zepben/ewb/model/cim/iec61970/base/wires/synchronous_machine_kind.py +44 -0
- zepben/ewb/model/cim/iec61970/base/wires/tap_changer.py +150 -0
- zepben/ewb/model/cim/iec61970/base/wires/tap_changer_control.py +49 -0
- zepben/ewb/model/cim/iec61970/base/wires/transformer_end.py +73 -0
- zepben/ewb/model/cim/iec61970/base/wires/transformer_star_impedance.py +48 -0
- zepben/ewb/model/cim/iec61970/base/wires/winding_connection.py +43 -0
- zepben/ewb/model/cim/iec61970/infiec61970/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/infiec61970/feeder/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/infiec61970/feeder/circuit.py +144 -0
- zepben/ewb/model/phases.py +168 -0
- zepben/ewb/model/resistance_reactance.py +40 -0
- zepben/ewb/services/__init__.py +4 -0
- zepben/ewb/services/common/__init__.py +16 -0
- zepben/ewb/services/common/base_service.py +383 -0
- zepben/ewb/services/common/base_service_comparator.py +394 -0
- zepben/ewb/services/common/difference.py +47 -0
- zepben/ewb/services/common/enum_mapper.py +55 -0
- zepben/ewb/services/common/meta/__init__.py +4 -0
- zepben/ewb/services/common/meta/data_source.py +16 -0
- zepben/ewb/services/common/meta/metadata_collection.py +28 -0
- zepben/ewb/services/common/meta/metadata_translations.py +47 -0
- zepben/ewb/services/common/meta/service_info.py +22 -0
- zepben/ewb/services/common/reference_resolvers.py +374 -0
- zepben/ewb/services/common/resolver.py +597 -0
- zepben/ewb/services/common/translator/__init__.py +4 -0
- zepben/ewb/services/common/translator/base_cim2proto.py +92 -0
- zepben/ewb/services/common/translator/base_proto2cim.py +112 -0
- zepben/ewb/services/common/translator/service_differences.py +81 -0
- zepben/ewb/services/common/translator/util.py +78 -0
- zepben/ewb/services/customer/__init__.py +4 -0
- zepben/ewb/services/customer/customer_service_comparator.py +52 -0
- zepben/ewb/services/customer/customers.py +23 -0
- zepben/ewb/services/customer/translator/__init__.py +21 -0
- zepben/ewb/services/customer/translator/customer_cim2proto.py +71 -0
- zepben/ewb/services/customer/translator/customer_enum_mappers.py +18 -0
- zepben/ewb/services/customer/translator/customer_proto2cim.py +87 -0
- zepben/ewb/services/diagram/__init__.py +4 -0
- zepben/ewb/services/diagram/diagram_service_comparator.py +39 -0
- zepben/ewb/services/diagram/diagrams.py +107 -0
- zepben/ewb/services/diagram/translator/__init__.py +11 -0
- zepben/ewb/services/diagram/translator/diagram_cim2proto.py +51 -0
- zepben/ewb/services/diagram/translator/diagram_enum_mappers.py +21 -0
- zepben/ewb/services/diagram/translator/diagram_proto2cim.py +61 -0
- zepben/ewb/services/measurement/__init__.py +4 -0
- zepben/ewb/services/measurement/measurements.py +35 -0
- zepben/ewb/services/measurement/translator/__init__.py +6 -0
- zepben/ewb/services/measurement/translator/measurement_cim2proto.py +42 -0
- zepben/ewb/services/measurement/translator/measurement_proto2cim.py +52 -0
- zepben/ewb/services/network/__init__.py +4 -0
- zepben/ewb/services/network/network_extensions.py +119 -0
- zepben/ewb/services/network/network_service.py +302 -0
- zepben/ewb/services/network/network_service_comparator.py +1322 -0
- zepben/ewb/services/network/network_state.py +34 -0
- zepben/ewb/services/network/tracing/__init__.py +4 -0
- zepben/ewb/services/network/tracing/busbranch_trace.py +36 -0
- zepben/ewb/services/network/tracing/connectivity/__init__.py +4 -0
- zepben/ewb/services/network/tracing/connectivity/connectivity_result.py +105 -0
- zepben/ewb/services/network/tracing/connectivity/nominal_phase_path.py +23 -0
- zepben/ewb/services/network/tracing/connectivity/phase_paths.py +70 -0
- zepben/ewb/services/network/tracing/connectivity/terminal_connectivity_connected.py +226 -0
- zepben/ewb/services/network/tracing/connectivity/terminal_connectivity_internal.py +64 -0
- zepben/ewb/services/network/tracing/connectivity/transformer_phase_paths.py +202 -0
- zepben/ewb/services/network/tracing/connectivity/xy_candidate_phase_paths.py +235 -0
- zepben/ewb/services/network/tracing/connectivity/xy_phase_step.py +24 -0
- zepben/ewb/services/network/tracing/feeder/__init__.py +4 -0
- zepben/ewb/services/network/tracing/feeder/assign_to_feeders.py +202 -0
- zepben/ewb/services/network/tracing/feeder/assign_to_lv_feeders.py +202 -0
- zepben/ewb/services/network/tracing/feeder/clear_direction.py +80 -0
- zepben/ewb/services/network/tracing/feeder/direction_status.py +133 -0
- zepben/ewb/services/network/tracing/feeder/feeder_direction.py +107 -0
- zepben/ewb/services/network/tracing/feeder/set_direction.py +143 -0
- zepben/ewb/services/network/tracing/find_swer_equipment.py +175 -0
- zepben/ewb/services/network/tracing/networktrace/__init__.py +4 -0
- zepben/ewb/services/network/tracing/networktrace/actions/__init__.py +4 -0
- zepben/ewb/services/network/tracing/networktrace/actions/equipment_tree_builder.py +71 -0
- zepben/ewb/services/network/tracing/networktrace/actions/tree_node.py +37 -0
- zepben/ewb/services/network/tracing/networktrace/compute_data.py +60 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/__init__.py +4 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/conditions.py +73 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/direction_condition.py +63 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/equipment_step_limit_condition.py +26 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/equipment_type_step_limit_condition.py +44 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/network_trace_queue_condition.py +67 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/network_trace_stop_condition.py +65 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/open_condition.py +39 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace.py +450 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_action_type.py +42 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_queue_next.py +84 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_step.py +125 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_step_path_provider.py +351 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_tracker.py +39 -0
- zepben/ewb/services/network/tracing/networktrace/operators/__init__.py +14 -0
- zepben/ewb/services/network/tracing/networktrace/operators/equipment_container_state_operators.py +264 -0
- zepben/ewb/services/network/tracing/networktrace/operators/feeder_direction_state_operations.py +181 -0
- zepben/ewb/services/network/tracing/networktrace/operators/in_service_state_operators.py +76 -0
- zepben/ewb/services/network/tracing/networktrace/operators/network_state_operators.py +120 -0
- zepben/ewb/services/network/tracing/networktrace/operators/open_state_operators.py +104 -0
- zepben/ewb/services/network/tracing/networktrace/operators/phase_state_operators.py +56 -0
- zepben/ewb/services/network/tracing/networktrace/tracing.py +132 -0
- zepben/ewb/services/network/tracing/phases/__init__.py +4 -0
- zepben/ewb/services/network/tracing/phases/phase_inferrer.py +205 -0
- zepben/ewb/services/network/tracing/phases/phase_status.py +101 -0
- zepben/ewb/services/network/tracing/phases/remove_phases.py +143 -0
- zepben/ewb/services/network/tracing/phases/set_phases.py +490 -0
- zepben/ewb/services/network/tracing/traversal/__init__.py +4 -0
- zepben/ewb/services/network/tracing/traversal/context_value_computer.py +63 -0
- zepben/ewb/services/network/tracing/traversal/debug_logging.py +124 -0
- zepben/ewb/services/network/tracing/traversal/queue.py +112 -0
- zepben/ewb/services/network/tracing/traversal/queue_condition.py +75 -0
- zepben/ewb/services/network/tracing/traversal/step_action.py +83 -0
- zepben/ewb/services/network/tracing/traversal/step_context.py +59 -0
- zepben/ewb/services/network/tracing/traversal/stop_condition.py +57 -0
- zepben/ewb/services/network/tracing/traversal/traversal.py +634 -0
- zepben/ewb/services/network/tracing/traversal/traversal_condition.py +22 -0
- zepben/ewb/services/network/tracing/traversal/weighted_priority_queue.py +85 -0
- zepben/ewb/services/network/tracing/util.py +93 -0
- zepben/ewb/services/network/translator/__init__.py +392 -0
- zepben/ewb/services/network/translator/network_cim2proto.py +1782 -0
- zepben/ewb/services/network/translator/network_enum_mappers.py +78 -0
- zepben/ewb/services/network/translator/network_proto2cim.py +2147 -0
- zepben/ewb/services/services.py +48 -0
- zepben/ewb/streaming/__init__.py +4 -0
- zepben/ewb/streaming/data/__init__.py +4 -0
- zepben/ewb/streaming/data/current_state_event.py +314 -0
- zepben/ewb/streaming/data/current_state_event_batch.py +25 -0
- zepben/ewb/streaming/data/set_current_states_status.py +286 -0
- zepben/ewb/streaming/exceptions.py +14 -0
- zepben/ewb/streaming/get/__init__.py +4 -0
- zepben/ewb/streaming/get/consumer.py +209 -0
- zepben/ewb/streaming/get/customer_consumer.py +111 -0
- zepben/ewb/streaming/get/diagram_consumer.py +107 -0
- zepben/ewb/streaming/get/hierarchy/__init__.py +4 -0
- zepben/ewb/streaming/get/hierarchy/data.py +27 -0
- zepben/ewb/streaming/get/included_energized_containers.py +34 -0
- zepben/ewb/streaming/get/included_energizing_containers.py +34 -0
- zepben/ewb/streaming/get/network_consumer.py +870 -0
- zepben/ewb/streaming/get/query_network_state_client.py +64 -0
- zepben/ewb/streaming/get/query_network_state_service.py +94 -0
- zepben/ewb/streaming/grpc/__init__.py +4 -0
- zepben/ewb/streaming/grpc/auth_token_plugin.py +24 -0
- zepben/ewb/streaming/grpc/connect.py +209 -0
- zepben/ewb/streaming/grpc/grpc.py +107 -0
- zepben/ewb/streaming/grpc/grpc_channel_builder.py +185 -0
- zepben/ewb/streaming/mutations/__init__.py +4 -0
- zepben/ewb/streaming/mutations/update_network_state_client.py +80 -0
- zepben/ewb/streaming/mutations/update_network_state_service.py +61 -0
- zepben/ewb/testing/__init__.py +4 -0
- zepben/ewb/testing/test_network_builder.py +816 -0
- zepben/ewb/types.py +17 -0
- zepben/ewb/util.py +189 -0
- zepben_ewb-1.0.0b1.dist-info/METADATA +102 -0
- zepben_ewb-1.0.0b1.dist-info/RECORD +639 -0
- zepben_ewb-1.0.0b1.dist-info/WHEEL +5 -0
- zepben_ewb-1.0.0b1.dist-info/licenses/LICENSE +374 -0
- zepben_ewb-1.0.0b1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Copyright 2024 Zeppelin Bend Pty Ltd
|
|
2
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
__all__ = ["Customer"]
|
|
9
|
+
|
|
10
|
+
from typing import Optional, Generator, List, TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
from zepben.ewb.model.cim.iec61968.common.organisation_role import OrganisationRole
|
|
13
|
+
from zepben.ewb.model.cim.iec61968.customers.customer_kind import CustomerKind
|
|
14
|
+
from zepben.ewb.util import nlen, get_by_mrid, ngen, safe_remove
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from zepben.ewb.model.cim.iec61968.customers.customer_agreement import CustomerAgreement
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Customer(OrganisationRole):
|
|
21
|
+
"""
|
|
22
|
+
Organisation receiving services from service supplier.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
kind: CustomerKind = CustomerKind.UNKNOWN
|
|
26
|
+
"""Kind of customer"""
|
|
27
|
+
|
|
28
|
+
special_need: Optional[str] = None
|
|
29
|
+
"""A special service need such as life support, hospitals, etc."""
|
|
30
|
+
|
|
31
|
+
_customer_agreements: Optional[List[CustomerAgreement]] = None
|
|
32
|
+
|
|
33
|
+
def __init__(self, customer_agreements: List[CustomerAgreement] = None, **kwargs):
|
|
34
|
+
super(Customer, self).__init__(**kwargs)
|
|
35
|
+
if customer_agreements:
|
|
36
|
+
for agreement in customer_agreements:
|
|
37
|
+
self.add_agreement(agreement)
|
|
38
|
+
|
|
39
|
+
def num_agreements(self) -> int:
|
|
40
|
+
"""
|
|
41
|
+
Get the number of `CustomerAgreement`s associated with this `Customer`.
|
|
42
|
+
"""
|
|
43
|
+
return nlen(self._customer_agreements)
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def agreements(self) -> Generator[CustomerAgreement, None, None]:
|
|
47
|
+
"""
|
|
48
|
+
The `CustomerAgreement`s for this `Customer`.
|
|
49
|
+
"""
|
|
50
|
+
return ngen(self._customer_agreements)
|
|
51
|
+
|
|
52
|
+
def get_agreement(self, mrid: str) -> CustomerAgreement:
|
|
53
|
+
"""
|
|
54
|
+
Get the `CustomerAgreement` for this `Customer` identified by `mrid`.
|
|
55
|
+
|
|
56
|
+
`mrid` the mRID of the required `customer_agreement.CustomerAgreement`
|
|
57
|
+
Returns the `CustomerAgreement` with the specified `mrid`.
|
|
58
|
+
Raises `KeyError` if `mrid` wasn't present.
|
|
59
|
+
"""
|
|
60
|
+
return get_by_mrid(self._customer_agreements, mrid)
|
|
61
|
+
|
|
62
|
+
def add_agreement(self, customer_agreement: CustomerAgreement) -> Customer:
|
|
63
|
+
"""
|
|
64
|
+
Associate a `CustomerAgreement` with this `Customer`.
|
|
65
|
+
`customer_agreement` The `customer_agreement.CustomerAgreement` to associate with this `Customer`.
|
|
66
|
+
Returns A reference to this `Customer` to allow fluent use.
|
|
67
|
+
Raises `ValueError` if another `CustomerAgreement` with the same `mrid` already exists for this `Customer`
|
|
68
|
+
"""
|
|
69
|
+
if self._validate_reference(customer_agreement, self.get_agreement, "A CustomerAgreement"):
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
self._customer_agreements = list() if self._customer_agreements is None else self._customer_agreements
|
|
73
|
+
self._customer_agreements.append(customer_agreement)
|
|
74
|
+
return self
|
|
75
|
+
|
|
76
|
+
def remove_agreement(self, customer_agreement: CustomerAgreement) -> Customer:
|
|
77
|
+
"""
|
|
78
|
+
Disassociate `customer_agreement` from this `Customer`.
|
|
79
|
+
|
|
80
|
+
`customer_agreement` the `customer_agreement.CustomerAgreement` to disassociate with this `Customer`.
|
|
81
|
+
Returns A reference to this `Customer` to allow fluent use.
|
|
82
|
+
Raises `ValueError` if `customer_agreement` was not associated with this `Customer`.
|
|
83
|
+
"""
|
|
84
|
+
self._customer_agreements = safe_remove(self._customer_agreements, customer_agreement)
|
|
85
|
+
return self
|
|
86
|
+
|
|
87
|
+
def clear_agreements(self) -> Customer:
|
|
88
|
+
"""
|
|
89
|
+
Clear all customer agreements.
|
|
90
|
+
Returns self
|
|
91
|
+
"""
|
|
92
|
+
self._customer_agreements = None
|
|
93
|
+
return self
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Copyright 2024 Zeppelin Bend Pty Ltd
|
|
2
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
__all__ = ["CustomerAgreement"]
|
|
9
|
+
|
|
10
|
+
from typing import Optional, Generator, List, TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
from zepben.ewb.model.cim.iec61968.common.agreement import Agreement
|
|
13
|
+
from zepben.ewb.util import nlen, get_by_mrid, ngen, safe_remove
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from zepben.ewb.model.cim.iec61968.customers.customer import Customer
|
|
17
|
+
from zepben.ewb.model.cim.iec61968.customers.pricing_structure import PricingStructure
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class CustomerAgreement(Agreement):
|
|
21
|
+
"""
|
|
22
|
+
Agreement between the customer and the service supplier to pay for service at a specific service location. It
|
|
23
|
+
records certain billing information about the type of service provided at the service location and is used
|
|
24
|
+
during charge creation to determine the type of service.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
_customer: Optional[Customer] = None
|
|
28
|
+
"""The `zepben.ewb.model.cim.iec61968.customers.customer.Customer` that has this `CustomerAgreement`."""
|
|
29
|
+
|
|
30
|
+
_pricing_structures: Optional[List[PricingStructure]] = None
|
|
31
|
+
|
|
32
|
+
def __init__(self, customer: Customer = None, pricing_structures: List[PricingStructure] = None, **kwargs):
|
|
33
|
+
super(CustomerAgreement, self).__init__(**kwargs)
|
|
34
|
+
if customer:
|
|
35
|
+
self.customer = customer
|
|
36
|
+
if pricing_structures:
|
|
37
|
+
for ps in pricing_structures:
|
|
38
|
+
self.add_pricing_structure(ps)
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def customer(self):
|
|
42
|
+
"""The `Customer` that has this `CustomerAgreement`."""
|
|
43
|
+
return self._customer
|
|
44
|
+
|
|
45
|
+
@customer.setter
|
|
46
|
+
def customer(self, cust):
|
|
47
|
+
if self._customer is None or self._customer is cust:
|
|
48
|
+
self._customer = cust
|
|
49
|
+
else:
|
|
50
|
+
raise ValueError(f"customer for {str(self)} has already been set to {self._customer}, cannot reset this field to {cust}")
|
|
51
|
+
|
|
52
|
+
def num_pricing_structures(self):
|
|
53
|
+
"""
|
|
54
|
+
The number of `PricingStructure`s associated with this `CustomerAgreement`
|
|
55
|
+
"""
|
|
56
|
+
return nlen(self._pricing_structures)
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def pricing_structures(self) -> Generator[PricingStructure, None, None]:
|
|
60
|
+
"""
|
|
61
|
+
The `PricingStructure`s of this `CustomerAgreement`.
|
|
62
|
+
"""
|
|
63
|
+
return ngen(self._pricing_structures)
|
|
64
|
+
|
|
65
|
+
def get_pricing_structure(self, mrid: str) -> PricingStructure:
|
|
66
|
+
"""
|
|
67
|
+
Get the `PricingStructure` for this `CustomerAgreement` identified by `mrid`
|
|
68
|
+
|
|
69
|
+
`mrid` the mRID of the required `PricingStructure`
|
|
70
|
+
Returns the `PricingStructure` with the specified `mrid` if it exists
|
|
71
|
+
Raises `KeyError` if `mrid` wasn't present.
|
|
72
|
+
"""
|
|
73
|
+
return get_by_mrid(self._pricing_structures, mrid)
|
|
74
|
+
|
|
75
|
+
def add_pricing_structure(self, ps: PricingStructure) -> CustomerAgreement:
|
|
76
|
+
"""
|
|
77
|
+
Associate `ps` with this `CustomerAgreement`
|
|
78
|
+
|
|
79
|
+
`ps` the `PricingStructure` to associate with this `CustomerAgreement`.
|
|
80
|
+
Returns A reference to this `CustomerAgreement` to allow fluent use.
|
|
81
|
+
Raises `ValueError` if another `PricingStructure` with the same `mrid` already exists for this `CustomerAgreement`
|
|
82
|
+
"""
|
|
83
|
+
if self._validate_reference(ps, self.get_pricing_structure, "A PricingStructure"):
|
|
84
|
+
return self
|
|
85
|
+
|
|
86
|
+
self._pricing_structures = list() if self._pricing_structures is None else self._pricing_structures
|
|
87
|
+
self._pricing_structures.append(ps)
|
|
88
|
+
return self
|
|
89
|
+
|
|
90
|
+
def remove_pricing_structure(self, ps: PricingStructure) -> CustomerAgreement:
|
|
91
|
+
"""
|
|
92
|
+
Disassociate `ps` from this `CustomerAgreement`
|
|
93
|
+
|
|
94
|
+
`ps` the `PricingStructure` to disassociate from this `CustomerAgreement`.
|
|
95
|
+
Returns A reference to this `CustomerAgreement` to allow fluent use.
|
|
96
|
+
Raises `ValueError` if `ps` was not associated with this `CustomerAgreement`.
|
|
97
|
+
"""
|
|
98
|
+
self._pricing_structures = safe_remove(self._pricing_structures, ps)
|
|
99
|
+
return self
|
|
100
|
+
|
|
101
|
+
def clear_pricing_structures(self) -> CustomerAgreement:
|
|
102
|
+
"""
|
|
103
|
+
Clear all pricing structures.
|
|
104
|
+
Returns a reference to this `CustomerAgreement` to allow fluent use.
|
|
105
|
+
"""
|
|
106
|
+
self._pricing_structures = None
|
|
107
|
+
return self
|
|
@@ -0,0 +1,67 @@
|
|
|
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__ = ["CustomerKind"]
|
|
7
|
+
|
|
8
|
+
from enum import Enum, unique
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@unique
|
|
12
|
+
class CustomerKind(Enum):
|
|
13
|
+
"""
|
|
14
|
+
Kind of customer.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
UNKNOWN = 0
|
|
18
|
+
""" Default """
|
|
19
|
+
|
|
20
|
+
commercialIndustrial = 1
|
|
21
|
+
""" Commercial industrial customer. """
|
|
22
|
+
|
|
23
|
+
energyServiceScheduler = 2
|
|
24
|
+
""" Customer as energy service scheduler. """
|
|
25
|
+
|
|
26
|
+
energyServiceSupplier = 3
|
|
27
|
+
""" Customer as energy service supplier. """
|
|
28
|
+
|
|
29
|
+
enterprise = 4
|
|
30
|
+
""" --- Missing form CIM --- """
|
|
31
|
+
|
|
32
|
+
internalUse = 5
|
|
33
|
+
""" Internal use customer. """
|
|
34
|
+
|
|
35
|
+
other = 6
|
|
36
|
+
""" Other kind of customer. """
|
|
37
|
+
|
|
38
|
+
pumpingLoad = 7
|
|
39
|
+
""" Pumping load customer. """
|
|
40
|
+
|
|
41
|
+
regionalOperator = 8
|
|
42
|
+
""" --- Missing form CIM --- """
|
|
43
|
+
|
|
44
|
+
residential = 9
|
|
45
|
+
""" Residential customer. """
|
|
46
|
+
|
|
47
|
+
residentialAndCommercial = 10
|
|
48
|
+
""" Residential and commercial customer. """
|
|
49
|
+
|
|
50
|
+
residentialAndStreetlight = 11
|
|
51
|
+
""" Residential and streetlight customer. """
|
|
52
|
+
|
|
53
|
+
residentialFarmService = 12
|
|
54
|
+
""" Residential farm service customer. """
|
|
55
|
+
|
|
56
|
+
residentialStreetlightOthers = 13
|
|
57
|
+
""" Residential streetlight or other related customer. """
|
|
58
|
+
|
|
59
|
+
subsidiary = 14
|
|
60
|
+
""" --- Missing form CIM --- """
|
|
61
|
+
|
|
62
|
+
windMachine = 15
|
|
63
|
+
""" Wind machine customer. """
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def short_name(self):
|
|
67
|
+
return str(self)[13:]
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Copyright 2024 Zeppelin Bend Pty Ltd
|
|
2
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
__all__ = ["PricingStructure"]
|
|
9
|
+
|
|
10
|
+
from typing import Optional, Generator, List, TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
from zepben.ewb.model.cim.iec61968.common.document import Document
|
|
13
|
+
from zepben.ewb.util import get_by_mrid, nlen, ngen, safe_remove
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from zepben.ewb.model.cim.iec61968.customers.tariff import Tariff
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class PricingStructure(Document):
|
|
20
|
+
"""
|
|
21
|
+
Grouping of pricing components and prices used in the creation of customer charges and the eligibility
|
|
22
|
+
criteria under which these terms may be offered to a customer. The reasons for grouping include state,
|
|
23
|
+
customer classification, site characteristics, classification (i.e. fee price structure, deposit price
|
|
24
|
+
structure, electric service price structure, etc.) and accounting requirements.
|
|
25
|
+
"""
|
|
26
|
+
_tariffs: Optional[List[Tariff]] = None
|
|
27
|
+
|
|
28
|
+
def __init__(self, tariffs: List[Tariff] = None, **kwargs):
|
|
29
|
+
super(PricingStructure, self).__init__(**kwargs)
|
|
30
|
+
if tariffs:
|
|
31
|
+
for tariff in tariffs:
|
|
32
|
+
self.add_tariff(tariff)
|
|
33
|
+
|
|
34
|
+
def num_tariffs(self):
|
|
35
|
+
"""
|
|
36
|
+
Returns The number of `Tariff`s associated with this `PricingStructure`
|
|
37
|
+
"""
|
|
38
|
+
return nlen(self._tariffs)
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def tariffs(self) -> Generator[Tariff, None, None]:
|
|
42
|
+
"""
|
|
43
|
+
The `Tariff`s of this `PricingStructure`.
|
|
44
|
+
"""
|
|
45
|
+
return ngen(self._tariffs)
|
|
46
|
+
|
|
47
|
+
def get_tariff(self, mrid: str) -> Tariff:
|
|
48
|
+
"""
|
|
49
|
+
Get the `Tariff` for this `PricingStructure` identified by `mrid`
|
|
50
|
+
|
|
51
|
+
`mrid` the mRID of the required `Tariff`
|
|
52
|
+
Returns The `Tariff` with the specified `mrid` if it exists
|
|
53
|
+
Raises `KeyError` if `mrid` wasn't present.
|
|
54
|
+
"""
|
|
55
|
+
return get_by_mrid(self._tariffs, mrid)
|
|
56
|
+
|
|
57
|
+
def add_tariff(self, tariff: Tariff) -> PricingStructure:
|
|
58
|
+
"""
|
|
59
|
+
Associate a `Tariff` with this `PricingStructure`.
|
|
60
|
+
|
|
61
|
+
`tariff` the `Tariff` to associate with this `PricingStructure`.
|
|
62
|
+
Returns A reference to this `PricingStructure` to allow fluent use.
|
|
63
|
+
Raises `ValueError` if another `Tariff` with the same `mrid` already exists for this `PricingStructure`.
|
|
64
|
+
"""
|
|
65
|
+
if self._validate_reference(tariff, self.get_tariff, "A Tariff"):
|
|
66
|
+
return self
|
|
67
|
+
self._tariffs = list() if self._tariffs is None else self._tariffs
|
|
68
|
+
self._tariffs.append(tariff)
|
|
69
|
+
return self
|
|
70
|
+
|
|
71
|
+
def remove_tariff(self, tariff: Tariff) -> PricingStructure:
|
|
72
|
+
"""
|
|
73
|
+
Disassociate `tariff` from this `PricingStructure`.
|
|
74
|
+
|
|
75
|
+
`tariff` the `Tariff` to disassociate from this `PricingStructure`.
|
|
76
|
+
Returns A reference to this `PricingStructure` to allow fluent use.
|
|
77
|
+
Raises `ValueError` if `tariff` was not associated with this `PricingStructure`.
|
|
78
|
+
"""
|
|
79
|
+
self._tariffs = safe_remove(self._tariffs, tariff)
|
|
80
|
+
return self
|
|
81
|
+
|
|
82
|
+
def clear_tariffs(self) -> PricingStructure:
|
|
83
|
+
"""
|
|
84
|
+
Clear all tariffs.
|
|
85
|
+
Returns A reference to this `PricingStructure` to allow fluent use.
|
|
86
|
+
"""
|
|
87
|
+
self._tariffs = None
|
|
88
|
+
return self
|
|
@@ -0,0 +1,18 @@
|
|
|
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__ = ["Tariff"]
|
|
7
|
+
|
|
8
|
+
from zepben.ewb.model.cim.iec61968.common.document import Document
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Tariff(Document):
|
|
12
|
+
"""
|
|
13
|
+
Document, approved by the responsible regulatory agency, listing the terms and conditions,
|
|
14
|
+
including a schedule of prices, under which utility services will be provided. It has a
|
|
15
|
+
unique number within the state or province. For rate schedules it is frequently allocated
|
|
16
|
+
by the affiliated Public utilities commission (PUC).
|
|
17
|
+
"""
|
|
18
|
+
pass
|
|
@@ -0,0 +1,51 @@
|
|
|
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__ = ["CurrentTransformerInfo"]
|
|
7
|
+
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
from zepben.ewb.model.cim.iec61968.assets.asset_info import AssetInfo
|
|
11
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infcommon.ratio import Ratio
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class CurrentTransformerInfo(AssetInfo):
|
|
15
|
+
"""Properties of current transformer asset."""
|
|
16
|
+
|
|
17
|
+
accuracy_class: Optional[str] = None
|
|
18
|
+
"""CT accuracy classification."""
|
|
19
|
+
|
|
20
|
+
accuracy_limit: Optional[float] = None
|
|
21
|
+
"""Accuracy limit."""
|
|
22
|
+
|
|
23
|
+
core_count: Optional[int] = None
|
|
24
|
+
"""Number of cores."""
|
|
25
|
+
|
|
26
|
+
ct_class: Optional[str] = None
|
|
27
|
+
"""CT classification; i.e. class 10P."""
|
|
28
|
+
|
|
29
|
+
knee_point_voltage: Optional[int] = None
|
|
30
|
+
"""Maximum voltage in volts across the secondary terminals where the CT still displays linear characteristics."""
|
|
31
|
+
|
|
32
|
+
max_ratio: Optional[Ratio] = None
|
|
33
|
+
"""Maximum ratio between the primary and secondary current."""
|
|
34
|
+
|
|
35
|
+
nominal_ratio: Optional[Ratio] = None
|
|
36
|
+
"""Nominal ratio between the primary and secondary current; i.e. 100:5"""
|
|
37
|
+
|
|
38
|
+
primary_ratio: Optional[float] = None
|
|
39
|
+
"""Ratio for the primary winding tap changer (numerator)."""
|
|
40
|
+
|
|
41
|
+
rated_current: Optional[int] = None
|
|
42
|
+
"""Rated current on the primary side in amperes."""
|
|
43
|
+
|
|
44
|
+
secondary_fls_rating: Optional[int] = None
|
|
45
|
+
"""Full load secondary (FLS) rating for secondary winding in amperes."""
|
|
46
|
+
|
|
47
|
+
secondary_ratio: Optional[float] = None
|
|
48
|
+
"""Ratio for the secondary winding tap changer (denominator)."""
|
|
49
|
+
|
|
50
|
+
usage: Optional[str] = None
|
|
51
|
+
"""Intended usage of the CT; i.e. metering, protection."""
|
|
@@ -0,0 +1,33 @@
|
|
|
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__ = ["PotentialTransformerInfo"]
|
|
7
|
+
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
from zepben.ewb.model.cim.iec61968.assets.asset_info import AssetInfo
|
|
11
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infcommon.ratio import Ratio
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class PotentialTransformerInfo(AssetInfo):
|
|
15
|
+
"""Properties of potential transformer asset."""
|
|
16
|
+
|
|
17
|
+
accuracy_class: Optional[str] = None
|
|
18
|
+
"""PT accuracy classification."""
|
|
19
|
+
|
|
20
|
+
nominal_ratio: Optional[Ratio] = None
|
|
21
|
+
"""Nominal ratio between the primary and secondary voltage."""
|
|
22
|
+
|
|
23
|
+
primary_ratio: Optional[float] = None
|
|
24
|
+
"""Ratio for the primary winding tap changer (numerator)."""
|
|
25
|
+
|
|
26
|
+
pt_class: Optional[str] = None
|
|
27
|
+
"""Potential transformer (PT) classification covering burden."""
|
|
28
|
+
|
|
29
|
+
rated_voltage: Optional[int] = None
|
|
30
|
+
"""Rated voltage on the primary side in Volts."""
|
|
31
|
+
|
|
32
|
+
secondary_ratio: Optional[float] = None
|
|
33
|
+
"""Ratio for the secondary winding tap changer (denominator)."""
|
|
@@ -0,0 +1,67 @@
|
|
|
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__ = ["TransformerConstructionKind"]
|
|
7
|
+
|
|
8
|
+
from enum import Enum, unique
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@unique
|
|
12
|
+
class TransformerConstructionKind(Enum):
|
|
13
|
+
"""
|
|
14
|
+
Kind of transformer construction.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
unknown = 0
|
|
18
|
+
""""""
|
|
19
|
+
|
|
20
|
+
onePhase = 1
|
|
21
|
+
""""""
|
|
22
|
+
|
|
23
|
+
threePhase = 2
|
|
24
|
+
""""""
|
|
25
|
+
|
|
26
|
+
aerial = 3
|
|
27
|
+
""""""
|
|
28
|
+
|
|
29
|
+
overhead = 4
|
|
30
|
+
""""""
|
|
31
|
+
|
|
32
|
+
dryType = 5
|
|
33
|
+
""""""
|
|
34
|
+
|
|
35
|
+
network = 6
|
|
36
|
+
""""""
|
|
37
|
+
|
|
38
|
+
padmountDeadFront = 7
|
|
39
|
+
""""""
|
|
40
|
+
|
|
41
|
+
padmountFeedThrough = 8
|
|
42
|
+
""""""
|
|
43
|
+
|
|
44
|
+
padmountLiveFront = 9
|
|
45
|
+
""""""
|
|
46
|
+
|
|
47
|
+
padmountLoopThrough = 10
|
|
48
|
+
""""""
|
|
49
|
+
|
|
50
|
+
padmounted = 11
|
|
51
|
+
""""""
|
|
52
|
+
|
|
53
|
+
subway = 12
|
|
54
|
+
""""""
|
|
55
|
+
|
|
56
|
+
underground = 13
|
|
57
|
+
""""""
|
|
58
|
+
|
|
59
|
+
vault = 14
|
|
60
|
+
""""""
|
|
61
|
+
|
|
62
|
+
vaultThreePhase = 15
|
|
63
|
+
""""""
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def short_name(self):
|
|
67
|
+
return str(self)[28:]
|
|
@@ -0,0 +1,43 @@
|
|
|
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__ = ["TransformerFunctionKind"]
|
|
7
|
+
|
|
8
|
+
from enum import Enum, unique
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@unique
|
|
12
|
+
class TransformerFunctionKind(Enum):
|
|
13
|
+
"""
|
|
14
|
+
Function of a transformer.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
UNKNOWN = 0
|
|
18
|
+
"""Unknown type of transformer."""
|
|
19
|
+
|
|
20
|
+
voltageRegulator = 1
|
|
21
|
+
""" A transformer that changes the voltage magnitude at a certain point in the power system. """
|
|
22
|
+
|
|
23
|
+
distributionTransformer = 2
|
|
24
|
+
""" A transformer that provides the final voltage transformation in the electric power distribution system. """
|
|
25
|
+
|
|
26
|
+
isolationTransformer = 3
|
|
27
|
+
""" A transformer whose primary purpose is to isolate circuits. """
|
|
28
|
+
|
|
29
|
+
autotransformer = 4
|
|
30
|
+
""" A transformer with a special winding divided into several sections enabling the voltage to be varied at will. (IEC ref 811-26-04). """
|
|
31
|
+
|
|
32
|
+
powerTransformer = 5
|
|
33
|
+
""""""
|
|
34
|
+
|
|
35
|
+
secondaryTransformer = 6
|
|
36
|
+
""""""
|
|
37
|
+
|
|
38
|
+
other = 7
|
|
39
|
+
""" Another type of transformer. """
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def short_name(self):
|
|
43
|
+
return str(self)[24:]
|
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
__all__ = ["Pole"]
|
|
9
|
+
|
|
10
|
+
from typing import List, Optional, Generator, TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
from zepben.ewb.model.cim.iec61968.assets.structure import Structure
|
|
13
|
+
from zepben.ewb.util import get_by_mrid, ngen, nlen, safe_remove
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from zepben.ewb.model.cim.iec61968.assets.streetlight import Streetlight
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Pole(Structure):
|
|
20
|
+
"""A Pole Asset"""
|
|
21
|
+
|
|
22
|
+
classification: str = ""
|
|
23
|
+
"""Pole class: 1, 2, 3, 4, 5, 6, 7, H1, H2, Other, Unknown."""
|
|
24
|
+
|
|
25
|
+
_streetlights: Optional[List[Streetlight]] = None
|
|
26
|
+
|
|
27
|
+
def __init__(self, streetlights: List[Streetlight] = None, **kwargs):
|
|
28
|
+
super(Pole, self).__init__(**kwargs)
|
|
29
|
+
if streetlights:
|
|
30
|
+
for light in streetlights:
|
|
31
|
+
self.add_streetlight(light)
|
|
32
|
+
|
|
33
|
+
def num_streetlights(self) -> int:
|
|
34
|
+
"""
|
|
35
|
+
Get the number of `Streetlight`s associated with this `Pole`.
|
|
36
|
+
"""
|
|
37
|
+
return nlen(self._streetlights)
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def streetlights(self) -> Generator[Streetlight, None, None]:
|
|
41
|
+
"""
|
|
42
|
+
The `Streetlight`s of this `Pole`.
|
|
43
|
+
"""
|
|
44
|
+
return ngen(self._streetlights)
|
|
45
|
+
|
|
46
|
+
def get_streetlight(self, mrid: str) -> Streetlight:
|
|
47
|
+
"""
|
|
48
|
+
Get the `Streetlight` for this asset identified by `mrid`.
|
|
49
|
+
|
|
50
|
+
`mrid` the mRID of the required `Streetlight`
|
|
51
|
+
Returns The `Streetlight` with the specified `mrid`.
|
|
52
|
+
Raises `KeyError` if `mrid` wasn't present.
|
|
53
|
+
"""
|
|
54
|
+
return get_by_mrid(self._streetlights, mrid)
|
|
55
|
+
|
|
56
|
+
def add_streetlight(self, streetlight: Streetlight) -> Pole:
|
|
57
|
+
"""
|
|
58
|
+
Associate a `Streetlight` with this `Pole`
|
|
59
|
+
|
|
60
|
+
`streetlight` the `Streetlight` to associate with this `Pole`.
|
|
61
|
+
Returns A reference to this `Pole` to allow fluent use.
|
|
62
|
+
Raises `ValueError` if another `Streetlight` with the same `mrid` already exists in this `Pole`
|
|
63
|
+
"""
|
|
64
|
+
if self._validate_reference(streetlight, self.get_streetlight, "A Streetlight"):
|
|
65
|
+
return self
|
|
66
|
+
|
|
67
|
+
self._streetlights = list() if self._streetlights is None else self._streetlights
|
|
68
|
+
self._streetlights.append(streetlight)
|
|
69
|
+
return self
|
|
70
|
+
|
|
71
|
+
def remove_streetlight(self, streetlight: Streetlight) -> Pole:
|
|
72
|
+
"""
|
|
73
|
+
Disassociate `streetlight` from this `Pole`
|
|
74
|
+
`streetlight` the `Streetlight` to disassociate from this `Pole`.
|
|
75
|
+
Raises `ValueError` if `streetlight` was not associated with this `Pole`.
|
|
76
|
+
Returns A reference to this `Pole` to allow fluent use.
|
|
77
|
+
"""
|
|
78
|
+
self._streetlights = safe_remove(self._streetlights, streetlight)
|
|
79
|
+
return self
|
|
80
|
+
|
|
81
|
+
def clear_streetlights(self) -> Pole:
|
|
82
|
+
"""
|
|
83
|
+
Clear all Streetlights.
|
|
84
|
+
Returns self
|
|
85
|
+
"""
|
|
86
|
+
self._streetlights = None
|
|
87
|
+
return self
|