Skip to content

Commit 6be2993

Browse files
authored
Merge pull request #16 from superannotateai/develop
Develop
2 parents ecbfeee + fd34a09 commit 6be2993

File tree

10 files changed

+182
-38
lines changed

10 files changed

+182
-38
lines changed

requirements.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
dnspython==2.1.0
2-
email-validator==1.1.3
32
fire==0.4.0
43
idna==3.3
54
pydantic==1.8.2
65
six==1.16.0
76
termcolor==1.1.0
87
typing-extensions==3.10.0.2
9-
?typingx==0.5.3
8+
typingx==0.5.3
9+
pydantic[email]
10+
email-validator>=1.0.3

src/superannotate_schemas/schemas/base.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from pydantic import BaseModel as PyDanticBaseModel
77
from pydantic import conlist
88
from pydantic import constr
9-
from pydantic import EmailStr
109
from pydantic import Extra
1110
from pydantic import StrictInt
1211
from pydantic import StrictFloat
@@ -46,6 +45,18 @@ def enum_error_handling(self) -> str:
4645
StrictNumber = Union[StrictInt, StrictFloat]
4746

4847

48+
class EmailStr(StrictStr):
49+
@classmethod
50+
def validate(cls, value: Union[str]) -> Union[str]:
51+
try:
52+
constr(
53+
regex=r"^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
54+
).validate(value)
55+
except StrRegexError:
56+
raise ValueError("Invalid email")
57+
return value
58+
59+
4960
class BaseModel(PyDanticBaseModel):
5061
class Config:
5162
extra = Extra.allow
@@ -121,10 +132,16 @@ class BaseInstance(TrackableModel, TimedBaseModel):
121132
class_name: Optional[NotEmptyStr] = Field(None, alias="className")
122133

123134

135+
class BaseInstanceTagAttribute(BaseAttribute):
136+
name: NotEmptyStr
137+
group_name: NotEmptyStr = Field(alias="groupName")
138+
139+
124140
class BaseInstanceTag(BaseInstance):
125141
type: ClassTypeEnum
126142
probability: Optional[StrictInt] = Field(100)
127-
attributes: Optional[List[BaseAttribute]] = Field(list())
143+
attributes: Optional[List[BaseInstanceTagAttribute]] = Field(list())
144+
class_name: NotEmptyStr = Field(alias="className")
128145

129146

130147
class BaseMetadata(BaseModel):

src/superannotate_schemas/schemas/classes.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class AttributeGroup(TimedBaseModel):
2424
id: Optional[StrictInt]
2525
class_id: Optional[StrictInt]
2626
name: StrictStr
27-
is_multiselect: Optional[bool]
27+
is_multiselect: Optional[bool] = False
2828
attributes: List[Attribute]
2929

3030
def __hash__(self):
@@ -43,6 +43,10 @@ class AnnotationClass(TimedBaseModel):
4343
def __hash__(self):
4444
return hash(f"{self.id}{self.type}{self.name}")
4545

46+
class Config:
47+
validate_assignment = True
48+
use_enum_values = True
49+
4650

4751
class AnnotationClasses(BaseModel):
4852
__root__: List[AnnotationClass]

src/superannotate_schemas/schemas/external/document.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55
from superannotate_schemas.schemas.base import BaseInstance
66
from superannotate_schemas.schemas.base import BaseMetadata as Metadata
77
from superannotate_schemas.schemas.base import Tag
8+
from superannotate_schemas.schemas.base import NotEmptyStr
89

910
from superannotate_schemas.schemas.base import BaseModel
1011
from pydantic import Field
1112
from pydantic import StrictStr
12-
from pydantic import StrictInt
1313

1414

1515
class Attribute(BaseAttribute):
16-
id: StrictInt
17-
group_id: StrictInt = Field(None, alias="groupId")
16+
name: NotEmptyStr
17+
group_name: NotEmptyStr = Field(alias="groupName")
1818

1919

2020
class DocumentInstance(BaseInstance):

