def unquote_unreserved(uri):
 parts = uri.split('%')
 for i in range(1, len(parts)):
  h = parts[i][0:2]
  if ((len(h) == 2) and h.isalnum()):
   try:
    c = chr(int(h, 16))
   except ValueError:
    raise InvalidURL(("Invalid percent-escape sequence: '%s'" % h))
   if (c in UNRESERVED_SET):
    parts[i] = (c + parts[i][2:])
   else:
    parts[i] = ('%' + parts[i])
  else:
   parts[i] = ('%' + parts[i])
 return ''.join(parts)

def unquote_unreserved ( uri ) : parts = uri . split ( '%' ) for i in range ( 1 , len ( parts ) ) : h = parts [ i ] [ 0 : 2 ] if ( ( len ( h ) == 2 ) and h . isalnum ( ) ) : try : c = chr ( int ( h , 16 ) ) except ValueError : raise InvalidURL ( ( "Invalid percent-escape sequence: '%s'" % h ) ) if ( c in UNRESERVED_SET ) : parts [ i ] = ( c + parts [ i ] [ 2 : ] ) else : parts [ i ] = ( '%' + parts [ i ] ) else : parts [ i ] = ( '%' + parts [ i ] ) return '' . join ( parts )
un-escape any percent-escape sequences in a uri that are unreserved characters .