Mercurial > repos > shellac > sam_consensus_v3
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', ) |