Source code for httk.optimade.endpoints.meta

import datetime
from importlib.metadata import PackageNotFoundError, version
from typing import Any

from ..model.config import OptimadeConfig

try:
    _implementation_version = version("httk-optimade")
except PackageNotFoundError:  # pragma: no cover - only hit when running from a raw source tree
    _implementation_version = "0.0.0"


[docs] def generate_meta( *, representation: str, api_version: str, config: OptimadeConfig, data_count: int | None = None, more_data_available: bool = False, data_available: int | None = None, warnings: list[dict[str, Any]] | None = None, last_id: str | None = None, ) -> dict[str, Any]: implementation = { "name": "httk-optimade", "version": _implementation_version, "homepage": "https://httk.org/", "source_url": "https://github.com/httk/httk-optimade", "issue_tracker": "https://github.com/httk/httk-optimade/issues", } implementation.update(config.implementation) meta: dict[str, Any] = { "query": { "representation": representation, }, "api_version": api_version, "time_stamp": datetime.datetime.now(datetime.UTC).isoformat(), "more_data_available": more_data_available, "implementation": implementation, "provider": config.provider, } if config.schema_url is not None: meta['schema'] = config.schema_url if config.database is not None: meta['database'] = config.database if config.request_delay is not None: meta['request_delay'] = config.request_delay if data_count is not None: meta['data_returned'] = data_count if data_available is not None: meta['data_available'] = data_available if warnings: meta['warnings'] = warnings if last_id is not None: meta['last_id'] = last_id return meta