docs: def hashiter(iterable):
      """Try to hash input iterable in doing the sum of its content if not
      hashable.
  
      Hash method on not iterable depends on type:
  
      hash(iterable.__class__) + ...
  
          - dict: sum of (hash(key) + 1) * (hash(value) + 1).
          - Otherwise: sum of (pos + 1) * (hash(item) + 1)."""
  
      result = 0
  
      try:
          result = hash(iterable)
  
      except TypeError:
  
          result = hash(iterable.__class__)
  
          isdict = isinstance(iterable, dict)
  
          for index, entry in enumerate(list(iterable)):
              entryhash = hashiter(entry) + 1
  
              if isdict:
                  entryhash *= hashiter(iterable[entry]) + 1
  
              else:
                  entryhash *= index + 1
  
              result += entryhash
  
      return result