1010from pydantic import Extra
1111from pydantic import Field
1212from pydantic import StrictStr
13+ from pydantic import StrictInt
14+ from pydantic import StrictBool
1315from pydantic import StrRegexError
1416from pydantic import ValidationError
1517from pydantic import validator
@@ -90,8 +92,8 @@ class BaseImageRoleEnum(str, Enum):
9092
9193
9294class Attribute (BaseModel ):
93- id : Optional [int ]
94- group_id : Optional [int ] = Field (None , alias = "groupId" )
95+ id : Optional [StrictInt ]
96+ group_id : Optional [StrictInt ] = Field (None , alias = "groupId" )
9597 name : NotEmptyStr
9698 group_name : NotEmptyStr = Field (alias = "groupName" )
9799
@@ -102,6 +104,7 @@ class Tag(BaseModel):
102104
103105class AttributeGroup (BaseModel ):
104106 name : NotEmptyStr
107+ # TODO :
105108 is_multiselect : Optional [int ] = False
106109 attributes : List [Attribute ]
107110
@@ -146,21 +149,21 @@ def clean_creation_type(cls, _):
146149
147150class LastUserAction (BaseModel ):
148151 email : EmailStr
149- timestamp : int
152+ timestamp : StrictInt
150153
151154
152155class BaseInstance (TrackableModel , TimedBaseModel ):
153- class_id : Optional [int ] = Field (None , alias = "classId" )
156+ class_id : Optional [StrictInt ] = Field (None , alias = "classId" )
154157 class_name : Optional [NotEmptyStr ] = Field (None , alias = "className" )
155158
156159
157160class MetadataBase (BaseModel ):
158- url : Optional [str ]
161+ url : Optional [StrictStr ]
159162 name : NotEmptyStr
160163 last_action : Optional [LastUserAction ] = Field (None , alias = "lastAction" )
161- width : Optional [int ]
162- height : Optional [int ]
163- project_id : Optional [int ] = Field (None , alias = "projectId" )
164+ width : Optional [StrictInt ]
165+ height : Optional [StrictInt ]
166+ project_id : Optional [StrictInt ] = Field (None , alias = "projectId" )
164167 annotator_email : Optional [EmailStr ] = Field (None , alias = "annotatorEmail" )
165168 qa_email : Optional [EmailStr ] = Field (None , alias = "qaEmail" )
166169 status : Optional [AnnotationStatusEnum ]
@@ -174,16 +177,16 @@ class Correspondence(BaseModel):
174177class Comment (TimedBaseModel , TrackableModel ):
175178 x : float
176179 y : float
177- resolved : Optional [bool ] = Field (False )
180+ resolved : Optional [StrictBool ] = Field (False )
178181 correspondence : conlist (Correspondence , min_items = 1 )
179182
180183
181184class BaseImageInstance (BaseInstance ):
182- visible : Optional [bool ]
183- locked : Optional [bool ]
184- probability : Optional [int ] = Field (100 )
185+ visible : Optional [StrictBool ]
186+ locked : Optional [StrictBool ]
187+ probability : Optional [StrictInt ] = Field (100 )
185188 attributes : Optional [List [Attribute ]] = Field (list ())
186- error : Optional [bool ]
189+ error : Optional [StrictBool ]
187190
188191 class Config :
189192 error_msg_templates = {
@@ -196,7 +199,7 @@ class StringA(BaseModel):
196199
197200
198201class PointLabels (BaseModel ):
199- __root__ : Dict [constr (regex = r"^[0-9]*$" ), str ]
202+ __root__ : Dict [constr (regex = r"^[0-9]*$" ), StrictStr ]
200203
201204 @classmethod
202205 def __get_validators__ (cls ):
@@ -244,10 +247,10 @@ def validate_type(cls, values):
244247class BaseVectorInstance (BaseImageInstance ):
245248 type : VectorAnnotationTypeEnum
246249 point_labels : Optional [PointLabels ] = Field (None , alias = "pointLabels" )
247- tracking_id : Optional [str ] = Field (None , alias = "trackingId" )
248- group_id : Optional [int ] = Field (None , alias = "groupId" )
250+ tracking_id : Optional [StrictStr ] = Field (None , alias = "trackingId" )
251+ group_id : Optional [StrictInt ] = Field (None , alias = "groupId" )
249252
250253
251254class Metadata (MetadataBase ):
252- pinned : Optional [bool ]
253- is_predicted : Optional [bool ] = Field (None , alias = "isPredicted" )
255+ pinned : Optional [StrictBool ]
256+ is_predicted : Optional [StrictBool ] = Field (None , alias = "isPredicted" )
0 commit comments