comparison env/lib/python3.9/site-packages/galaxy/tool_util/deps/resolvers/tool_shed_packages.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 from os.path import abspath, exists, join
2
3 from . import NullDependency
4 from .galaxy_packages import (
5 BaseGalaxyPackageDependencyResolver,
6 ToolShedDependency
7 )
8 from .resolver_mixins import UsesInstalledRepositoriesMixin
9
10
11 class ToolShedPackageDependencyResolver(BaseGalaxyPackageDependencyResolver, UsesInstalledRepositoriesMixin):
12 resolver_type = "tool_shed_packages"
13 # Resolution of these dependencies depends on more than just the requirement
14 # tag, it depends on the tool installation context - therefore these are
15 # non-simple.
16 dependency_type = ToolShedDependency
17 resolves_simple_dependencies = False
18
19 def __init__(self, dependency_manager, **kwds):
20 super().__init__(dependency_manager, **kwds)
21
22 def _find_dep_versioned(self, name, version, type='package', **kwds):
23 installed_tool_dependency = self._get_installed_dependency(name, type, version=version, **kwds)
24 if installed_tool_dependency:
25 path = self._get_package_installed_dependency_path(installed_tool_dependency, name, version)
26 return self._galaxy_package_dep(path, version, name, type, True)
27 else:
28 return NullDependency(version=version, name=name)
29
30 def _find_dep_default(self, name, type='package', **kwds):
31 if type == 'set_environment' and kwds.get('installed_tool_dependencies', None):
32 installed_tool_dependency = self._get_installed_dependency(name, type, version=None, **kwds)
33 if installed_tool_dependency:
34 dependency = self._get_set_environment_installed_dependency_script_path(installed_tool_dependency, name)
35 is_galaxy_dep = isinstance(dependency, ToolShedDependency)
36 has_script_dep = is_galaxy_dep and dependency.script and dependency.path
37 if has_script_dep:
38 # Environment settings do not use versions.
39 return ToolShedDependency(dependency.script, dependency.path, name, 'set_environment', None, True, dependency_resolver=self)
40 return NullDependency(version=None, name=name)
41
42 def _get_package_installed_dependency_path(self, installed_tool_dependency, name, version):
43 tool_shed_repository = installed_tool_dependency.tool_shed_repository
44 base_path = self.base_path
45 return join(
46 base_path,
47 name,
48 version,
49 tool_shed_repository.owner,
50 tool_shed_repository.name,
51 tool_shed_repository.installed_changeset_revision
52 )
53
54 def _get_set_environment_installed_dependency_script_path(self, installed_tool_dependency, name):
55 tool_shed_repository = installed_tool_dependency.tool_shed_repository
56 base_path = self.base_path
57 path = abspath(join(base_path,
58 'environment_settings',
59 name,
60 tool_shed_repository.owner,
61 tool_shed_repository.name,
62 tool_shed_repository.installed_changeset_revision))
63 if exists(path):
64 script = join(path, 'env.sh')
65 return ToolShedDependency(script, path, name, 'set_environment', None, True, dependency_resolver=self)
66 return NullDependency(version=None, name=name)
67
68
69 __all__ = ('ToolShedPackageDependencyResolver', )