from collections.abc import Coroutine import struct def _pack_int24(n): return struct.pack(" """ __slots__ = ('_pool', '_conn') def __init__(self, pool, conn): self._pool = pool self._conn = conn def __enter__(self): assert self._conn return self._conn def __exit__(self, exc_type, exc_val, exc_tb): try: self._pool.release(self._conn) finally: self._pool = None self._conn = None async def __aenter__(self): assert not self._conn self._conn = await self._pool.acquire() return self._conn async def __aexit__(self, exc_type, exc_val, exc_tb): try: await self._pool.release(self._conn) finally: self._pool = None self._conn = None