From a1b2c1d76ec4b7ca396b015a0616a1f8a1845066 Mon Sep 17 00:00:00 2001 From: Josh Schneier Date: Wed, 26 Apr 2017 14:17:41 -0400 Subject: [PATCH] Fixed #28137 -- Deprecated HttpRequest.xreadlines(). --- django/http/request.py | 11 +++++++++-- docs/internals/deprecation.txt | 2 ++ docs/ref/request-response.txt | 1 - docs/releases/2.0.txt | 3 +++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/django/http/request.py b/django/http/request.py index 42da121ae1..17771f7ef6 100644 --- a/django/http/request.py +++ b/django/http/request.py @@ -1,5 +1,6 @@ import copy import re +import warnings from io import BytesIO from itertools import chain from urllib.parse import quote, urlencode, urljoin, urlsplit @@ -12,6 +13,7 @@ from django.core.exceptions import ( from django.core.files import uploadhandler from django.http.multipartparser import MultiPartParser, MultiPartParserError from django.utils.datastructures import ImmutableList, MultiValueDict +from django.utils.deprecation import RemovedInDjango30Warning from django.utils.encoding import escape_uri_path, force_bytes, iri_to_uri from django.utils.http import is_same_domain, limited_parse_qsl @@ -328,14 +330,19 @@ class HttpRequest: except IOError as e: raise UnreadablePostError(*e.args) from e - def xreadlines(self): + def __iter__(self): while True: buf = self.readline() if not buf: break yield buf - __iter__ = xreadlines + def xreadlines(self): + warnings.warn( + 'HttpRequest.xreadlines() is deprecated in favor of iterating the ' + 'request.', RemovedInDjango30Warning, stacklevel=2, + ) + yield from self def readlines(self): return list(iter(self)) diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index e9eb6b24cf..cee80fdbe2 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -21,6 +21,8 @@ details on these changes. * The ``DEFAULT_CONTENT_TYPE`` setting will be removed. +* ``HttpRequest.xreadlines()`` will be removed. + .. _deprecation-removed-in-2.1: 2.1 diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt index 6de18234c4..ec58761a43 100644 --- a/docs/ref/request-response.txt +++ b/docs/ref/request-response.txt @@ -362,7 +362,6 @@ Methods .. method:: HttpRequest.read(size=None) .. method:: HttpRequest.readline() .. method:: HttpRequest.readlines() -.. method:: HttpRequest.xreadlines() .. method:: HttpRequest.__iter__() Methods implementing a file-like interface for reading from an diff --git a/docs/releases/2.0.txt b/docs/releases/2.0.txt index cc1248a9b0..223e008e37 100644 --- a/docs/releases/2.0.txt +++ b/docs/releases/2.0.txt @@ -334,6 +334,9 @@ Miscellaneous well with third-party apps and is obsolete since HTML5 has mostly superseded XHTML. +* ``HttpRequest.xreadlines()`` is deprecated in favor of iterating over the + request. + .. _removed-features-2.0: Features removed in 2.0