@@ -515,25 +515,25 @@ class CategoryAnnotation(Annotation):
515515
516516 category = CategoryAnnotation(
517517 label="dress",
518- taxonomy_name="clothing_type",
519518 reference_id="image_1",
519+ taxonomy_name="clothing_type",
520520 metadata={"dress_color": "navy"}
521521 )
522522
523523 Parameters:
524524 label (str): The label for this annotation.
525- taxonomy_name (str): The name of the taxonomy this annotation conforms to.
526- See :meth:`Dataset.add_taxonomy`.
527525 reference_id (str): User-defined ID of the image to which to apply this annotation.
526+ taxonomy_name (Optional[str]): The name of the taxonomy this annotation conforms to.
527+ See :meth:`Dataset.add_taxonomy`.
528528 metadata (Optional[Dict]): Arbitrary key/value dictionary of info to attach to this annotation.
529529 Strings, floats and ints are supported best by querying and insights
530530 features within Nucleus. For more details see our `metadata guide
531531 <https://nucleus.scale.com/docs/upload-metadata>`_.
532532 """
533533
534534 label : str
535- taxonomy_name : str
536535 reference_id : str
536+ taxonomy_name : Optional [str ] = None
537537 metadata : Optional [Dict ] = None
538538
539539 def __post_init__ (self ):
@@ -543,29 +543,31 @@ def __post_init__(self):
543543 def from_json (cls , payload : dict ):
544544 return cls (
545545 label = payload [LABEL_KEY ],
546- taxonomy_name = payload [TAXONOMY_NAME_KEY ],
547546 reference_id = payload [REFERENCE_ID_KEY ],
547+ taxonomy_name = payload .get (TAXONOMY_NAME_KEY , None ),
548548 metadata = payload .get (METADATA_KEY , {}),
549549 )
550550
551551 def to_payload (self ) -> dict :
552- return {
552+ payload = {
553553 LABEL_KEY : self .label ,
554- TAXONOMY_NAME_KEY : self .taxonomy_name ,
555554 TYPE_KEY : CATEGORY_TYPE ,
556555 GEOMETRY_KEY : {},
557556 REFERENCE_ID_KEY : self .reference_id ,
558557 METADATA_KEY : self .metadata ,
559558 }
559+ if self .taxonomy_name is not None :
560+ payload [TAXONOMY_NAME_KEY ] = self .taxonomy_name
561+ return payload
560562
561563
562564@dataclass
563565class MultiCategoryAnnotation (Annotation ):
564566 """This class is not yet supported: MultiCategory annotation support coming soon!"""
565567
566568 labels : List [str ]
567- taxonomy_name : str
568569 reference_id : str
570+ taxonomy_name : Optional [str ] = None
569571 metadata : Optional [Dict ] = None
570572
571573 def __post_init__ (self ):
@@ -575,20 +577,22 @@ def __post_init__(self):
575577 def from_json (cls , payload : dict ):
576578 return cls (
577579 labels = payload [LABELS_KEY ],
578- taxonomy_name = payload [TAXONOMY_NAME_KEY ],
579580 reference_id = payload [REFERENCE_ID_KEY ],
581+ taxonomy_name = payload .get (TAXONOMY_NAME_KEY , None ),
580582 metadata = payload .get (METADATA_KEY , {}),
581583 )
582584
583585 def to_payload (self ) -> dict :
584- return {
586+ payload = {
585587 LABELS_KEY : self .labels ,
586- TAXONOMY_NAME_KEY : self .taxonomy_name ,
587588 TYPE_KEY : MULTICATEGORY_TYPE ,
588589 GEOMETRY_KEY : {},
589590 REFERENCE_ID_KEY : self .reference_id ,
590591 METADATA_KEY : self .metadata ,
591592 }
593+ if self .taxonomy_name is not None :
594+ payload [TAXONOMY_NAME_KEY ] = self .taxonomy_name
595+ return payload
592596
593597
594598def is_local_path (path : str ) -> bool :
0 commit comments