Close #18978: Merge changes.

This commit is contained in:
Jason R. Coombs 2013-09-22 10:06:24 -04:00
commit 838521eed0
3 changed files with 16 additions and 7 deletions

View File

@ -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)

View File

@ -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

View File

@ -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)