44from typing import Optional
55from typing import Union
66
7- from superannotate_schemas .schemas .enums import AnnotationStatusEnum
7+ from pydantic import Field
8+ from pydantic import StrictBool
9+ from pydantic import StrictInt
10+ from pydantic import StrictStr
11+ from pydantic import ValidationError
12+ from pydantic import conlist
13+ from pydantic .error_wrappers import ErrorWrapper
14+
815from superannotate_schemas .schemas .base import BaseAttribute
916from superannotate_schemas .schemas .base import BaseInstance
10- from superannotate_schemas .schemas .base import BboxPoints
1117from superannotate_schemas .schemas .base import BaseMetadata
18+ from superannotate_schemas .schemas .base import BaseModel
19+ from superannotate_schemas .schemas .base import BboxPoints
20+ from superannotate_schemas .schemas .base import INVALID_DICT_MESSAGE
1221from superannotate_schemas .schemas .base import NotEmptyStr
1322from superannotate_schemas .schemas .base import PointLabels
23+ from superannotate_schemas .schemas .base import StrictNumber
24+ from superannotate_schemas .schemas .base import StrictPointNumber
1425from superannotate_schemas .schemas .base import Tag
15- from superannotate_schemas .schemas .base import INVALID_DICT_MESSAGE
26+ from superannotate_schemas .schemas .enums import AnnotationStatusEnum
1627
17- from superannotate_schemas .schemas .base import BaseModel
18- from pydantic import StrictBool
19- from pydantic import conlist
20- from pydantic import ValidationError
21- from pydantic import Field
22- from pydantic import StrictInt
23- from pydantic import StrictStr
24- from pydantic .error_wrappers import ErrorWrapper
2528
2629class Attribute (BaseAttribute ):
2730 name : NotEmptyStr
@@ -31,6 +34,9 @@ class Attribute(BaseAttribute):
3134class VideoType (str , Enum ):
3235 EVENT = "event"
3336 BBOX = "bbox"
37+ POINT = "point"
38+ POLYGON = "polygon"
39+ POLYLINE = "polyline"
3440
3541
3642class MetaData (BaseMetadata ):
@@ -50,6 +56,11 @@ class BboxTimeStamp(BaseTimeStamp):
5056 points : BboxPoints
5157
5258
59+ class PointTimeStamp (BaseTimeStamp ):
60+ x : StrictNumber
61+ y : StrictNumber
62+
63+
5364class EventTimeStamp (BaseTimeStamp ):
5465 pass
5566
@@ -68,6 +79,21 @@ class BBoxInstanceMetadata(InstanceMetadata):
6879 point_labels : Optional [PointLabels ] = Field (alias = "pointLabels" )
6980
7081
82+ class PolygonInstanceMetadata (InstanceMetadata ):
83+ type : StrictStr = Field (VideoType .POLYGON , const = True )
84+ point_labels : Optional [PointLabels ] = Field (alias = "pointLabels" )
85+
86+
87+ class PolylineInstanceMetadata (InstanceMetadata ):
88+ type : StrictStr = Field (VideoType .POLYLINE , const = True )
89+ point_labels : Optional [PointLabels ] = Field (alias = "pointLabels" )
90+
91+
92+ class PointInstanceMetadata (InstanceMetadata ):
93+ type : StrictStr = Field (VideoType .POINT , const = True )
94+ point_labels : Optional [PointLabels ] = Field (alias = "pointLabels" )
95+
96+
7197class EventInstanceMetadata (InstanceMetadata ):
7298 type : StrictStr = Field (VideoType .EVENT , const = True )
7399
@@ -89,6 +115,18 @@ class BboxParameter(BaseParameter):
89115 timestamps : conlist (BboxTimeStamp , min_items = 2 )
90116
91117
118+ class PolygonParameter (BaseParameter ):
119+ timestamps : conlist (StrictPointNumber , min_items = 3 )
120+
121+
122+ class PolylineParameter (BaseParameter ):
123+ timestamps : conlist (StrictPointNumber )
124+
125+
126+ class PointParameter (BaseParameter ):
127+ timestamps : conlist (PointTimeStamp , min_items = 2 )
128+
129+
92130class EventParameter (BaseParameter ):
93131 timestamps : conlist (EventTimeStamp , min_items = 2 )
94132
@@ -98,20 +136,36 @@ class BboxInstance(BaseModel):
98136 parameters : conlist (BboxParameter , min_items = 1 )
99137
100138
139+ class PointInstance (BaseModel ):
140+ meta : PointInstanceMetadata
141+ parameters : conlist (PointParameter , min_items = 1 )
142+
143+
144+ class PolygonInstance (BaseModel ):
145+ meta : PolygonInstanceMetadata
146+ parameters : conlist (PolylineParameter , min_items = 1 )
147+
148+
149+ class PolylineInstance (BaseModel ):
150+ meta : PolylineInstanceMetadata
151+ parameters : conlist (PolylineParameter , min_items = 1 )
152+
153+
101154class EventInstance (BaseModel ):
102155 meta : EventInstanceMetadata
103156 parameters : conlist (EventParameter , min_items = 1 )
104157
105158
106159ANNOTATION_TYPES = {
107160 VideoType .BBOX : BboxInstance ,
108- VideoType .EVENT : EventInstance
161+ VideoType .EVENT : EventInstance ,
162+ VideoType .POINT : PointInstance
109163}
110164
111165
112166class AnnotationInstance (BaseModel ):
113167 __root__ : Union [
114- BboxInstance , EventInstance
168+ BboxInstance , EventInstance , PointInstance
115169 ]
116170
117171 @classmethod
0 commit comments