comparison configmix/config.py @ 439:bd27da55483a

Optimized __contains__() implementation for jailed and unjailed configurations
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 10 Dec 2021 02:15:00 +0100
parents 37424d1f8dcf
children f297c23f78f0
comparison
equal deleted inserted replaced
438:37424d1f8dcf 439:bd27da55483a
244 """ 244 """
245 if isinstance(key, (tuple, list)): 245 if isinstance(key, (tuple, list)):
246 return self.getvarl_s(*key) 246 return self.getvarl_s(*key)
247 else: 247 else:
248 return self.getvarl_s(key) 248 return self.getvarl_s(key)
249
250 def __contains__(self, key):
251 if isinstance(key, (tuple, list)):
252 # No namespace and quoting support here
253 try:
254 self._lookupvar(*key)
255 except KeyError:
256 return False
257 else:
258 return True
259 else:
260 return super(Configuration, self).__contains__(key)
249 261
250 def getvarl(self, *path, **kwds): 262 def getvarl(self, *path, **kwds):
251 """Get a variable where the hierarchy is given in `path` as sequence 263 """Get a variable where the hierarchy is given in `path` as sequence
252 and the namespace is given in the `namespace` keyword argument. 264 and the namespace is given in the `namespace` keyword argument.
253 265
825 if isinstance(key, (tuple, list)): 837 if isinstance(key, (tuple, list)):
826 return self.getvarl_s(*key) 838 return self.getvarl_s(*key)
827 else: 839 else:
828 return self.getvarl_s(key) 840 return self.getvarl_s(key)
829 841
842 def __contains__(self, key):
843 if isinstance(key, (tuple, list)):
844 return (self._path + key) in self._base
845 else:
846 return (self._path + (key, )) in self._base
847
830 def getvarl(self, *path, **kwds): 848 def getvarl(self, *path, **kwds):
831 return self._base.getvarl(*(self._path + path), **kwds) 849 return self._base.getvarl(*(self._path + path), **kwds)
832 850
833 def getkeysl(self, *path, **kwds): 851 def getkeysl(self, *path, **kwds):
834 for k in self._base.getkeysl(*(self._path + path), **kwds): 852 for k in self._base.getkeysl(*(self._path + path), **kwds):