aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2024-02-22 20:38:29 -0500
committerSam James <sam@gentoo.org>2024-03-07 18:49:06 +0000
commitb2dbcb184063104f750a407e0dbe3a4e0d3bfd9b (patch)
tree116fa3472ac44cdb55c20c25832a23ff6999fc2f
parentdependencies.py: rewrite graph_reverse_depends to pass tests (diff)
downloadgentoolkit-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.py29
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)