fmn.backends.base module

class fmn.backends.base.APIClient(base_url: str | None = None, **kwargs)[source]

Bases: ABC

property api_url: str | None
property base_url_with_trailing_slash: str
abstract determine_next_page_params(url: str, params: dict, result: dict) tuple[str, dict] | tuple[None, None][source]

Determine parameters for next page.

Parameters:
  • url – API endpoint URL

  • params – Query parameters (can be modified)

  • result – Result dictionary of previous query

Returns:

Tuple of (new URL, new params dict) or (None, None) if last page

extract_payload(result: dict, payload_field: str | None = None) Any[source]
async get(url: str, **kwargs) Any[source]

Query the API for a single result.

async get_paginated(url: str, *, params: dict | None = None, payload_field: str | None = None, **kwargs) AsyncIterator[source]

Query the API and iterate over paginated results if applicable.

async get_payload(url: str, *, payload_field: str | None = None, **kwargs) Any[source]
payload_field: str | None

The payload field in a paginated response.

exception fmn.backends.base.PaginationRecursionError[source]

Bases: RuntimeError

fmn.backends.base.handle_http_error(default_factory)[source]