From 000ce49860b253ad6c917c5a58bc0ff31225134a Mon Sep 17 00:00:00 2001 From: Brian Dolbec Date: Sun, 9 Jan 2011 17:09:08 -0800 Subject: [PATCH] create a new uniqify_atoms() to properly handle a list of atom instances. set the reverse dependency lookup to use it. --- pym/gentoolkit/atom.py | 7 +++++++ pym/gentoolkit/dependencies.py | 5 ++--- pym/gentoolkit/helpers.py | 14 +++++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/pym/gentoolkit/atom.py b/pym/gentoolkit/atom.py index eb4a358..fe9adaa 100644 --- a/pym/gentoolkit/atom.py +++ b/pym/gentoolkit/atom.py @@ -344,4 +344,11 @@ class Atom(portage.dep.Atom, CPV): raise NotImplementedError( 'Someone added an operator without adding it to intersects') + def get_depstr(self): + """Returns a string representation of the original dep + """ + uc = self.use_conditional + uc = "%s? " % uc if uc is not None else '' + return "%s%s" % (uc, self.atom) + # vim: set ts=4 sw=4 tw=79: diff --git a/pym/gentoolkit/dependencies.py b/pym/gentoolkit/dependencies.py index 6dc6a76..6aadc35 100644 --- a/pym/gentoolkit/dependencies.py +++ b/pym/gentoolkit/dependencies.py @@ -19,7 +19,7 @@ from portage.dep import paren_reduce from gentoolkit import errors from gentoolkit.atom import Atom from gentoolkit.cpv import CPV -from gentoolkit.helpers import uniqify +from gentoolkit.helpers import uniqify_atoms from gentoolkit.dbapi import PORTDB, VARDB from gentoolkit.query import Query @@ -243,8 +243,7 @@ class Dependencies(Query): try: all_depends = depcache[pkgdep] except KeyError: - #all_depends = uniqify(pkgdep.get_all_depends()) - all_depends = pkgdep.get_all_depends() + all_depends = uniqify_atoms(pkgdep.get_all_depends()) depcache[pkgdep] = all_depends dep_is_displayed = False diff --git a/pym/gentoolkit/helpers.py b/pym/gentoolkit/helpers.py index ab0cdbd..cf1b138 100644 --- a/pym/gentoolkit/helpers.py +++ b/pym/gentoolkit/helpers.py @@ -449,7 +449,7 @@ def get_bintree_cpvs(predicate=None): for cpv in chain.from_iterable(BINDB.cp_list(x) for x in installed_cps): yield cpv - + def print_file(path): """Display the contents of a file.""" @@ -476,4 +476,16 @@ def uniqify(seq, preserve_order=True): return result +def uniqify_atoms(seq): + """Return a uniqified list.""" + seen = set() + result = [] + for x in seq: + dep = x.get_depstr() + if dep not in seen: + result.append(x) + seen.add(dep) + + return result + # vim: set ts=4 sw=4 tw=79: -- 2.26.2