src/superannotate_schemas/schemas/external/vector.py

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

5-
from superannotate_schemas.schemas.base import BaseModel
65
from pydantic import Field
76
from pydantic import StrictFloat
87
from pydantic import StrictInt
@@ -14,19 +13,20 @@
1413
from superannotate_schemas.schemas.base import AxisPoint
1514
from superannotate_schemas.schemas.base import BaseAttribute
1615
from superannotate_schemas.schemas.base import BaseImageMetadata
16+
from superannotate_schemas.schemas.base import BaseInstanceTag
17+
from superannotate_schemas.schemas.base import BaseModel
1718
from superannotate_schemas.schemas.base import BaseVectorInstance
1819
from superannotate_schemas.schemas.base import BboxPoints
1920
from superannotate_schemas.schemas.base import Comment
2021
from superannotate_schemas.schemas.base import INVALID_DICT_MESSAGE
2122
from superannotate_schemas.schemas.base import NotEmptyStr
2223
from superannotate_schemas.schemas.base import StrictNumber
2324
from superannotate_schemas.schemas.base import Tag
24-
from superannotate_schemas.schemas.base import BaseInstanceTag
2525
from superannotate_schemas.schemas.enums import VectorAnnotationTypeEnum
2626

2727

2828
class InstanceTag(BaseInstanceTag):
29-
class_name: NotEmptyStr
29+
pass
3030

3131

3232
class Attribute(BaseAttribute):
@@ -164,3 +164,4 @@ class VectorAnnotation(BaseModel):
164164
comments: Optional[List[Comment]] = Field(list())
165165
tags: Optional[List[Tag]] = Field(list())
166166
instances: Optional[List[AnnotationInstance]] = Field(list())
167+

src/superannotate_schemas/schemas/internal/document.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from superannotate_schemas.schemas.base import BaseInstance
66
from superannotate_schemas.schemas.base import BaseMetadata as Metadata
77
from superannotate_schemas.schemas.base import Tag
8-
from superannotate_schemas.schemas.base import NotEmptyStr
8+
from superannotate_schemas.schemas.base import StrictInt
99

1010
from superannotate_schemas.schemas.base import BaseModel
1111

@@ -14,8 +14,8 @@
1414

1515

1616
class Attribute(BaseAttribute):
17-
name: NotEmptyStr
18-
group_name: NotEmptyStr = Field(alias="groupName")
17+
id: StrictInt
18+
group_id: StrictInt = Field(None, alias="groupId")
1919

2020

2121
class DocumentInstance(BaseInstance):

src/superannotate_schemas/schemas/internal/vector.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from superannotate_schemas.schemas.base import StrictNumber
1515
from superannotate_schemas.schemas.base import INVALID_DICT_MESSAGE
1616
from superannotate_schemas.schemas.base import BaseModel
17+
from superannotate_schemas.schemas.base import NotEmptyStr
1718

1819
from pydantic import StrictInt
1920
from pydantic import StrictFloat
@@ -25,9 +26,9 @@
2526
from pydantic.error_wrappers import ErrorWrapper
2627

2728

28-
2929
class InstanceTag(BaseInstanceTag):
3030
class_id: StrictInt
31+
class_name: NotEmptyStr = Field(None, alias="className")
3132

3233

3334
class Attribute(BaseAttribute):

src/superannotate_schemas/validators.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from superannotate_schemas.schemas.internal import VectorAnnotation as InternalVectorAnnotation
1616
from superannotate_schemas.schemas.internal import VideoAnnotation as InternalVideoAnnotation
1717
from superannotate_schemas.schemas.internal import DocumentAnnotation as InternalDocumentAnnotation
18-
from superannotate_schemas.schemas.classes import AnnotationClass
1918

2019

2120
from superannotate_schemas.schemas.base import BaseModel

tests/test_cli.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import os
33
from os.path import dirname
44
from tests import LIB_PATH
5-
from pydantic import EmailStr
65

76
from unittest import TestCase
87

0 commit comments

Comments
 (0)