| 62 | |
| 63 | |
| 64 | class AwaitableOrContextManagerWrapper(Generic[SupportsAsyncCloseType]): |
| 65 | __slots__ = (class="st">"aw", class="st">"entered") |
| 66 | |
| 67 | def __init__(self, aw: Awaitable[SupportsAsyncCloseType]) -> None: |
| 68 | self.aw = aw |
| 69 | |
| 70 | def __await__(self) -> Generator[Any, None, SupportsAsyncCloseType]: |
| 71 | return self.aw.__await__() |
| 72 | |
| 73 | async def __aenter__(self) -> SupportsAsyncCloseType: |
| 74 | self.entered = await self.aw |
| 75 | return self.entered |
| 76 | |
| 77 | async def __aexit__(self, *args: Any) -> None | bool: |
| 78 | await self.entered.close() |
| 79 | return None |
| 80 | |
| 81 | |
| 82 | @asynccontextmanager |