summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-11-17 19:26:18 -0800
committerZac Medico <zmedico@gentoo.org>2011-11-17 19:26:18 -0800
commit2793d2259c34e32bc3f208f5c6f402ebd71e1077 (patch)
treefea3c38234a3866d5b854f5a876a72751bd206fb
parent87cd5dba474f758e291b87a39366bd7edd748bf7 (diff)
downloadportage-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.py36
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)