Skip to content

Commit 1e1c3b4

Browse files
authored
Merge pull request #12 from superannotateai/friday_689
Created annotation classes schemas
2 parents 9768d37 + 71573fc commit 1e1c3b4

File tree

6 files changed

+59
-9
lines changed

6 files changed

+59
-9
lines changed

src/superannotate_schemas/schemas/base.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ class AxisPoint(BaseModel):
6565
class BaseAttribute(BaseModel):
6666
id: Optional[StrictInt]
6767
group_id: Optional[StrictInt] = Field(alias="groupId")
68-
name: NotEmptyStr
69-
group_name: NotEmptyStr = Field(alias="groupName")
68+
name: Optional[NotEmptyStr]
69+
group_name: Optional[NotEmptyStr] = Field(alias="groupName")
7070

7171

7272
class Tag(BaseModel):
@@ -222,7 +222,7 @@ class BaseVectorInstance(BaseImageAnnotationInstance):
222222
group_id: Optional[int] = Field(alias="groupId")
223223

224224

225-
class PixelColor(BaseModel):
225+
class HexColor(BaseModel):
226226
__root__: ColorType
227227

228228
@validator("__root__")
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from typing import Optional
2+
from typing import List
3+
4+
from superannotate_schemas.schemas.base import BaseModel
5+
from superannotate_schemas.schemas.base import TrackableModel
6+
from superannotate_schemas.schemas.base import TimedBaseModel
7+
from superannotate_schemas.schemas.base import StrictInt
8+
from superannotate_schemas.schemas.base import StrictStr
9+
from superannotate_schemas.schemas.base import HexColor
10+
from superannotate_schemas.schemas.enums import ClassTypeEnum
11+
12+
13+
class Attribute(TimedBaseModel):
14+
id: Optional[StrictInt]
15+
group_id: Optional[StrictInt]
16+
project_id: Optional[StrictInt]
17+
name: StrictStr
18+
count: Optional[StrictInt]
19+
20+
def __hash__(self):
21+
return hash(f"{self.id}{self.group_id}{self.name}")
22+
23+
24+
class AttributeGroup(TimedBaseModel):
25+
id: Optional[StrictInt]
26+
class_id: Optional[StrictInt]
27+
name: StrictStr
28+
is_multiselect: Optional[bool]
29+
attributes: List[Attribute]
30+
31+
def __hash__(self):
32+
return hash(f"{self.id}{self.class_id}{self.name}")
33+
34+
35+
class AnnotationClass(TimedBaseModel):
36+
id: Optional[StrictInt]
37+
project_id: Optional[StrictInt]
38+
type: ClassTypeEnum = ClassTypeEnum.OBJECT
39+
name: StrictStr
40+
color: HexColor
41+
count: Optional[StrictInt]
42+
attribute_groups: List[AttributeGroup]
43+
44+
def __hash__(self):
45+
return hash(f"{self.id}{self.type}{self.name}")
46+
47+
48+
class AnnotationClasses(BaseModel):
49+
__root__: List[AnnotationClass]

src/superannotate_schemas/schemas/enums.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,6 @@ class BaseImageRoleEnum(str, Enum):
4141
QA = "QA"
4242

4343

44-
class TagTypeEnum(str, Enum):
45-
TAG = "tag"
44+
class ClassTypeEnum(str, Enum):
4645
OBJECT = "object"
46+
TAG = "tag"

src/superannotate_schemas/schemas/external/pixel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from superannotate_schemas.schemas.base import BaseImageMetadata
77
from superannotate_schemas.schemas.base import NotEmptyStr
88
from superannotate_schemas.schemas.base import StrictStr
9-
from superannotate_schemas.schemas.base import PixelColor
9+
from superannotate_schemas.schemas.base import HexColor
1010
from superannotate_schemas.schemas.base import Tag
1111
from superannotate_schemas.schemas.base import Comment
1212

@@ -25,7 +25,7 @@ class MetaData(BaseImageMetadata):
2525

2626

2727
class AnnotationPart(BaseModel):
28-
color: PixelColor
28+
color: HexColor
2929

3030

3131
class AnnotationInstance(BaseImageAnnotationInstance):

src/superannotate_schemas/schemas/internal/pixel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import Optional
33

44
from superannotate_schemas.schemas.base import BaseImageMetadata as Metadata
5-
from superannotate_schemas.schemas.base import PixelColor
5+
from superannotate_schemas.schemas.base import HexColor
66
from superannotate_schemas.schemas.base import BaseAttribute
77
from superannotate_schemas.schemas.base import BaseImageAnnotationInstance
88
from superannotate_schemas.schemas.base import Tag
@@ -19,7 +19,7 @@ class Attribute(BaseAttribute):
1919

2020

2121
class AnnotationPart(BaseModel):
22-
color: PixelColor
22+
color: HexColor
2323

2424

2525
class AnnotationInstance(BaseImageAnnotationInstance):

src/superannotate_schemas/validators.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class AnnotationValidators:
9595
ValidatorFactory.get_validator(ExternalDocumentAnnotation),
9696
ValidatorFactory.get_validator(InternalDocumentAnnotation)
9797
)
98+
9899
}
99100

100101
@classmethod

0 commit comments

Comments
 (0)