From: R David Murray <rdmurray@bitdance.com>
Date: Tue, 25 Feb 2014 15:22:50 +0000 (-0500)
Subject: whatsnew: Request.method can be overridden in subclasses (#18978).
X-Git-Tag: v3.4.1rc1~233^2~203
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7cae336890b96fca94a84983003469a17f65ae8c;p=python

whatsnew: Request.method can be overridden in subclasses (#18978).

Jason doced the change in the constructor *method* description, but
not the description of Request.method, so I added the change there
as well.
---

diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst
index 20449d960c..6ac90818dc 100644
--- a/Doc/library/urllib.request.rst
+++ b/Doc/library/urllib.request.rst
@@ -218,7 +218,7 @@ The following classes are provided:
    fetching of the image, this should be true.
 
    *method* should be a string that indicates the HTTP request method that
-   will be used (e.g. ``'HEAD'``).  Its value is stored in the
+   will be used (e.g. ``'HEAD'``).  If provided, its value is stored in the
    :attr:`~Request.method` attribute and is used by :meth:`get_method()`.
    Subclasses may indicate a default method by setting the
    :attr:`~Request.method` attribute in the class itself.
@@ -440,13 +440,20 @@ request.
 
 .. attribute:: Request.method
 
-   The HTTP request method to use.  This value is used by
-   :meth:`~Request.get_method` to override the computed HTTP request
-   method that would otherwise be returned.  This attribute is initialized with
-   the value of the *method* argument passed to the constructor.
+   The HTTP request method to use.  By default its value is :const:`None`,
+   which means that :meth:`~Request.get_method` will do its normal computation
+   of the method to be used.  Its value can be set (thus overriding the default
+   computation in :meth:`~Request.get_method`) either by providing a default
+   value by setting it at the class level in a :class:`Request` subclass, or by
+   passing a value in to the :class:`Request` constructor via the *method*
+   argument.
 
    .. versionadded:: 3.3
 
+   .. versionchanged:: 3.4
+      A default value can now be set in subclasses; previously it could only
+      be set via the constructor argument.
+
 
 .. method:: Request.get_method()
 
diff --git a/Doc/whatsnew/3.4.rst b/Doc/whatsnew/3.4.rst
index 528a818d19..cc1cafc825 100644
--- a/Doc/whatsnew/3.4.rst
+++ b/Doc/whatsnew/3.4.rst
@@ -1272,6 +1272,11 @@ urllib
 :class:`~urllib.request.DataHandler` class.  (Contributed by Mathias Panzenböck
 in :issue:`16423`.)
 
+The http method that will be used by a :class:`~urllib.request.Request` class
+can now be specified by setting a :class:`~urllib.request.Request.method`
+class attribute on the subclass. (Contributed by Jason R Coombs in
+:issue:`18978`.)
+
 
 unittest
 --------