Mercurial > hgrepos > Python > libs > ConfigMix
diff configmix/config.py @ 418:bb5f11abd12a
Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 02 Dec 2021 01:24:53 +0100 |
| parents | 83d537f1dfbb |
| children | 079a82129110 |
line wrap: on
line diff
--- a/configmix/config.py Wed Dec 01 23:10:20 2021 +0100 +++ b/configmix/config.py Thu Dec 02 01:24:53 2021 +0100 @@ -266,6 +266,20 @@ else: return varvalue + def getkeysl(self, *path, **kwds): + """Yield the keys of a variable value. + + :rtype: A generator + :raise KeyError: + + .. note:: Dictionary keys are not subject to interpolation. + + """ + if "default" in kwds: + raise TypeError("got unexpected keyword argument: default") + for k in self.getvarl(*path, **kwds).keys(): + yield k + def getfirstvarl(self, *paths, **kwds): """A variant of :meth:`~.getvarl` that returns the first found variable in the `paths` list. @@ -336,6 +350,18 @@ varnameparts = (varname,) return self.getvarl(*varnameparts, namespace=varns, default=default) + def getkeys(self, varname): + """Yield all the keys of a variable value. + + :rtype: A generator + :raise KeyError: + + .. note:: Dictionary keys are not subject to interpolation. + + """ + for k in self.getvar(varname).keys(): + yield k + def getfirstvar(self, *varnames, **kwds): """A variant of :meth:`~.getvar` that returns the first found variable in the list of given variables in `varnames`. @@ -775,6 +801,10 @@ def getvarl(self, *path, **kwds): return self._base.getvarl(*(self._path + path), **kwds) + def getkeysl(self, *path, **kwds): + for k in self._base.getkeysl(*(self._path + path), **kwds): + yield k + def getfirstvarl(self, *paths, **kwds): real_paths = [] for path in paths: @@ -805,6 +835,10 @@ def getvar(self, varname, default=_MARKER): return self._base.getvar(self._pathstr + varname, default=default) + def getkeys(self, varname): + for k in self._base.getkeys(self._pathstr + varname): + yield k + def getfirstvar(self, *varnames, **kwds): real_varnames = [self._pathstr + vn for vn in varnames] return self._base.getfirstvar(*real_varnames, **kwds)
