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. |