old_contents: import functools
  import operator
  
  
  def get_id_hash(id_dict):
      hashes = map(hash, id_dict.items())
      id_hash = functools.reduce(operator.xor, hashes, 0)
      return id_hash
  
new_contents: def _hash(val):
      if isinstance(val, dict):
          result = 0
          for key, value in val.items():
              result += _hash((key, _hash(value)))
          return result
      else:
          return hash(val)
  
  
  def dse_get_hashable_id(val):
      if isinstance(val, dict):
          return _hash(val)
      return val
  
subject: support edge IDs by making hash function recursive