]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
refactor(pool): add Worker/AWorker type aliases
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 5 Oct 2023 00:57:08 +0000 (02:57 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 11 Oct 2023 21:45:39 +0000 (23:45 +0200)
With these we don't have direct dependencies on the asyncio and
threading modules in the pool classes.

psycopg_pool/psycopg_pool/_acompat.py
psycopg_pool/psycopg_pool/pool.py
psycopg_pool/psycopg_pool/pool_async.py

index 5d630ad71da674cc2902e59b45555dd75ae0b1c3..1e8a426df3a5d21ef67b1b5f62a81c4bbee94021 100644 (file)
@@ -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
index 9159b85ca9871bf2af1e5c2e738c29b3535954b7..2185a71fb1f4734421aaddeb002a46f5ccab5d53 100644 (file)
@@ -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,
index 87b0a3d50bd8b8078084d052477b7486240f9c52..c283196fcc9b7ee973121310adc020aa90653d60 100644 (file)
@@ -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,