Clean code

This commit is contained in:
WQY\qiong
2023-05-10 20:34:00 +08:00
parent 74b667c7ca
commit 6794d02ee0
8 changed files with 27 additions and 502 deletions

View File

@@ -140,15 +140,13 @@ from .clean_api import clean_scada_element
from .s32_region_util import get_nodes_in_boundary, get_nodes_in_region, calculate_convex_hull, calculate_boundary, inflate_boundary, inflate_region
from .s33_region import get_region_schema, get_region, set_region, add_region, delete_region
from .s32_region import get_region_schema, get_region, set_region, add_region, delete_region
from .s34_water_distribution import DISTRIBUTION_TYPE_ADD, DISTRIBUTION_TYPE_OVERRIDE
from .s34_water_distribution import calculate_demand_to_nodes, calculate_demand_to_region
from .s34_water_distribution import distribute_demand_to_nodes, distribute_demand_to_region
from .s32_water_distribution import calculate_demand_to_nodes, calculate_demand_to_region
from .s35_district_metering_area import PARTITION_TYPE_RB, PARTITION_TYPE_KWAY
from .s35_district_metering_area import calculate_district_metering_area
from .s33_district_metering_area import PARTITION_TYPE_RB, PARTITION_TYPE_KWAY
from .s33_district_metering_area import calculate_district_metering_area
from .s36_service_area import calculate_service_area
from .s34_service_area import calculate_service_area
from .s37_virtual_district import calculate_virtual_district
from .s35_virtual_district import calculate_virtual_district

View File

