'Parses the information from the given stream, mimetype,
content length and mimetype parameters.
:param stream: an input stream
:param mimetype: the mimetype of the data
:param content_length: the content length of the incoming data
:param options: optional mimetype parameters (used for
the multipart boundary for instance)
:return: A tuple in the form ``(stream, form, files)``.'

def parse(self, stream, mimetype, content_length, options=None):

    if ((self.max_content_length is not None) and (content_length is not None) and (content_length > self.max_content_length)):
        raise exceptions.RequestEntityTooLarge()
    if (options is None):
        options = {}
    parse_func = self.get_parse_func(mimetype, options)
    if (parse_func is not None):
        try:
            return parse_func(self, stream, mimetype, content_length, options)
        except ValueError:
            if (not self.silent):
                raise
    return (stream, self.cls(), self.cls())
