@@ -36,6 +36,8 @@ def is_loadable(geode_object: str, file_absolute_path: str) -> float:
3636 percentage = geode_object_value (geode_object )["is_loadable" ](file_absolute_path )
3737 return percentage .value ()
3838
39+ def object_priority (geode_object : str , file_absolute_path : str ) -> int :
40+ return geode_object_value (geode_object )["object_priority" ](file_absolute_path )
3941
4042def load (geode_object : str , file_absolute_path : str ):
4143 return geode_object_value (geode_object )["load" ](file_absolute_path )
@@ -181,11 +183,25 @@ def list_geode_objects(
181183 os .path .basename (file_absolute_path )
182184 )
183185 geode_objects_filtered_list = filter_geode_objects (key )
184-
185186 for geode_object in geode_objects_filtered_list :
186187 if has_creator (geode_object , file_extension ):
187188 loadability_score = is_loadable (geode_object , file_absolute_path )
188189 return_dict [geode_object ] = {"is_loadable" : loadability_score }
190+ if return_dict :
191+ max_loadability_score = max (obj_info ["is_loadable" ] for obj_info in return_dict .values ())
192+ best_objects = {
193+ object_name : object_info
194+ for object_name , object_info in return_dict .items ()
195+ if object_info ["is_loadable" ] == max_loadability_score
196+ }
197+ if len (best_objects ) > 1 :
198+ best_object_name = max (
199+ best_objects ,
200+ key = lambda name : object_priority (name , file_absolute_path ),
201+ )
202+ return {best_object_name : return_dict [best_object_name ]}
203+ else :
204+ return best_objects
189205 return return_dict
190206
191207
0 commit comments