Add dict differ helpers from SO answer
							parent
							
								
									b75683879a
								
							
						
					
					
						commit
						2f6e3ad03f
					
				|  | @ -101,3 +101,30 @@ def percent_change( | |||
|     new: float, | ||||
| ) -> float: | ||||
|     return pnl(init, new) * 100. | ||||
| 
 | ||||
| 
 | ||||
| def diff_dict( | ||||
|     d1: dict, | ||||
|     d2: dict, | ||||
| 
 | ||||
| ) -> dict: | ||||
|     d1_keys = set(d1.keys()) | ||||
|     d2_keys = set(d2.keys()) | ||||
|     shared_keys = d1_keys.intersection(d2_keys) | ||||
|     shared_deltas = {o: (d1[o], d2[o]) for o in shared_keys if d1[o] != d2[o]} | ||||
|     added_keys = d2_keys - d1_keys | ||||
|     added_deltas = {o: (None, d2[o]) for o in added_keys} | ||||
|     deltas = {**shared_deltas, **added_deltas} | ||||
|     return parse_deltas(deltas) | ||||
| 
 | ||||
| 
 | ||||
| def parse_deltas(deltas: dict) -> dict: | ||||
|     res = {} | ||||
|     for k, v in deltas.items(): | ||||
|         if isinstance(v[0], dict): | ||||
|             tmp = diff_dict(v[0], v[1]) | ||||
|             if tmp: | ||||
|                 res[k] = tmp | ||||
|         else: | ||||
|             res[k] = v[1] | ||||
|     return res | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue