diff --git a/python/dune/perftool/generation/cache.py b/python/dune/perftool/generation/cache.py index c4255edf0873c67956be787c2219446c987deb94..e60324497d337e286da8e0cfbc4e15d4889ebefc 100644 --- a/python/dune/perftool/generation/cache.py +++ b/python/dune/perftool/generation/cache.py @@ -196,19 +196,14 @@ class _ConditionDict(dict): self.tags = tags def __getitem__(self, i): - # If we do not add these special cases the dictionary will return False - # when we execute the following code: - # - # eval ("True", _ConditionDict(v.tags) - # - # But in this case we want to return True! A normal dictionary would not attempt - # to replace "True" if "True" is not a key. The _ConditionDict obviously has no - # such concerns ;). - if i == "True": - return True - if i == "False": - return False - return i in self.tags + # We first evaluate the given string with eval. This is necessary + # to ensure that 'True' and 'False' are correctly evaluated. Only + # if this failed with a NameError, we check for the existence of + # of the given string in the tag list. + try: + return eval(i) + except NameError: + return i in self.tags def _filter_cache_items(condition):