Mercurial > repos > guerler > springsuite
diff planemo/lib/python3.7/site-packages/galaxy/tool_util/deps/dependencies.py @ 0:d30785e31577 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:18:57 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo/lib/python3.7/site-packages/galaxy/tool_util/deps/dependencies.py Fri Jul 31 00:18:57 2020 -0400 @@ -0,0 +1,136 @@ +from galaxy.tool_util.deps.requirements import ToolRequirements +from galaxy.util import bunch +from .mulled.mulled_build import DEFAULT_CHANNELS + + +class AppInfo(object): + + def __init__( + self, + galaxy_root_dir=None, + default_file_path=None, + tool_data_path=None, + shed_tool_data_path=None, + outputs_to_working_directory=False, + container_image_cache_path=None, + library_import_dir=None, + enable_mulled_containers=False, + containers_resolvers_config_file=None, + involucro_path=None, + involucro_auto_init=True, + mulled_channels=DEFAULT_CHANNELS, + ): + self.galaxy_root_dir = galaxy_root_dir + self.default_file_path = default_file_path + self.tool_data_path = tool_data_path + self.shed_tool_data_path = shed_tool_data_path + # TODO: Vary default value for docker_volumes based on this... + self.outputs_to_working_directory = outputs_to_working_directory + self.container_image_cache_path = container_image_cache_path + self.library_import_dir = library_import_dir + self.enable_mulled_containers = enable_mulled_containers + self.containers_resolvers_config_file = containers_resolvers_config_file + self.involucro_path = involucro_path + self.involucro_auto_init = involucro_auto_init + self.mulled_channels = mulled_channels + + +class ToolInfo(object): + # TODO: Introduce tool XML syntax to annotate the optional environment + # variables they can consume (e.g. JVM options, license keys, etc..) + # and add these to env_path_through + + def __init__(self, container_descriptions=None, requirements=None, requires_galaxy_python_environment=False, env_pass_through=["GALAXY_SLOTS"], guest_ports=None, tool_id=None, tool_version=None, profile=-1): + if container_descriptions is None: + container_descriptions = [] + if requirements is None: + requirements = [] + self.container_descriptions = container_descriptions + self.requirements = requirements + self.requires_galaxy_python_environment = requires_galaxy_python_environment + self.env_pass_through = env_pass_through + self.guest_ports = guest_ports + self.tool_id = tool_id + self.tool_version = tool_version + self.profile = profile + + +class JobInfo(object): + + def __init__( + self, working_directory, tool_directory, job_directory, tmp_directory, home_directory, job_directory_type, + ): + self.working_directory = working_directory + # Tool files may be remote staged - so this is unintuitively a property + # of the job not of the tool. + self.tool_directory = tool_directory + self.job_directory = job_directory + self.tmp_directory = tmp_directory + self.home_directory = home_directory + self.job_directory_type = job_directory_type # "galaxy" or "pulsar" + + +class DependenciesDescription(object): + """ Capture (in a readily serializable way) context related a tool + dependencies - both the tool's listed requirements and the tool shed + related context required to resolve dependencies via the + ToolShedPackageDependencyResolver. + + This is meant to enable remote resolution of dependencies, by the Pulsar or + other potential remote execution mechanisms. + """ + + def __init__(self, requirements=[], installed_tool_dependencies=[]): + self.requirements = requirements + # tool shed installed tool dependencies... + self.installed_tool_dependencies = installed_tool_dependencies + + def to_dict(self): + return dict( + requirements=[r.to_dict() for r in self.requirements], + installed_tool_dependencies=[DependenciesDescription._toolshed_install_dependency_to_dict(d) for d in self.installed_tool_dependencies] + ) + + @staticmethod + def from_dict(as_dict): + if as_dict is None: + return None + + requirements_dicts = as_dict.get('requirements', []) + requirements = ToolRequirements.from_list(requirements_dicts) + installed_tool_dependencies_dicts = as_dict.get('installed_tool_dependencies', []) + installed_tool_dependencies = list(map(DependenciesDescription._toolshed_install_dependency_from_dict, installed_tool_dependencies_dicts)) + return DependenciesDescription( + requirements=requirements, + installed_tool_dependencies=installed_tool_dependencies + ) + + @staticmethod + def _toolshed_install_dependency_from_dict(as_dict): + # Rather than requiring full models in Pulsar, just use simple objects + # containing only properties and associations used to resolve + # dependencies for tool execution. + repository_object = bunch.Bunch( + name=as_dict['repository_name'], + owner=as_dict['repository_owner'], + installed_changeset_revision=as_dict['repository_installed_changeset'], + ) + dependency_object = bunch.Bunch( + name=as_dict['dependency_name'], + version=as_dict['dependency_version'], + type=as_dict['dependency_type'], + tool_shed_repository=repository_object, + ) + return dependency_object + + @staticmethod + def _toolshed_install_dependency_to_dict(tool_dependency): + tool_shed_repository = tool_dependency.tool_shed_repository + return dict( + dependency_name=tool_dependency.name, + dependency_version=tool_dependency.version, + dependency_type=tool_dependency.type, + repository_name=tool_shed_repository.name, + repository_owner=tool_shed_repository.owner, + repository_installed_changeset=tool_shed_repository.installed_changeset_revision, + )