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