raise StreamConsumed()
self._is_stream_consumed = True
- if hasattr(self._stream, "read"):
+ if hasattr(self._stream, "read") and not isinstance(
+ self._stream, SyncByteStream
+ ):
# File-like interfaces should use 'read' directly.
chunk = self._stream.read(self.CHUNK_SIZE) # type: ignore
while chunk:
raise StreamConsumed()
self._is_stream_consumed = True
- if hasattr(self._stream, "aread"):
+ if hasattr(self._stream, "aread") and not isinstance(
+ self._stream, AsyncByteStream
+ ):
# File-like interfaces should use 'aread' directly.
chunk = await self._stream.aread(self.CHUNK_SIZE) # type: ignore
while chunk:
assert response.reason_phrase == "OK"
+def test_post_byte_stream(server):
+ class Data(httpx.SyncByteStream):
+ def __iter__(self):
+ yield b"Hello"
+ yield b", "
+ yield b"world!"
+
+ response = httpx.post(server.url, content=Data())
+ assert response.status_code == 200
+ assert response.reason_phrase == "OK"
+
+
def test_options(server):
response = httpx.options(server.url)
assert response.status_code == 200