1 |
commit: 0b11d51b266e6aae5787423b084c00dd0eafcd2c |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed May 30 22:36:31 2012 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed May 30 22:36:31 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=0b11d51b |
7 |
|
8 |
Use any() to optimize intersection operations. |
9 |
|
10 |
--- |
11 |
pym/_emerge/depgraph.py | 34 ++++++++++++++++------------------ |
12 |
pym/portage/dbapi/__init__.py | 17 ++++++++--------- |
13 |
pym/portage/dep/__init__.py | 10 ++++------ |
14 |
pym/repoman/checks.py | 2 +- |
15 |
4 files changed, 29 insertions(+), 34 deletions(-) |
16 |
|
17 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
18 |
index be49b0f..935c376 100644 |
19 |
--- a/pym/_emerge/depgraph.py |
20 |
+++ b/pym/_emerge/depgraph.py |
21 |
@@ -2390,22 +2390,20 @@ class depgraph(object): |
22 |
except self._unknown_internal_error: |
23 |
return False, myfavorites |
24 |
|
25 |
- digraph_set = frozenset(self._dynamic_config.digraph) |
26 |
+ digraph_nodes = self._dynamic_config.digraph.nodes |
27 |
|
28 |
- if digraph_set.intersection( |
29 |
+ if any(x in digraph_nodes for x in |
30 |
self._dynamic_config._needed_unstable_keywords) or \ |
31 |
- digraph_set.intersection( |
32 |
+ any(x in digraph_nodes for x in |
33 |
self._dynamic_config._needed_p_mask_changes) or \ |
34 |
- digraph_set.intersection( |
35 |
+ any(x in digraph_nodes for x in |
36 |
self._dynamic_config._needed_use_config_changes) or \ |
37 |
- digraph_set.intersection( |
38 |
+ any(x in digraph_nodes for x in |
39 |
self._dynamic_config._needed_license_changes) : |
40 |
#We failed if the user needs to change the configuration |
41 |
self._dynamic_config._success_without_autounmask = True |
42 |
return False, myfavorites |
43 |
|
44 |
- digraph_set = None |
45 |
- |
46 |
if self._rebuild.trigger_rebuilds(): |
47 |
backtrack_infos = self._dynamic_config._backtrack_infos |
48 |
config = backtrack_infos.setdefault("config", {}) |
49 |
@@ -3083,7 +3081,7 @@ class depgraph(object): |
50 |
|
51 |
untouchable_flags = \ |
52 |
frozenset(chain(pkg.use.mask, pkg.use.force)) |
53 |
- if untouchable_flags.intersection( |
54 |
+ if any(x in untouchable_flags for x in |
55 |
chain(need_enable, need_disable)): |
56 |
continue |
57 |
|
58 |
@@ -3133,7 +3131,7 @@ class depgraph(object): |
59 |
|
60 |
untouchable_flags = \ |
61 |
frozenset(chain(myparent.use.mask, myparent.use.force)) |
62 |
- if untouchable_flags.intersection(involved_flags): |
63 |
+ if any(x in untouchable_flags for x in involved_flags): |
64 |
continue |
65 |
|
66 |
required_use = myparent.metadata.get("REQUIRED_USE") |
67 |
@@ -3758,7 +3756,7 @@ class depgraph(object): |
68 |
new_use, changes = self._dynamic_config._needed_use_config_changes.get(pkg) |
69 |
for ppkg, atom in parent_atoms: |
70 |
if not atom.use or \ |
71 |
- not atom.use.required.intersection(changes): |
72 |
+ not any(x in atom.use.required for x in changes): |
73 |
continue |
74 |
else: |
75 |
return True |
76 |
@@ -3772,8 +3770,8 @@ class depgraph(object): |
77 |
not check_required_use(required_use, new_use, pkg.iuse.is_valid_flag): |
78 |
return old_use |
79 |
|
80 |
- if pkg.use.mask.intersection(new_changes) or \ |
81 |
- pkg.use.force.intersection(new_changes): |
82 |
+ if any(x in pkg.use.mask for x in new_changes) or \ |
83 |
+ any(x in pkg.use.force for x in new_changes): |
84 |
return old_use |
85 |
|
86 |
self._dynamic_config._needed_use_config_changes[pkg] = (new_use, new_changes) |
87 |
@@ -4004,7 +4002,7 @@ class depgraph(object): |
88 |
missing_disabled = atom.use.missing_disabled.difference(pkg.iuse.all) |
89 |
|
90 |
if atom.use.enabled: |
91 |
- if atom.use.enabled.intersection(missing_disabled): |
92 |
+ if any(x in atom.use.enabled for x in missing_disabled): |
93 |
use_match = False |
94 |
can_adjust_use = False |
95 |
need_enabled = atom.use.enabled.difference(use) |
96 |
@@ -4013,11 +4011,11 @@ class depgraph(object): |
97 |
if need_enabled: |
98 |
use_match = False |
99 |
if can_adjust_use: |
100 |
- if pkg.use.mask.intersection(need_enabled): |
101 |
+ if any(x in pkg.use.mask for x in need_enabled): |
102 |
can_adjust_use = False |
103 |
|
104 |
if atom.use.disabled: |
105 |
- if atom.use.disabled.intersection(missing_enabled): |
106 |
+ if any(x in atom.use.disabled for x in missing_enabled): |
107 |
use_match = False |
108 |
can_adjust_use = False |
109 |
need_disabled = atom.use.disabled.intersection(use) |
110 |
@@ -4026,8 +4024,8 @@ class depgraph(object): |
111 |
if need_disabled: |
112 |
use_match = False |
113 |
if can_adjust_use: |
114 |
- if pkg.use.force.difference( |
115 |
- pkg.use.mask).intersection(need_disabled): |
116 |
+ if any(x in pkg.use.force and x not in |
117 |
+ pkg.use.mask for x in need_disabled): |
118 |
can_adjust_use = False |
119 |
|
120 |
if not use_match: |
121 |
@@ -5241,7 +5239,7 @@ class depgraph(object): |
122 |
for node in nodes: |
123 |
parents = mygraph.parent_nodes(node, |
124 |
ignore_priority=DepPrioritySatisfiedRange.ignore_soft) |
125 |
- if parents and set(parents).intersection(asap_nodes): |
126 |
+ if any(x in asap_nodes for x in parents): |
127 |
selected_nodes = [node] |
128 |
break |
129 |
else: |
130 |
|
131 |
diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py |
132 |
index a1c5c56..a90d59e 100644 |
133 |
--- a/pym/portage/dbapi/__init__.py |
134 |
+++ b/pym/portage/dbapi/__init__.py |
135 |
@@ -190,21 +190,19 @@ class dbapi(object): |
136 |
missing_disabled = atom.use.missing_disabled.difference(iuse) |
137 |
|
138 |
if atom.use.enabled: |
139 |
- if atom.use.enabled.intersection(missing_disabled): |
140 |
+ if any(x in atom.use.enabled for x in missing_disabled): |
141 |
return False |
142 |
need_enabled = atom.use.enabled.difference(use) |
143 |
if need_enabled: |
144 |
- need_enabled = need_enabled.difference(missing_enabled) |
145 |
- if need_enabled: |
146 |
+ if any(x not in missing_enabled for x in need_enabled): |
147 |
return False |
148 |
|
149 |
if atom.use.disabled: |
150 |
- if atom.use.disabled.intersection(missing_enabled): |
151 |
+ if any(x in atom.use.disabled for x in missing_enabled): |
152 |
return False |
153 |
need_disabled = atom.use.disabled.intersection(use) |
154 |
if need_disabled: |
155 |
- need_disabled = need_disabled.difference(missing_disabled) |
156 |
- if need_disabled: |
157 |
+ if any(x not in missing_disabled for x in need_disabled): |
158 |
return False |
159 |
|
160 |
elif not self.settings.local_config: |
161 |
@@ -215,11 +213,12 @@ class dbapi(object): |
162 |
pkg = _pkg_str(cpv, slot=metadata["SLOT"], |
163 |
repo=metadata.get("repository")) |
164 |
usemask = self.settings._getUseMask(pkg) |
165 |
- if usemask.intersection(atom.use.enabled): |
166 |
+ if any(x in usemask for x in atom.use.enabled): |
167 |
return False |
168 |
|
169 |
- useforce = self.settings._getUseForce(pkg).difference(usemask) |
170 |
- if useforce.intersection(atom.use.disabled): |
171 |
+ useforce = self.settings._getUseForce(pkg) |
172 |
+ if any(x in useforce and x not in usemask |
173 |
+ for x in atom.use.disabled): |
174 |
return False |
175 |
|
176 |
return True |
177 |
|
178 |
diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py |
179 |
index d29a4c4..4cd0813 100644 |
180 |
--- a/pym/portage/dep/__init__.py |
181 |
+++ b/pym/portage/dep/__init__.py |
182 |
@@ -2081,21 +2081,19 @@ def match_from_list(mydep, candidate_list): |
183 |
missing_disabled = mydep.use.missing_disabled.difference(x.iuse.all) |
184 |
|
185 |
if mydep.use.enabled: |
186 |
- if mydep.use.enabled.intersection(missing_disabled): |
187 |
+ if any(f in mydep.use.enabled for f in missing_disabled): |
188 |
continue |
189 |
need_enabled = mydep.use.enabled.difference(use.enabled) |
190 |
if need_enabled: |
191 |
- need_enabled = need_enabled.difference(missing_enabled) |
192 |
- if need_enabled: |
193 |
+ if any(f not in missing_enabled for f in need_enabled): |
194 |
continue |
195 |
|
196 |
if mydep.use.disabled: |
197 |
- if mydep.use.disabled.intersection(missing_enabled): |
198 |
+ if any(f in mydep.use.disabled for f in missing_enabled): |
199 |
continue |
200 |
need_disabled = mydep.use.disabled.intersection(use.enabled) |
201 |
if need_disabled: |
202 |
- need_disabled = need_disabled.difference(missing_disabled) |
203 |
- if need_disabled: |
204 |
+ if any(f not in missing_disabled for f in need_disabled): |
205 |
continue |
206 |
|
207 |
mylist.append(x) |
208 |
|
209 |
diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py |
210 |
index 35225c2..94dcfbe 100644 |
211 |
--- a/pym/repoman/checks.py |
212 |
+++ b/pym/repoman/checks.py |
213 |
@@ -470,7 +470,7 @@ class InheritEclass(LineCheck): |
214 |
self._inherit = False |
215 |
self._func_call = False |
216 |
if hasattr(self, '_exempt_eclasses'): |
217 |
- self._disabled = self._exempt_eclasses.intersection(pkg.inherited) |
218 |
+ self._disabled = any(x in pkg.inherited for x in self._exempt_eclasses) |
219 |
else: |
220 |
self._disabled = False |