# HG changeset patch # User Franz Glasner # Date 1639788588 -3600 # Node ID a56f1d97a3f3a8820e36774c0e4406f1af6b81d2 # Parent 4f90e1eb7af844195e20363c368238bb2b8c7286 Use generator comprehensions where possible instead of list comprehensions that are converted to tuples diff -r 4f90e1eb7af8 -r a56f1d97a3f3 configmix/config.py --- 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: