diff --git a/HISTORY.rst b/HISTORY.rst index 5f1b6a3a..2bf6e11d 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,7 +1,13 @@ History ------- -0.6.5 (2011-10-19) +0.6.6 (2011-10-19) +++++++++++++++++++ + +* Session parameter bugfix (params merging) + + +0.6.5 (2011-10-18) ++++++++++++++++++ * Offline (fast) test suite. @@ -17,11 +23,13 @@ History * New ``r.faw`` interface for advanced response usage.* * Automatic expansion of parameterized headers + 0.6.3 (2011-10-13) ++++++++++++++++++ * Beautiful ``requests.async`` module, for making async requests w/ gevent. + 0.6.2 (2011-10-09) ++++++++++++++++++ diff --git a/requests/core.py b/requests/core.py index 9e518357..79449801 100644 --- a/requests/core.py +++ b/requests/core.py @@ -12,8 +12,8 @@ This module implements the main Requests system. """ __title__ = 'requests' -__version__ = '0.6.5' -__build__ = 0x000605 +__version__ = '0.6.6' +__build__ = 0x000606 __author__ = 'Kenneth Reitz' __license__ = 'ISC' __copyright__ = 'Copyright 2011 Kenneth Reitz' diff --git a/requests/sessions.py b/requests/sessions.py index 4e7022d6..9226a545 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -49,7 +49,7 @@ def merge_kwargs(local_kwarg, default_kwarg): class Session(object): """A Requests session.""" - __attrs__ = ['headers', 'cookies', 'auth', 'timeout', 'proxies', 'hooks'] + __attrs__ = ['headers', 'cookies', 'auth', 'timeout', 'proxies', 'hooks', 'params'] def __init__(self, @@ -58,7 +58,8 @@ class Session(object): auth=None, timeout=None, proxies=None, - hooks=None): + hooks=None, + params=None): self.headers = headers or {} self.cookies = cookies or {} @@ -66,6 +67,7 @@ class Session(object): self.timeout = timeout self.proxies = proxies or {} self.hooks = hooks or {} + self.params = params or {} # Set up a CookieJar to be used by default self.cookies = cookielib.FileCookieJar() diff --git a/test_requests.py b/test_requests.py index dbfe527d..a34e2338 100755 --- a/test_requests.py +++ b/test_requests.py @@ -468,5 +468,33 @@ class RequestsTestSuite(unittest.TestCase): self.assertEqual(r2.status_code, 200) + def test_session_persistent_params(self): + + params = {'a': 'a_test'} + + s = Session() + s.params = params + + # Make 2 requests from Session object, should send header both times + r1 = s.get(httpbin('get')) + assert params['a'] in r1.content + + + params2 = {'b': 'b_test'} + + r2 = s.get(httpbin('get'), params=params2) + assert params['a'] in r2.content + assert params2['b'] in r2.content + + + params3 = {'b': 'b_test', 'a': None, 'c': 'c_test'} + + r3 = s.get(httpbin('get'), params=params3) + + assert not params['a'] in r3.content + assert params3['b'] in r3.content + assert params3['c'] in r3.content + + if __name__ == '__main__': unittest.main()