@@ -31,6 +31,14 @@ def __post_init__(self):
3131 def __repr__ (self ) -> str :
3232 return f"Frame(items={ self .items } )"
3333
34+ def __eq__ (self , other ):
35+ for key , value in self .items .items ():
36+ if key not in other .items :
37+ return False
38+ if value != other .items [key ]:
39+ return False
40+ return True
41+
3442 def add_item (self , item : DatasetItem , sensor_name : str ):
3543 self .items [sensor_name ] = item
3644
@@ -50,7 +58,7 @@ def get_sensors(self):
5058 @classmethod
5159 def from_json (cls , payload : dict ):
5260 items = {
53- sensor : DatasetItem .from_json (item , is_scene = True )
61+ sensor : DatasetItem .from_json (item )
5462 for sensor , item in payload .items ()
5563 }
5664 return cls (** items )
@@ -66,13 +74,24 @@ def to_payload(self) -> dict:
6674class Scene (ABC ):
6775 reference_id : str
6876 frames : List [Frame ] = field (default_factory = list )
69- metadata : Optional [dict ] = None
77+ metadata : Optional [dict ] = field ( default_factory = dict )
7078
7179 def __post_init__ (self ):
7280 self .sensors = set (
7381 flatten ([frame .get_sensors () for frame in self .frames ])
7482 )
7583 self .frames_dict = dict (enumerate (self .frames ))
84+ if self .metadata is None :
85+ self .metadata = {}
86+
87+ def __eq__ (self , other ):
88+ return all (
89+ [
90+ self .reference_id == other .reference_id ,
91+ self .frames == other .frames ,
92+ self .metadata == other .metadata ,
93+ ]
94+ )
7695
7796 @property
7897 def length (self ) -> int :
@@ -168,7 +187,7 @@ def from_json(cls, payload: dict):
168187 return cls (
169188 reference_id = payload [REFERENCE_ID_KEY ],
170189 frames = frames ,
171- metadata = payload .get (METADATA_KEY , None ),
190+ metadata = payload .get (METADATA_KEY , {} ),
172191 )
173192
174193 def to_payload (self ) -> dict :
0 commit comments