def unescape_all(url):
 if isinstance(url, bytes):
  func2use = _unescape_bytes
  keys2use = _bytes_keys
 else:
  func2use = _unescape_str
  keys2use = _str_keys
 clean_url = func2use(url)
 not_done = [(clean_url.count(key) > 0) for key in keys2use]
 if (True in not_done):
  return unescape_all(clean_url)
 else:
  return clean_url

def unescape_all ( url ) : if isinstance ( url , bytes ) : func2use = _unescape_bytes keys2use = _bytes_keys else : func2use = _unescape_str keys2use = _str_keys clean_url = func2use ( url ) not_done = [ ( clean_url . count ( key ) > 0 ) for key in keys2use ] if ( True in not_done ) : return unescape_all ( clean_url ) else : return clean_url
recursively unescape a given url .