code: def parse_uri(uri_string):
      
      parts = urlparse.urlparse(uri_string)
      uri = Uri()
      if parts[0]:
        uri.scheme = parts[0]
      if parts[1]:
        host_parts = parts[1].split(':')
        if host_parts[0]:
          uri.host = host_parts[0]
        if len(host_parts) > 1:
          uri.port = int(host_parts[1])
      if parts[2]:
        uri.path = parts[2]
      if parts[4]:
        param_pairs = parts[4].split('&')
        for pair in param_pairs:
          pair_parts = pair.split('=')
          if len(pair_parts) > 1:
            uri.query[urllib.unquote_plus(pair_parts[0])] = (
                urllib.unquote_plus(pair_parts[1]))
          elif len(pair_parts) == 1:
            uri.query[urllib.unquote_plus(pair_parts[0])] = None
      return uri
docs: Creates a Uri object which corresponds to the URI string.
   
      This method can accept partial URIs, but it will leave missing
      members of the Uri unset.