Skip to content

Commit 34da8c6

Browse files
authored
Merge pull request #20 from superannotateai/develop
Develop
2 parents 7d251c2 + a922100 commit 34da8c6

File tree

2 files changed

+68
-14
lines changed

2 files changed

+68
-14
lines changed

src/superannotate_schemas/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from superannotate_schemas.validators import AnnotationValidators
88

9-
__version__ = '1.0.42'
9+
__version__ = '1.0.44'
1010

1111
__all__ = [
1212
"__version__",

src/superannotate_schemas/schemas/external/video.py

Lines changed: 67 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,27 @@
44
from typing import Optional
55
from 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+
815
from superannotate_schemas.schemas.base import BaseAttribute
916
from superannotate_schemas.schemas.base import BaseInstance
10-
from superannotate_schemas.schemas.base import BboxPoints
1117
from 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
1221
from superannotate_schemas.schemas.base import NotEmptyStr
1322
from superannotate_schemas.schemas.base import PointLabels
23+
from superannotate_schemas.schemas.base import StrictNumber
24+
from superannotate_schemas.schemas.base import StrictPointNumber
1425
from 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

2629
class Attribute(BaseAttribute):
2730
name: NotEmptyStr
@@ -31,6 +34,9 @@ class Attribute(BaseAttribute):
3134
class VideoType(str, Enum):
3235
EVENT = "event"
3336
BBOX = "bbox"
37+
POINT = "point"
38+
POLYGON = "polygon"
39+
POLYLINE = "polyline"
3440

3541

3642
class 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+
5364
class 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+
7197
class 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+
92130
class 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+
101154
class EventInstance(BaseModel):
102155
meta: EventInstanceMetadata
103156
parameters: conlist(EventParameter, min_items=1)
104157

105158

106159
ANNOTATION_TYPES = {
107160
VideoType.BBOX: BboxInstance,
108-
VideoType.EVENT: EventInstance
161+
VideoType.EVENT: EventInstance,
162+
VideoType.POINT: PointInstance
109163
}
110164

111165

112166
class AnnotationInstance(BaseModel):
113167
__root__: Union[
114-
BboxInstance, EventInstance
168+
BboxInstance, EventInstance, PointInstance
115169
]
116170

117171
@classmethod

0 commit comments

Comments
 (0)