docs: def _get_diffs(cls, dict1, dict2, ignore_missing_keys):
          '''
          Returns a dict with the differences between dict1 and dict2
  
          Notes:
              Keys that only exist in dict2 are not included in the diff if
              ignore_missing_keys is True, otherwise they are
              Simple compares are done on lists
          '''
          ret_dict = {}
          for p in dict1.keys():
              if p not in dict2:
                  ret_dict.update({p: {'new': dict1[p], 'old': cls.NONE_VALUE}})
              elif dict1[p] != dict2[p]:
                  if isinstance(dict1[p], dict) and isinstance(dict2[p], dict):
                      sub_diff_dict = cls._get_diffs(dict1[p], dict2[p],
                                                     ignore_missing_keys)
                      if sub_diff_dict:
                          ret_dict.update({p: sub_diff_dict})
                  else:
                      ret_dict.update({p: {'new': dict1[p], 'old': dict2[p]}})
          if not ignore_missing_keys:
              for p in dict2.keys():
                  if p not in dict1.keys():
                      ret_dict.update({p: {'new': cls.NONE_VALUE,
                                           'old': dict2[p]}})
          return ret_dict