Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11812 - main/trunk/pym/portage
Date: Wed, 05 Nov 2008 23:55:19
Message-Id: E1KxsDV-0007lE-P5@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-11-05 23:55:17 +0000 (Wed, 05 Nov 2008)
3 New Revision: 11812
4
5 Modified:
6 main/trunk/pym/portage/dep.py
7 Log:
8 Override Atom.__setattr__() to make Atom instances immutable. Thanks to Brian
9 Harring for the suggestion.
10
11
12 Modified: main/trunk/pym/portage/dep.py
13 ===================================================================
14 --- main/trunk/pym/portage/dep.py 2008-11-05 18:29:48 UTC (rev 11811)
15 +++ main/trunk/pym/portage/dep.py 2008-11-05 23:55:17 UTC (rev 11812)
16 @@ -529,29 +529,32 @@
17 def __init__(self, s):
18 if not isvalidatom(s, allow_blockers=True):
19 raise InvalidAtom(s)
20 + obj_setattr = object.__setattr__
21 for x in self._str_methods:
22 - setattr(self, x, getattr(s, x))
23 + obj_setattr(self, x, getattr(s, x))
24
25 blocker = "!" == s[:1]
26 if blocker:
27 - self.blocker = self._blocker(forbid_overlap=("!" == s[1:2]))
28 - if self.blocker.overlap.forbid:
29 + blocker = self._blocker(forbid_overlap=("!" == s[1:2]))
30 + if blocker.overlap.forbid:
31 s = s[2:]
32 else:
33 s = s[1:]
34 else:
35 - self.blocker = False
36 + blocker = False
37 + obj_setattr(self, "blocker", blocker)
38
39 - self.cp = dep_getkey(s)
40 - self.cpv = dep_getcpv(s)
41 - self.slot = dep_getslot(s)
42 - self.operator = get_operator(s)
43 - #self.repo = self._get_repo(s)
44 - self.use = dep_getusedeps(s)
45 - if self.use:
46 - self.use = _use_dep(self.use)
47 + obj_setattr(self, "cp", dep_getkey(s))
48 + obj_setattr(self, "cpv", dep_getcpv(s))
49 + obj_setattr(self, "slot", dep_getslot(s))
50 + obj_setattr(self, "operator", get_operator(s))
51 +
52 + use = dep_getusedeps(s)
53 + if use:
54 + use = _use_dep(use)
55 else:
56 - self.use = None
57 + use = None
58 + obj_setattr(self, "use", use)
59
60 def __cmp__(self, other):
61 self_str = str(self)
62 @@ -562,6 +565,9 @@
63 return 1
64 return -1
65
66 + def __setattr__(self, name, value):
67 + raise AttributeError("Atom instances are immutable")
68 +
69 def get_operator(mydep):
70 """
71 Return the operator used in a depstring.