From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/
Date: Sat, 9 Jul 2011 22:24:29 +0000 (UTC) [thread overview]
Message-ID: <50da885309a3a69f0927a730e19026734523b090.zmedico@gentoo> (raw)
commit: 50da885309a3a69f0927a730e19026734523b090
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 9 22:23:52 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Jul 9 22:23:52 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=50da8853
circular_dependency: use itertools.product()
Python's cartesian product function does exactly what we want, so use
it to simplify our code.
---
pym/_emerge/resolver/circular_dependency.py | 27 +++------------------------
1 files changed, 3 insertions(+), 24 deletions(-)
diff --git a/pym/_emerge/resolver/circular_dependency.py b/pym/_emerge/resolver/circular_dependency.py
index 1789801..9a3286c 100644
--- a/pym/_emerge/resolver/circular_dependency.py
+++ b/pym/_emerge/resolver/circular_dependency.py
@@ -3,7 +3,7 @@
from __future__ import print_function
-from itertools import chain
+from itertools import chain, product
from portage.dep import use_reduce, extract_affecting_use, check_required_use, get_required_use_flags
from portage.exception import InvalidDependString
@@ -147,27 +147,9 @@ class circular_dependency_handler(object):
#We iterate over all possible settings of these use flags and gather
#a set of possible changes
#TODO: Use the information encoded in REQUIRED_USE
- use_state = []
- for flag in affecting_use:
- use_state.append("disabled")
-
- def _next_use_state(state, id=None):
- if id is None:
- id = len(state)-1
-
- if id == 0 and state[0] == "enabled":
- return False
-
- if state[id] == "disabled":
- state[id] = "enabled"
- for i in range(id+1,len(state)):
- state[i] = "disabled"
- return True
- else:
- return _next_use_state(state, id-1)
-
solutions = set()
- while(True):
+ for use_state in product(("disabled", "enabled"),
+ repeat=len(affecting_use)):
current_use = set(self.depgraph._pkg_use_enabled(parent))
for flag, state in zip(affecting_use, use_state):
if state == "enabled":
@@ -200,9 +182,6 @@ class circular_dependency_handler(object):
solution.add((flag, False))
solutions.add(frozenset(solution))
- if not _next_use_state(use_state):
- break
-
for solution in solutions:
ignore_solution = False
for other_solution in solutions:
next reply other threads:[~2011-07-09 22:24 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-09 22:24 Zac Medico [this message]
-- strict thread matches above, loose matches on Subject: below --
2017-10-04 0:30 [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/ Zac Medico
2016-12-19 5:15 Zac Medico
2016-05-27 8:33 Alexander Berntsen
2015-08-03 18:36 Zac Medico
2015-07-29 18:44 Zac Medico
2014-12-13 14:51 Arfrever Frehtes Taifersar Arahesis
2014-08-23 7:21 Zac Medico
2014-02-23 21:38 Sebastian Luther
2014-02-05 19:42 Sebastian Luther
2014-02-05 19:42 Sebastian Luther
2013-03-20 20:32 Zac Medico
2013-03-20 19:23 Zac Medico
2013-03-18 21:28 Zac Medico
2013-03-18 21:12 Zac Medico
2013-03-18 20:58 Zac Medico
2013-02-28 0:25 Zac Medico
2013-02-28 0:12 Zac Medico
2013-02-27 23:39 Zac Medico
2013-01-24 1:18 Zac Medico
2012-10-15 17:17 Arfrever Frehtes Taifersar Arahesis
2012-10-15 4:06 Arfrever Frehtes Taifersar Arahesis
2012-10-14 20:02 Arfrever Frehtes Taifersar Arahesis
2012-10-14 19:54 Arfrever Frehtes Taifersar Arahesis
2012-10-14 2:53 Zac Medico
2012-10-14 2:44 Zac Medico
2012-09-25 2:00 Zac Medico
2012-09-24 3:12 Zac Medico
2012-09-14 2:08 Zac Medico
2012-09-14 1:04 Zac Medico
2012-06-27 21:56 Zac Medico
2012-06-23 6:00 Zac Medico
2012-06-21 4:43 Zac Medico
2012-06-20 21:24 Zac Medico
2012-04-05 19:37 Zac Medico
2012-03-22 19:00 Zac Medico
2012-03-22 18:10 Zac Medico
2012-03-22 17:38 Zac Medico
2012-03-22 17:15 Zac Medico
2012-03-13 17:22 Zac Medico
2012-01-28 2:23 Arfrever Frehtes Taifersar Arahesis
2012-01-28 1:51 Arfrever Frehtes Taifersar Arahesis
2012-01-23 17:13 Arfrever Frehtes Taifersar Arahesis
2012-01-22 3:57 Arfrever Frehtes Taifersar Arahesis
2012-01-22 3:47 Arfrever Frehtes Taifersar Arahesis
2011-11-18 5:58 Zac Medico
2011-11-18 1:43 Zac Medico
2011-11-07 18:34 Zac Medico
2011-11-07 7:37 Zac Medico
2011-10-19 21:32 Zac Medico
2011-10-19 21:25 Zac Medico
2011-10-02 20:11 Zac Medico
2011-09-17 17:51 Zac Medico
2011-07-27 10:34 Zac Medico
2011-07-10 13:35 Zac Medico
2011-07-10 12:23 Zac Medico
2011-07-10 10:41 Zac Medico
2011-07-10 1:58 Zac Medico
2011-07-10 1:31 Zac Medico
2011-06-21 8:15 Zac Medico
2011-06-11 1:31 Zac Medico
2011-03-15 22:59 Zac Medico
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50da885309a3a69f0927a730e19026734523b090.zmedico@gentoo \
--to=zmedico@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox