From f17cb4bc01c475d30207480875f201d668651b62 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Tue, 30 Jan 2018 14:55:14 +0100 Subject: [PATCH] Enable type conversion of form options --- python/dune/perftool/options.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/python/dune/perftool/options.py b/python/dune/perftool/options.py index c3fffbc5..067d6da6 100644 --- a/python/dune/perftool/options.py +++ b/python/dune/perftool/options.py @@ -123,21 +123,20 @@ def update_options_from_commandline(opt): def update_options_from_inifile(opt): """ Return an options array object with updated values from an inifile """ if opt.ini_file: - def parse_ini(section): + def parse_ini(section, opttype): def _fix_types(k, v): - if hasattr(type(opt), k) and getattr(type(opt), k).type is bool: + if hasattr(opttype, k) and getattr(opttype, k).type is bool: return bool(eval(v)) - if hasattr(type(opt), k): - return getattr(type(opt), k).type(v) + if hasattr(opttype, k): + return getattr(opttype, k).type(v) return v ini = parse_ini_file(opt.ini_file).get(section, {}) return {k: _fix_types(k, v) for k, v in ini.items()} - opt = opt.copy(**parse_ini("formcompiler")) - + opt = opt.copy(**parse_ini("formcompiler", PerftoolGlobalOptionsArray)) # Also parse form-specific options for form in [i.strip() for i in opt.operators.split(",")]: - _form_options[form] = PerftoolFormOptionsArray(**parse_ini("formcompiler.{}".format(form))) + _form_options[form] = PerftoolFormOptionsArray(**parse_ini("formcompiler.{}".format(form), PerftoolFormOptionsArray)) return opt -- GitLab