From 6c8cacc9d1e1374772775f1aa715115f61e4d3d7 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Mon, 12 Dec 2022 13:18:22 -0500 Subject: [PATCH] Adjust all default is `None` annots (per new `mypy`) --- tractor/_discovery.py | 4 ++-- tractor/_entry.py | 4 ++-- tractor/_ipc.py | 2 +- tractor/_portal.py | 2 +- tractor/_runtime.py | 34 +++++++++++++++++++++++---------- tractor/_supervise.py | 16 ++++++++-------- tractor/experimental/_pubsub.py | 8 ++++---- tractor/log.py | 4 ++-- tractor/trionics/_mngrs.py | 2 +- 9 files changed, 45 insertions(+), 31 deletions(-) diff --git a/tractor/_discovery.py b/tractor/_discovery.py index 58aeb3e..b6957ba 100644 --- a/tractor/_discovery.py +++ b/tractor/_discovery.py @@ -108,7 +108,7 @@ async def query_actor( @acm async def find_actor( name: str, - arbiter_sockaddr: tuple[str, int] = None + arbiter_sockaddr: tuple[str, int] | None = None ) -> AsyncGenerator[Optional[Portal], None]: ''' @@ -134,7 +134,7 @@ async def find_actor( @acm async def wait_for_actor( name: str, - arbiter_sockaddr: tuple[str, int] = None + arbiter_sockaddr: tuple[str, int] | None = None ) -> AsyncGenerator[Portal, None]: """Wait on an actor to register with the arbiter. diff --git a/tractor/_entry.py b/tractor/_entry.py index 9e95fee..1e7997e 100644 --- a/tractor/_entry.py +++ b/tractor/_entry.py @@ -51,7 +51,7 @@ def _mp_main( accept_addr: tuple[str, int], forkserver_info: tuple[Any, Any, Any, Any, Any], start_method: SpawnMethodKey, - parent_addr: tuple[str, int] = None, + parent_addr: tuple[str, int] | None = None, infect_asyncio: bool = False, ) -> None: @@ -98,7 +98,7 @@ def _trio_main( actor: Actor, # type: ignore *, - parent_addr: tuple[str, int] = None, + parent_addr: tuple[str, int] | None = None, infect_asyncio: bool = False, ) -> None: diff --git a/tractor/_ipc.py b/tractor/_ipc.py index 0ed22bb..ebfd261 100644 --- a/tractor/_ipc.py +++ b/tractor/_ipc.py @@ -341,7 +341,7 @@ class Channel: async def connect( self, - destaddr: tuple[Any, ...] = None, + destaddr: tuple[Any, ...] | None = None, **kwargs ) -> MsgTransport: diff --git a/tractor/_portal.py b/tractor/_portal.py index bdba793..5546949 100644 --- a/tractor/_portal.py +++ b/tractor/_portal.py @@ -186,7 +186,7 @@ class Portal: async def cancel_actor( self, - timeout: float = None, + timeout: float | None = None, ) -> bool: ''' diff --git a/tractor/_runtime.py b/tractor/_runtime.py index 9f8fed0..12b1f82 100644 --- a/tractor/_runtime.py +++ b/tractor/_runtime.py @@ -423,8 +423,8 @@ class Actor: name: str, *, enable_modules: list[str] = [], - uid: str = None, - loglevel: str = None, + uid: str | None = None, + loglevel: str | None = None, arbiter_addr: Optional[tuple[str, int]] = None, spawn_method: Optional[str] = None ) -> None: @@ -980,7 +980,7 @@ class Actor: handler_nursery: trio.Nursery, *, # (host, port) to bind for channel server - accept_host: tuple[str, int] = None, + accept_host: tuple[str, int] | None = None, accept_port: int = 0, task_status: TaskStatus[trio.Nursery] = trio.TASK_STATUS_IGNORED, ) -> None: @@ -1648,17 +1648,28 @@ class Arbiter(Actor): ''' is_arbiter = True - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: self._registry: dict[ tuple[str, str], tuple[str, int], ] = {} - self._waiters = {} + self._waiters: dict[ + str, + # either an event to sync to receiving an actor uid (which + # is filled in once the actor has sucessfully registered), + # or that uid after registry is complete. + list[trio.Event | tuple[str, str]] + ] = {} super().__init__(*args, **kwargs) - async def find_actor(self, name: str) -> Optional[tuple[str, int]]: + async def find_actor( + self, + name: str, + + ) -> tuple[str, int] | None: + for uid, sockaddr in self._registry.items(): if name in uid: return sockaddr @@ -1693,7 +1704,8 @@ class Arbiter(Actor): registered. ''' - sockaddrs = [] + sockaddrs: list[tuple[str, int]] = [] + sockaddr: tuple[str, int] for (aname, _), sockaddr in self._registry.items(): if name == aname: @@ -1703,8 +1715,10 @@ class Arbiter(Actor): waiter = trio.Event() self._waiters.setdefault(name, []).append(waiter) await waiter.wait() + for uid in self._waiters[name]: - sockaddrs.append(self._registry[uid]) + if not isinstance(uid, trio.Event): + sockaddrs.append(self._registry[uid]) return sockaddrs @@ -1714,11 +1728,11 @@ class Arbiter(Actor): sockaddr: tuple[str, int] ) -> None: - uid = name, uuid = (str(uid[0]), str(uid[1])) + uid = name, _ = (str(uid[0]), str(uid[1])) self._registry[uid] = (str(sockaddr[0]), int(sockaddr[1])) # pop and signal all waiter events - events = self._waiters.pop(name, ()) + events = self._waiters.pop(name, []) self._waiters.setdefault(name, []).append(uid) for event in events: if isinstance(event, trio.Event): diff --git a/tractor/_supervise.py b/tractor/_supervise.py index a41cfd5..3085272 100644 --- a/tractor/_supervise.py +++ b/tractor/_supervise.py @@ -111,11 +111,11 @@ class ActorNursery: name: str, *, bind_addr: tuple[str, int] = _default_bind_addr, - rpc_module_paths: list[str] = None, - enable_modules: list[str] = None, - loglevel: str = None, # set log level per subactor - nursery: trio.Nursery = None, - debug_mode: Optional[bool] = None, + rpc_module_paths: list[str] | None = None, + enable_modules: list[str] | None = None, + loglevel: str | None = None, # set log level per subactor + nursery: trio.Nursery | None = None, + debug_mode: Optional[bool] | None = None, infect_asyncio: bool = False, ) -> Portal: ''' @@ -182,9 +182,9 @@ class ActorNursery: name: Optional[str] = None, bind_addr: tuple[str, int] = _default_bind_addr, - rpc_module_paths: Optional[list[str]] = None, - enable_modules: list[str] = None, - loglevel: str = None, # set log level per subactor + rpc_module_paths: list[str] | None = None, + enable_modules: list[str] | None = None, + loglevel: str | None = None, # set log level per subactor infect_asyncio: bool = False, **kwargs, # explicit args to ``fn`` diff --git a/tractor/experimental/_pubsub.py b/tractor/experimental/_pubsub.py index 0481f77..99117b0 100644 --- a/tractor/experimental/_pubsub.py +++ b/tractor/experimental/_pubsub.py @@ -48,7 +48,7 @@ log = get_logger('messaging') async def fan_out_to_ctxs( pub_async_gen_func: typing.Callable, # it's an async gen ... gd mypy topics2ctxs: dict[str, list], - packetizer: typing.Callable = None, + packetizer: typing.Callable | None = None, ) -> None: ''' Request and fan out quotes to each subscribed actor channel. @@ -144,7 +144,7 @@ _pubtask2lock: dict[str, trio.StrictFIFOLock] = {} def pub( - wrapped: typing.Callable = None, + wrapped: typing.Callable | None = None, *, tasks: set[str] = set(), ): @@ -249,8 +249,8 @@ def pub( topics: set[str], *args, # *, - task_name: str = None, # default: only one task allocated - packetizer: Callable = None, + task_name: str | None = None, # default: only one task allocated + packetizer: Callable | None = None, **kwargs, ): if task_name is None: diff --git a/tractor/log.py b/tractor/log.py index 4273c9b..342257f 100644 --- a/tractor/log.py +++ b/tractor/log.py @@ -172,7 +172,7 @@ class ActorContextInfo(Mapping): def get_logger( - name: str = None, + name: str | None = None, _root_name: str = _proj_name, ) -> StackLevelAdapter: @@ -207,7 +207,7 @@ def get_logger( def get_console_log( - level: str = None, + level: str | None = None, **kwargs, ) -> logging.LoggerAdapter: '''Get the package logger and enable a handler which writes to stderr. diff --git a/tractor/trionics/_mngrs.py b/tractor/trionics/_mngrs.py index b25c59a..9a7cf7f 100644 --- a/tractor/trionics/_mngrs.py +++ b/tractor/trionics/_mngrs.py @@ -47,7 +47,7 @@ T = TypeVar("T") @acm async def maybe_open_nursery( - nursery: trio.Nursery = None, + nursery: trio.Nursery | None = None, shield: bool = False, ) -> AsyncGenerator[trio.Nursery, Any]: '''