Coverage for src / lexigram / contracts / admin / route_spec.py: 100%
12 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-15 18:58 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-15 18:58 +0800
1from __future__ import annotations
3from dataclasses import dataclass, field
4from typing import Any, Literal
6HttpMethod = Literal["GET", "POST", "PUT", "PATCH", "DELETE"]
9@dataclass(frozen=True, kw_only=True)
10class AdminRouteSpec:
11 """Contributor-supplied route, registered automatically by admin's router."""
13 path: str
14 method: HttpMethod = "GET"
15 handler: Any
16 name: str
17 permissions: frozenset[str] = field(default_factory=frozenset)
20__all__ = ["AdminRouteSpec"]