Return an OrderedSet of dependencies instead of a list

This avoids activating mulled dependencies multiple times and fixes
https://github.com/galaxyproject/galaxy/issues/4821. We use OrderedSet because
the order of activation may matter for toolshed dependencies.
This commit is contained in:
mvdbeek
2017-11-06 16:36:48 +00:00
committed by Nicola Soranzo
parent 8ef1e51a4a
commit 11a9abbb2d
+4 -2
View File
@@ -13,6 +13,7 @@ from galaxy.util import (
hash_util,
plugin_config
)
from galaxy.util.oset import OrderedSet
from .requirements import (
ToolRequirement,
@@ -109,8 +110,9 @@ class DependencyManager(object):
return value
def dependency_shell_commands(self, requirements, **kwds):
requirement_to_dependency = self.requirements_to_dependencies(requirements, **kwds)
return [dependency.shell_commands() for dependency in requirement_to_dependency.values()]
requirements_to_dependencies = self.requirements_to_dependencies(requirements, **kwds)
ordered_dependencies = OrderedSet(requirements_to_dependencies.values())
return [dependency.shell_commands() for dependency in ordered_dependencies]
def requirements_to_dependencies(self, requirements, **kwds):
"""