@@ -5739,7 +5739,7 @@ class TestApi:
self.leave(p)
# 33 region
# 32 region
def test_region(self):
@@ -5822,249 +5822,23 @@ class TestApi:
self.leave(p)
# 34 water_distribution
# 32 water_distribution
def test_distribute_demand_to_nodes(self):
p = 'test_distribute_demand_to_nodes'
def test_calculate_demand_to_nodes(self):
p = 'test_calculate_demand_to_nodes'
read_inp(p, f'./inp/net3.inp', '3')
open_project(p)
vds = calculate_virtual_district(p, ['107', '139', '267', '211'])['virtual_districts']
nodes = vds[0]['nodes']
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
distribute_demand_to_nodes(p, 100.0, nodes, DISTRIBUTION_TYPE_ADD)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
distribute_demand_to_nodes(p, -100.0, nodes, DISTRIBUTION_TYPE_ADD)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
distribute_demand_to_nodes(p, 100.0, nodes, DISTRIBUTION_TYPE_OVERRIDE)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 22.112211221122113
assert demands[2] == 6.466202175773133
assert demands[3] == 8.232489915658233
assert demands[4] == 4.180418041804181
assert demands[5] == 7.260726072607261
assert demands[6] == 3.862608483070529
assert demands[7] == 6.466202175773133
assert demands[8] == 5.738907224055739
assert demands[9] == 0.892311453367559
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
distribute_demand_to_nodes(p, -100.0, nodes, DISTRIBUTION_TYPE_OVERRIDE)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands[0] == -17.357291284684024
assert demands[1] == -22.112211221122113
assert demands[2] == -6.466202175773133
assert demands[3] == -8.232489915658233
assert demands[4] == -4.180418041804181
assert demands[5] == -7.260726072607261
assert demands[6] == -3.862608483070529
assert demands[7] == -6.466202175773133
assert demands[8] == -5.738907224055739
assert demands[9] == -0.892311453367559
assert demands[10] == -3.9665077618873
assert demands[11] == -2.9275149737195942
assert demands[12] == -2.1391027991688056
assert demands[13] == -2.9275149737195942
assert demands[14] == -5.469991443588803
result = calculate_demand_to_nodes(p, 100.0, vds[0]['nodes'])
assert result == {'10': 17.357291284684024, '101': 22.112211221122113, '103': 6.466202175773133, '105': 8.232489915658233, '107': 4.180418041804181, '109': 7.260726072607261, '111': 3.862608483070529, '115': 6.466202175773133, '117': 5.738907224055739, '119': 0.892311453367559, '120': 3.9665077618873, '257': 2.9275149737195942, '259': 2.1391027991688056, '261': 2.9275149737195942, '263': 5.469991443588803}
self.leave(p)
def test_distribute_demand_to_nodes_op(self):
p = 'test_distribute_demand_to_nodes_op'
read_inp(p, f'./inp/net3.inp', '3')
open_project(p)
vds = calculate_virtual_district(p, ['107', '139', '267', '211'])['virtual_districts']
nodes = vds[0]['nodes']
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
cs = distribute_demand_to_nodes(p, 100.0, nodes, DISTRIBUTION_TYPE_ADD).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = execute_undo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
demands.reverse()
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
cs = execute_redo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = distribute_demand_to_nodes(p, 100.0, nodes, DISTRIBUTION_TYPE_OVERRIDE).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 22.112211221122113
assert demands[2] == 6.466202175773133
assert demands[3] == 8.232489915658233
assert demands[4] == 4.180418041804181
assert demands[5] == 7.260726072607261
assert demands[6] == 3.862608483070529
assert demands[7] == 6.466202175773133
assert demands[8] == 5.738907224055739
assert demands[9] == 0.892311453367559
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = execute_undo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
demands.reverse()
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = execute_redo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 22.112211221122113
assert demands[2] == 6.466202175773133
assert demands[3] == 8.232489915658233
assert demands[4] == 4.180418041804181
assert demands[5] == 7.260726072607261
assert demands[6] == 3.862608483070529
assert demands[7] == 6.466202175773133
assert demands[8] == 5.738907224055739
assert demands[9] == 0.892311453367559
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
self.leave(p)
def test_distribute_demand_to_region(self):
p = 'test_distribute_demand_to_region'
def test_calculate_demand_to_region(self):
p = 'test_calculate_demand_to_region'
read_inp(p, f'./inp/net3.inp', '3')
open_project(p)
@@ -6074,240 +5848,13 @@ class TestApi:
boundary = inflate_boundary(p, boundary, 0.1)
add_region(p, ChangeSet({'id': 'r', 'boundary': boundary}))
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
distribute_demand_to_region(p, 100.0, 'r', DISTRIBUTION_TYPE_ADD)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
distribute_demand_to_region(p, -100.0, 'r', DISTRIBUTION_TYPE_ADD)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
distribute_demand_to_region(p, 100.0, 'r', DISTRIBUTION_TYPE_OVERRIDE)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 22.112211221122113
assert demands[2] == 6.466202175773133
assert demands[3] == 8.232489915658233
assert demands[4] == 4.180418041804181
assert demands[5] == 7.260726072607261
assert demands[6] == 3.862608483070529
assert demands[7] == 6.466202175773133
assert demands[8] == 5.738907224055739
assert demands[9] == 0.892311453367559
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
distribute_demand_to_region(p, -100.0, 'r', DISTRIBUTION_TYPE_OVERRIDE)
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands[0] == -17.357291284684024
assert demands[1] == -22.112211221122113
assert demands[2] == -6.466202175773133
assert demands[3] == -8.232489915658233
assert demands[4] == -4.180418041804181
assert demands[5] == -7.260726072607261
assert demands[6] == -3.862608483070529
assert demands[7] == -6.466202175773133
assert demands[8] == -5.738907224055739
assert demands[9] == -0.892311453367559
assert demands[10] == -3.9665077618873
assert demands[11] == -2.9275149737195942
assert demands[12] == -2.1391027991688056
assert demands[13] == -2.9275149737195942
assert demands[14] == -5.469991443588803
result = calculate_demand_to_region(p, 100.0, 'r')
assert result == {'10': 17.357291284684024, '101': 22.112211221122113, '103': 6.466202175773133, '105': 8.232489915658233, '107': 4.180418041804181, '109': 7.260726072607261, '111': 3.862608483070529, '115': 6.466202175773133, '117': 5.738907224055739, '119': 0.892311453367559, '120': 3.9665077618873, '257': 2.9275149737195942, '259': 2.1391027991688056, '261': 2.9275149737195942, '263': 5.469991443588803}
self.leave(p)
def test_distribute_demand_to_region_op(self):
p = 'test_distribute_demand_to_region_op'
read_inp(p, f'./inp/net3.inp', '3')
open_project(p)
vds = calculate_virtual_district(p, ['107', '139', '267', '211'])['virtual_districts']
nodes = vds[0]['nodes']
boundary = calculate_boundary(p, nodes)
boundary = inflate_boundary(p, boundary, 0.1)
add_region(p, ChangeSet({'id': 'r', 'boundary': boundary}))
demands = []
for node in nodes:
if not is_junction(p, node):
continue
ds = get_demand(p, node)['demands']
demands.append(ds[0]['demand'])
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
cs = distribute_demand_to_region(p, 100.0, 'r', DISTRIBUTION_TYPE_ADD).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = execute_undo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
demands.reverse()
assert demands == [0.0, 189.95, 133.2, 135.37, 54.64, 231.4, 141.94, 52.1, 117.71, 176.13, 0.0, 0.0, 0.0, 0.0, 0.0]
cs = execute_redo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = distribute_demand_to_region(p, 100.0, 'r', DISTRIBUTION_TYPE_OVERRIDE).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 22.112211221122113
assert demands[2] == 6.466202175773133
assert demands[3] == 8.232489915658233
assert demands[4] == 4.180418041804181
assert demands[5] == 7.260726072607261
assert demands[6] == 3.862608483070529
assert demands[7] == 6.466202175773133
assert demands[8] == 5.738907224055739
assert demands[9] == 0.892311453367559
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = execute_undo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
demands.reverse()
assert demands[0] == 17.357291284684024
assert demands[1] == 212.0622112211221
assert demands[2] == 139.66620217577312
assert demands[3] == 143.60248991565823
assert demands[4] == 58.82041804180418
assert demands[5] == 238.66072607260728
assert demands[6] == 145.80260848307051
assert demands[7] == 58.566202175773135
assert demands[8] == 123.44890722405573
assert demands[9] == 177.02231145336756
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
cs = execute_redo(p).operations
demands = []
for value in cs:
ds = value['demands']
demands.append(ds[0]['demand'])
assert demands[0] == 17.357291284684024
assert demands[1] == 22.112211221122113
assert demands[2] == 6.466202175773133
assert demands[3] == 8.232489915658233
assert demands[4] == 4.180418041804181
assert demands[5] == 7.260726072607261
assert demands[6] == 3.862608483070529
assert demands[7] == 6.466202175773133
assert demands[8] == 5.738907224055739
assert demands[9] == 0.892311453367559
assert demands[10] == 3.9665077618873
assert demands[11] == 2.9275149737195942
assert demands[12] == 2.1391027991688056
assert demands[13] == 2.9275149737195942
assert demands[14] == 5.469991443588803
self.leave(p)
# 35 district_metering_area
# 33 district_metering_area
def test_calculate_district_metering_area(self):
@@ -6324,7 +5871,7 @@ class TestApi:
self.leave(p)
# 36 service_area
# 34 service_area
def test_calculate_service_area(self):
@@ -6348,7 +5895,7 @@ class TestApi:
self.leave(p)
# 37 virtual_district
# 35 virtual_district
def test_calculate_virtual_district(self):

