  to enhance the standard `request` object received in all the views.
  
  This enhanced request object offers the following :
  
      - content automatically parsed according to `Content-Type` header, and available as :meth:`request.DATA<Request.DATA>`
      - full support of PUT method, including support for file uploads
      - form overloading of HTTP method, content type and content
  """
  
  from django.http import HttpRequest
 
</s> remove This enhanced request object offers the following :
 </s> add The wrapped request then offer the following : </s> remove to enhance the standard `request` object received in all the views.
 </s> add to wrap the standard `request` object received in all the views, and upgrade its API. </s> remove     def _load_post_and_files(self):
        """
        Overrides the parent's `_load_post_and_files` to isolate it 
        from the form overloading mechanism (see: `_perform_form_overloading`).
        """
        # When self.POST or self.FILES are called they need to know the original
        # HTTP method, not our overloaded HTTP method. So, we save our overloaded
        # HTTP method and restore it after the call to parent.
        method_mem = getattr(self, '_method', None)
        self._method = self._raw_method
        super(Request, self)._load_post_and_files()
        if method_mem is None:
            del self._method
        else:
            self._method = method_mem

 </s> add  </s> remove def request_class_factory(request):
    """
    Builds and returns a request class, to be used as a replacement of Django's built-in.
    
    In fact :class:`request.Request` needs to be mixed-in with a subclass of `HttpRequest` for use,
    and we cannot do that before knowing which subclass of `HttpRequest` is used. So this function
    takes a request instance as only argument, and returns a properly mixed-in request class.
    """
    request_class = type(request)
    return type(request_class.__name__, (Request, request_class), {})


 </s> add  </s> remove     parsers = ()
    """
    The set of parsers that the request can handle.

    Should be a tuple/list of classes as described in the :mod:`parsers` module.
    """

    def __init__(self, request):
        # this allows to "copy" a request object into a new instance
        # of our custom request class.

        # First, we prepare the attributes to copy.
        attrs_dict = request.__dict__.copy()
        attrs_dict.pop('method', None)
        attrs_dict['_raw_method'] = request.method

        # Then, put them in the instance's own __dict__
        self.__dict__ = attrs_dict
 </s> add     def __init__(self, request=None, parsers=None):
        """
        `parsers` is a list/tuple of parser instances and represents the set of psrsers
        that the response can handle.
        """
        self.request = request
        if parsers is not None:
            self.parsers = parsers
    - content automatically parsed according to `Content-Type` header, and available as :meth:`.DATA<Request.DATA>`
  to enhance the standard `request` object received in all the views.
  
  This enhanced request object offers the following :
  
    - content automatically parsed according to `Content-Type` header, and available as :meth:`.DATA<Request.DATA>`
      - full support of PUT method, including support for file uploads
      - form overloading of HTTP method, content type and content
  """
  
  from django.http import HttpRequest
keep keep keep keep replace keep keep keep keep keep
 cleaned Request/Response/mixins to have similar interface 
djangorestframework/request.py