From 0a280e7d48c64d0a9daed6514eafe0314a6aa940 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Fri, 6 Jan 2017 13:37:11 -0500 Subject: [PATCH] Give dependency resolvers a shot at resolving all dependencies at once. --- lib/galaxy/tools/deps/__init__.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/galaxy/tools/deps/__init__.py b/lib/galaxy/tools/deps/__init__.py index 05cc6350056..117b5b49b87 100644 --- a/lib/galaxy/tools/deps/__init__.py +++ b/lib/galaxy/tools/deps/__init__.py @@ -135,6 +135,23 @@ class DependencyManager( object ): if index is not None and i != index: continue + if len(requirement_to_dependency) == len(resolvable_requirements): + # Shortcut - resolution complete. + break + + # Check requirements all at once + all_unmet = len(requirement_to_dependency) == 0 + if all_unmet and hasattr(resolver, "resolve_all"): + dependencies = resolver.resolve_all(resolvable_requirements, **kwds) + if dependencies: + assert len(dependencies) == len(resolvable_requirements) + for requirement, dependency in zip(resolvable_requirements, dependencies): + requirement_to_dependency[requirement] = dependency + + # Shortcut - resolution complete. + break + + # Check individual requirements for requirement in resolvable_requirements: if requirement in requirement_to_dependency: continue