Mercurial > hgrepos > Python > libs > ConfigMix
comparison configmix/config.py @ 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 |
comparison
equal
deleted
inserted
replaced
| 502:4f90e1eb7af8 | 503:a56f1d97a3f3 |
|---|---|
| 480 | 480 |
| 481 """ | 481 """ |
| 482 varns, varname = self._split_ns(varname) | 482 varns, varname = self._split_ns(varname) |
| 483 if not varns: | 483 if not varns: |
| 484 if varname: | 484 if varname: |
| 485 varnameparts = [ | 485 varnameparts = (unquote(vp) |
| 486 unquote(vp) | 486 for vp in varname.split(_HIER_SEPARATOR)) |
| 487 for vp in varname.split(_HIER_SEPARATOR) | |
| 488 ] | |
| 489 else: | 487 else: |
| 490 varnameparts = tuple() | 488 varnameparts = tuple() |
| 491 else: | 489 else: |
| 492 varnameparts = (varname,) | 490 varnameparts = (varname,) |
| 493 return self.getvarl(*varnameparts, namespace=varns, default=default) | 491 return self.getvarl(*varnameparts, namespace=varns, default=default) |
| 833 varns, varname = self._split_ns(root) | 831 varns, varname = self._split_ns(root) |
| 834 if varns: | 832 if varns: |
| 835 raise ValueError( | 833 raise ValueError( |
| 836 "jailed configurations do not support namespaces") | 834 "jailed configurations do not support namespaces") |
| 837 if varname: | 835 if varname: |
| 838 rootpath = [ | 836 rootpath = (unquote(p) for p in root.split(_HIER_SEPARATOR)) |
| 839 unquote(p) for p in root.split(_HIER_SEPARATOR) | |
| 840 ] | |
| 841 else: | 837 else: |
| 842 rootpath = tuple() | 838 rootpath = tuple() |
| 843 jc = _JailedConfiguration(*rootpath) | 839 jc = _JailedConfiguration(*rootpath) |
| 844 if bind_root: | 840 if bind_root: |
| 845 jc.rebind(self) | 841 jc.rebind(self) |
| 866 configuration from the parent configuration's | 862 configuration from the parent configuration's |
| 867 :meth:`~.Configuration.jailed` factory method. | 863 :meth:`~.Configuration.jailed` factory method. |
| 868 | 864 |
| 869 """ | 865 """ |
| 870 | 866 |
| 871 __slots__ = ("_base", "_path", "_pathstr") | 867 __slots__ = ("_base", "_path", "_path_string") |
| 872 | 868 |
| 873 is_jail = True | 869 is_jail = True |
| 874 """Flag to show that this is a jail for another configuration""" | 870 """Flag to show that this is a jail for another configuration""" |
| 875 | 871 |
| 876 def __init__(self, *path): | 872 def __init__(self, *path): |
| 877 super(_JailedConfiguration, self).__init__() | 873 super(_JailedConfiguration, self).__init__() |
| 878 self._path = path | 874 self._path = path |
| 879 if path: | 875 self._path_string = None |
| 880 self._pathstr = \ | 876 |
| 881 _HIER_SEPARATOR.join( | 877 @property |
| 882 [quote(p) for p in path]) \ | 878 def _pathstr(self): |
| 883 + _HIER_SEPARATOR | 879 v = self._path_string |
| 884 else: | 880 if v is None: |
| 885 self._pathstr = _EMPTY_STR | 881 if self._path: |
| 882 v = _HIER_SEPARATOR.join(quote(p) for p in self._path) \ | |
| 883 + _HIER_SEPARATOR | |
| 884 else: | |
| 885 v = _EMPTY_STR | |
| 886 self._path_string = v | |
| 887 return v | |
| 886 | 888 |
| 887 @property | 889 @property |
| 888 def base(self): | 890 def base(self): |
| 889 """Ask for the base (aka parent) configuration". | 891 """Ask for the base (aka parent) configuration". |
| 890 | 892 |
| 993 else: | 995 else: |
| 994 raise TypeError("a paths item must be a list or tuple") | 996 raise TypeError("a paths item must be a list or tuple") |
| 995 return self._base.getfirstvarl_s(*real_paths, **kwds) | 997 return self._base.getfirstvarl_s(*real_paths, **kwds) |
| 996 | 998 |
| 997 def getvar(self, varname, **kwds): | 999 def getvar(self, varname, **kwds): |
| 998 return self._base.getvar(self._pathstr + varname, **kwds) | 1000 if varname: |
| 1001 varnameparts = tuple(unquote(vp) | |
| 1002 for vp in varname.split(_HIER_SEPARATOR)) | |
| 1003 else: | |
| 1004 varnameparts = tuple() | |
| 1005 return self._base.getvarl(*(self._path + varnameparts), **kwds) | |
| 999 | 1006 |
| 1000 def getkeys(self, varname): | 1007 def getkeys(self, varname): |
| 1001 for k in self._base.getkeys(self._pathstr + varname): | 1008 if varname: |
| 1009 varnameparts = tuple(unquote(vp) | |
| 1010 for vp in varname.split(_HIER_SEPARATOR)) | |
| 1011 else: | |
| 1012 varnameparts = tuple() | |
| 1013 for k in self._base.getkeysl(*(self._path + varnameparts)): | |
| 1002 yield k | 1014 yield k |
| 1003 | 1015 |
| 1004 def getfirstvar(self, *varnames, **kwds): | 1016 def getfirstvar(self, *varnames, **kwds): |
| 1005 real_varnames = [self._pathstr + vn for vn in varnames] | 1017 real_varnames = [self._pathstr + vn for vn in varnames] |
| 1006 return self._base.getfirstvar(*real_varnames, **kwds) | 1018 return self._base.getfirstvar(*real_varnames, **kwds) |
| 1007 | 1019 |
| 1008 def getvar_s(self, varname, **kwds): | 1020 def getvar_s(self, varname, **kwds): |
| 1009 return self._base.getvar_s(self._pathstr + varname, **kwds) | 1021 if varname: |
| 1022 varnameparts = tuple(unquote(vp) | |
| 1023 for vp in varname.split(_HIER_SEPARATOR)) | |
| 1024 else: | |
| 1025 varnameparts = tuple() | |
| 1026 return self._base.getvarl_s(*(self._path + varnameparts), **kwds) | |
| 1010 | 1027 |
| 1011 def getfirstvar_s(self, *varnames, **kwds): | 1028 def getfirstvar_s(self, *varnames, **kwds): |
| 1012 real_varnames = [self._pathstr + vn for vn in varnames] | 1029 real_varnames = [self._pathstr + vn for vn in varnames] |
| 1013 return self._base.getfirstvar_s(*real_varnames, **kwds) | 1030 return self._base.getfirstvar_s(*real_varnames, **kwds) |
| 1014 | 1031 |
| 1050 varns, varname = self._base._split_ns(root) | 1067 varns, varname = self._base._split_ns(root) |
| 1051 if varns: | 1068 if varns: |
| 1052 raise ValueError( | 1069 raise ValueError( |
| 1053 "sub-jails do not support namespaces") | 1070 "sub-jails do not support namespaces") |
| 1054 if varname: | 1071 if varname: |
| 1055 rootpath = [ | 1072 rootpath = ( |
| 1056 unquote(p) for p in varname.split(_HIER_SEPARATOR) | 1073 unquote(p) for p in varname.split(_HIER_SEPARATOR) |
| 1057 ] | 1074 ) |
| 1058 else: | 1075 else: |
| 1059 rootpath = tuple() | 1076 rootpath = tuple() |
| 1060 if self._path: | 1077 if self._path: |
| 1061 new_rootpath = self._path + tuple(rootpath) | 1078 new_rootpath = self._path + tuple(rootpath) |
| 1062 else: | 1079 else: |
