Skip to content

Types

beautyspot.types モジュールでは、エラーハンドリングや拡張フックで利用されるデータクラスを定義しています。

beautyspot.types

CacheHitContext dataclass

Bases: HookContextBase

キャッシュから正常に結果が取得された際に渡されるコンテキスト。

Source code in src/beautyspot/types.py
@dataclass(frozen=True)
class CacheHitContext(HookContextBase):
    """キャッシュから正常に結果が取得された際に渡されるコンテキスト。"""

    result: Any
    version: Optional[str]

CacheMissContext dataclass

Bases: HookContextBase

キャッシュミスとなり、元の関数が実行された後に渡されるコンテキスト。

Source code in src/beautyspot/types.py
@dataclass(frozen=True)
class CacheMissContext(HookContextBase):
    """キャッシュミスとなり、元の関数が実行された後に渡されるコンテキスト。"""

    result: Any
    version: Optional[str]

HookContextBase dataclass

すべてのフックに共通する基本コンテキスト情報。

Attributes:

Name Type Description
kwargs Mapping[str, Any]

関数に渡されたキーワード引数。読み取り専用の MappingProxyType として提供されるため、フック内での変更はできません。

Source code in src/beautyspot/types.py
@dataclass(frozen=True)
class HookContextBase:
    """すべてのフックに共通する基本コンテキスト情報。

    Attributes:
        kwargs: 関数に渡されたキーワード引数。読み取り専用の ``MappingProxyType``
            として提供されるため、フック内での変更はできません。
    """

    func_name: str
    input_id: str
    cache_key: str
    args: tuple
    kwargs: Mapping[str, Any]

    def __post_init__(self) -> None:
        # Bug Fix (D4): frozen=True でも dict の内容は変更可能なため、
        # MappingProxyType でラップしてフックによる意図しない変更を防ぐ。
        if not isinstance(self.kwargs, MappingProxyType):
            object.__setattr__(self, "kwargs", MappingProxyType(self.kwargs))

PreExecuteContext dataclass

Bases: HookContextBase

関数実行前、またはキャッシュ確認前に渡されるコンテキスト。

Source code in src/beautyspot/types.py
@dataclass(frozen=True)
class PreExecuteContext(HookContextBase):
    """関数実行前、またはキャッシュ確認前に渡されるコンテキスト。"""

    pass

SaveErrorContext dataclass

キャッシュ保存処理 (wait=False/True) が失敗した際に、 エラーハンドラーへ渡されるコンテキスト情報です。

Attributes:

Name Type Description
func_name str

キャッシュ保存対象となった関数の名前

cache_key str

生成されたキャッシュキー (SHA-256)

input_id str

入力引数から生成された識別子

version Optional[str]

キャッシュのバージョン指定文字列

content_type Optional[str]

保存データのMIMEタイプなどのコンテンツタイプ文字列

save_blob Optional[bool]

Blobストレージへの保存が指定/判定されていたか

expires_at Optional[datetime]

計算されたキャッシュの有効期限

result_type str

キャッシュしようとした戻り値の型名

result_size Optional[int]

キャッシュしようとした戻り値のメモリサイズ概算(取得可能な場合のみ)

Source code in src/beautyspot/types.py
@dataclass(frozen=True)
class SaveErrorContext:
    """
    キャッシュ保存処理 (wait=False/True) が失敗した際に、
    エラーハンドラーへ渡されるコンテキスト情報です。

    Attributes:
        func_name: キャッシュ保存対象となった関数の名前
        cache_key: 生成されたキャッシュキー (SHA-256)
        input_id: 入力引数から生成された識別子
        version: キャッシュのバージョン指定文字列
        content_type: 保存データのMIMEタイプなどのコンテンツタイプ文字列
        save_blob: Blobストレージへの保存が指定/判定されていたか
        expires_at: 計算されたキャッシュの有効期限
        result_type: キャッシュしようとした戻り値の型名
        result_size: キャッシュしようとした戻り値のメモリサイズ概算(取得可能な場合のみ)
    """

    func_name: str
    cache_key: str
    input_id: str
    version: Optional[str]
    content_type: Optional[str]
    save_blob: Optional[bool]
    expires_at: Optional[datetime]
    result_type: str
    result_size: Optional[int]

TaskRecord

Bases: TypedDict

Task metadata record retrieved from the database.

Source code in src/beautyspot/types.py
class TaskRecord(TypedDict):
    """
    Task metadata record retrieved from the database.
    """

    result_type: str
    result_value: Optional[str]
    result_data: Optional[bytes]
    expires_at: Optional[str]

Hook Contexts

フックシステム(HookBase)の各メソッドに渡される、型安全なコンテキストオブジェクトです。

  • PreExecuteContext: 関数実行(およびキャッシュ確認)の直前に渡されます。引数 (args, kwargs) にアクセスできます。
  • CacheHitContext: キャッシュがヒットした直後に渡されます。キャッシュから復元された result にアクセスできます。
  • CacheMissContext: キャッシュが存在せず、実関数が実行された直後に渡されます。新たに生成された result にアクセスできます。

Error Contexts

  • SaveErrorContext: バックグラウンド保存 (wait=False) 時にエラーが発生した場合、on_background_error ハンドラに渡されるコンテキストです。

beautyspot.content_types

ContentType

Bases: StrEnum

Supported semantic content types for beautyspot tasks. Used by the dashboard to determine the appropriate rendering widget.

Source code in src/beautyspot/content_types.py
class ContentType(StrEnum):
    """
    Supported semantic content types for beautyspot tasks.
    Used by the dashboard to determine the appropriate rendering widget.
    """

    TEXT = "text/plain"
    JSON = "application/json"
    MARKDOWN = "text/markdown"
    PNG = "image/png"
    JPEG = "image/jpeg"
    MERMAID = "text/vnd.mermaid"
    GRAPHVIZ = "text/vnd.graphviz"
    HTML = "text/html"