docs: def parse(self, stream, mimetype, content_length, options=None):
          """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)``.
          """
          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()