code: def stream_request_body(cls: Type[RequestHandler]) -> Type[RequestHandler]:
        # noqa: E501
      if not issubclass(cls, RequestHandler):
          raise TypeError("expected subclass of RequestHandler, got %r", cls)
      cls._stream_request_body = True
      return cls
docs: Apply to `RequestHandler` subclasses to enable streaming body support.
  
      This decorator implies the following changes:
  
      * `.HTTPServerRequest.body` is undefined, and body arguments will not
        be included in `RequestHandler.get_argument`.
      * `RequestHandler.prepare` is called when the request headers have been
        read instead of after the entire body has been read.
      * The subclass must define a method ``data_received(self, data):``, which
        will be called zero or more times as data is available.  Note that
        if the request has an empty body, ``data_received`` may not be called.
      * ``prepare`` and ``data_received`` may return Futures (such as via
        ``@gen.coroutine``, in which case the next method will not be called
        until those futures have completed.
      * The regular HTTP method (``post``, ``put``, etc) will be called after
        the entire body has been read.
  
      See the `file receiver demo <https://github.com/tornadoweb/tornado/tree/master/demos/file_upload/>`_
      for example usage.