gam 0.1.17

Generalized penalized likelihood engine
Documentation
from __future__ import annotations

from dataclasses import dataclass
from html import escape
from typing import Any


@dataclass(frozen=True)
class FormulaValidation:
    payload: dict[str, Any]

    @classmethod
    def from_dict(cls, payload: dict[str, Any]) -> "FormulaValidation":
        return cls(payload=dict(payload))

    def __getitem__(self, key: str) -> Any:
        return self.payload[key]

    def to_dict(self) -> dict[str, Any]:
        return dict(self.payload)

    @property
    def supported_by_python(self) -> bool:
        return bool(self.payload.get("supported_by_python", False))

    def __repr__(self) -> str:
        return (
            "FormulaValidation("
            f"formula={self.payload.get('formula')!r}, "
            f"model_class={self.payload.get('model_class')!r}, "
            f"family_name={self.payload.get('family_name')!r}, "
            f"supported_by_python={self.supported_by_python!r})"
        )

    def _repr_html_(self) -> str:
        rows = "".join(
            "<tr>"
            f"<th style='text-align:left;padding:0.25rem 0.75rem 0.25rem 0;'>{escape(str(key))}</th>"
            f"<td style='padding:0.25rem 0;'>{escape(str(value))}</td>"
            "</tr>"
            for key, value in self.payload.items()
        )
        return (
            "<div style='font-family: ui-sans-serif, system-ui, sans-serif;'>"
            "<h3 style='margin:0 0 0.5rem 0;'>Formula Validation</h3>"
            f"<table style='border-collapse:collapse;'>{rows}</table>"
            "</div>"
        )