From 0cf0bde15853a704ed3fb4fd928187bdc90a3e9a Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 25 Sep 2011 20:36:30 -0400 Subject: [PATCH] session work merge kwargs and such --- requests/sessions.py | 59 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/requests/sessions.py b/requests/sessions.py index 910b1af8..a5c13fbd 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -12,9 +12,30 @@ requests (cookies, auth, proxies). import cookielib from . import api +from .config import get_config from .utils import add_dict_to_cookiejar +def merge_kwargs(local_kwargs, default_kwargs): + """Merges kwarg dictionaries. + """ + + # Bypass if not a dictionary (e.g. timeout) + if not hasattr(local_kwargs, 'items'): + return local_kwargs + + kwargs = default_kwargs.copy() + kwargs.update(local_kwargs) + + # Remove keys that are set to None. + for (k,v) in local_kwargs.items(): + if v is None: + del kwargs[k] + + return kwargs + + + class Session(object): """A Requests session.""" @@ -23,19 +44,39 @@ class Session(object): 'config' ] - def __init__(self, **kwargs): + def __init__(self, + headers=None, + cookies=None, + auth=None, + timeout=None, + proxies=None, + hooks=None, + config=None): # Set up a CookieJar to be used by default - self.cookies = cookielib.FileCookieJar() - self.config = kwargs.get('config') or dict() + # self.cookies = cookielib.FileCookieJar() + # self.config = kwargs.get('config') + # self.configs = + self.headers = headers + self.cookies = cookies + self.auth = auth + self.timeout = timeout + self.proxies = proxies + self.hooks = hooks + self.config = get_config(config) + # print self.config # Map args from kwargs to instance-local variables - map(lambda k, v: (k in self.__attrs__) and setattr(self, k, v), - kwargs.iterkeys(), kwargs.itervalues()) + # map(lambda k, v: (k in self.__attrs__) and setattr(self, k, v), + # kwargs.iterkeys(), kwargs.itervalues()) # Map and wrap requests.api methods self._map_api_methods() + + def get(url, **kwargs): + + def __repr__(self): return '' % (id(self)) @@ -61,10 +102,10 @@ class Session(object): # If a session request has a cookie_dict, inject the # values into the existing CookieJar instead. - if isinstance(kwargs.get('cookies', None), dict): - kwargs['cookies'] = add_dict_to_cookiejar( - inst_attrs['cookies'], kwargs['cookies'] - ) + # if isinstance(kwargs.get('cookies', None), dict): + # kwargs['cookies'] = add_dict_to_cookiejar( + # inst_attrs['cookies'], kwargs['cookies'] + # ) if kwargs.get('headers', None) and inst_attrs.get('headers', None): kwargs['headers'].update(inst_attrs['headers'])