зеркало из
				https://github.com/ssciwr/AMMICO.git
				synced 2025-10-30 13:36:04 +02:00 
			
		
		
		
	
							родитель
							
								
									edffd91960
								
							
						
					
					
						Коммит
						911a43bfad
					
				| @ -84,6 +84,38 @@ def test_initialize_dict(get_path): | |||||||
|     assert mydict == out_dict |     assert mydict == out_dict | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def test_check_for_missing_keys(): | ||||||
|  |     mydict = { | ||||||
|  |         "file1": {"faces": "Yes", "text_english": "Something"}, | ||||||
|  |         "file2": {"faces": "No", "text_english": "Otherthing"}, | ||||||
|  |     } | ||||||
|  |     # check that dict is not changed | ||||||
|  |     mydict2 = ut.check_for_missing_keys(mydict) | ||||||
|  |     assert mydict2 == mydict | ||||||
|  |     # check that dict is updated if key is missing | ||||||
|  |     mydict = { | ||||||
|  |         "file1": {"faces": "Yes", "text_english": "Something"}, | ||||||
|  |         "file2": {"faces": "No"}, | ||||||
|  |     } | ||||||
|  |     mydict2 = ut.check_for_missing_keys(mydict) | ||||||
|  |     assert mydict2["file2"] == {"faces": "No", "text_english": None} | ||||||
|  |     # check that dict is updated if more than one key is missing | ||||||
|  |     mydict = {"file1": {"faces": "Yes", "text_english": "Something"}, "file2": {}} | ||||||
|  |     mydict2 = ut.check_for_missing_keys(mydict) | ||||||
|  |     assert mydict2["file2"] == {"faces": None, "text_english": None} | ||||||
|  |     # now test the exceptions | ||||||
|  |     with pytest.raises(ValueError): | ||||||
|  |         ut.check_for_missing_keys({"File": "path"}) | ||||||
|  |     with pytest.raises(ValueError): | ||||||
|  |         ut.check_for_missing_keys({"File": {}}) | ||||||
|  |     mydict = { | ||||||
|  |         "file1": {"faces": "Yes"}, | ||||||
|  |         "file2": {"faces": "No", "text_english": "Something"}, | ||||||
|  |     } | ||||||
|  |     with pytest.raises(ValueError): | ||||||
|  |         ut.check_for_missing_keys(mydict) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def test_append_data_to_dict(get_path): | def test_append_data_to_dict(get_path): | ||||||
|     with open(get_path + "example_append_data_to_dict_in.json", "r") as file: |     with open(get_path + "example_append_data_to_dict_in.json", "r") as file: | ||||||
|         mydict = json.load(file) |         mydict = json.load(file) | ||||||
|  | |||||||
| @ -154,6 +154,55 @@ def initialize_dict(filelist: list) -> dict: | |||||||
|     return mydict |     return mydict | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def check_for_missing_keys(mydict: dict) -> dict: | ||||||
|  |     """Check the nested dictionary for any missing keys in the subdicts. | ||||||
|  | 
 | ||||||
|  |     Args: | ||||||
|  |         mydict(dict): The nested dictionary with keys to check. | ||||||
|  |     Returns: | ||||||
|  |         dict: The dictionary with keys appended.""" | ||||||
|  |     # check that we actually got a nested dict | ||||||
|  |     if not isinstance(mydict[next(iter(mydict))], dict): | ||||||
|  |         raise ValueError( | ||||||
|  |             "Please provide a nested dictionary - you provided {}".format( | ||||||
|  |                 next(iter(mydict)) | ||||||
|  |             ) | ||||||
|  |         ) | ||||||
|  |     # gather all existing keys of first item in a list | ||||||
|  |     subdict = mydict[next(iter(mydict))] | ||||||
|  |     if len(list(subdict.keys())) < 1: | ||||||
|  |         raise ValueError( | ||||||
|  |             "Could not get any keys to compare to - please check if your nested dict is empty!" | ||||||
|  |         ) | ||||||
|  |     for key in mydict.keys(): | ||||||
|  |         # compare keys of next item with first item | ||||||
|  |         if subdict.keys() != mydict[key].keys(): | ||||||
|  |             # print a warning if key is not found and set to None | ||||||
|  |             keys_a = set(subdict.keys()) | ||||||
|  |             keys_b = set(mydict[key].keys()) | ||||||
|  |             missing_keys_in_b = keys_a - keys_b | ||||||
|  |             if missing_keys_in_b: | ||||||
|  |                 print( | ||||||
|  |                     "Found missing key(s) {} in subdict {} - setting to None.".format( | ||||||
|  |                         missing_keys_in_b, key | ||||||
|  |                     ) | ||||||
|  |                 ) | ||||||
|  |                 for missing_key in missing_keys_in_b: | ||||||
|  |                     mydict[key][missing_key] = None | ||||||
|  |             # check that there are no other keys in the subdicts - | ||||||
|  |             # this would only happen if there is a key missing in the first subdict | ||||||
|  |             # then we would need to start over so best to | ||||||
|  |             # abort if this happens - this is a very unlikely case | ||||||
|  |             missing_keys_in_a = keys_b - keys_a | ||||||
|  |             if missing_keys_in_a: | ||||||
|  |                 raise ValueError( | ||||||
|  |                     "Could not update missing keys - first item already missing {}".format( | ||||||
|  |                         missing_keys_in_a | ||||||
|  |                     ) | ||||||
|  |                 ) | ||||||
|  |     return mydict | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def append_data_to_dict(mydict: dict) -> dict: | def append_data_to_dict(mydict: dict) -> dict: | ||||||
|     """Append entries from nested dictionaries to keys in a global dict.""" |     """Append entries from nested dictionaries to keys in a global dict.""" | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Загрузка…
	
	
			
			x
			
			
		
	
		Ссылка в новой задаче
	
	Block a user
	 Inga Ulusoy
						Inga Ulusoy