Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10869 - in main/trunk/pym: _emerge portage/cache
Date: Tue, 01 Jul 2008 10:11:17
Message-Id: E1KDcpL-0003ZD-8k@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-07-01 10:11:10 +0000 (Tue, 01 Jul 2008)
3 New Revision: 10869
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 main/trunk/pym/portage/cache/mappings.py
8 Log:
9 Add a "prefix" keyword parameter to slot_dict_class() which controls the
10 prefix used when mapping attribute names from keys. Use this to change
11 the syntax from files["foo"] to files.foo (it's fewer characters to look
12 at).
13
14
15 Modified: main/trunk/pym/_emerge/__init__.py
16 ===================================================================
17 --- main/trunk/pym/_emerge/__init__.py 2008-07-01 09:47:32 UTC (rev 10868)
18 +++ main/trunk/pym/_emerge/__init__.py 2008-07-01 10:11:10 UTC (rev 10869)
19 @@ -1459,7 +1459,7 @@
20 "pid", "returncode", "files")
21
22 _file_names = ("fetcher", "out")
23 - _files_dict = slot_dict_class(_file_names)
24 + _files_dict = slot_dict_class(_file_names, prefix="")
25 _bufsize = 4096
26
27 def start(self):
28 @@ -1477,7 +1477,7 @@
29 files = self.files
30
31 if log_file is not None:
32 - files["out"] = open(log_file, "a")
33 + files.out = open(log_file, "a")
34 portage.util.apply_secpass_permissions(log_file,
35 uid=portage.portage_uid, gid=portage.portage_gid,
36 mode=0660)
37 @@ -1488,7 +1488,7 @@
38 if fd == sys.stderr.fileno():
39 sys.stderr.flush()
40
41 - files["out"] = os.fdopen(os.dup(fd_pipes[1]), 'w')
42 + files.out = os.fdopen(os.dup(fd_pipes[1]), 'w')
43
44 master_fd, slave_fd = os.pipe()
45
46 @@ -1526,22 +1526,22 @@
47 self.pid = retval[0]
48
49 os.close(slave_fd)
50 - files["fetcher"] = os.fdopen(master_fd, 'r')
51 - self.register(files["fetcher"].fileno(),
52 + files.fetcher = os.fdopen(master_fd, 'r')
53 + self.register(files.fetcher.fileno(),
54 select.POLLIN, self._output_handler)
55
56 def _output_handler(self, fd, event):
57 files = self.files
58 buf = array.array('B')
59 try:
60 - buf.fromfile(files["fetcher"], self._bufsize)
61 + buf.fromfile(files.fetcher, self._bufsize)
62 except EOFError:
63 pass
64 if buf:
65 - buf.tofile(files["out"])
66 - files["out"].flush()
67 + buf.tofile(files.out)
68 + files.out.flush()
69 else:
70 - self.unregister(files["fetcher"].fileno())
71 + self.unregister(files.fetcher.fileno())
72 for f in files.values():
73 f.close()
74
75 @@ -1710,7 +1710,7 @@
76 "pid", "returncode", "files")
77
78 _file_names = ("log", "stdout", "ebuild")
79 - _files_dict = slot_dict_class(_file_names)
80 + _files_dict = slot_dict_class(_file_names, prefix="")
81 _bufsize = 4096
82
83 def start(self):
84 @@ -1785,26 +1785,26 @@
85
86 if logfile:
87 os.close(slave_fd)
88 - files["log"] = open(logfile, 'a')
89 - files["stdout"] = os.fdopen(os.dup(fd_pipes_orig[1]), 'w')
90 - files["ebuild"] = os.fdopen(master_fd, 'r')
91 - self.register(files["ebuild"].fileno(),
92 + files.log = open(logfile, 'a')
93 + files.stdout = os.fdopen(os.dup(fd_pipes_orig[1]), 'w')
94 + files.ebuild = os.fdopen(master_fd, 'r')
95 + self.register(files.ebuild.fileno(),
96 select.POLLIN, self._output_handler)
97
98 def _output_handler(self, fd, event):
99 files = self.files
100 buf = array.array('B')
101 try:
102 - buf.fromfile(files["ebuild"], self._bufsize)
103 + buf.fromfile(files.ebuild, self._bufsize)
104 except EOFError:
105 pass
106 if buf:
107 - buf.tofile(files["stdout"])
108 - files["stdout"].flush()
109 - buf.tofile(files["log"])
110 - files["log"].flush()
111 + buf.tofile(files.stdout)
112 + files.stdout.flush()
113 + buf.tofile(files.log)
114 + files.log.flush()
115 else:
116 - self.unregister(files["ebuild"].fileno())
117 + self.unregister(files.ebuild.fileno())
118 for f in files.values():
119 f.close()
120
121 @@ -2002,7 +2002,7 @@
122 "locked", "files", "pid", "pkg_path", "returncode", "_lock_obj")
123
124 _file_names = ("fetcher", "out")
125 - _files_dict = slot_dict_class(_file_names)
126 + _files_dict = slot_dict_class(_file_names, prefix="")
127 _bufsize = 4096
128
129 def __init__(self, **kwargs):
130 @@ -2029,7 +2029,7 @@
131 files = self.files
132
133 if log_file is not None:
134 - files["out"] = open(log_file, "a")
135 + files.out = open(log_file, "a")
136 portage.util.apply_secpass_permissions(log_file,
137 uid=portage.portage_uid, gid=portage.portage_gid,
138 mode=0660)
139 @@ -2041,7 +2041,7 @@
140 if fd == sys.stderr.fileno():
141 sys.stderr.flush()
142
143 - files["out"] = os.fdopen(os.dup(fd_pipes[1]), 'w')
144 + files.out = os.fdopen(os.dup(fd_pipes[1]), 'w')
145
146 master_fd, slave_fd = os.pipe()
147 fcntl.fcntl(master_fd, fcntl.F_SETFL,
148 @@ -2100,22 +2100,22 @@
149 self.pid = retval[0]
150
151 os.close(slave_fd)
152 - files["fetcher"] = os.fdopen(master_fd, 'r')
153 - self.register(files["fetcher"].fileno(),
154 + files.fetcher = os.fdopen(master_fd, 'r')
155 + self.register(files.fetcher.fileno(),
156 select.POLLIN, self._output_handler)
157
158 def _output_handler(self, fd, event):
159 files = self.files
160 buf = array.array('B')
161 try:
162 - buf.fromfile(files["fetcher"], self._bufsize)
163 + buf.fromfile(files.fetcher, self._bufsize)
164 except EOFError:
165 pass
166 if buf:
167 - buf.tofile(files["out"])
168 - files["out"].flush()
169 + buf.tofile(files.out)
170 + files.out.flush()
171 else:
172 - self.unregister(files["fetcher"].fileno())
173 + self.unregister(files.fetcher.fileno())
174 for f in files.values():
175 f.close()
176 if self.locked:
177
178 Modified: main/trunk/pym/portage/cache/mappings.py
179 ===================================================================
180 --- main/trunk/pym/portage/cache/mappings.py 2008-07-01 09:47:32 UTC (rev 10868)
181 +++ main/trunk/pym/portage/cache/mappings.py 2008-07-01 10:11:10 UTC (rev 10869)
182 @@ -104,14 +104,17 @@
183
184 _slot_dict_classes = weakref.WeakValueDictionary()
185
186 -def slot_dict_class(keys):
187 +def slot_dict_class(keys, prefix="_val_"):
188 """
189 Generates mapping classes that behave similar to a dict but store values
190 as object attributes that are allocated via __slots__. Instances of these
191 objects have a smaller memory footprint than a normal dict object.
192
193 @param keys: Fixed set of allowed keys
194 - @type keys: iterable
195 + @type keys: Iterable
196 + @param prefix: a prefix to use when mapping
197 + attribute names from keys
198 + @type prefix: String
199 @rtype: SlotDict
200 @returns: A class that constructs SlotDict instances
201 having the specified keys.
202 @@ -120,14 +123,15 @@
203 keys_set = keys
204 else:
205 keys_set = frozenset(keys)
206 - v = _slot_dict_classes.get(keys_set)
207 + v = _slot_dict_classes.get((keys_set, prefix))
208 if v is None:
209
210 class SlotDict(object):
211
212 allowed_keys = keys_set
213 + _prefix = prefix
214 __slots__ = ("__weakref__",) + \
215 - tuple("_val_" + k for k in allowed_keys)
216 + tuple(prefix + k for k in allowed_keys)
217
218 def __iter__(self):
219 for k, v in self.iteritems():
220 @@ -145,7 +149,7 @@
221 def iteritems(self):
222 for k in self.allowed_keys:
223 try:
224 - yield (k, getattr(self, "_val_" + k))
225 + yield (k, getattr(self, self._prefix + k))
226 except AttributeError:
227 pass
228
229 @@ -161,12 +165,12 @@
230
231 def __delitem__(self, k):
232 try:
233 - delattr(self, "_val_" + k)
234 + delattr(self, self._prefix + k)
235 except AttributeError:
236 raise KeyError(k)
237
238 def __setitem__(self, k, v):
239 - setattr(self, "_val_" + k, v)
240 + setattr(self, self._prefix + k, v)
241
242 def setdefault(self, key, default=None):
243 try:
244 @@ -186,7 +190,7 @@
245
246 def __getitem__(self, k):
247 try:
248 - return getattr(self, "_val_" + k)
249 + return getattr(self, self._prefix + k)
250 except AttributeError:
251 raise KeyError(k)
252
253 @@ -197,7 +201,7 @@
254 return default
255
256 def __contains__(self, k):
257 - return hasattr(self, "_val_" + k)
258 + return hasattr(self, self._prefix + k)
259
260 def has_key(self, k):
261 return k in self
262 @@ -232,7 +236,7 @@
263 def clear(self):
264 for k in self.allowed_keys:
265 try:
266 - delattr(self, "_val_" + k)
267 + delattr(self, self._prefix + k)
268 except AttributeError:
269 pass
270
271
272 --
273 gentoo-commits@l.g.o mailing list