Commit 7b2516e0 authored by charlie's avatar charlie
Browse files

Fix argument parsing for map

parent c6e4c1c6
...@@ -70,22 +70,41 @@ def parse_dyn_dim_str(dim_str): ...@@ -70,22 +70,41 @@ def parse_dyn_dim_str(dim_str):
def parse_dyn_dims_str(dds_str): def parse_dyn_dims_str(dds_str):
# expecting string like "{{1, 4, 2}, {4, 4}, {4, 4}}" # expecting string like "[{1, 4, 2}, {4, 4}, {4, 4}]"
dyn_dims = dds_str[1, -2].split(', ') dyn_dims = []
start_ind = 0
dds_str = dds_str.strip('[]')
for i, v in enumerate(dds_str):
if v == '{':
start_ind = i
elif v == '}':
dyn_dims.append(dds_str[start_ind:i + 1])
return [parse_dyn_dim_str(dd) for dd in dyn_dims] return [parse_dyn_dim_str(dd) for dd in dyn_dims]
def parse_map_dyn_input_str(dict_str): def parse_map_dyn_input_str(dict_str):
# return {input_name: list<dynamic_dimension>} # return {input_name: list<dynamic_dimension>}
# expecting string like: {"A": {{1, 4, 2}, {4, 4}, {4, 4}}, "B": {{2, 4}, {2, 4}}} # expecting string like: `{"A": [{1, 4, 2}, {4, 4}, {4, 4}], "B": [{2, 4}, {2, 4}]}`
dict_str = dict_str[1, -2] start_ind = 0
pairs = dict_str.split(', ') in_quotes = False
keys = []
dyn_dim_strs = []
for i, v in enumerate(dict_str):
if v == '"':
if not in_quotes:
start_ind = i
in_quotes = True
else:
keys.append(dict_str[start_ind:i + 1])
in_quotes = False
elif v == '[' and not in_quotes:
start_ind = i
elif v == ']' and not in_quotes:
dyn_dim_strs.append(dict_str[start_ind:i + 1])
dd_dict = {} dd_dict = {}
for p in pairs: for key, dds in zip(keys, dyn_dim_strs):
key, dyn_dims_str = p.split(': ') x = parse_dyn_dims_str(dds)
dds = parse_dyn_dims_str(dyn_dims_str) dd_dict[key.strip('"')] = x
# key[1:-2] to remove quotation marks
dd_dict[key[1:-2]] = dds
return dd_dict return dd_dict
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment