Do not set headers with None value
authorIan Cordasco <graffatcolmingov@gmail.com>
Fri, 14 Feb 2014 22:15:21 +0000 (16:15 -0600)
committerIan Cordasco <graffatcolmingov@gmail.com>
Fri, 14 Feb 2014 22:15:21 +0000 (16:15 -0600)
- Regardless of whether they are on the session or not
- Fixes #1920

requests/sessions.py
test_requests.py

index a023e4eca6b8f658142819febb74496ef60f34f0..c06fbcbe2565f8ef73f0692c130fd69c01443a24 100644 (file)
@@ -59,6 +59,8 @@ def merge_setting(request_setting, session_setting, dict_class=OrderedDict):
         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
 
 
index 3d7cdaaf78fd81f3dbf2d42fa6cf3761b1a0514e..998f17f3b8185080a473ec70b226bd458f169eee 100755 (executable)
@@ -211,6 +211,14 @@ class RequestsTestCase(unittest.TestCase):
         req_urls = [r.request.url for r in resp.history]
         assert urls == req_urls
 
+    def test_headers_on_session_with_None_are_not_sent(self):
+        """Do not send headers in Session.headers with None values."""
+        ses = requests.Session()
+        ses.headers['Accept-Encoding'] = None
+        req = requests.Request('GET', 'http://httpbin.org/get')
+        prep = ses.prepare_request(req)
+        assert 'Accept-Encoding' not in prep.headers
+
     def test_user_agent_transfers(self):
 
         heads = {