Coverage for /Users/ajo/work/jumpstarter/jumpstarter/packages/jumpstarter/jumpstarter/streams/aiohttp.py: 52%

21 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-06 10:20 +0200

1from dataclasses import dataclass 

2 

3from aiohttp import ClientError, StreamReader 

4from anyio import BrokenResourceError, EndOfStream 

5from anyio.abc import ObjectStream 

6 

7 

8@dataclass(frozen=True, kw_only=True, slots=True) 

9class AiohttpStreamReaderStream(ObjectStream[bytes]): 

10 reader: StreamReader 

11 

12 async def send(self, item: bytes): 

13 raise BrokenResourceError 

14 

15 async def receive(self) -> bytes: 

16 try: 

17 item = await self.reader.readany() 

18 except ClientError as e: 

19 raise BrokenResourceError from e 

20 if len(item) == 0: 

21 raise EndOfStream 

22 return item 

23 

24 async def send_eof(self): 

25 pass 

26 

27 async def aclose(self): 

28 pass