11import asyncio
22import traceback
33import weakref
4- from typing import Callable , Generic , List , Optional , Protocol , Sequence , TypeVar , Union , cast , runtime_checkable
4+ from collections .abc import Callable , Sequence
5+ from typing import Generic , Protocol , TypeVar , cast , runtime_checkable
56
67ComponentT = TypeVar ("ComponentT" )
78ListenerT = TypeVar ("ListenerT" )
89
9- _EVENT_MANAGER : Optional [ "EventManager" ] = None
10+ _EVENT_MANAGER : "EventManager | None" = None
1011
1112
1213class EventManager :
@@ -61,13 +62,13 @@ class ListenerRegistry(Generic[ComponentT, ListenerT]):
6162 __slots__ = ("_listeners" ,)
6263
6364 def __init__ (self ) -> None :
64- self ._listeners : list [Union [ ListenerT , ListenerFactoryT ] ] = []
65+ self ._listeners : list [ListenerT | ListenerFactoryT ] = []
6566
6667 @property
67- def listeners (self ) -> list [Union [ ListenerT , ListenerFactoryT ] ]:
68+ def listeners (self ) -> list [ListenerT | ListenerFactoryT ]:
6869 return self ._listeners
6970
70- def register (self , listener : Union [ ListenerT , ListenerFactoryT ] ) -> None :
71+ def register (self , listener : ListenerT | ListenerFactoryT ) -> None :
7172 self ._listeners .append (listener )
7273
7374
@@ -87,17 +88,17 @@ class EventDispatcher(Generic[ComponentT, ListenerT]):
8788
8889 def __init__ (
8990 self ,
90- local_listeners : Optional [ Sequence [Union [ ListenerT , ListenerFactoryT ]]] = None ,
91- global_listener_registry : Optional [ ListenerRegistry ] = None ,
92- event_manager : Optional [ "EventManager" ] = None ,
91+ local_listeners : Sequence [ListenerT | ListenerFactoryT ] | None = None ,
92+ global_listener_registry : ListenerRegistry | None = None ,
93+ event_manager : "EventManager | None" = None ,
9394 ) -> None :
9495 self ._event_manager = event_manager if event_manager else _EVENT_MANAGER
9596
9697 self ._local_listeners = local_listeners or []
9798 self ._global_listener_registry = global_listener_registry
9899
99- self ._component : Optional [ ComponentT ] = None
100- self ._inited_listeners : Optional [ List [ ListenerT ]] = None
100+ self ._component : ComponentT | None = None
101+ self ._inited_listeners : list [ ListenerT ] | None = None
101102
102103 @property
103104 def as_listener (self ) -> ListenerT :
@@ -148,7 +149,7 @@ async def execute_listeners(self, event_handler_name: str, *args, **kwargs) -> N
148149
149150 await asyncio .gather (* listeners_to_wakeup )
150151
151- async def _get_or_init_listeners (self ) -> List [ListenerT ]:
152+ async def _get_or_init_listeners (self ) -> list [ListenerT ]:
152153 if self ._inited_listeners is not None :
153154 return self ._inited_listeners
154155
@@ -171,7 +172,7 @@ async def _get_or_init_listeners(self) -> List[ListenerT]:
171172 return self ._inited_listeners
172173
173174
174- def get_default_name (func : Optional [ Callable ] = None ) -> str :
175+ def get_default_name (func : Callable | None = None ) -> str :
175176 """
176177 Get the default name of the component based on code context where it's being used
177178 """
0 commit comments