diff options
author | John Turner <jturner.usa@gmail.com> | 2024-02-22 20:38:29 -0500 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-03-07 18:49:06 +0000 |
commit | b2dbcb184063104f750a407e0dbe3a4e0d3bfd9b (patch) | |
tree | 116fa3472ac44cdb55c20c25832a23ff6999fc2f | |
parent | dependencies.py: rewrite graph_reverse_depends to pass tests (diff) | |
download | gentoolkit-b2dbcb184063104f750a407e0dbe3a4e0d3bfd9b.tar.gz gentoolkit-b2dbcb184063104f750a407e0dbe3a4e0d3bfd9b.tar.bz2 gentoolkit-b2dbcb184063104f750a407e0dbe3a4e0d3bfd9b.zip |
equery/depends: print output in module rather than with a callback
The depends module can now iterate over the results of the
graph_reverse_depends function and print the items as they are
yielded.
Before, it passed in a callback printer function, and expected the
Dependencies class to call it correctly.
This setup is nicer because it does not tie together this module and
the Dependencies class, and the old setup most likely existed due to
performance and interactivity concerns which are now fixed by turning
graph_reverse_depends into an iterator.
Signed-off-by: John Turner <jturner.usa@gmail.com>
Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r-- | pym/gentoolkit/equery/depends.py | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/pym/gentoolkit/equery/depends.py b/pym/gentoolkit/equery/depends.py index 8ec5f75..f92b7b9 100644 --- a/pym/gentoolkit/equery/depends.py +++ b/pym/gentoolkit/equery/depends.py @@ -17,7 +17,6 @@ import gentoolkit.pprinter as pp from gentoolkit.dependencies import Dependencies from gentoolkit.equery import format_options, mod_usage, CONFIG from gentoolkit.helpers import get_cpvs, get_installed_cpvs -from gentoolkit.cpv import CPV from gentoolkit.package import PackageFormatter, Package # ======= @@ -27,7 +26,7 @@ from gentoolkit.package import PackageFormatter, Package QUERY_OPTS = { "include_masked": False, "only_direct": True, - "max_depth": -1, + "max_depth": None, "package_format": None, } @@ -94,9 +93,9 @@ class DependPrinter: if dep_is_displayed and not self.verbose: return - depth = getattr(dep, "depth", 0) + depth = dep.depth indent = " " * depth - mdep = dep.matching_dep + mdep = dep.depatom use_conditional = "" if QUERY_OPTS["package_format"] != None: @@ -226,17 +225,25 @@ def main(input_args): if CONFIG["verbose"]: print(" * These packages depend on %s:" % pp.emph(pkg.cpv)) - if pkg.graph_reverse_depends( - pkgset=sorted(pkggetter(), key=CPV), - max_depth=QUERY_OPTS["max_depth"], + + first_run = False + + last_seen = None + for pkgdep in pkg.graph_reverse_depends( + pkgset=sorted(pkggetter()), only_direct=QUERY_OPTS["only_direct"], - printer_fn=dep_print, + max_depth=QUERY_OPTS["max_depth"], ): + if last_seen is None or last_seen != pkgdep: + seen = False + else: + seen = True + printer(pkgdep, dep_is_displayed=seen) + last_seen = pkgdep + if last_seen is not None: got_match = True - first_run = False - - if not got_match: + if got_match is None: sys.exit(1) |