Mercurial > hgrepos > Python > libs > ConfigMix
changeset 349:83f76a41cf7c
Implement a special filter named "None" that suppresses "KeyErrors" from interpolation lookups and returns a Python "None" instead
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 24 Jun 2021 09:33:22 +0200 |
| parents | 396d8d9aaead |
| children | 9d729c479dc2 |
| files | configmix/config.py configmix/variables.py |
| diffstat | 2 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/configmix/config.py Wed Jun 23 15:00:37 2021 +0200 +++ b/configmix/config.py Thu Jun 24 09:33:22 2021 +0200 @@ -345,7 +345,12 @@ return s varname, filters = self._split_filters(s[start+2:end]) try: - varvalue = self._apply_filters(filters, self.getvar_s(varname)) + if "None" in filters: + varvalue = self._apply_filters( + filters, self.getvar_s(varname, default=None)) + else: + varvalue = self._apply_filters( + filters, self.getvar_s(varname)) except KeyError: warnings.warn("Cannot expand variable %r in string " "%r" % (varname, s, ),
--- a/configmix/variables.py Wed Jun 23 15:00:37 2021 +0200 +++ b/configmix/variables.py Thu Jun 24 09:33:22 2021 +0200 @@ -244,6 +244,17 @@ return v.upper() +@filter("None") +def None_filter_impl(config, v): + """Identity. + + The `None` filter is just a marker to not throw `KeyError` but return + `None`. + + """ + return v + + # Register the default namespaces add_varns("ENV", _envlookup) add_varns("OS", _oslookup)
