@@ -13,6 +13,23 @@ class PageType(SerializableEnum):
1313 back = 'back'
1414
1515
16+ @dataclass
17+ class BaseModel :
18+ def __init__ (self , ** _ ) -> None : # pragma: no cover
19+ ...
20+
21+ @classmethod
22+ def _filter_excess_fields (cls , obj_dict : Dict ) -> None :
23+ excess = set (obj_dict .keys ()) - {f .name for f in fields (cls )}
24+ for f in excess :
25+ del obj_dict [f ]
26+
27+ @classmethod
28+ def _from_dict (cls , obj_dict : Dict [str , Any ]) -> 'BaseModel' :
29+ cls ._filter_excess_fields (obj_dict )
30+ return cls (** obj_dict )
31+
32+
1633class ValidationInputType (SerializableEnum ):
1734 document_photo = 'document-photo'
1835 selfie_photo = 'selfie-photo'
@@ -28,25 +45,12 @@ class ValidationType(SerializableEnum):
2845
2946
3047@dataclass
31- class VerificationDocumentStep :
48+ class VerificationDocumentStep ( BaseModel ) :
3249 id : str
3350 status : int
3451 error : Optional [Dict ] = None
3552 data : Optional [Dict ] = field (default_factory = dict )
3653
37- @classmethod
38- def _filter_excess_fields (cls , obj_dict : Dict ) -> None :
39- excess = set (obj_dict .keys ()) - {f .name for f in fields (cls )}
40- for f in excess :
41- del obj_dict [f ]
42-
43- @classmethod
44- def _from_dict (
45- cls , obj_dict : Dict [str , Any ]
46- ) -> 'VerificationDocumentStep' :
47- cls ._filter_excess_fields (obj_dict )
48- return cls (** obj_dict )
49-
5054
5155@dataclass
5256class Errors :
@@ -57,7 +61,7 @@ class Errors:
5761
5862
5963@dataclass
60- class VerificationDocument :
64+ class VerificationDocument ( BaseModel ) :
6165 country : str
6266 region : str
6367 photos : List [str ]
@@ -189,7 +193,7 @@ class LivenessMedia:
189193
190194
191195@dataclass
192- class Liveness :
196+ class Liveness ( BaseModel ) :
193197 status : int
194198 id : str
195199 data : Optional [LivenessMedia ] = None
0 commit comments