Source code for skrough.structs.state
from typing import Any, Callable, Mapping, MutableMapping, Optional
import numpy as np
from attrs import define, field
StateConfig = Mapping[str, Any]
StateInputData = Mapping[str, Any]
StateValues = MutableMapping[str, Any]
ProcessingFunction = Callable[["ProcessingState"], Any]
[docs]@define
class ProcessingState:
rng: np.random.Generator
processing_fun: Optional[ProcessingFunction]
config: StateConfig = field(factory=dict)
input_data: StateInputData = field(factory=dict)
values: StateValues = field(factory=dict)
[docs] @classmethod
def from_optional(
cls,
rng: np.random.Generator,
processing_fun: Optional[ProcessingFunction],
config: Optional[StateConfig] = None,
input_data: Optional[StateInputData] = None,
values: Optional[StateValues] = None,
):
# not wanting to hardcode ``config``, ``input_data``, ``values`` member names
# to put them in ``optional_kwargs``, therefore a bit ugly ``cls.***.__name__``
# constructions are used - this can make it easier, e.g., to refactor/change
# member names
optional_kwargs = {}
if config is not None:
# pylint: disable-next=no-member
optional_kwargs[cls.config.__name__] = config # type: ignore[attr-defined]
if input_data is not None:
optional_kwargs[
# pylint: disable-next=no-member
cls.input_data.__name__ # type: ignore[attr-defined]
] = input_data
if values is not None:
# pylint: disable-next=no-member
optional_kwargs[cls.values.__name__] = values # type: ignore[attr-defined]
return cls(
rng=rng,
processing_fun=processing_fun,
**optional_kwargs, # type: ignore
)