diff env/lib/python3.7/site-packages/bioblend/galaxy/objects/client.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/bioblend/galaxy/objects/client.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,428 +0,0 @@
-"""
-Clients for interacting with specific Galaxy entity types.
-
-Classes in this module should not be instantiated directly, but used
-via their handles in :class:`~.galaxy_instance.GalaxyInstance`.
-"""
-import abc
-import collections
-import json
-
-import six
-
-import bioblend
-from . import wrappers
-
-
-@six.add_metaclass(abc.ABCMeta)
-class ObjClient(object):
-
-    @abc.abstractmethod
-    def __init__(self, obj_gi):
-        self.obj_gi = obj_gi
-        self.gi = self.obj_gi.gi
-        self.log = bioblend.log
-
-    @abc.abstractmethod
-    def get_previews(self, **kwargs):
-        """
-        Get a list of object previews.
-
-        Previews entity summaries provided by REST collection URIs, e.g.
-        ``http://host:port/api/libraries``.  Being the most lightweight objects
-        associated to the various entities, these are the ones that should be
-        used to retrieve their basic info.
-
-        :rtype: list
-        :return: a list of object previews
-        """
-        pass
-
-    @abc.abstractmethod
-    def list(self, **kwargs):
-        """
-        Get a list of objects.
-
-        This method first gets the entity summaries, then gets the complete
-        description for each entity with an additional GET call, so may be slow.
-
-        :rtype: list
-        :return: a list of objects
-        """
-        pass
-
-    def _select_ids(self, id_=None, name=None):
-        """
-        Return the id list that corresponds to the given id or name info.
-        """
-        if id_ is None and name is None:
-            self._error('neither id nor name provided', err_type=TypeError)
-        if id_ is not None and name is not None:
-            self._error('both id and name provided', err_type=TypeError)
-        if id_ is None:
-            return [_.id for _ in self.get_previews(name=name)]
-        else:
-            return [id_]
-
-    def _error(self, msg, err_type=RuntimeError):
-        self.log.error(msg)
-        raise err_type(msg)
-
-    def _get_dict(self, meth_name, reply):
-        if reply is None:
-            self._error('%s: no reply' % meth_name)
-        elif isinstance(reply, collections.Mapping):
-            return reply
-        try:
-            return reply[0]
-        except (TypeError, IndexError):
-            self._error('%s: unexpected reply: %r' % (meth_name, reply))
-
-
-class ObjDatasetContainerClient(ObjClient):
-
-    def _get_container(self, id_, ctype):
-        show_fname = 'show_%s' % ctype.__name__.lower()
-        gi_client = getattr(self.gi, ctype.API_MODULE)
-        show_f = getattr(gi_client, show_fname)
-        res = show_f(id_)
-        cdict = self._get_dict(show_fname, res)
-        cdict['id'] = id_  # overwrite unencoded id
-        c_infos = show_f(id_, contents=True)
-        if not isinstance(c_infos, collections.Sequence):
-            self._error('%s: unexpected reply: %r' % (show_fname, c_infos))
-        c_infos = [ctype.CONTENT_INFO_TYPE(_) for _ in c_infos]
-        return ctype(cdict, content_infos=c_infos, gi=self.obj_gi)
-
-
-class ObjLibraryClient(ObjDatasetContainerClient):
-    """
-    Interacts with Galaxy libraries.
-    """
-
-    def __init__(self, obj_gi):
-        super(ObjLibraryClient, self).__init__(obj_gi)
-
-    def create(self, name, description=None, synopsis=None):
-        """
-        Create a data library with the properties defined in the arguments.
-
-        :rtype: :class:`~.wrappers.Library`
-        :return: the library just created
-        """
-        res = self.gi.libraries.create_library(name, description, synopsis)
-        lib_info = self._get_dict('create_library', res)
-        return self.get(lib_info['id'])
-
-    def get(self, id_):
-        """
-        Retrieve the data library corresponding to the given id.
-
-        :rtype: :class:`~.wrappers.Library`
-        :return: the library corresponding to ``id_``
-        """
-        return self._get_container(id_, wrappers.Library)
-
-    def get_previews(self, name=None, deleted=False):
-        dicts = self.gi.libraries.get_libraries(name=name, deleted=deleted)
-        return [wrappers.LibraryPreview(_, gi=self.obj_gi) for _ in dicts]
-
-    def list(self, name=None, deleted=False):
-        """
-        Get libraries owned by the user of this Galaxy instance.
-
-        :type name: str
-        :param name: return only libraries with this name
-        :type deleted: bool
-        :param deleted: if ``True``, return libraries that have been deleted
-
-        :rtype: list of :class:`~.wrappers.Library`
-        """
-        dicts = self.gi.libraries.get_libraries(name=name, deleted=deleted)
-        if not deleted:
-            # return Library objects only for not-deleted libraries since Galaxy
-            # does not filter them out and Galaxy release_14.08 and earlier
-            # crashes when trying to get a deleted library
-            return [self.get(_['id']) for _ in dicts if not _['deleted']]
-        else:
-            return [self.get(_['id']) for _ in dicts]
-
-    def delete(self, id_=None, name=None):
-        """
-        Delete the library with the given id or name.
-
-        Note that the same name can map to multiple libraries.
-
-        .. warning::
-          Deleting a data library is irreversible - all of the data from
-          the library will be permanently deleted.
-        """
-        for id_ in self._select_ids(id_=id_, name=name):
-            res = self.gi.libraries.delete_library(id_)
-            if not isinstance(res, collections.Mapping):
-                self._error('delete_library: unexpected reply: %r' % (res,))
-
-
-class ObjHistoryClient(ObjDatasetContainerClient):
-    """
-    Interacts with Galaxy histories.
-    """
-
-    def __init__(self, obj_gi):
-        super(ObjHistoryClient, self).__init__(obj_gi)
-
-    def create(self, name=None):
-        """
-        Create a new Galaxy history, optionally setting its name.
-
-        :rtype: :class:`~.wrappers.History`
-        :return: the history just created
-        """
-        res = self.gi.histories.create_history(name=name)
-        hist_info = self._get_dict('create_history', res)
-        return self.get(hist_info['id'])
-
-    def get(self, id_):
-        """
-        Retrieve the history corresponding to the given id.
-
-        :rtype: :class:`~.wrappers.History`
-        :return: the history corresponding to ``id_``
-        """
-        return self._get_container(id_, wrappers.History)
-
-    def get_previews(self, name=None, deleted=False):
-        dicts = self.gi.histories.get_histories(name=name, deleted=deleted)
-        return [wrappers.HistoryPreview(_, gi=self.obj_gi) for _ in dicts]
-
-    def list(self, name=None, deleted=False):
-        """
-        Get histories owned by the user of this Galaxy instance.
-
-        :type name: str
-        :param name: return only histories with this name
-        :type deleted: bool
-        :param deleted: if ``True``, return histories that have been deleted
-
-        :rtype: list of :class:`~.wrappers.History`
-        """
-        dicts = self.gi.histories.get_histories(name=name, deleted=deleted)
-        return [self.get(_['id']) for _ in dicts]
-
-    def delete(self, id_=None, name=None, purge=False):
-        """
-        Delete the history with the given id or name.
-
-        Note that the same name can map to multiple histories.
-
-        :type purge: bool
-        :param purge: if ``True``, also purge (permanently delete) the history
-
-        .. note::
-          For the purge option to work, the Galaxy instance must have the
-          ``allow_user_dataset_purge`` option set to ``true`` in the
-          ``config/galaxy.yml`` configuration file.
-        """
-        for id_ in self._select_ids(id_=id_, name=name):
-            res = self.gi.histories.delete_history(id_, purge=purge)
-            if not isinstance(res, collections.Mapping):
-                self._error('delete_history: unexpected reply: %r' % (res,))
-
-
-class ObjWorkflowClient(ObjClient):
-    """
-    Interacts with Galaxy workflows.
-    """
-
-    def __init__(self, obj_gi):
-        super(ObjWorkflowClient, self).__init__(obj_gi)
-
-    def import_new(self, src, publish=False):
-        """
-        Imports a new workflow into Galaxy.
-
-        :type src: dict or str
-        :param src: deserialized (dictionary) or serialized (str) JSON
-          dump of the workflow (this is normally obtained by exporting
-          a workflow from Galaxy).
-
-        :type publish: bool
-        :param publish:  if ``True`` the uploaded workflow will be published;
-                         otherwise it will be visible only by the user which uploads it (default).
-
-        :rtype: :class:`~.wrappers.Workflow`
-        :return: the workflow just imported
-        """
-        if isinstance(src, collections.Mapping):
-            wf_dict = src
-        else:
-            try:
-                wf_dict = json.loads(src)
-            except (TypeError, ValueError):
-                self._error('src not supported: %r' % (src,))
-        wf_info = self.gi.workflows.import_workflow_dict(wf_dict, publish)
-        return self.get(wf_info['id'])
-
-    def import_shared(self, id_):
-        """
-        Imports a shared workflow to the user's space.
-
-        :type id_: str
-        :param id_: workflow id
-
-        :rtype: :class:`~.wrappers.Workflow`
-        :return: the workflow just imported
-        """
-        wf_info = self.gi.workflows.import_shared_workflow(id_)
-        return self.get(wf_info['id'])
-
-    def get(self, id_):
-        """
-        Retrieve the workflow corresponding to the given id.
-
-        :rtype: :class:`~.wrappers.Workflow`
-        :return: the workflow corresponding to ``id_``
-        """
-        res = self.gi.workflows.show_workflow(id_)
-        wf_dict = self._get_dict('show_workflow', res)
-        return wrappers.Workflow(wf_dict, gi=self.obj_gi)
-
-    # the 'deleted' option is not available for workflows
-    def get_previews(self, name=None, published=False):
-        dicts = self.gi.workflows.get_workflows(name=name, published=published)
-        return [wrappers.WorkflowPreview(_, gi=self.obj_gi) for _ in dicts]
-
-    # the 'deleted' option is not available for workflows
-    def list(self, name=None, published=False):
-        """
-        Get workflows owned by the user of this Galaxy instance.
-
-        :type name: str
-        :param name: return only workflows with this name
-        :type published: bool
-        :param published: if ``True``, return also published workflows
-
-        :rtype: list of :class:`~.wrappers.Workflow`
-        """
-        dicts = self.gi.workflows.get_workflows(name=name, published=published)
-        return [self.get(_['id']) for _ in dicts]
-
-    def delete(self, id_=None, name=None):
-        """
-        Delete the workflow with the given id or name.
-
-        Note that the same name can map to multiple workflows.
-
-        .. warning::
-          Deleting a workflow is irreversible - all of the data from
-          the workflow will be permanently deleted.
-        """
-        for id_ in self._select_ids(id_=id_, name=name):
-            res = self.gi.workflows.delete_workflow(id_)
-            if not isinstance(res, six.string_types):
-                self._error('delete_workflow: unexpected reply: %r' % (res,))
-
-
-class ObjToolClient(ObjClient):
-    """
-    Interacts with Galaxy tools.
-    """
-
-    def __init__(self, obj_gi):
-        super(ObjToolClient, self).__init__(obj_gi)
-
-    def get(self, id_, io_details=False, link_details=False):
-        """
-        Retrieve the tool corresponding to the given id.
-
-        :type io_details: bool
-        :param io_details: if True, get also input and output details
-
-        :type link_details: bool
-        :param link_details: if True, get also link details
-
-        :rtype: :class:`~.wrappers.Tool`
-        :return: the tool corresponding to ``id_``
-        """
-        res = self.gi.tools.show_tool(id_, io_details=io_details,
-                                      link_details=link_details)
-        tool_dict = self._get_dict('show_tool', res)
-        return wrappers.Tool(tool_dict, gi=self.obj_gi)
-
-    def get_previews(self, name=None, trackster=None):
-        """
-        Get the list of tools installed on the Galaxy instance.
-
-        :type name: str
-        :param name: return only tools with this name
-
-        :type trackster: bool
-        :param trackster: if True, only tools that are compatible with
-          Trackster are returned
-
-        :rtype: list of :class:`~.wrappers.Tool`
-        """
-        dicts = self.gi.tools.get_tools(name=name, trackster=trackster)
-        return [wrappers.Tool(_, gi=self.obj_gi) for _ in dicts]
-
-    # the 'deleted' option is not available for tools
-    def list(self, name=None, trackster=None):
-        """
-        Get the list of tools installed on the Galaxy instance.
-
-        :type name: str
-        :param name: return only tools with this name
-
-        :type trackster: bool
-        :param trackster: if True, only tools that are compatible with
-          Trackster are returned
-
-        :rtype: list of :class:`~.wrappers.Tool`
-        """
-        # dicts = self.gi.tools.get_tools(name=name, trackster=trackster)
-        # return [self.get(_['id']) for _ in dicts]
-        # As of 2015/04/15, GET /api/tools returns also data manager tools for
-        # non-admin users, see
-        # https://trello.com/c/jyl0cvFP/2633-api-tool-list-filtering-doesn-t-filter-data-managers-for-non-admins
-        # Trying to get() a data manager tool would then return a 404 Not Found
-        # error.
-        # Moreover, the dicts returned by gi.tools.get_tools() are richer than
-        # those returned by get(), so make this an alias for get_previews().
-        return self.get_previews(name, trackster)
-
-
-class ObjJobClient(ObjClient):
-    """
-    Interacts with Galaxy jobs.
-    """
-
-    def __init__(self, obj_gi):
-        super(ObjJobClient, self).__init__(obj_gi)
-
-    def get(self, id_, full_details=False):
-        """
-        Retrieve the job corresponding to the given id.
-
-        :type full_details: bool
-        :param full_details: if ``True``, return the complete list of details
-          for the given job.
-
-        :rtype: :class:`~.wrappers.Job`
-        :return: the job corresponding to ``id_``
-        """
-        res = self.gi.jobs.show_job(id_, full_details)
-        job_dict = self._get_dict('job_tool', res)
-        return wrappers.Job(job_dict, gi=self.obj_gi)
-
-    def get_previews(self):
-        dicts = self.gi.jobs.get_jobs()
-        return [wrappers.JobPreview(_, gi=self.obj_gi) for _ in dicts]
-
-    def list(self):
-        """
-        Get the list of jobs of the current user.
-
-        :rtype: list of :class:`~.wrappers.Job`
-        """
-        dicts = self.gi.jobs.get_jobs()
-        return [self.get(_['id']) for _ in dicts]