Parse the URI.

        uri is the uri to parse.
        defaults is a scheme-dependent list of values to use if there
        is no value for that part in the supplied URI.

        The return value is a tuple of scheme-dependent length.

def parse(self, uri, defaults=None):
        """Parse the URI.

        uri is the uri to parse.
        defaults is a scheme-dependent list of values to use if there
        is no value for that part in the supplied URI.

        The return value is a tuple of scheme-dependent length.
        """
        return tuple([self.scheme_of(uri)] + list(self.parser_for(uri)(defaults).parse(uri)))