44import base64
55import hashlib
66import re
7- from collections .abc import AsyncGenerator , Iterable
8- from typing import Any
7+ from typing import TYPE_CHECKING , Any
98
109from litestar .channels .backends .base import ChannelsBackend
1110
12- from sqlspec .extensions .events .channel import EventChannel
1311from sqlspec .utils .logging import get_logger
1412
13+ if TYPE_CHECKING :
14+ from collections .abc import AsyncGenerator , Iterable
15+
16+ from sqlspec .extensions .events .channel import EventChannel
17+
1518logger = get_logger ("extensions.litestar.channels" )
1619
1720_IDENTIFIER_PATTERN = re .compile (r"^[A-Za-z_][A-Za-z0-9_]*$" )
@@ -42,11 +45,7 @@ class SQLSpecChannelsBackend(ChannelsBackend):
4245 )
4346
4447 def __init__ (
45- self ,
46- event_channel : "EventChannel" ,
47- * ,
48- channel_prefix : str = "litestar" ,
49- poll_interval : float = 0.2 ,
48+ self , event_channel : "EventChannel" , * , channel_prefix : str = "litestar" , poll_interval : float = 0.2
5049 ) -> None :
5150 if not _IDENTIFIER_PATTERN .match (channel_prefix ):
5251 msg = f"channel_prefix must be a valid identifier, got: { channel_prefix !r} "
@@ -57,9 +56,9 @@ def __init__(
5756 self ._event_channel = event_channel
5857 self ._channel_prefix = channel_prefix
5958 self ._poll_interval = poll_interval
60- self ._output_queue : " asyncio.Queue[tuple[str, bytes]] | None" = None
59+ self ._output_queue : asyncio .Queue [tuple [str , bytes ]] | None = None
6160 self ._shutdown = asyncio .Event ()
62- self ._tasks : dict [str , " asyncio.Task[None]" ] = {}
61+ self ._tasks : dict [str , asyncio .Task [None ]] = {}
6362 self ._to_db_channel : dict [str , str ] = {}
6463 self ._to_litestar_channel : dict [str , str ] = {}
6564
@@ -95,7 +94,7 @@ async def subscribe(self, channels: "Iterable[str]") -> None:
9594 self ._tasks [channel ] = task
9695
9796 async def unsubscribe (self , channels : "Iterable[str]" ) -> None :
98- cancelled : list [" asyncio.Task[None]" ] = []
97+ cancelled : list [asyncio .Task [None ]] = []
9998 for channel in channels :
10099 task = self ._tasks .pop (channel , None )
101100 if task is None :
0 commit comments