Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10797 - in main/trunk/pym/portage: . cache dbapi
Date: Thu, 26 Jun 2008 00:49:17
Message-Id: E1KBffj-00055g-GO@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-06-26 00:49:10 +0000 (Thu, 26 Jun 2008)
3 New Revision: 10797
4
5 Modified:
6 main/trunk/pym/portage/cache/mappings.py
7 main/trunk/pym/portage/dbapi/bintree.py
8 main/trunk/pym/portage/getbinpkg.py
9 Log:
10 Make PackageIndex use SlotDict for package metadata storage. The set of
11 allowed keys is passed into the PackageIndex constructor (normal dict
12 instances will be used if the set of keys is not passed in for some
13 reason). A SlotDict.allowed_keys attribute now provides access to a
14 frozenset of allowed keys.
15
16
17 Modified: main/trunk/pym/portage/cache/mappings.py
18 ===================================================================
19 --- main/trunk/pym/portage/cache/mappings.py 2008-06-25 23:10:28 UTC (rev 10796)
20 +++ main/trunk/pym/portage/cache/mappings.py 2008-06-26 00:49:10 UTC (rev 10797)
21 @@ -125,8 +125,9 @@
22
23 class SlotDict(object):
24
25 - _keys = keys_set
26 - __slots__ = ("__weakref__",) + tuple("_val_" + k for k in _keys)
27 + allowed_keys = keys_set
28 + __slots__ = ("__weakref__",) + \
29 + tuple("_val_" + k for k in allowed_keys)
30
31 def __iter__(self):
32 for k, v in self.iteritems():
33 @@ -142,7 +143,7 @@
34 return list(self)
35
36 def iteritems(self):
37 - for k in self._keys:
38 + for k in self.allowed_keys:
39 try:
40 yield (k, getattr(self, "_val_" + k))
41 except AttributeError:
42 @@ -229,12 +230,12 @@
43 return c
44
45 def clear(self):
46 - for k in self._keys:
47 + for k in self.allowed_keys:
48 try:
49 delattr(self, "_val_" + k)
50 except AttributeError:
51 pass
52
53 v = SlotDict
54 - _slot_dict_classes[keys_set] = v
55 + _slot_dict_classes[v.allowed_keys] = v
56 return v
57
58 Modified: main/trunk/pym/portage/dbapi/bintree.py
59 ===================================================================
60 --- main/trunk/pym/portage/dbapi/bintree.py 2008-06-25 23:10:28 UTC (rev 10796)
61 +++ main/trunk/pym/portage/dbapi/bintree.py 2008-06-26 00:49:10 UTC (rev 10797)
62 @@ -18,7 +18,7 @@
63
64 import os, errno, stat
65 import re
66 -from itertools import izip
67 +from itertools import chain, izip
68
69 class bindbapi(fakedbapi):
70 _known_keys = frozenset(list(fakedbapi._known_keys) + \
71 @@ -182,6 +182,16 @@
72 ("repository" , "REPO"),
73 )
74
75 + self._pkgindex_allowed_pkg_keys = set(chain(
76 + self._pkgindex_keys,
77 + self._pkgindex_aux_keys,
78 + self._pkgindex_hashes,
79 + self._pkgindex_default_pkg_data,
80 + self._pkgindex_inherited_keys,
81 + self._pkgindex_default_header_data,
82 + chain(*self._pkgindex_translated_keys)
83 + ))
84 +
85 def move_ent(self, mylist):
86 if not self.populated:
87 self.populate()
88 @@ -827,6 +837,7 @@
89
90 def _new_pkgindex(self):
91 return portage.getbinpkg.PackageIndex(
92 + allowed_pkg_keys=self._pkgindex_allowed_pkg_keys,
93 default_header_data=self._pkgindex_default_header_data,
94 default_pkg_data=self._pkgindex_default_pkg_data,
95 inherited_keys=self._pkgindex_inherited_keys,
96
97 Modified: main/trunk/pym/portage/getbinpkg.py
98 ===================================================================
99 --- main/trunk/pym/portage/getbinpkg.py 2008-06-25 23:10:28 UTC (rev 10796)
100 +++ main/trunk/pym/portage/getbinpkg.py 2008-06-26 00:49:10 UTC (rev 10797)
101 @@ -4,6 +4,7 @@
102 # $Id$
103
104 from portage.output import red, yellow, green
105 +from portage.cache.mappings import slot_dict_class
106 import portage.xpak
107 import HTMLParser
108 import sys
109 @@ -680,8 +681,17 @@
110
111 class PackageIndex(object):
112
113 - def __init__(self, default_header_data=None, default_pkg_data=None,
114 - inherited_keys=None, translated_keys=None):
115 + def __init__(self,
116 + allowed_pkg_keys=None,
117 + default_header_data=None,
118 + default_pkg_data=None,
119 + inherited_keys=None,
120 + translated_keys=None):
121 +
122 + self._pkg_slot_dict = None
123 + if allowed_pkg_keys is not None:
124 + self._pkg_slot_dict = slot_dict_class(allowed_pkg_keys)
125 +
126 self._default_header_data = default_header_data
127 self._default_pkg_data = default_pkg_data
128 self._inherited_keys = inherited_keys
129 @@ -696,8 +706,15 @@
130 self.packages = []
131 self.modified = True
132
133 - def _readpkgindex(self, pkgfile):
134 - d = {}
135 + def _readpkgindex(self, pkgfile, pkg_entry=True):
136 +
137 + allowed_keys = None
138 + if self._pkg_slot_dict is None or not pkg_entry:
139 + d = {}
140 + else:
141 + d = self._pkg_slot_dict()
142 + allowed_keys = d.allowed_keys
143 +
144 for line in pkgfile:
145 line = line.rstrip("\n")
146 if not line:
147 @@ -708,7 +725,11 @@
148 k, v = line
149 if v:
150 v = v[1:]
151 - d[self._read_translation_map.get(k, k)] = v
152 + k = self._read_translation_map.get(k, k)
153 + if allowed_keys is not None and \
154 + k not in allowed_keys:
155 + continue
156 + d[k] = v
157 return d
158
159 def _writepkgindex(self, pkgfile, items):
160 @@ -722,7 +743,7 @@
161 self.readBody(pkgfile)
162
163 def readHeader(self, pkgfile):
164 - self.header.update(self._readpkgindex(pkgfile))
165 + self.header.update(self._readpkgindex(pkgfile, pkg_entry=False))
166
167 def readBody(self, pkgfile):
168 while True:
169
170 --
171 gentoo-commits@l.g.o mailing list