Mercurial > hgrepos > Python > libs > ConfigMix
changeset 503:a56f1d97a3f3
Use generator comprehensions where possible instead of list comprehensions that are converted to tuples
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 18 Dec 2021 01:49:48 +0100 |
| parents | 4f90e1eb7af8 |
| children | 4dbc16ff2670 |
| files | configmix/config.py |
| diffstat | 1 files changed, 37 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/configmix/config.py Sat Dec 18 01:26:41 2021 +0100 +++ b/configmix/config.py Sat Dec 18 01:49:48 2021 +0100 @@ -482,10 +482,8 @@ varns, varname = self._split_ns(varname) if not varns: if varname: - varnameparts = [ - unquote(vp) - for vp in varname.split(_HIER_SEPARATOR) - ] + varnameparts = (unquote(vp) + for vp in varname.split(_HIER_SEPARATOR)) else: varnameparts = tuple() else: @@ -835,9 +833,7 @@ raise ValueError( "jailed configurations do not support namespaces") if varname: - rootpath = [ - unquote(p) for p in root.split(_HIER_SEPARATOR) - ] + rootpath = (unquote(p) for p in root.split(_HIER_SEPARATOR)) else: rootpath = tuple() jc = _JailedConfiguration(*rootpath) @@ -868,7 +864,7 @@ """ - __slots__ = ("_base", "_path", "_pathstr") + __slots__ = ("_base", "_path", "_path_string") is_jail = True """Flag to show that this is a jail for another configuration""" @@ -876,13 +872,19 @@ def __init__(self, *path): super(_JailedConfiguration, self).__init__() self._path = path - if path: - self._pathstr = \ - _HIER_SEPARATOR.join( - [quote(p) for p in path]) \ - + _HIER_SEPARATOR - else: - self._pathstr = _EMPTY_STR + self._path_string = None + + @property + def _pathstr(self): + v = self._path_string + if v is None: + if self._path: + v = _HIER_SEPARATOR.join(quote(p) for p in self._path) \ + + _HIER_SEPARATOR + else: + v = _EMPTY_STR + self._path_string = v + return v @property def base(self): @@ -995,10 +997,20 @@ return self._base.getfirstvarl_s(*real_paths, **kwds) def getvar(self, varname, **kwds): - return self._base.getvar(self._pathstr + varname, **kwds) + if varname: + varnameparts = tuple(unquote(vp) + for vp in varname.split(_HIER_SEPARATOR)) + else: + varnameparts = tuple() + return self._base.getvarl(*(self._path + varnameparts), **kwds) def getkeys(self, varname): - for k in self._base.getkeys(self._pathstr + varname): + if varname: + varnameparts = tuple(unquote(vp) + for vp in varname.split(_HIER_SEPARATOR)) + else: + varnameparts = tuple() + for k in self._base.getkeysl(*(self._path + varnameparts)): yield k def getfirstvar(self, *varnames, **kwds): @@ -1006,7 +1018,12 @@ return self._base.getfirstvar(*real_varnames, **kwds) def getvar_s(self, varname, **kwds): - return self._base.getvar_s(self._pathstr + varname, **kwds) + if varname: + varnameparts = tuple(unquote(vp) + for vp in varname.split(_HIER_SEPARATOR)) + else: + varnameparts = tuple() + return self._base.getvarl_s(*(self._path + varnameparts), **kwds) def getfirstvar_s(self, *varnames, **kwds): real_varnames = [self._pathstr + vn for vn in varnames] @@ -1052,9 +1069,9 @@ raise ValueError( "sub-jails do not support namespaces") if varname: - rootpath = [ + rootpath = ( unquote(p) for p in varname.split(_HIER_SEPARATOR) - ] + ) else: rootpath = tuple() if self._path:
