From: Daniele Varrazzo Date: Thu, 5 Oct 2023 00:57:08 +0000 (+0200) Subject: refactor(pool): add Worker/AWorker type aliases X-Git-Tag: pool-3.2.0~12^2~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=17d7b81f5573556edca1cecd9639c1efa4fed64d;p=thirdparty%2Fpsycopg.git refactor(pool): add Worker/AWorker type aliases With these we don't have direct dependencies on the asyncio and threading modules in the pool classes. --- diff --git a/psycopg_pool/psycopg_pool/_acompat.py b/psycopg_pool/psycopg_pool/_acompat.py index 5d630ad71..1e8a426df 100644 --- a/psycopg_pool/psycopg_pool/_acompat.py +++ b/psycopg_pool/psycopg_pool/_acompat.py @@ -14,6 +14,8 @@ import logging import threading from typing import Any, Callable, Coroutine, TypeVar +from typing_extensions import TypeAlias + logger = logging.getLogger("psycopg.pool") T = TypeVar("T") @@ -23,6 +25,9 @@ Condition = threading.Condition Lock = threading.RLock ALock = asyncio.Lock +Worker: TypeAlias = threading.Thread +AWorker: TypeAlias = asyncio.Task[None] + def current_thread_name() -> str: return threading.current_thread().name diff --git a/psycopg_pool/psycopg_pool/pool.py b/psycopg_pool/psycopg_pool/pool.py index 9159b85ca..2185a71fb 100644 --- a/psycopg_pool/psycopg_pool/pool.py +++ b/psycopg_pool/psycopg_pool/pool.py @@ -7,7 +7,6 @@ psycopg synchronous connection pool from __future__ import annotations import logging -import threading from abc import ABC, abstractmethod from time import monotonic from types import TracebackType @@ -26,7 +25,7 @@ from .base import ConnectionAttempt, BasePool from .sched import Scheduler from .errors import PoolClosed, PoolTimeout, TooManyRequests from ._compat import Deque -from ._acompat import Condition, Event, Lock, Queue, spawn, gather +from ._acompat import Condition, Event, Lock, Queue, Worker, spawn, gather from ._acompat import current_thread_name logger = logging.getLogger("psycopg.pool") @@ -116,8 +115,8 @@ class ConnectionPool(Generic[CT], BasePool): # to notify that the pool is full self._pool_full_event: Optional[Event] = None - self._sched_runner: Optional[threading.Thread] = None - self._workers: List[threading.Thread] = [] + self._sched_runner: Optional[Worker] = None + self._workers: List[Worker] = [] super().__init__( conninfo, diff --git a/psycopg_pool/psycopg_pool/pool_async.py b/psycopg_pool/psycopg_pool/pool_async.py index 87b0a3d50..c283196fc 100644 --- a/psycopg_pool/psycopg_pool/pool_async.py +++ b/psycopg_pool/psycopg_pool/pool_async.py @@ -13,7 +13,6 @@ from time import monotonic from types import TracebackType from typing import Any, AsyncIterator, cast, Generic from typing import Dict, List, Optional, overload, Sequence, Type, TypeVar -from asyncio import Task from weakref import ref from contextlib import asynccontextmanager @@ -26,7 +25,7 @@ from .abc import ACT, AsyncConnectionCB, AsyncConnectFailedCB from .base import ConnectionAttempt, BasePool from .errors import PoolClosed, PoolTimeout, TooManyRequests from ._compat import Deque -from ._acompat import ACondition, AEvent, ALock, AQueue, aspawn, agather +from ._acompat import ACondition, AEvent, ALock, AQueue, AWorker, aspawn, agather from ._acompat import current_task_name from .sched_async import AsyncScheduler @@ -118,8 +117,8 @@ class AsyncConnectionPool(Generic[ACT], BasePool): # to notify that the pool is full self._pool_full_event: Optional[AEvent] = None - self._sched_runner: Optional[Task[None]] = None - self._workers: List[Task[None]] = [] + self._sched_runner: Optional[AWorker] = None + self._workers: List[AWorker] = [] super().__init__( conninfo,