Source code for tud_lbm.config.adapter_dict

"""Dict configuration adapter.

Accepts a plain Python ``dict`` and returns a
:class:`~config.simulation_config.SimulationConfig`.

Usage::

    from config.adapter_dict import DictAdapter

    adapter = DictAdapter()
    config  = adapter.load({"grid_shape": [64, 64], "tau": 0.8})
"""

from __future__ import annotations
from typing import Any
from tud_lbm.config.simulation_config import SimulationConfig


[docs] class DictAdapter: """Adapter that builds a :class:`SimulationConfig` from a dict."""
[docs] def load(self, d: dict[str, Any]) -> SimulationConfig: """Build a :class:`SimulationConfig` from *d*. Handles conversion from dict (e.g. from ``to_dict()`` or user input): - Strips ``simulation_type`` metadata (added by ``to_dict()``, not a ctor param) - Normalises ``grid_shape`` list → tuple - Separates known fields from extras (unknown keys are collected into ``extra``) - Passes everything through to the ``SimulationConfig`` constructor for full validation. Args: d: Configuration dict. Returns: A validated :class:`SimulationConfig`. """ d = dict(d) # shallow copy # Normalise grid_shape to tuple if "grid_shape" in d and not isinstance(d["grid_shape"], tuple): d["grid_shape"] = tuple(d["grid_shape"]) return SimulationConfig(**d)