# HG changeset patch # User Franz Glasner # Date 1625816449 -7200 # Node ID 4ee53f6fcac1764bfdec5604581b034036afafa6 # Parent a72e2f36983aacc19c23efcddb356735ae56e828 Implement ".getfirstvar()" and ".getfirstvar_s()". BUGS: Not tested yet and no documentation yet. diff -r a72e2f36983a -r 4ee53f6fcac1 configmix/config.py --- a/configmix/config.py Fri Jul 09 08:58:57 2021 +0200 +++ b/configmix/config.py Fri Jul 09 09:40:49 2021 +0200 @@ -120,6 +120,25 @@ varnameparts = (varname,) return self.getvarl(*varnameparts, namespace=varns, default=default) + def getfirstvar(self, *varnames, **kwds): + """A variant of :meth:`~.getvar` that returns the first found variable + in the list of given variables in `varnames`. + + """ + default = kwds.pop("default", _MARKER) + for varname in varnames: + try: + varvalue = self.getvar(varname) + except KeyError: + pass + else: + return varvalue + if default is _MARKER: + raise KeyError( + "none of the given variables found: %r" % (varnames,)) + else: + return default + def getvarl_s(self, *names, **kwds): """Get a variable - including variables from other namespaces. @@ -161,6 +180,25 @@ else: return default + def getfirstvar_s(self, *varnames, **kwds): + """A variant of :meth:`~.getvar_s` that returns the first found + variable in the list of given variables in `varnames`. + + """ + default = kwds.pop("default", _MARKER) + for varname in varnames: + try: + obj = self.getvar(varname) + except KeyError: + pass + else: + return self.substitute_variables_in_obj(obj) + if default is _MARKER: + raise KeyError( + "none of the given variables found: %r" % (varnames,)) + else: + return default + def getintvarl_s(self, *names, **kwds): """Get a (possibly substituted) variable and coerce text to a number.