diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-06-22 02:45:18 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-06-22 02:45:18 +0000 |
commit | 817be01f9ea3e703a861e4ec8ade82683903232a (patch) | |
tree | ea333f579cd56df3f780a9f340dff4c811e1af2f | |
parent | 05e710dc0187255e2bd7e8ab7480e3ce1ce6fde4 (diff) | |
download | portage-817be01f9ea3e703a861e4ec8ade82683903232a.tar.gz portage-817be01f9ea3e703a861e4ec8ade82683903232a.tar.bz2 portage-817be01f9ea3e703a861e4ec8ade82683903232a.zip |
config class mapping interface cleanups from trunk r6916, r6919, and r6920.
svn path=/main/branches/2.1.2/; revision=6933
-rw-r--r-- | pym/portage.py | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/pym/portage.py b/pym/portage.py index 44451269d..5369619d2 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -2144,49 +2144,46 @@ class config: del x[mykey] def __getitem__(self,mykey): - match = '' - for x in self.lookuplist: - if x is None: - writemsg("!!! lookuplist is null.\n") - elif x.has_key(mykey): - match = x[mykey] - break - return match + for d in self.lookuplist: + if mykey in d: + return d[mykey] + return '' # for backward compat, don't raise KeyError + + def get(self, k, x=None): + for d in self.lookuplist: + if k in d: + return d[k] + return x def has_key(self,mykey): - for x in self.lookuplist: - if x.has_key(mykey): - return 1 - return 0 + return mykey in self def __contains__(self, mykey): """Called to implement membership test operators (in and not in).""" - return bool(self.has_key(mykey)) + for d in self.lookuplist: + if mykey in d: + return True + return False def setdefault(self, k, x=None): - if k in self: - return self[k] + v = self.get(k) + if v is not None: + return v else: self[k] = x return x - def get(self, k, x=None): - if k in self: - return self[k] - else: - return x - def keys(self): return list(self) def __iter__(self): keys = set() for d in self.lookuplist: - for k in d: - if k in keys: - continue - keys.add(k) - yield k + keys.update(d) + return iter(keys) + + def iterkeys(self): + return iter(self) def __setitem__(self,mykey,myvalue): "set a value; will be thrown away at reset() time" |