changeset 528:54a8d020f5d5

Apply None and Empty interpolation filters only on KeyErrors
author Franz Glasner <f.glasner@feldmann-mg.com>
date Mon, 20 Dec 2021 13:39:11 +0100
parents 08924499db3c
children 9976ff66c439
files configmix/config.py
diffstat 1 files changed, 16 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/configmix/config.py	Mon Dec 20 13:12:14 2021 +0100
+++ b/configmix/config.py	Mon Dec 20 13:39:11 2021 +0100
@@ -662,15 +662,12 @@
         if sep:
             filters = filters.strip()
             if filters:
-                filters = filters.split(_FILTER_SEPARATOR)
                 return (name.rstrip(),
-                        filters,
-                        NONE_FILTER in filters,
-                        EMPTY_FILTER in filters)
+                        filters.split(_FILTER_SEPARATOR))
             else:
-                return (name.rstrip(), [], False, False)
+                return (name.rstrip(), [])
         else:
-            return (name, [], False, False)
+            return (name, [])
 
     def _lookupvar(self, *path):
         """Lookup a variable within a hierarchy.
@@ -790,25 +787,22 @@
             if end < 0:
                 rest = start
                 break
-            varname, filters, none_filter, empty_filter = self._split_filters(
+            varname, filters = self._split_filters(
                 s[start+2:end])
             try:
-                if none_filter:
-                    varvalue = self._apply_filters(
-                        filters, self.getvar_s(varname, default=None))
-                elif empty_filter:
-                    varvalue = self._apply_filters(
-                        filters, self.getvar_s(varname,
-                                               default=_EMPTY_STR))
+                varvalue = self.getvar_s(varname)
+            except KeyError:
+                if NONE_FILTER in filters:
+                    varvalue = None
+                elif EMPTY_FILTER in filters:
+                    varvalue = _EMPTY_STR
                 else:
-                    varvalue = self._apply_filters(
-                        filters, self.getvar_s(varname))
-            except KeyError:
-                warnings.warn("Cannot expand variable %r in string "
-                              "%r" % (varname, s, ),
-                              UserWarning,
-                              stacklevel=1)
-                raise
+                    warnings.warn("Cannot expand variable %r in string "
+                                  "%r" % (varname, s, ),
+                                  UserWarning,
+                                  stacklevel=1)
+                    raise
+            varvalue = self._apply_filters(filters, varvalue)
             rest = end + 2
             #
             # Dont apply and type conversions to the variable value if