Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.tool_util.deps.resolvers.tool_shed_packages
from os.path import abspath, exists, join
from . import NullDependency
from .galaxy_packages import (
BaseGalaxyPackageDependencyResolver,
ToolShedDependency
)
from .resolver_mixins import UsesInstalledRepositoriesMixin
[docs]class ToolShedPackageDependencyResolver(BaseGalaxyPackageDependencyResolver, UsesInstalledRepositoriesMixin):
resolver_type = "tool_shed_packages"
# Resolution of these dependencies depends on more than just the requirement
# tag, it depends on the tool installation context - therefore these are
# non-simple.
dependency_type = ToolShedDependency
resolves_simple_dependencies = False
def _find_dep_versioned(self, name, version, type='package', **kwds):
installed_tool_dependency = self._get_installed_dependency(name, type, version=version, **kwds)
if installed_tool_dependency:
path = self._get_package_installed_dependency_path(installed_tool_dependency, name, version)
return self._galaxy_package_dep(path, version, name, type, True)
else:
return NullDependency(version=version, name=name)
def _find_dep_default(self, name, type='package', **kwds):
if type == 'set_environment' and kwds.get('installed_tool_dependencies', None):
installed_tool_dependency = self._get_installed_dependency(name, type, version=None, **kwds)
if installed_tool_dependency:
dependency = self._get_set_environment_installed_dependency_script_path(installed_tool_dependency, name)
is_galaxy_dep = isinstance(dependency, ToolShedDependency)
has_script_dep = is_galaxy_dep and dependency.script and dependency.path
if has_script_dep:
# Environment settings do not use versions.
return ToolShedDependency(dependency.script, dependency.path, name, 'set_environment', None, True, dependency_resolver=self)
return NullDependency(version=None, name=name)
def _get_package_installed_dependency_path(self, installed_tool_dependency, name, version):
tool_shed_repository = installed_tool_dependency.tool_shed_repository
base_path = self.base_path
return join(
base_path,
name,
version,
tool_shed_repository.owner,
tool_shed_repository.name,
tool_shed_repository.installed_changeset_revision
)
def _get_set_environment_installed_dependency_script_path(self, installed_tool_dependency, name):
tool_shed_repository = installed_tool_dependency.tool_shed_repository
base_path = self.base_path
path = abspath(join(base_path,
'environment_settings',
name,
tool_shed_repository.owner,
tool_shed_repository.name,
tool_shed_repository.installed_changeset_revision))
if exists(path):
script = join(path, 'env.sh')
return ToolShedDependency(script, path, name, 'set_environment', None, True, dependency_resolver=self)
return NullDependency(version=None, name=name)
__all__ = ('ToolShedPackageDependencyResolver', )