1 |
commit: 2793d2259c34e32bc3f208f5c6f402ebd71e1077 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Nov 18 03:26:18 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Nov 18 03:26:18 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=2793d225 |
7 |
|
8 |
config: centralize mapping impl in _getitem/pop |
9 |
|
10 |
--- |
11 |
pym/portage/package/ebuild/config.py | 36 +++++++++++++++++++-------------- |
12 |
1 files changed, 21 insertions(+), 15 deletions(-) |
13 |
|
14 |
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py |
15 |
index 6d5de92..b722a21 100644 |
16 |
--- a/pym/portage/package/ebuild/config.py |
17 |
+++ b/pym/portage/package/ebuild/config.py |
18 |
@@ -2076,13 +2076,15 @@ class config(object): |
19 |
self._virtuals_manager._treeVirtuals = {} |
20 |
|
21 |
def __delitem__(self,mykey): |
22 |
- self.modifying() |
23 |
- for x in self.lookuplist: |
24 |
- if x != None: |
25 |
- if mykey in x: |
26 |
- del x[mykey] |
27 |
+ self.pop(mykey) |
28 |
+ |
29 |
+ def __getitem__(self, key): |
30 |
+ try: |
31 |
+ return self._getitem(key) |
32 |
+ except KeyError: |
33 |
+ return '' # for backward compat, don't raise KeyError |
34 |
|
35 |
- def __getitem__(self,mykey): |
36 |
+ def _getitem(self, mykey): |
37 |
|
38 |
# These ones point to temporary values when |
39 |
# portage plans to update itself. |
40 |
@@ -2094,15 +2096,17 @@ class config(object): |
41 |
for d in self.lookuplist: |
42 |
if mykey in d: |
43 |
return d[mykey] |
44 |
- return '' # for backward compat, don't raise KeyError |
45 |
+ |
46 |
+ raise KeyError(mykey) |
47 |
|
48 |
def get(self, k, x=None): |
49 |
- for d in self.lookuplist: |
50 |
- if k in d: |
51 |
- return d[k] |
52 |
- return x |
53 |
+ try: |
54 |
+ return self._getitem(k) |
55 |
+ except KeyError: |
56 |
+ return x |
57 |
|
58 |
def pop(self, key, *args): |
59 |
+ self.modifying() |
60 |
if len(args) > 1: |
61 |
raise TypeError( |
62 |
"pop expected at most 2 arguments, got " + \ |
63 |
@@ -2118,10 +2122,12 @@ class config(object): |
64 |
|
65 |
def __contains__(self, mykey): |
66 |
"""Called to implement membership test operators (in and not in).""" |
67 |
- for d in self.lookuplist: |
68 |
- if mykey in d: |
69 |
- return True |
70 |
- return False |
71 |
+ try: |
72 |
+ self._getitem(mykey) |
73 |
+ except KeyError: |
74 |
+ return False |
75 |
+ else: |
76 |
+ return True |
77 |
|
78 |
def setdefault(self, k, x=None): |
79 |
v = self.get(k) |