docs: def sig_cmp(sig1, sig2):
      """
      Compares two normalized type signatures for validation purposes.
      """
      types1 = sig1.required
      types2 = sig2.required
      if len(types1) != len(types2):
          return False
      dup_pos = []
      dup_kw = {}
      for t1, t2 in zip(types1, types2):
          match = type_cmp(t1, t2)
          if match:
              dup_pos.append(match)
          else:
              break
      else:
          return tuple(dup_pos)
      kw_range = slice(len(dup_pos), len(types1))
      kwds1 = sig1.parameters[kw_range]
      kwds2 = sig2.parameters[kw_range]
      if set(kwds1) != set(kwds2):
          return False
      kwtypes1 = dict(zip(sig1.parameters, types1))
      kwtypes2 = dict(zip(sig2.parameters, types2))
      for kw in kwds1:
          match = type_cmp(kwtypes1[kw], kwtypes2[kw])
          if match:
              dup_kw[kw] = match
          else:
              break
      else:
          return tuple(dup_pos), dup_kw
      return False