summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2013-09-22 10:06:24 -0400
committerJason R. Coombs <jaraco@jaraco.com>2013-09-22 10:06:24 -0400
commit838521eed0d90a12b3f387457702f268734ced89 (patch)
treefee4e3bba92285c4e6bd69f51664cc4053df088b
parentf94a16b494a2b21b8fcb90d666a31f6d78cabc26 (diff)
parentea9e0974646c045274d3c94c2be9ab019ba2ec8d (diff)
downloadcpython-git-838521eed0d90a12b3f387457702f268734ced89.tar.gz
Close #18978: Merge changes.
-rw-r--r--Lib/test/test_urllib2.py9
-rw-r--r--Lib/urllib/request.py11
-rw-r--r--Misc/NEWS3
3 files changed, 16 insertions, 7 deletions
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index b3659f442e..dbd1c60ec2 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -1466,16 +1466,25 @@ class MiscTests(unittest.TestCase):
self.assertEqual(str(err), expected_errmsg)
class RequestTests(unittest.TestCase):
+ class PutRequest(Request):
+ method='PUT'
def setUp(self):
self.get = Request("http://www.python.org/~jeremy/")
self.post = Request("http://www.python.org/~jeremy/",
"data",
headers={"X-Test": "test"})
+ self.head = Request("http://www.python.org/~jeremy/", method='HEAD')
+ self.put = self.PutRequest("http://www.python.org/~jeremy/")
+ self.force_post = self.PutRequest("http://www.python.org/~jeremy/",
+ method="POST")
def test_method(self):
self.assertEqual("POST", self.post.get_method())
self.assertEqual("GET", self.get.get_method())
+ self.assertEqual("HEAD", self.head.get_method())
+ self.assertEqual("PUT", self.put.get_method())
+ self.assertEqual("POST", self.force_post.get_method())
def test_data(self):
self.assertFalse(self.get.data)
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 4765a94288..bceb3297c8 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -271,7 +271,8 @@ class Request:
origin_req_host = request_host(self)
self.origin_req_host = origin_req_host
self.unverifiable = unverifiable
- self.method = method
+ if method:
+ self.method = method
@property
def full_url(self):
@@ -320,12 +321,8 @@ class Request:
def get_method(self):
"""Return a string indicating the HTTP request method."""
- if self.method is not None:
- return self.method
- elif self.data is not None:
- return "POST"
- else:
- return "GET"
+ default_method = "POST" if self.data is not None else "GET"
+ return getattr(self, 'method', default_method)
def get_full_url(self):
return self.full_url
diff --git a/Misc/NEWS b/Misc/NEWS
index 456307a25c..79ab3a7f17 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ Core and Builtins
Library
-------
+- Issue #18978: ``urllib.request.Request`` now allows the method to be
+ indicated on the class and no longer sets it to None in ``__init__``.
+
- Issue #18626: the inspect module now offers a basic command line
introspection interface (Initial patch by Claudiu Popa)