fix #549 Add 'prefetch' to Session.__attrs__ and Requests.__init__

This commit is contained in:
Roman Haritonov
2012-04-13 19:25:10 +04:00
parent e3ba495ed9
commit d569a2d6bc
3 changed files with 23 additions and 2 deletions
+5 -1
View File
@@ -61,6 +61,7 @@ class Request(object):
proxies=None,
hooks=None,
config=None,
prefetch=False,
_poolmanager=None,
verify=None,
session=None,
@@ -149,6 +150,9 @@ class Request(object):
#: SSL Certificate
self.cert = cert
#: Prefetch response content
self.prefetch = prefetch
if headers:
headers = CaseInsensitiveDict(self.headers)
else:
@@ -624,7 +628,7 @@ class Request(object):
self.__dict__.update(r.__dict__)
# If prefetch is True, mark content as consumed.
if prefetch:
if prefetch or self.prefetch:
# Save the response.
self.response.content
+2 -1
View File
@@ -52,7 +52,7 @@ class Session(object):
__attrs__ = [
'headers', 'cookies', 'auth', 'timeout', 'proxies', 'hooks',
'params', 'config', 'verify', 'cert']
'params', 'config', 'verify', 'cert', 'prefetch']
def __init__(self,
@@ -179,6 +179,7 @@ class Session(object):
allow_redirects=allow_redirects,
proxies=proxies,
config=config,
prefetch=prefetch,
verify=verify,
cert=cert,
_poolmanager=self.poolmanager
+16
View File
@@ -708,6 +708,22 @@ class RequestsTestSuite(TestSetup, unittest.TestCase):
self.assertEqual(s.cookies, ds.cookies)
self.assertEqual(s.auth, ds.auth)
def test_unpickled_session_requests(self):
s = requests.session()
r = get(httpbin('cookies', 'set', 'k', 'v'), allow_redirects=True, session=s)
c = json.loads(r.text).get('cookies')
assert 'k' in c
ds = pickle.loads(pickle.dumps(s))
r = get(httpbin('cookies'), session=ds)
c = json.loads(r.text).get('cookies')
assert 'k' in c
ds1 = pickle.loads(pickle.dumps(requests.session()))
ds2 = pickle.loads(pickle.dumps(requests.session(prefetch=True)))
assert not ds1.prefetch
assert ds2.prefetch
def test_invalid_content(self):
# WARNING: if you're using a terrible DNS provider (comcast),
# this will fail.