File tree Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Original file line number Diff line number Diff line change 11from __future__ import annotations
22
33from dataclasses import dataclass
4+ from typing import TYPE_CHECKING , Any
45
6+ if TYPE_CHECKING :
7+ import sys
58
9+ if sys .version_info >= (3 , 11 ):
10+ from typing import Self
11+ else :
12+ from typing_extensions import Self
13+
14+
15+ @dataclass (frozen = True )
616class BaseViewState :
717 """Base class for view states."""
818
19+ @classmethod
20+ def _from_frontend (cls , ** kwargs : dict [str , Any ]) -> Self :
21+ allowed_field_names = {
22+ field .name for field in cls .__dataclass_fields__ .values ()
23+ }
24+ filtered_kwargs = {k : v for k , v in kwargs .items () if k in allowed_field_names }
25+ return cls (** filtered_kwargs )
26+
927
1028@dataclass (frozen = True )
1129class MapViewState (BaseViewState ):
You can’t perform that action at this time.
0 commit comments