Source code for bioblend.galaxy.tool_dependencies

"""
Contains interactions dealing with Galaxy dependency resolvers.
"""

from typing import (
    Any,
    Dict,
    List,
    Literal,
    Optional,
    TYPE_CHECKING,
)

from bioblend.galaxy.client import Client

if TYPE_CHECKING:
    from bioblend.galaxy import GalaxyInstance


[docs] class ToolDependenciesClient(Client): module = "dependency_resolvers" def __init__(self, galaxy_instance: "GalaxyInstance") -> None: super().__init__(galaxy_instance)
[docs] def summarize_toolbox( self, index: Optional[int] = None, tool_ids: Optional[List[str]] = None, resolver_type: Optional[str] = None, include_containers: bool = False, container_type: Optional[str] = None, index_by: Literal["requirements", "tools"] = "requirements", ) -> list: """ Summarize requirements across toolbox (for Tool Management grid). :type index: int :param index: index of the dependency resolver with respect to the dependency resolvers config file :type tool_ids: list :param tool_ids: tool_ids to return when index_by=tools :type resolver_type: str :param resolver_type: restrict to specified resolver type :type include_containers: bool :param include_containers: include container resolvers in resolution :type container_type: str :param container_type: restrict to specified container type :type index_by: str :param index_by: By default results are grouped by requirements. Set to 'tools' to return one entry per tool. :rtype: list of dicts :returns: dictified descriptions of the dependencies, with attribute `dependency_type: None` if no match was found. For example:: [{'requirements': [{'name': 'galaxy_sequence_utils', 'specs': [], 'type': 'package', 'version': '1.1.4'}, {'name': 'bx-python', 'specs': [], 'type': 'package', 'version': '0.8.6'}], 'status': [{'cacheable': False, 'dependency_type': None, 'exact': True, 'model_class': 'NullDependency', 'name': 'galaxy_sequence_utils', 'version': '1.1.4'}, {'cacheable': False, 'dependency_type': None, 'exact': True, 'model_class': 'NullDependency', 'name': 'bx-python', 'version': '0.8.6'}], 'tool_ids': ['vcf_to_maf_customtrack1']}] .. note:: This method works only on Galaxy 20.01 or later and if the user is a Galaxy admin. It relies on an experimental API particularly tied to the GUI and therefore is subject to breaking changes. """ assert index_by in ["tools", "requirements"], "index_by must be one of 'tools' or 'requirements'." params = { "include_containers": str(include_containers), "index_by": index_by, } if index: params["index"] = str(index) if tool_ids: params["tool_ids"] = ",".join(tool_ids) if resolver_type: params["resolver_type"] = resolver_type if container_type: params["container_type"] = container_type url = "/".join((self._make_url(), "toolbox")) return self._get(url=url, params=params)
[docs] def unused_dependency_paths(self) -> List[str]: """ List unused dependencies """ url = "/".join((self._make_url(), "unused_paths")) return self._get(url=url)
[docs] def delete_unused_dependency_paths(self, paths: List[str]) -> None: """ Delete unused paths :type paths: list :param paths: paths to delete """ payload: Dict[str, Any] = {"paths": paths} url = "/".join((self._make_url(), "unused_paths")) self._put(url=url, payload=payload)