View File

@@ -163,10 +163,6 @@ SCADA_ELEMENT_STATUS_ONLINE = api.SCADA_ELEMENT_STATUS_ONLINE
SCADA_ELEMENT_STATUS_OFFLINE = api.SCADA_ELEMENT_STATUS_OFFLINE
DISTRIBUTION_TYPE_ADD = api.DISTRIBUTION_TYPE_ADD
DISTRIBUTION_TYPE_OVERRIDE = api.DISTRIBUTION_TYPE_OVERRIDE
PARTITION_TYPE_RB = api.PARTITION_TYPE_RB
PARTITION_TYPE_KWAY = api.PARTITION_TYPE_KWAY
@@ -985,7 +981,7 @@ def get_all_scada_elements(name: str) -> list[dict[str, Any]]:
############################################################
# region_util 32
# general_region 32
############################################################
def get_nodes_in_boundary(name: str, boundary: list[tuple[float, float]]) -> list[str]:
@@ -1006,10 +1002,11 @@ def inflate_boundary(name: str, boundary: list[tuple[float, float]], delta: floa
def inflate_region(name: str, region_id: str, delta: float = 0.5) -> list[tuple[float, float]]:
return api.inflate_region(name, region_id, delta)
def calculate_demand_to_nodes(name: str, demand: float, nodes: list[str]) -> dict[str, float]:
return api.calculate_demand_to_nodes(name, demand, nodes)
############################################################
# general_region 33
############################################################
def calculate_demand_to_region(name: str, demand: float, region: str) -> dict[str, float]:
return api.calculate_demand_to_region(name, demand, region)
def get_region_schema(name: str) -> dict[str, dict[str, Any]]:
return api.get_region_schema(name)
@@ -1029,24 +1026,7 @@ def delete_region(name: str, cs: ChangeSet) -> ChangeSet:
############################################################
# water_distribution 34
############################################################
def calculate_demand_to_nodes(name: str, demand: float, nodes: list[str]) -> dict[str, float]:
return api.calculate_demand_to_nodes(name, demand, nodes)
def calculate_demand_to_region(name: str, demand: float, region: str) -> dict[str, float]:
return api.calculate_demand_to_region(name, demand, region)
def distribute_demand_to_nodes(name: str, demand: float, nodes: list[str], type: str = DISTRIBUTION_TYPE_ADD) -> ChangeSet:
return api.distribute_demand_to_nodes(name, demand, nodes, type)
def distribute_demand_to_region(name: str, demand: float, region: str, type: str = DISTRIBUTION_TYPE_ADD) -> ChangeSet:
return api.distribute_demand_to_region(name, demand, region, type)
############################################################
# district_metering_area 35
# district_metering_area 33
############################################################
def calculate_district_metering_area(name: str, nodes: list[str], part_count: int = 1, part_type: int = PARTITION_TYPE_RB) -> list[list[str]]:
@@ -1054,7 +1034,7 @@ def calculate_district_metering_area(name: str, nodes: list[str], part_count: in
############################################################
# service_area 36
# service_area 34
############################################################
def calculate_service_area(name: str, time_index: int = 0) -> dict[str, Any]:
@@ -1062,7 +1042,7 @@ def calculate_service_area(name: str, time_index: int = 0) -> dict[str, Any]:
############################################################
# virtual_district 37
# virtual_district 35
############################################################
def calculate_virtual_district(name: str, centers: list[str]) -> dict[str, list[Any]]: