It seems convenient to include the URL in the error message in case you
get an unexpected error.
E.g.:
In [1]: import requests
In [2]: resp = requests.get('http://www.google.com/eofdfdfdfdfd')
In [3]: resp
Out[3]: <Response [404]>
In [4]: resp.raise_for_status()
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
<ipython-input-4-00e7077cfb5b> in <module>()
----> 1 resp.raise_for_status()
/Users/marca/dev/git-repos/requests/requests/models.py in raise_for_status(self)
835
836 if http_error_msg:
--> 837 raise HTTPError(http_error_msg, response=self)
838
839 def close(self):
HTTPError: 404 Client Error: Not Found for url: http://www.google.com/eofdfdfdfdfd
Many people expect to be able to say:
response = make_request(url)
if response:
body = response.content
Where the first part should test for whether or not response is None.
Instead, the __bool__ and __nonzero__ methods return response.ok, so if
the response is actually a 4xx or 5xx response, then the user would
expect to get the body of the response.
By removing these methods, we restore the functionality that most users
expect.
Closes#2002
Do not require that hooks be passed as an empty list to
PreparedRequest.prepare. In the event hooks is None in prepare or
prepare_hooks, use an empty list as a default.
Related to #2552
When a PreparedRequests's cookie jar is not a RequestsCookieJar instance, it
will not have a "copy" method. By adding _copy_cookie_jar we can reliably copy
cookie jars so that we have an actual copy instead of the same instance on
different prepared requests.
This also updates the RequestsCookieJar.update logic to create copies of
cookies from the other jar.
Closes#2527
Addresses the LocationParseError but not the DecodeError from
kennethreitz#1572. When running
test_requests.py, I got an error in test_session_pickling which resulted
in a TypeError. I'm not sure of the reason for the TypeError but I have
commented out that test.