From 10b60d47c71e352f06c418f31095f381ea36c6b8 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 31 Aug 2021 11:52:52 +0100 Subject: [PATCH] Fix iter_bytes with empty content (#1827) --- httpx/_models.py | 4 ++-- tests/models/test_responses.py | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/httpx/_models.py b/httpx/_models.py index c86d37d93d..f8dd773156 100644 --- a/httpx/_models.py +++ b/httpx/_models.py @@ -1488,7 +1488,7 @@ def iter_bytes(self, chunk_size: int = None) -> typing.Iterator[bytes]: """ if hasattr(self, "_content"): chunk_size = len(self._content) if chunk_size is None else chunk_size - for i in range(0, len(self._content), chunk_size): + for i in range(0, len(self._content), max(chunk_size, 1)): yield self._content[i : i + chunk_size] else: decoder = self._get_content_decoder() @@ -1586,7 +1586,7 @@ async def aiter_bytes(self, chunk_size: int = None) -> typing.AsyncIterator[byte """ if hasattr(self, "_content"): chunk_size = len(self._content) if chunk_size is None else chunk_size - for i in range(0, len(self._content), chunk_size): + for i in range(0, len(self._content), max(chunk_size, 1)): yield self._content[i : i + chunk_size] else: decoder = self._get_content_decoder() diff --git a/tests/models/test_responses.py b/tests/models/test_responses.py index adcf2f65c7..6af06c3c53 100644 --- a/tests/models/test_responses.py +++ b/tests/models/test_responses.py @@ -486,6 +486,12 @@ def test_iter_bytes_with_chunk_size(): assert parts == [b"Hello, world!"] +def test_iter_bytes_with_empty_response(): + response = httpx.Response(200, content=b"") + parts = [part for part in response.iter_bytes()] + assert parts == [] + + @pytest.mark.asyncio async def test_aiter_bytes(): response = httpx.Response(