Source code for fluxlit.api

"""Small utilities for declaring :class:`fastapi.APIRouter` instances."""

from __future__ import annotations

from collections.abc import Sequence
from enum import Enum
from typing import cast

from fastapi import APIRouter


[docs] def router(*, prefix: str = "", tags: Sequence[str] | None = None) -> APIRouter: """Create an :class:`~fastapi.APIRouter` with optional prefix and OpenAPI tags. Exists to normalize ``tags`` typing (``list[str]`` vs enum tags) for strict callers. Args: prefix: Path prefix for all routes on this router. tags: Tag names attached to operations in OpenAPI. Returns: A new :class:`~fastapi.APIRouter`. """ t = cast( list[str | Enum] | None, list(tags) if tags is not None else None, ) return APIRouter(prefix=prefix, tags=t)