diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2013-09-22 10:06:24 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2013-09-22 10:06:24 -0400 |
commit | 838521eed0d90a12b3f387457702f268734ced89 (patch) | |
tree | fee4e3bba92285c4e6bd69f51664cc4053df088b | |
parent | f94a16b494a2b21b8fcb90d666a31f6d78cabc26 (diff) | |
parent | ea9e0974646c045274d3c94c2be9ab019ba2ec8d (diff) | |
download | cpython-git-838521eed0d90a12b3f387457702f268734ced89.tar.gz |
Close #18978: Merge changes.
-rw-r--r-- | Lib/test/test_urllib2.py | 9 | ||||
-rw-r--r-- | Lib/urllib/request.py | 11 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
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 @@ -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) |