Source code for mini_arcade_pygame_backend.config

"""
Configuration for the mini-arcade-pygame-backend package.
This is mostly used for packaging and distribution.
It is not used at runtime.
"""

from __future__ import annotations

from dataclasses import asdict, dataclass, field

from mini_arcade_core.backend.config import AudioSettings
from mini_arcade_core.backend.config import (
    BackendSettings as CoreBackendSettings,  # pyright: ignore[reportMissingImports]
)
from mini_arcade_core.backend.config import (
    FontSettings,
    RendererSettings,
    WindowSettings,
)


[docs] @dataclass(frozen=True) class PygameBackendSettings: """ Settings for configuring the pygame backend. :ivar core: Core backend settings. :ivar api: The rendering API to use. """ core: CoreBackendSettings = field(default_factory=CoreBackendSettings)
[docs] def to_dict(self) -> dict: """ Convert the PygameBackendSettings to a dictionary. :return: Dictionary representation of the settings. :rtype: dict """ return asdict(self)
[docs] @classmethod def from_dict(cls, data: dict) -> "PygameBackendSettings": """ Create a PygameBackendSettings instance from a dictionary. :param data: Dictionary containing the settings. :type data: dict :return: PygameBackendSettings instance. :rtype: PygameBackendSettings """ window = WindowSettings(**data.get("window", {})) renderer = RendererSettings(**data.get("renderer", {})) audio = AudioSettings(**data.get("audio", {})) fonts = [FontSettings(**fs) for fs in data.get("fonts", [])] return cls( core=CoreBackendSettings( window=window, renderer=renderer, audio=audio, fonts=fonts, ) )