comparison configmix/config.py @ 511:93a5346907ef

Using generator expressions to directly create tuples is a not so good idea performance-wise. Use it only if you have memory issues because it is not very performant. Using tuple([list comprenension]) is at most twice as fast.
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 18 Dec 2021 18:44:21 +0100
parents acf1e8696d68
children bf8a1b1498db
comparison
equal deleted inserted replaced
510:acf1e8696d68 511:93a5346907ef
484 484
485 """ 485 """
486 varns, varname = self._split_ns(varname) 486 varns, varname = self._split_ns(varname)
487 if not varns: 487 if not varns:
488 if varname: 488 if varname:
489 varnameparts = (unquote(vp) 489 varnameparts = tuple([unquote(vp)
490 for vp in varname.split(_HIER_SEPARATOR)) 490 for vp in varname.split(_HIER_SEPARATOR)])
491 else: 491 else:
492 varnameparts = tuple() 492 varnameparts = tuple()
493 else: 493 else:
494 varnameparts = (varname,) 494 varnameparts = (varname,)
495 return self.getvarl(*varnameparts, namespace=varns, default=default) 495 return self.getvarl(*varnameparts, namespace=varns, default=default)
835 varns, varname = self._split_ns(root) 835 varns, varname = self._split_ns(root)
836 if varns: 836 if varns:
837 raise ValueError( 837 raise ValueError(
838 "jailed configurations do not support namespaces") 838 "jailed configurations do not support namespaces")
839 if varname: 839 if varname:
840 rootpath = (unquote(p) for p in root.split(_HIER_SEPARATOR)) 840 rootpath = tuple([unquote(p)
841 for p in root.split(_HIER_SEPARATOR)])
841 else: 842 else:
842 rootpath = tuple() 843 rootpath = tuple()
843 jc = _JailedConfiguration(*rootpath) 844 jc = _JailedConfiguration(*rootpath)
844 if bind_root: 845 if bind_root:
845 jc.rebind(self) 846 jc.rebind(self)
1000 raise TypeError("a paths item must be a list or tuple") 1001 raise TypeError("a paths item must be a list or tuple")
1001 return self._base.getfirstvarl_s(*real_paths, **kwds) 1002 return self._base.getfirstvarl_s(*real_paths, **kwds)
1002 1003
1003 def getvar(self, varname, **kwds): 1004 def getvar(self, varname, **kwds):
1004 if varname: 1005 if varname:
1005 varnameparts = tuple(unquote(vp) 1006 varnameparts = tuple([unquote(vp)
1006 for vp in varname.split(_HIER_SEPARATOR)) 1007 for vp in varname.split(_HIER_SEPARATOR)])
1007 else: 1008 else:
1008 varnameparts = tuple() 1009 varnameparts = tuple()
1009 return self._base.getvarl(*(self._path + varnameparts), **kwds) 1010 return self._base.getvarl(*(self._path + varnameparts), **kwds)
1010 1011
1011 def getkeys(self, varname): 1012 def getkeys(self, varname):
1012 if varname: 1013 if varname:
1013 varnameparts = tuple(unquote(vp) 1014 varnameparts = tuple([unquote(vp)
1014 for vp in varname.split(_HIER_SEPARATOR)) 1015 for vp in varname.split(_HIER_SEPARATOR)])
1015 else: 1016 else:
1016 varnameparts = tuple() 1017 varnameparts = tuple()
1017 for k in self._base.getkeysl(*(self._path + varnameparts)): 1018 for k in self._base.getkeysl(*(self._path + varnameparts)):
1018 yield k 1019 yield k
1019 1020
1021 real_varnames = [self._pathstr + vn for vn in varnames] 1022 real_varnames = [self._pathstr + vn for vn in varnames]
1022 return self._base.getfirstvar(*real_varnames, **kwds) 1023 return self._base.getfirstvar(*real_varnames, **kwds)
1023 1024
1024 def getvar_s(self, varname, **kwds): 1025 def getvar_s(self, varname, **kwds):
1025 if varname: 1026 if varname:
1026 varnameparts = tuple(unquote(vp) 1027 varnameparts = tuple([unquote(vp)
1027 for vp in varname.split(_HIER_SEPARATOR)) 1028 for vp in varname.split(_HIER_SEPARATOR)])
1028 else: 1029 else:
1029 varnameparts = tuple() 1030 varnameparts = tuple()
1030 return self._base.getvarl_s(*(self._path + varnameparts), **kwds) 1031 return self._base.getvarl_s(*(self._path + varnameparts), **kwds)
1031 1032
1032 def getfirstvar_s(self, *varnames, **kwds): 1033 def getfirstvar_s(self, *varnames, **kwds):
1071 varns, varname = self._base._split_ns(root) 1072 varns, varname = self._base._split_ns(root)
1072 if varns: 1073 if varns:
1073 raise ValueError( 1074 raise ValueError(
1074 "sub-jails do not support namespaces") 1075 "sub-jails do not support namespaces")
1075 if varname: 1076 if varname:
1076 rootpath = ( 1077 rootpath = tuple([unquote(p)
1077 unquote(p) for p in varname.split(_HIER_SEPARATOR) 1078 for p in varname.split(_HIER_SEPARATOR)])
1078 )
1079 else: 1079 else:
1080 rootpath = tuple() 1080 rootpath = tuple()
1081 if self._path: 1081 if self._path:
1082 new_rootpath = self._path + tuple(rootpath) 1082 new_rootpath = self._path + tuple(rootpath)
1083 else: 1083 else: