diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-11-17 19:26:18 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-11-17 19:26:18 -0800 |
commit | 2793d2259c34e32bc3f208f5c6f402ebd71e1077 (patch) | |
tree | fea3c38234a3866d5b854f5a876a72751bd206fb | |
parent | 87cd5dba474f758e291b87a39366bd7edd748bf7 (diff) | |
download | portage-2793d2259c34e32bc3f208f5c6f402ebd71e1077.tar.gz portage-2793d2259c34e32bc3f208f5c6f402ebd71e1077.tar.bz2 portage-2793d2259c34e32bc3f208f5c6f402ebd71e1077.zip |
config: centralize mapping impl in _getitem/pop
-rw-r--r-- | pym/portage/package/ebuild/config.py | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py index 6d5de92a1..b722a21a0 100644 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@ -2076,13 +2076,15 @@ class config(object): self._virtuals_manager._treeVirtuals = {} def __delitem__(self,mykey): - self.modifying() - for x in self.lookuplist: - if x != None: - if mykey in x: - del x[mykey] + self.pop(mykey) + + def __getitem__(self, key): + try: + return self._getitem(key) + except KeyError: + return '' # for backward compat, don't raise KeyError - def __getitem__(self,mykey): + def _getitem(self, mykey): # These ones point to temporary values when # portage plans to update itself. @@ -2094,15 +2096,17 @@ class config(object): for d in self.lookuplist: if mykey in d: return d[mykey] - return '' # for backward compat, don't raise KeyError + + raise KeyError(mykey) def get(self, k, x=None): - for d in self.lookuplist: - if k in d: - return d[k] - return x + try: + return self._getitem(k) + except KeyError: + return x def pop(self, key, *args): + self.modifying() if len(args) > 1: raise TypeError( "pop expected at most 2 arguments, got " + \ @@ -2118,10 +2122,12 @@ class config(object): def __contains__(self, mykey): """Called to implement membership test operators (in and not in).""" - for d in self.lookuplist: - if mykey in d: - return True - return False + try: + self._getitem(mykey) + except KeyError: + return False + else: + return True def setdefault(self, k, x=None): v = self.get(k) |