Source code for binp

from dataclasses import dataclass, field
from functools import cached_property

from fastapi import FastAPI

from .action import Action
from .api import create_app
from .journals import Journals
from .kv import KV
from .service import Service


[docs]@dataclass(frozen=True) class BINP: #: Key-Value default storage kv: KV = field(default_factory=KV) #: Journal for operation tracing journal: Journals = field(default_factory=Journals) #: UI exposed actions (buttons) action: Action = field(default_factory=Action) #: Background services service: Service = field(default_factory=Service) @cached_property def app(self) -> FastAPI: """ Creates FastAPI applications and caches result. """ return create_app(self.journal, self.kv, self.action, self.service)