public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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:



             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