"""Typing conformance: stores and persisted state (checked by mypy, never executed)."""
from __future__ import annotations
from dataclasses import dataclass, replace
import pythonnative as pn
@dataclass(frozen=True)
class Session:
user: str | None = None
count: int = 0
session = pn.Store(Session(), name="session")
def sign_in(user: str) -> None:
session.update(lambda state: replace(state, user=user))
session.set(Session(user=user))
session.set(1) # type: ignore[arg-type]
with session.batch():
session.update(lambda state: replace(state, count=state.count + 1))
@pn.component
def Badge() -> pn.Node:
whole: Session = pn.use_store(session)
count: int = pn.use_store(session, lambda state: state.count)
wrong: str = pn.use_store(session, lambda state: state.count) # type: ignore[assignment]
pn.use_store(session, lambda state: state.missing) # type: ignore[attr-defined]
theme, set_theme = pn.use_persisted_state("settings.theme", "light")
set_theme("dark")
set_theme(lambda current: current.upper())
set_theme(3) # type: ignore[arg-type]
unsubscribe = session.subscribe(lambda: None)
unsubscribe()
return pn.Text(f"{whole.user} {count} {wrong} {theme}")