docs: def unescape(field):
      """
      Decode escape sequences in a ``.properties`` key or value.  The following
      escape sequences are recognized::
  
          \\t \\n \\f \\r \\uXXXX \\\\
  
      If a backslash is followed by any other character, the backslash is
      dropped.
  
      In addition, any valid UTF-16 surrogate pairs in the string after
      escape-decoding are further decoded into the non-BMP characters they
      represent.  (Invalid & isolated surrogate code points are left as-is.)
  
      .. versionchanged:: 0.5.0
          Invalid ``\\uXXXX`` escape sequences will now cause an
          `InvalidUEscapeError` to be raised
  
      :param field: the string to decode
      :type field: text string
      :rtype: text string
      :raises InvalidUEscapeError: if an invalid ``\\uXXXX`` escape sequence
          occurs in the input
      """
      return re.sub(r'[\uD800-\uDBFF][\uDC00-\uDFFF]', _unsurrogate,
                    re.sub(r'\\(u.{0,4}|.)', _unesc, field))