Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/galaxy/tool_util/deps/dependencies.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 galaxy.tool_util.deps.requirements import ToolRequirements | |
2 from galaxy.util import bunch | |
3 from .mulled.mulled_build import DEFAULT_CHANNELS | |
4 | |
5 | |
6 class AppInfo: | |
7 | |
8 def __init__( | |
9 self, | |
10 galaxy_root_dir=None, | |
11 default_file_path=None, | |
12 tool_data_path=None, | |
13 shed_tool_data_path=None, | |
14 outputs_to_working_directory=False, | |
15 container_image_cache_path=None, | |
16 library_import_dir=None, | |
17 enable_mulled_containers=False, | |
18 containers_resolvers_config_file=None, | |
19 involucro_path=None, | |
20 involucro_auto_init=True, | |
21 mulled_channels=DEFAULT_CHANNELS, | |
22 ): | |
23 self.galaxy_root_dir = galaxy_root_dir | |
24 self.default_file_path = default_file_path | |
25 self.tool_data_path = tool_data_path | |
26 self.shed_tool_data_path = shed_tool_data_path | |
27 # TODO: Vary default value for docker_volumes based on this... | |
28 self.outputs_to_working_directory = outputs_to_working_directory | |
29 self.container_image_cache_path = container_image_cache_path | |
30 self.library_import_dir = library_import_dir | |
31 self.enable_mulled_containers = enable_mulled_containers | |
32 self.containers_resolvers_config_file = containers_resolvers_config_file | |
33 self.involucro_path = involucro_path | |
34 self.involucro_auto_init = involucro_auto_init | |
35 self.mulled_channels = mulled_channels | |
36 | |
37 | |
38 class ToolInfo: | |
39 # TODO: Introduce tool XML syntax to annotate the optional environment | |
40 # variables they can consume (e.g. JVM options, license keys, etc..) | |
41 # and add these to env_path_through | |
42 | |
43 def __init__(self, container_descriptions=None, requirements=None, requires_galaxy_python_environment=False, env_pass_through=None, guest_ports=None, tool_id=None, tool_version=None, profile=-1): | |
44 if env_pass_through is None: | |
45 env_pass_through = ["GALAXY_SLOTS"] | |
46 if container_descriptions is None: | |
47 container_descriptions = [] | |
48 if requirements is None: | |
49 requirements = [] | |
50 self.container_descriptions = container_descriptions | |
51 self.requirements = requirements | |
52 self.requires_galaxy_python_environment = requires_galaxy_python_environment | |
53 self.env_pass_through = env_pass_through | |
54 self.guest_ports = guest_ports | |
55 self.tool_id = tool_id | |
56 self.tool_version = tool_version | |
57 self.profile = profile | |
58 | |
59 | |
60 class JobInfo: | |
61 | |
62 def __init__( | |
63 self, working_directory, tool_directory, job_directory, tmp_directory, home_directory, job_directory_type, | |
64 ): | |
65 self.working_directory = working_directory | |
66 # Tool files may be remote staged - so this is unintuitively a property | |
67 # of the job not of the tool. | |
68 self.tool_directory = tool_directory | |
69 self.job_directory = job_directory | |
70 self.tmp_directory = tmp_directory | |
71 self.home_directory = home_directory | |
72 self.job_directory_type = job_directory_type # "galaxy" or "pulsar" | |
73 | |
74 | |
75 class DependenciesDescription: | |
76 """ Capture (in a readily serializable way) context related a tool | |
77 dependencies - both the tool's listed requirements and the tool shed | |
78 related context required to resolve dependencies via the | |
79 ToolShedPackageDependencyResolver. | |
80 | |
81 This is meant to enable remote resolution of dependencies, by the Pulsar or | |
82 other potential remote execution mechanisms. | |
83 """ | |
84 | |
85 def __init__(self, requirements=None, installed_tool_dependencies=None): | |
86 requirements = requirements or ToolRequirements() | |
87 if installed_tool_dependencies is None: | |
88 installed_tool_dependencies = [] | |
89 self.requirements = requirements | |
90 # tool shed installed tool dependencies... | |
91 self.installed_tool_dependencies = installed_tool_dependencies | |
92 | |
93 def to_dict(self): | |
94 return dict( | |
95 requirements=[r.to_dict() for r in self.requirements], | |
96 installed_tool_dependencies=[DependenciesDescription._toolshed_install_dependency_to_dict(d) for d in self.installed_tool_dependencies] | |
97 ) | |
98 | |
99 @staticmethod | |
100 def from_dict(as_dict): | |
101 if as_dict is None: | |
102 return None | |
103 | |
104 requirements_dicts = as_dict.get('requirements', []) | |
105 requirements = ToolRequirements.from_list(requirements_dicts) | |
106 installed_tool_dependencies_dicts = as_dict.get('installed_tool_dependencies', []) | |
107 installed_tool_dependencies = list(map(DependenciesDescription._toolshed_install_dependency_from_dict, installed_tool_dependencies_dicts)) | |
108 return DependenciesDescription( | |
109 requirements=requirements, | |
110 installed_tool_dependencies=installed_tool_dependencies | |
111 ) | |
112 | |
113 @staticmethod | |
114 def _toolshed_install_dependency_from_dict(as_dict): | |
115 # Rather than requiring full models in Pulsar, just use simple objects | |
116 # containing only properties and associations used to resolve | |
117 # dependencies for tool execution. | |
118 repository_object = bunch.Bunch( | |
119 name=as_dict['repository_name'], | |
120 owner=as_dict['repository_owner'], | |
121 installed_changeset_revision=as_dict['repository_installed_changeset'], | |
122 ) | |
123 dependency_object = bunch.Bunch( | |
124 name=as_dict['dependency_name'], | |
125 version=as_dict['dependency_version'], | |
126 type=as_dict['dependency_type'], | |
127 tool_shed_repository=repository_object, | |
128 ) | |
129 return dependency_object | |
130 | |
131 @staticmethod | |
132 def _toolshed_install_dependency_to_dict(tool_dependency): | |
133 tool_shed_repository = tool_dependency.tool_shed_repository | |
134 return dict( | |
135 dependency_name=tool_dependency.name, | |
136 dependency_version=tool_dependency.version, | |
137 dependency_type=tool_dependency.type, | |
138 repository_name=tool_shed_repository.name, | |
139 repository_owner=tool_shed_repository.owner, | |
140 repository_installed_changeset=tool_shed_repository.installed_changeset_revision, | |
141 ) |