From 59f12c9669c53c5cb110870cc94e8181831f45ab Mon Sep 17 00:00:00 2001 From: Nate Prewitt Date: Thu, 11 Aug 2016 16:32:19 -0600 Subject: [PATCH] adding passthrough in close() for non-urllib3-like Responses --- requests/models.py | 4 +++- tests/test_requests.py | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/requests/models.py b/requests/models.py index 11434ef4..74385674 100644 --- a/requests/models.py +++ b/requests/models.py @@ -870,4 +870,6 @@ class Response(object): if not self._content_consumed: self.raw.close() - return self.raw.release_conn() + release_conn = getattr(self.raw, 'release_conn', None) + if release_conn is not None: + release_conn() diff --git a/tests/test_requests.py b/tests/test_requests.py index efbc7ed0..83338fc3 100755 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -1353,6 +1353,15 @@ class TestRequests: with pytest.raises(ValueError): r.json() + def test_response_without_release_conn(self): + """Test `close` call for non-urllib3-like raw objects. + Should work when `release_conn` attr doesn't exist on `response.raw`. + """ + resp = requests.Response() + resp.raw = StringIO.StringIO('test') + assert not resp.raw.closed + resp.close() + assert resp.raw.closed class TestCaseInsensitiveDict: