14
14
LABEL_KEY ,
15
15
TYPE_KEY ,
16
16
VERTICES_KEY ,
17
+ ITEM_ID_KEY ,
18
+ MASK_URL_KEY ,
19
+ INDEX_KEY ,
20
+ ANNOTATIONS_KEY ,
17
21
)
18
22
23
+
19
24
class Segment :
20
- def __init__ (self , label : str , index : int , metadata : Optional [dict ] = None ):
25
+ def __init__ (
26
+ self , label : str , index : int , metadata : Optional [dict ] = None
27
+ ):
21
28
self .label = label
22
29
self .index = index
23
30
self .metadata = metadata
24
31
25
32
def __str__ (self ):
26
- return self .to_payload ()
33
+ return str ( self .to_payload () )
27
34
28
35
@classmethod
29
36
def from_json (cls , payload : dict ):
30
- return cls (payload .get (LABEL_KEY ), payload .get (INDEX_KEY ), payload .get (METADATA_KEY , None ))
37
+ return cls (
38
+ label = payload .get (LABEL_KEY ),
39
+ index = payload .get (INDEX_KEY ),
40
+ metadata = payload .get (METADATA_KEY , None ),
41
+ )
31
42
32
43
def to_payload (self ) -> dict :
33
44
payload = {
@@ -38,8 +49,15 @@ def to_payload(self) -> dict:
38
49
payload [METADATA_KEY ] = self .metadata
39
50
return payload
40
51
52
+
41
53
class SegmentationAnnotation :
42
- def __init__ (self , mask_url : str , annotations : List [Segment ], reference_id : Optional [str ] = None , item_id : Optional [str ] = None ):
54
+ def __init__ (
55
+ self ,
56
+ mask_url : str ,
57
+ annotations : List [Segment ],
58
+ reference_id : Optional [str ] = None ,
59
+ item_id : Optional [str ] = None ,
60
+ ):
43
61
if bool (reference_id ) == bool (item_id ):
44
62
raise Exception (
45
63
"You must specify either a reference_id or an item_id for an annotation."
@@ -49,17 +67,28 @@ def __init__(self, mask_url: str, annotations: List[Segment], reference_id: Opti
49
67
self .reference_id = reference_id
50
68
self .item_id = item_id
51
69
52
-
53
70
def __str__ (self ):
71
+ return str (self .to_payload ())
54
72
55
73
@classmethod
56
74
def from_json (cls , payload : dict ):
75
+ return cls (
76
+ mask_url = payload [MASK_URL_KEY ],
77
+ annotations = payload [ANNOTATIONS_KEY ],
78
+ reference_id = payload .get (REFERENCE_ID_KEY , None ),
79
+ item_id = payload .get (ITEM_ID_KEY , None ),
80
+ )
57
81
58
82
def to_payload (self ) -> dict :
59
83
payload = {
60
84
MASK_URL_KEY : self .mask_url ,
61
85
ANNOTATIONS_KEY : [ann .to_payload for ann in self .annotations ],
62
86
}
87
+ if self .reference_id :
88
+ payload [REFERENCE_ID_KEY ] = self .reference_id
89
+ else :
90
+ payload [ITEM_ID_KEY ] = self .item_id
91
+ return payload
63
92
64
93
65
94
class AnnotationTypes (Enum ):
0 commit comments