Source code for httk.serve.web.model.page
"""Define immutable route, render, and publication result models."""
from dataclasses import dataclass, field
from pathlib import Path
from typing import Literal
from httk.serve.web.widgets.core import WidgetAsset
@dataclass(frozen=True)
[docs]
class ResolvedRoute:
"""Describe how a requested route was resolved.
:param kind: Resolution kind: static, content, or missing.
:param route: Normalized route text.
:param source_path: Matching source path when one exists.
"""
[docs]
kind: Literal["static", "content", "missing"]
[docs]
source_path: Path | None = None
@dataclass(frozen=True)
@dataclass(frozen=True)
[docs]
class PublishReport:
"""Report files written and warnings collected during publication.
:param written_files: Output files written by publication.
:param warnings: Non-fatal publication warnings.
"""
[docs]
written_files: list[Path] = field(default_factory=list)
[docs]
warnings: list[str] = field(default_factory=list)