Clean and support v3 inp in
This commit is contained in:
@@ -13,8 +13,8 @@ from .s7_valves import inp_in_valve
|
|||||||
from .s8_tags import inp_in_tag
|
from .s8_tags import inp_in_tag
|
||||||
from .s9_demands import inp_in_demand
|
from .s9_demands import inp_in_demand
|
||||||
from .s10_status import inp_in_status
|
from .s10_status import inp_in_status
|
||||||
from .s11_patterns import inp_in_pattern
|
from .s11_patterns import pattern_v3_types, inp_in_pattern
|
||||||
from .s12_curves import CURVE_TYPE_PUMP, inp_in_curve
|
from .s12_curves import curve_types, inp_in_curve
|
||||||
from .s13_controls import inp_in_control
|
from .s13_controls import inp_in_control
|
||||||
from .s14_rules import inp_in_rule
|
from .s14_rules import inp_in_rule
|
||||||
from .s15_energy import inp_in_energy
|
from .s15_energy import inp_in_energy
|
||||||
@@ -35,9 +35,12 @@ from .s27_backdrop import inp_in_backdrop
|
|||||||
_S = 'S'
|
_S = 'S'
|
||||||
_L = 'L'
|
_L = 'L'
|
||||||
|
|
||||||
|
def _inp_in_option(section: list[str], version: str = '3') -> str:
|
||||||
|
return inp_in_option_v3(section) if version == '3' else inp_in_option(section)
|
||||||
|
|
||||||
_handler = {
|
_handler = {
|
||||||
TITLE : (_S, inp_in_title),
|
TITLE : (_S, inp_in_title),
|
||||||
JUNCTIONS : (_L, inp_in_junction),
|
JUNCTIONS : (_L, inp_in_junction), # line, demand_outside
|
||||||
RESERVOIRS : (_L, inp_in_reservoir),
|
RESERVOIRS : (_L, inp_in_reservoir),
|
||||||
TANKS : (_L, inp_in_tank),
|
TANKS : (_L, inp_in_tank),
|
||||||
PIPES : (_L, inp_in_pipe),
|
PIPES : (_L, inp_in_pipe),
|
||||||
@@ -46,7 +49,7 @@ _handler = {
|
|||||||
TAGS : (_L, inp_in_tag),
|
TAGS : (_L, inp_in_tag),
|
||||||
DEMANDS : (_L, inp_in_demand),
|
DEMANDS : (_L, inp_in_demand),
|
||||||
STATUS : (_L, inp_in_status),
|
STATUS : (_L, inp_in_status),
|
||||||
PATTERNS : (_L, inp_in_pattern),
|
PATTERNS : (_L, inp_in_pattern), # line, fixed
|
||||||
CURVES : (_L, inp_in_curve),
|
CURVES : (_L, inp_in_curve),
|
||||||
CONTROLS : (_L, inp_in_control),
|
CONTROLS : (_L, inp_in_control),
|
||||||
RULES : (_L, inp_in_rule),
|
RULES : (_L, inp_in_rule),
|
||||||
@@ -58,7 +61,7 @@ _handler = {
|
|||||||
MIXING : (_L, inp_in_mixing),
|
MIXING : (_L, inp_in_mixing),
|
||||||
TIMES : (_S, inp_in_time),
|
TIMES : (_S, inp_in_time),
|
||||||
REPORT : (_S, inp_in_report),
|
REPORT : (_S, inp_in_report),
|
||||||
OPTIONS : (_S, inp_in_option),
|
OPTIONS : (_S, _inp_in_option), # line, version
|
||||||
COORDINATES : (_L, inp_in_coord),
|
COORDINATES : (_L, inp_in_coord),
|
||||||
VERTICES : (_L, inp_in_vertex),
|
VERTICES : (_L, inp_in_vertex),
|
||||||
LABELS : (_L, inp_in_label),
|
LABELS : (_L, inp_in_label),
|
||||||
@@ -171,6 +174,7 @@ def parse_file(project: str, inp: str, version: str = '3') -> None:
|
|||||||
if t[0] == _S:
|
if t[0] == _S:
|
||||||
sections[s] = []
|
sections[s] = []
|
||||||
|
|
||||||
|
variable_patterns = []
|
||||||
current_pattern = None
|
current_pattern = None
|
||||||
current_curve = None
|
current_curve = None
|
||||||
curve_type_desc_line = None
|
curve_type_desc_line = None
|
||||||
@@ -209,22 +213,38 @@ def parse_file(project: str, inp: str, version: str = '3') -> None:
|
|||||||
sections[s].append(line)
|
sections[s].append(line)
|
||||||
else:
|
else:
|
||||||
if line.startswith(';'):
|
if line.startswith(';'):
|
||||||
line = line.removeprefix(';')
|
if version != '3': #v2
|
||||||
if s == PATTERNS: # ;desc
|
line = line.removeprefix(';')
|
||||||
pass
|
if s == PATTERNS: # ;desc
|
||||||
elif s == CURVES: # ;type: desc
|
pass
|
||||||
curve_type_desc_line = line
|
elif s == CURVES: # ;type: desc
|
||||||
|
curve_type_desc_line = line
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if s == PATTERNS:
|
if s == PATTERNS:
|
||||||
tokens = line.split()
|
tokens = line.split()
|
||||||
|
|
||||||
|
if tokens[1].upper() in pattern_v3_types: #v3
|
||||||
|
sql_batch.add(f"insert into _pattern (id) values ('{tokens[0]}');")
|
||||||
|
current_pattern = tokens[0]
|
||||||
|
if tokens[1].upper() == 'VARIABLE':
|
||||||
|
variable_patterns.append(tokens[0])
|
||||||
|
continue
|
||||||
|
|
||||||
if current_pattern != tokens[0]:
|
if current_pattern != tokens[0]:
|
||||||
sql_batch.add(f"insert into _pattern (id) values ('{tokens[0]}');")
|
sql_batch.add(f"insert into _pattern (id) values ('{tokens[0]}');")
|
||||||
current_pattern = tokens[0]
|
current_pattern = tokens[0]
|
||||||
|
|
||||||
elif s == CURVES:
|
elif s == CURVES:
|
||||||
tokens = line.split()
|
tokens = line.split()
|
||||||
|
|
||||||
|
if tokens[1].upper() in curve_types: #v3
|
||||||
|
sql_batch.add(f"insert into _curve (id, type) values ('{tokens[0]}', '{tokens[1].upper()}');")
|
||||||
|
current_curve = tokens[0]
|
||||||
|
continue
|
||||||
|
|
||||||
if current_curve != tokens[0]:
|
if current_curve != tokens[0]:
|
||||||
type = CURVE_TYPE_PUMP
|
type = curve_types[0]
|
||||||
if curve_type_desc_line != None:
|
if curve_type_desc_line != None:
|
||||||
type = curve_type_desc_line.split(':')[0].strip()
|
type = curve_type_desc_line.split(':')[0].strip()
|
||||||
sql_batch.add(f"insert into _curve (id, type) values ('{tokens[0]}', '{type}');")
|
sql_batch.add(f"insert into _curve (id, type) values ('{tokens[0]}', '{type}');")
|
||||||
@@ -233,11 +253,10 @@ def parse_file(project: str, inp: str, version: str = '3') -> None:
|
|||||||
|
|
||||||
if s == JUNCTIONS:
|
if s == JUNCTIONS:
|
||||||
sql_batch.add(handler(line, demand_outside))
|
sql_batch.add(handler(line, demand_outside))
|
||||||
|
elif s == PATTERNS:
|
||||||
|
sql_batch.add(handler(line, current_pattern not in variable_patterns))
|
||||||
elif s == OPTIONS:
|
elif s == OPTIONS:
|
||||||
if version == '3':
|
sql_batch.add(handler(line, version))
|
||||||
sql_batch.add(inp_in_option_v3(line))
|
|
||||||
else:
|
|
||||||
sql_batch.add(inp_in_option(line))
|
|
||||||
else:
|
else:
|
||||||
sql_batch.add(handler(line))
|
sql_batch.add(handler(line))
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
from .database import *
|
from .database import *
|
||||||
|
|
||||||
|
PATTERN_V3_TYPE_FIXED = 'FIXED'
|
||||||
|
PATTERN_V3_TYPE_VARIABLE = 'VARIABLE'
|
||||||
|
|
||||||
|
pattern_v3_types = [PATTERN_V3_TYPE_FIXED, PATTERN_V3_TYPE_VARIABLE]
|
||||||
|
|
||||||
def get_pattern_schema(name: str) -> dict[str, dict[str, Any]]:
|
def get_pattern_schema(name: str) -> dict[str, dict[str, Any]]:
|
||||||
return { 'id' : {'type': 'str' , 'optional': False , 'readonly': True },
|
return { 'id' : {'type': 'str' , 'optional': False , 'readonly': True },
|
||||||
@@ -107,11 +111,15 @@ def delete_pattern(name: str, cs: ChangeSet) -> ChangeSet:
|
|||||||
#--------------------------------------------------------------
|
#--------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
def inp_in_pattern(line: str) -> str:
|
def inp_in_pattern(line: str, fixed: bool = True) -> str:
|
||||||
tokens = line.split()
|
tokens = line.split()
|
||||||
sql = ''
|
sql = ''
|
||||||
for token in tokens[1:]:
|
if fixed:
|
||||||
sql += f"insert into patterns (id, factor) values ('{tokens[0]}', {float(token)});"
|
for token in tokens[1:]:
|
||||||
|
sql += f"insert into patterns (id, factor) values ('{tokens[0]}', {float(token)});"
|
||||||
|
else:
|
||||||
|
for token in tokens[1::2]:
|
||||||
|
sql += f"insert into patterns (id, factor) values ('{tokens[0]}', {float(token)});"
|
||||||
return sql
|
return sql
|
||||||
|
|
||||||
|
|
||||||
@@ -125,42 +133,6 @@ def inp_out_pattern(name: str) -> list[str]:
|
|||||||
return lines
|
return lines
|
||||||
|
|
||||||
|
|
||||||
'''def inp_in_pattern_v3(section: list[str]) -> ChangeSet:
|
|
||||||
patterns: dict[str, list[float]] = {}
|
|
||||||
|
|
||||||
variable_patterns: list[str] = []
|
|
||||||
|
|
||||||
count = len(section)
|
|
||||||
for i in range(0, count):
|
|
||||||
if section[i].startswith(';'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
tokens = section[i].split()
|
|
||||||
|
|
||||||
# for EPA3, ignore time of variable pattern...
|
|
||||||
if tokens[1] == 'VARIABLE':
|
|
||||||
variable_patterns.append(tokens[0])
|
|
||||||
continue
|
|
||||||
elif tokens[1] == 'FIXED':
|
|
||||||
continue
|
|
||||||
|
|
||||||
if tokens[0] not in patterns:
|
|
||||||
patterns[tokens[0]] = []
|
|
||||||
if tokens[0] not in variable_patterns:
|
|
||||||
for token in tokens[1:]:
|
|
||||||
patterns[tokens[0]].append(float(token))
|
|
||||||
else:
|
|
||||||
for token in tokens[1::2]:
|
|
||||||
patterns[tokens[0]].append(float(token))
|
|
||||||
|
|
||||||
cs = ChangeSet()
|
|
||||||
for id, factors in patterns.items():
|
|
||||||
cs.append(g_add_prefix | {'type': 'pattern', 'id' : id, 'factors' : factors})
|
|
||||||
|
|
||||||
#print(descs)
|
|
||||||
return cs'''
|
|
||||||
|
|
||||||
|
|
||||||
def inp_out_pattern_v3(name: str) -> list[str]:
|
def inp_out_pattern_v3(name: str) -> list[str]:
|
||||||
lines = []
|
lines = []
|
||||||
objs = read_all(name, f"select * from patterns order by _order")
|
objs = read_all(name, f"select * from patterns order by _order")
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ CURVE_TYPE_EFFICIENCY = 'EFFICIENCY'
|
|||||||
CURVE_TYPE_VOLUME = 'VOLUME'
|
CURVE_TYPE_VOLUME = 'VOLUME'
|
||||||
CURVE_TYPE_HEADLOSS = 'HEADLOSS'
|
CURVE_TYPE_HEADLOSS = 'HEADLOSS'
|
||||||
|
|
||||||
|
curve_types = [CURVE_TYPE_PUMP, CURVE_TYPE_EFFICIENCY, CURVE_TYPE_VOLUME, CURVE_TYPE_HEADLOSS]
|
||||||
|
|
||||||
def get_curve_schema(name: str) -> dict[str, dict[str, Any]]:
|
def get_curve_schema(name: str) -> dict[str, dict[str, Any]]:
|
||||||
return { 'id' : {'type': 'str' , 'optional': False , 'readonly': True },
|
return { 'id' : {'type': 'str' , 'optional': False , 'readonly': True },
|
||||||
'c_type' : {'type': 'str' , 'optional': False , 'readonly': False},
|
'c_type' : {'type': 'str' , 'optional': False , 'readonly': False},
|
||||||
|
|||||||
Reference in New Issue
Block a user