diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/galaxy/tool_util/deps/dependencies.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,141 @@
+from galaxy.tool_util.deps.requirements import ToolRequirements
+from galaxy.util import bunch
+from .mulled.mulled_build import DEFAULT_CHANNELS
+
+
+class AppInfo:
+
+    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:
+    # 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=None, guest_ports=None, tool_id=None, tool_version=None, profile=-1):
+        if env_pass_through is None:
+            env_pass_through = ["GALAXY_SLOTS"]
+        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:
+
+    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:
+    """ 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=None, installed_tool_dependencies=None):
+        requirements = requirements or ToolRequirements()
+        if installed_tool_dependencies is None:
+            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,
+        )