__attrs__ = [
'headers', 'cookies', 'auth', 'timeout', 'proxies', 'hooks',
- 'params', 'config']
+ 'params', 'config', 'verify']
def __init__(self,
for (k, v) in list(defaults.items()):
self.config.setdefault(k, v)
- self.poolmanager = PoolManager(
- num_pools=self.config.get('pool_connections'),
- maxsize=self.config.get('pool_maxsize')
- )
+ self.init_poolmanager()
# Set up a CookieJar to be used by default
self.cookies = {}
if cookies is not None:
self.cookies.update(cookies)
+ def init_poolmanager(self):
+ self.poolmanager = PoolManager(
+ num_pools=self.config.get('pool_connections'),
+ maxsize=self.config.get('pool_maxsize')
+ )
+
def __repr__(self):
return '<requests-client at 0x%x>' % (id(self))
params = {} if params is None else params
hooks = {} if hooks is None else hooks
- if verify is None:
- verify = self.verify
-
# use session's hooks as defaults
for key, cb in list(self.hooks.items()):
hooks.setdefault(key, cb)
return self.request('delete', url, **kwargs)
+ def __getstate__(self):
+ return dict((attr, getattr(self, attr, None)) for attr in self.__attrs__)
+
+ def __setstate__(self, state):
+ for attr, value in state.items():
+ setattr(self, attr, value)
+
+ self.init_poolmanager()
+
def session(**kwargs):
"""Returns a :class:`Session` for context-management."""
import os
import sys
import unittest
+import pickle
import requests
from requests.compat import str, bytes, StringIO
assert params3['b'] in r3.text
assert params3['c'] in r3.text
+ def test_session_pickling(self):
+
+ s = requests.session(
+ headers={'header': 'value'},
+ cookies={'a-cookie': 'cookie-value'},
+ auth=('username', 'password'))
+
+ ds = pickle.loads(pickle.dumps(s))
+
+ self.assertEqual(s.headers, ds.headers)
+ self.assertEqual(s.cookies, ds.cookies)
+ self.assertEqual(s.auth, ds.auth)
+
def test_invalid_content(self):
# WARNING: if you're using a terrible DNS provider (comcast),
# this will fail.