Skip to content
Snippets Groups Projects
Commit da7b8861 authored by Valerio Mariani's avatar Valerio Mariani
Browse files

Switched to ast module to parse dictionaries and lists

parent ab6f50c9
No related branches found
No related tags found
No related merge requests found
...@@ -28,9 +28,7 @@ configuration files. ...@@ -28,9 +28,7 @@ configuration files.
""" """
import argparse import ast
import os
import json
def parse_parameters(config): def parse_parameters(config):
...@@ -84,18 +82,20 @@ def parse_parameters(config): ...@@ -84,18 +82,20 @@ def parse_parameters(config):
continue continue
if monitor_params[sect][op].startswith("[") and monitor_params[sect][op].endswith("]"): if monitor_params[sect][op].startswith("[") and monitor_params[sect][op].endswith("]"):
try: try:
monitor_params[sect][op] = json.loads(config.get(sect, op).replace("'", '"')) monitor_params[sect][op] = ast.literal_eval(config.get(sect, op))
continue continue
except: except (SyntaxError, ValueError):
raise RuntimeError('Error parsing parameters. The parameter {0}/{1} parameter ' raise RuntimeError('Error parsing parameter {0} in section {1}. Make sure that the syntax is'
'has an invalid type.'.format(sect, op)) 'correct: list elements are separated by comma, dict entries contain the colon'
'symbol and strings are quoted.'.format(op, sect))
if monitor_params[sect][op].startswith("{") and monitor_params[sect][op].endswith("}"): if monitor_params[sect][op].startswith("{") and monitor_params[sect][op].endswith("}"):
try: try:
monitor_params[sect][op] = json.loads(config.get(sect, op).replace("'", '"')) monitor_params[sect][op] = ast.literal_eval(config.get(sect, op))
continue continue
except: except (SyntaxError, ValueError):
raise RuntimeError('Error parsing parameters. The parameter {0}/{1} parameter ' raise RuntimeError('Error parsing parameter {0} in section {1}. Make sure that the syntax is'
'has an invalid type.'.format(sect, op)) 'correct: list elements are separated by comma, dict entries contain the colon'
'symbol and strings are quoted.'.format(op, sect))
if monitor_params[sect][op] == 'None': if monitor_params[sect][op] == 'None':
monitor_params[sect][op] = None monitor_params[sect][op] = None
continue continue
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment