Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r14463 - main/trunk/pym/_emerge
Date: Tue, 29 Sep 2009 20:01:00
Message-Id: E1Msisc-0000gb-Dy@stork.gentoo.org
1 Author: zmedico
2 Date: 2009-09-29 20:00:57 +0000 (Tue, 29 Sep 2009)
3 New Revision: 14463
4
5 Modified:
6 main/trunk/pym/_emerge/Package.py
7 Log:
8 Revert the rest of r14280 since it seems that dict bypasses __getitem__
9 and/or __setitem__ too often.
10
11
12 Modified: main/trunk/pym/_emerge/Package.py
13 ===================================================================
14 --- main/trunk/pym/_emerge/Package.py 2009-09-29 19:35:05 UTC (rev 14462)
15 +++ main/trunk/pym/_emerge/Package.py 2009-09-29 20:00:57 UTC (rev 14463)
16 @@ -6,6 +6,7 @@
17 import sys
18 from itertools import chain
19 import portage
20 +from portage.cache.mappings import slot_dict_class
21 from portage.dep import paren_reduce, use_reduce, \
22 paren_normalize, paren_enclose
23 from _emerge.Task import Task
24 @@ -156,7 +157,9 @@
25 _all_metadata_keys.update(Package.metadata_keys)
26 _all_metadata_keys = frozenset(_all_metadata_keys)
27
28 -class _PackageMetadataWrapper(dict):
29 +_PackageMetadataWrapperBase = slot_dict_class(_all_metadata_keys)
30 +
31 +class _PackageMetadataWrapper(_PackageMetadataWrapperBase):
32 """
33 Detect metadata updates and synchronize Package attributes.
34 """
35 @@ -168,7 +171,7 @@
36 ['LICENSE', 'PROPERTIES', 'PROVIDE', 'RESTRICT',])
37
38 def __init__(self, pkg, metadata):
39 - dict.__init__(self)
40 + _PackageMetadataWrapperBase.__init__(self)
41 self._pkg = pkg
42 if not pkg.built:
43 # USE is lazy, but we want it to show up in self.keys().
44 @@ -176,30 +179,8 @@
45
46 self.update(metadata)
47
48 - def update(self, *args, **kwargs):
49 - """dict.update() bypasses __setitem__, so override it."""
50 - if len(args) > 1:
51 - raise TypeError(
52 - "expected at most 1 positional argument, got " + \
53 - repr(len(args)))
54 -
55 - other = None
56 - if args:
57 - other = args[0]
58 -
59 - if other is not None:
60 - try:
61 - i = other.items()
62 - except AttributeError:
63 - i = other
64 - for k, v in i:
65 - self[k] = v
66 -
67 - if kwargs:
68 - self.update(kwargs)
69 -
70 def __getitem__(self, k):
71 - v = dict.__getitem__(self, k)
72 + v = _PackageMetadataWrapperBase.__getitem__(self, k)
73 if k in self._use_conditional_keys:
74 if self._pkg.root_config.settings.local_config and '?' in v:
75 try:
76 @@ -224,7 +205,7 @@
77 return v
78
79 def __setitem__(self, k, v):
80 - dict.__setitem__(self, k, v)
81 + _PackageMetadataWrapperBase.__setitem__(self, k, v)
82 if k in self._wrapped_keys:
83 getattr(self, "_set_" + k.lower())(k, v)
84 elif k in self._use_conditional_keys: