# AUTO-GENERATED by mizan — do not edit from __future__ import annotations from collections.abc import Callable from typing import Any # Built from frontends/mizan-rust with `maturin develop --features pyo3`. from mizan_rust import PyMizanClient, PyContextSubscription from .types import * # noqa: F401, F403 from .types import BaseModel # re-import for the synthesized ContextData classes class MizanClient: """Typed Python facade over the PyO3 mizan-rust kernel.""" def __init__(self, base_url: str, *, session: bool = False, csrf_cookie_name: str = "csrftoken", csrf_header_name: str = "X-CSRFToken") -> None: self._inner = PyMizanClient( base_url, session=session, csrf_cookie_name=csrf_cookie_name, csrf_header_name=csrf_header_name, ) def fetch_user_context(self, user_id: int) -> "UserContextData": raw = self._inner.fetch_context("user", {"user_id": user_id}) return UserContextData(**raw) def subscribe_user_context(self, user_id: int, callback: Callable[[dict[str, Any]], None]) -> PyContextSubscription: return self._inner.subscribe_context("user", {"user_id": user_id}, callback) def call_echo(self, args: EchoInput) -> EchoOutput: raw = self._inner.call("echo", args.model_dump()) return EchoOutput(**raw) def call_whoami(self) -> WhoamiOutput: raw = self._inner.call("whoami", {}) return WhoamiOutput(**raw) def call_update_profile(self, args: UpdateProfileInput) -> UpdateProfileOutput: raw = self._inner.call("update_profile", args.model_dump()) return UpdateProfileOutput(**raw) def call_find_user(self, args: FindUserInput) -> FindUserOutput | None: raw = self._inner.call("find_user", args.model_dump()) return FindUserOutput(**raw) if raw is not None else None def call_rename_user(self, args: RenameUserInput) -> RenameUserOutput: raw = self._inner.call("rename_user", args.model_dump()) return RenameUserOutput(**raw) def invalidate(self, context: str) -> None: self._inner.invalidate(context) def invalidate_scoped(self, context: str, params: dict[str, Any]) -> None: self._inner.invalidate_scoped(context, params) # ── Context data shapes (per-context bundle) ────────────────────────────── class UserContextData(BaseModel): """Bundled return of fetch_user_context.""" user_profile: UserProfileOutput user_orders: UserOrdersOutput