Example #1
0
    def search(self,
               query: str,
               pagination=Pagination(),
               result_type: ResultType = None) -> dict:
        """
        Searches by a query, optionally paginated or restricted to a particular type (container,
                                                                                      sample, subsample or template)
        Parameters
        ----------
        query : str
            Any text string. Will search against name, tag, description
        pagination : optional
            The default is Pagination().
        result_type : ResultType, optional
         The default is None.

        Returns
        -------
        dict
            Search result summary and first page of results.

        """
        params = {"query": query}
        params.update(pagination.data)
        if result_type is not None:
            params["resultType"] = result_type.name
        return self.retrieve_api_results("/search", params=params)
Example #2
0
 def list_subsamples(self,
                     pagination: Pagination = Pagination(),
                     sample_filter: SearchFilter = None) -> dict:
     """
     Parameters
     ----------
     pagination : Pagination, optional
         The default is Pagination().
     Returns
     -------
     Paginated Search result. Use 'next' and 'prev' links to navigate
     """
     return self._do_simple_list("subSamples", pagination, sample_filter)
Example #3
0
    def stream_top_level_containers(self,
                                    pagination: Pagination = Pagination(),
                                    sample_filter: SearchFilter = None):
        """
        Streams all containers. Pagination argument sets batch size and ordering.
        Parameters
        ----------
        pagination : Pagination, optional. The default is Pagination().

        Yields
        ------
        item : One Container at a time
        """
        if sample_filter is not None:
            pagination.data.update(sample_filter.data)
        return self._stream("containers", pagination)
Example #4
0
    def list_sample_templates(self,
                              pagination: Pagination = Pagination(),
                              search_filter: SearchFilter = None):
        """
        Paginated listing of SampleTemplates, optionally filtering by username (owner) or deletion status

        Parameters
        ----------
        pagination : Pagination, optional
            The default is Pagination().
        search_filter : SearchFilter, optional
            The default is None.

        Returns
        -------
        A standard SearchResult with 'totalHits' attribute and a list of 'templates' with basic information
        about each template.

        """
        return self._do_simple_list("sampleTemplates", pagination,
                                    search_filter)
Example #5
0
 def test_stream_documents(self):
     doc_gen = self.api.stream_documents(pagination=Pagination(page_size=1))
     d1 = next(doc_gen)
     d2 = next(doc_gen)
     self.assertNotEqual(d1["id"], d2["id"])
Example #6
0
 def stream_documents(self, pagination: Pagination = Pagination()):
     return self._stream("documents", pagination)