benchling_sdk.helpers.pagination_helpers module

class LengthExtractor

Bases: typing_extensions.Protocol

Extract estimated size information if available.

__init__(*args, **kwargs)
class PageIterator

Bases: Iterable[List[benchling_sdk.helpers.pagination_helpers.Model]]

Paginate arbitrary Benchling API endpoints which support the concept of a next_token.

next_token points to subsequent pages of results. Supporting API endpoints typically return a “results body” object which contains a key for next_token, as well as a key for a collection of results representing the current page.

Any API errors encountered during retrieval of a page will be marshaled to benchling_sdk.errors.BenchlingError.

__init__(api_call: PagedApiCall, results_extractor: ResultsExtractor, token_extractor: TokenExtractor = _default_token_extractor, length_extractor: LengthExtractor = _default_length_extractor) None

Initialize a PageIterator.

Parameters
  • api_call – A Callable that accepts a str for the next_token

  • results_extractor – A Callable that can extract a list of models from a results body

  • token_extractor – A Callable that can extract the next_token str value from a results body

  • length_extractor – A Callable that can extract the approximated available results count from a response

property estimated_count: int

Return the value of the Result-Count header provided by the API, if applicable.

Some endpoints may not implement this header. In that case, NotImplementedError is raised.

first() Optional[benchling_sdk.helpers.pagination_helpers.Model]

Return the first item from the first page.

Will return None if the page had zero results. Operates independent of iteration - calls to first after starting iteration will still return the first item from the first page and not the current page.

property next_token: Optional[str]

Return the last nextToken provided by the API, if applicable.

class PagedApiCall

Bases: typing_extensions.Protocol

Make an HTTP call which implemented pagination.

__init__(*args, **kwargs)
class ResultsExtractor

Bases: typing_extensions.Protocol

Extract results from a paginated response.

__init__(*args, **kwargs)
class TokenExtractor

Bases: typing_extensions.Protocol

Get the next token.

__init__(*args, **kwargs)