Skip to content

Commit 8f932fd

Browse files
authored
python: fix up steaming response got cut off (#15)
1 parent 01c041b commit 8f932fd

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

packages/code-storage-python/pierre_storage/repo.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Repository implementation for Pierre Git Storage SDK."""
22

3+
import contextlib
34
import warnings
45
from datetime import datetime, timezone
56
from types import TracebackType
@@ -51,15 +52,18 @@
5152
class StreamingResponse:
5253
"""Stream wrapper that keeps the HTTP client alive until closed."""
5354

54-
def __init__(self, response: httpx.Response, client: httpx.AsyncClient) -> None:
55+
def __init__(self, response: httpx.Response, client: httpx.AsyncClient, stream_context: Optional[contextlib.AbstractAsyncContextManager] = None) -> None:
5556
self._response = response
5657
self._client = client
58+
self._stream_context = stream_context
5759

5860
def __getattr__(self, name: str) -> Any:
5961
return getattr(self._response, name)
6062

6163
async def aclose(self) -> None:
6264
await self._response.aclose()
65+
if self._stream_context is not None:
66+
await self._stream_context.__aexit__(None, None, None)
6367
await self._client.aclose()
6468

6569
async def __aenter__(self) -> "StreamingResponse":
@@ -264,7 +268,7 @@ async def get_file_stream(
264268
await client.aclose()
265269
raise
266270

267-
return StreamingResponse(response, client)
271+
return StreamingResponse(response, client, stream_context)
268272

269273
async def get_archive_stream(
270274
self,
@@ -324,7 +328,7 @@ async def get_archive_stream(
324328
await client.aclose()
325329
raise
326330

327-
return StreamingResponse(response, client)
331+
return StreamingResponse(response, client, stream_context)
328332

329333
async def list_files(
330334
self,

packages/code-storage-python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "pierre-storage"
7-
version = "1.4.3"
7+
version = "1.4.4"
88
description = "Pierre Git Storage SDK for Python"
99
readme = "README.md"
1010
license = "MIT"

0 commit comments

Comments
 (0)