Skip to content

Commit 0559be4

Browse files
committed
test: replace match:case in util, which is supported only in 3.10+
1 parent a436699 commit 0559be4

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

tests/util/__init__.py

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,34 @@ def lp_to_py_object(lp: str):
3838
result[t_set[0]] = t_set[1]
3939

4040
fields = groups[1].split(',')
41+
42+
def check_bool(token):
43+
if token.lower()[0] == 't':
44+
return True
45+
return False
46+
47+
parse_field_val = {
48+
'i': lambda s: int(s.replace('i', '')),
49+
'u': lambda s: int(s.replace('u', '')),
50+
'\"': lambda s: s.replace('"', ''),
51+
'e': lambda s: check_bool(s),
52+
'E': lambda s: check_bool(s),
53+
't': lambda s: check_bool(s),
54+
'T': lambda s: check_bool(s),
55+
'f': lambda s: check_bool(s),
56+
'F': lambda s: check_bool(s),
57+
'd': lambda s: float(s)
58+
}
59+
4160
for field in fields:
4261
f_set = field.split('=')
43-
lastchar = f_set[1][len(f_set[1]) - 1]
44-
match lastchar:
45-
case 'i': # integer
46-
result[f_set[0]] = int(f_set[1].replace('i',''))
47-
case 'u': # unsigned integer
48-
result[f_set[0]] = int(f_set[1].replace('u',''))
49-
case '"': # string
50-
result[f_set[0]] = f_set[1].replace('"',"")
51-
case 'e' | 'E' | 't' | 'T' | 'f' | 'F':
52-
if f_set[1][0].lower() == 't':
53-
result[f_set[0]] = True
54-
else:
55-
result[f_set[0]] = False
56-
case _: # assume float
57-
result[f_set[0]] = float(f_set[1])
62+
last_char = f_set[1][len(f_set[1]) - 1]
63+
if last_char in '0123456789':
64+
last_char = 'd'
65+
if last_char in parse_field_val.keys():
66+
result[f_set[0]] = parse_field_val[last_char](f_set[1])
67+
else:
68+
result[f_set[0]] = None
5869

5970
result['time'] = pandas.Timestamp(int(groups[2]))
6071
return result

0 commit comments

Comments
 (0)