@@ -38,32 +38,28 @@ def __contains__(self, item):
3838 The dataset dictionary or the name or the id of the dataset
3939 """
4040 if isinstance (item , dict ):
41- id_name = item ["id" ]
41+ name_or_id = item ["id" ]
4242 else :
43- id_name = item
44- if len (id_name ) == 36 : # minor optimization
45- # we probably have a UUID
46- return id_name in self .registry_id or id_name in self .registry
47- else :
48- return id_name in self .registry
43+ name_or_id = item
44+ return name_or_id in self .registry_id or name_or_id in self .registry
4945
50- def __getitem__ (self , idx_or_name ):
51- if isinstance (idx_or_name , numbers .Integral ):
52- return self .datasets [idx_or_name ]
46+ def __getitem__ (self , idx_or_name_or_id ):
47+ if isinstance (idx_or_name_or_id , numbers .Integral ):
48+ return self .datasets [idx_or_name_or_id ]
5349 else :
54- return self .get_dataset_dict (idx_or_name )
50+ return self .get_dataset_dict (idx_or_name_or_id )
5551
5652 def __len__ (self ):
5753 return len (self .datasets )
5854
5955 def __iter__ (self ):
6056 return iter (self .datasets )
6157
62- def add_datasets (self , datasets ):
58+ def add_datasets (self , datasets : list [ dict ] ):
6359 for dd in datasets :
64- name = dd [ "name" ]
65- if name not in self .registry : # datasets must only be added once
66- self .registry [name ] = dd
60+ if dd not in self : # dataset must only be added once
61+ self .registry_id [ dd [ "id" ]] = dd
62+ self .registry [dd [ " name" ] ] = dd
6763 self .datasets .append (dd )
6864
6965 @property
@@ -97,5 +93,10 @@ def collections(self):
9793 coll_list , key = lambda x : x .get ("title" ) or x ["name" ])
9894 return self ._collections
9995
100- def get_dataset_dict (self , dataset_name ):
101- return self .registry [dataset_name ]
96+ def get_dataset_dict (self , name_or_id ):
97+ if name_or_id in self .registry :
98+ return self .registry [name_or_id ]
99+ elif name_or_id in self .registry_id :
100+ return self .registry_id [name_or_id ]
101+ else :
102+ raise KeyError (f"Could not find name or id '{ name_or_id } " )
0 commit comments