From 276202f51ee9967969eafc1880c4785c80d63d3b Mon Sep 17 00:00:00 2001 From: Akira J Date: Tue, 4 Aug 2015 22:47:12 +0100 Subject: [PATCH] Fix merge setting for not preserving original order of dict parameters --- requests/sessions.py | 4 +--- test_requests.py | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/requests/sessions.py b/requests/sessions.py index 820919ee..31844eb8 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -63,12 +63,10 @@ def merge_setting(request_setting, session_setting, dict_class=OrderedDict): merged_setting.update(to_key_val_list(request_setting)) # Remove keys that are set to None. - for (k, v) in request_setting.items(): + for (k, v) in merged_setting.items(): if v is None: del merged_setting[k] - merged_setting = dict((k, v) for (k, v) in merged_setting.items() if v is not None) - return merged_setting diff --git a/test_requests.py b/test_requests.py index a5d63464..7e5e4d8f 100755 --- a/test_requests.py +++ b/test_requests.py @@ -125,6 +125,13 @@ class RequestsTestCase(unittest.TestCase): "http://example.com/path?key=value#fragment", params={"a": "b"}).prepare() assert request.url == "http://example.com/path?key=value&a=b#fragment" + def test_params_original_order_is_preserved_by_default(self): + param_ordered_dict = collections.OrderedDict((('z', 1), ('a', 1), ('k', 1), ('d', 1))) + session = requests.Session() + request = requests.Request('GET', 'http://example.com/', params=param_ordered_dict) + prep = session.prepare_request(request) + assert prep.url == 'http://example.com/?z=1&a=1&k=1&d=1' + def test_mixed_case_scheme_acceptable(self): s = requests.Session() s.proxies = getproxies()