From c742d8c061db14fbd3850fb09b0a82b2e4a3d590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20J=C3=BCrges?= <jurges@astron.nl> Date: Tue, 25 Sep 2018 10:13:33 +0000 Subject: [PATCH] Task SSB-42: Added a dict comparison function --- .../lib/datacontainers/holography_dataset.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CAL/CalibrationCommon/lib/datacontainers/holography_dataset.py b/CAL/CalibrationCommon/lib/datacontainers/holography_dataset.py index f2af02ac525..16a50dde8e9 100644 --- a/CAL/CalibrationCommon/lib/datacontainers/holography_dataset.py +++ b/CAL/CalibrationCommon/lib/datacontainers/holography_dataset.py @@ -58,6 +58,20 @@ class HolographyDataset(): # ('flag', numpy.bool)] # ) + @staticmethod + def compare_dicts(dict1, dict2): + result = True + for key in dict1.keys(): + if key in dict2.keys(): + if isinstance(dict1[key], dict) and isinstance(dict2[key], dict): + result = result and HolographyDataset.compare_dicts(dict1[key], dict2[key]) + else: + return dict1[key] == dict2[key] + else: + print(key, dict1.keys(), dict2.keys()) + return False + return result + def __eq__(self, hds = None): equality = False if hds is not None and isinstance(hds, HolographyDataset) is True: @@ -68,6 +82,8 @@ class HolographyDataset(): try: if isinstance(attribute_value, numpy.ndarray) is True and isinstance(other_value, numpy.ndarray) is True: this_equality = numpy.array_equal(attribute_value, other_value) + elif isinstance(attribute_value, dict) is True and isinstance(other_value, dict) is True: + this_equality = HolographyDataset.compare_dicts(attribute_value, other_value) elif attribute_value != other_value: this_equality = False except Exception as e: -- GitLab