Mercurial > hgrepos > Python > libs > ConfigMix
comparison configmix/config.py @ 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 |
comparison
equal
deleted
inserted
replaced
| 527:08924499db3c | 528:54a8d020f5d5 |
|---|---|
| 660 def _split_filters(self, s): | 660 def _split_filters(self, s): |
| 661 name, sep, filters = s.partition(_FILTER_SEPARATOR) | 661 name, sep, filters = s.partition(_FILTER_SEPARATOR) |
| 662 if sep: | 662 if sep: |
| 663 filters = filters.strip() | 663 filters = filters.strip() |
| 664 if filters: | 664 if filters: |
| 665 filters = filters.split(_FILTER_SEPARATOR) | |
| 666 return (name.rstrip(), | 665 return (name.rstrip(), |
| 667 filters, | 666 filters.split(_FILTER_SEPARATOR)) |
| 668 NONE_FILTER in filters, | 667 else: |
| 669 EMPTY_FILTER in filters) | 668 return (name.rstrip(), []) |
| 670 else: | 669 else: |
| 671 return (name.rstrip(), [], False, False) | 670 return (name, []) |
| 672 else: | |
| 673 return (name, [], False, False) | |
| 674 | 671 |
| 675 def _lookupvar(self, *path): | 672 def _lookupvar(self, *path): |
| 676 """Lookup a variable within a hierarchy. | 673 """Lookup a variable within a hierarchy. |
| 677 | 674 |
| 678 :raise KeyError: An unexisting `path` raises a `KeyError` | 675 :raise KeyError: An unexisting `path` raises a `KeyError` |
| 788 res_append(s[rest:start]) | 785 res_append(s[rest:start]) |
| 789 end = s.find(_ENDTOK, start) | 786 end = s.find(_ENDTOK, start) |
| 790 if end < 0: | 787 if end < 0: |
| 791 rest = start | 788 rest = start |
| 792 break | 789 break |
| 793 varname, filters, none_filter, empty_filter = self._split_filters( | 790 varname, filters = self._split_filters( |
| 794 s[start+2:end]) | 791 s[start+2:end]) |
| 795 try: | 792 try: |
| 796 if none_filter: | 793 varvalue = self.getvar_s(varname) |
| 797 varvalue = self._apply_filters( | 794 except KeyError: |
| 798 filters, self.getvar_s(varname, default=None)) | 795 if NONE_FILTER in filters: |
| 799 elif empty_filter: | 796 varvalue = None |
| 800 varvalue = self._apply_filters( | 797 elif EMPTY_FILTER in filters: |
| 801 filters, self.getvar_s(varname, | 798 varvalue = _EMPTY_STR |
| 802 default=_EMPTY_STR)) | |
| 803 else: | 799 else: |
| 804 varvalue = self._apply_filters( | 800 warnings.warn("Cannot expand variable %r in string " |
| 805 filters, self.getvar_s(varname)) | 801 "%r" % (varname, s, ), |
| 806 except KeyError: | 802 UserWarning, |
| 807 warnings.warn("Cannot expand variable %r in string " | 803 stacklevel=1) |
| 808 "%r" % (varname, s, ), | 804 raise |
| 809 UserWarning, | 805 varvalue = self._apply_filters(filters, varvalue) |
| 810 stacklevel=1) | |
| 811 raise | |
| 812 rest = end + 2 | 806 rest = end + 2 |
| 813 # | 807 # |
| 814 # Dont apply and type conversions to the variable value if | 808 # Dont apply and type conversions to the variable value if |
| 815 # the whole `s` is just one expansion | 809 # the whole `s` is just one expansion |
| 816 # | 810 # |
