From 23acd0f4cbba05d11239fb3c769a1cb017baf4a1 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sun, 30 Mar 2025 21:21:10 -0400 Subject: [PATCH] Adjust imports to use new `UnwrappedAddress` For those mods where it's just a type-alias (name) import change. --- tractor/_discovery.py | 28 ++++++++++++++++------------ tractor/_entry.py | 8 ++++---- tractor/_spawn.py | 14 +++++++------- tractor/msg/types.py | 19 +++++++++++++------ 4 files changed, 40 insertions(+), 29 deletions(-) diff --git a/tractor/_discovery.py b/tractor/_discovery.py index 8973342f..d370eabb 100644 --- a/tractor/_discovery.py +++ b/tractor/_discovery.py @@ -31,7 +31,7 @@ from tractor.log import get_logger from .trionics import gather_contexts from .ipc import _connect_chan, Channel from ._addr import ( - AddressTypes, + UnwrappedAddress, Address, preferred_transport, wrap_address @@ -54,7 +54,9 @@ log = get_logger(__name__) @acm -async def get_registry(addr: AddressTypes | None = None) -> AsyncGenerator[ +async def get_registry( + addr: UnwrappedAddress|None = None, +) -> AsyncGenerator[ Portal | LocalPortal | None, None, ]: @@ -71,7 +73,9 @@ async def get_registry(addr: AddressTypes | None = None) -> AsyncGenerator[ # (likely a re-entrant call from the arbiter actor) yield LocalPortal( actor, - await Channel.from_addr(addr) + Channel(transport=None) + # ^XXX, we DO NOT actually provide nor connect an + # underlying transport since this is merely an API shim. ) else: # TODO: try to look pre-existing connection from @@ -135,10 +139,10 @@ def get_peer_by_name( @acm async def query_actor( name: str, - regaddr: AddressTypes|None = None, + regaddr: UnwrappedAddress|None = None, ) -> AsyncGenerator[ - AddressTypes|None, + UnwrappedAddress|None, None, ]: ''' @@ -168,7 +172,7 @@ async def query_actor( async with get_registry(regaddr) as reg_portal: # TODO: return portals to all available actors - for now # just the last one that registered - addr: AddressTypes = await reg_portal.run_from_ns( + addr: UnwrappedAddress = await reg_portal.run_from_ns( 'self', 'find_actor', name=name, @@ -178,7 +182,7 @@ async def query_actor( @acm async def maybe_open_portal( - addr: AddressTypes, + addr: UnwrappedAddress, name: str, ): async with query_actor( @@ -198,7 +202,7 @@ async def maybe_open_portal( @acm async def find_actor( name: str, - registry_addrs: list[AddressTypes]|None = None, + registry_addrs: list[UnwrappedAddress]|None = None, enable_transports: list[str] = [preferred_transport], only_first: bool = True, @@ -234,7 +238,7 @@ async def find_actor( ) maybe_portals: list[ - AsyncContextManager[AddressTypes] + AsyncContextManager[UnwrappedAddress] ] = list( maybe_open_portal( addr=addr, @@ -276,7 +280,7 @@ async def find_actor( @acm async def wait_for_actor( name: str, - registry_addr: AddressTypes | None = None, + registry_addr: UnwrappedAddress | None = None, ) -> AsyncGenerator[Portal, None]: ''' @@ -293,7 +297,7 @@ async def wait_for_actor( yield peer_portal return - regaddr: AddressTypes = ( + regaddr: UnwrappedAddress = ( registry_addr or actor.reg_addrs[0] @@ -310,7 +314,7 @@ async def wait_for_actor( # get latest registered addr by default? # TODO: offer multi-portal yields in multi-homed case? - addr: AddressTypes = addrs[-1] + addr: UnwrappedAddress = addrs[-1] async with _connect_chan(addr) as chan: async with open_portal(chan) as portal: diff --git a/tractor/_entry.py b/tractor/_entry.py index 1328aa45..0f6a91c7 100644 --- a/tractor/_entry.py +++ b/tractor/_entry.py @@ -37,7 +37,7 @@ from .log import ( from . import _state from .devx import _debug from .to_asyncio import run_as_asyncio_guest -from ._addr import AddressTypes +from ._addr import UnwrappedAddress from ._runtime import ( async_main, Actor, @@ -53,10 +53,10 @@ log = get_logger(__name__) def _mp_main( actor: Actor, - accept_addrs: list[AddressTypes], + accept_addrs: list[UnwrappedAddress], forkserver_info: tuple[Any, Any, Any, Any, Any], start_method: SpawnMethodKey, - parent_addr: AddressTypes | None = None, + parent_addr: UnwrappedAddress | None = None, infect_asyncio: bool = False, ) -> None: @@ -207,7 +207,7 @@ def nest_from_op( def _trio_main( actor: Actor, *, - parent_addr: AddressTypes | None = None, + parent_addr: UnwrappedAddress|None = None, infect_asyncio: bool = False, ) -> None: diff --git a/tractor/_spawn.py b/tractor/_spawn.py index d1eb7f37..db83ee57 100644 --- a/tractor/_spawn.py +++ b/tractor/_spawn.py @@ -46,7 +46,7 @@ from tractor._state import ( _runtime_vars, ) from tractor.log import get_logger -from tractor._addr import AddressTypes +from tractor._addr import UnwrappedAddress from tractor._portal import Portal from tractor._runtime import Actor from tractor._entry import _mp_main @@ -393,8 +393,8 @@ async def new_proc( errors: dict[tuple[str, str], Exception], # passed through to actor main - bind_addrs: list[AddressTypes], - parent_addr: AddressTypes, + bind_addrs: list[UnwrappedAddress], + parent_addr: UnwrappedAddress, _runtime_vars: dict[str, Any], # serialized and sent to _child *, @@ -432,8 +432,8 @@ async def trio_proc( errors: dict[tuple[str, str], Exception], # passed through to actor main - bind_addrs: list[AddressTypes], - parent_addr: AddressTypes, + bind_addrs: list[UnwrappedAddress], + parent_addr: UnwrappedAddress, _runtime_vars: dict[str, Any], # serialized and sent to _child *, infect_asyncio: bool = False, @@ -639,8 +639,8 @@ async def mp_proc( subactor: Actor, errors: dict[tuple[str, str], Exception], # passed through to actor main - bind_addrs: list[AddressTypes], - parent_addr: AddressTypes, + bind_addrs: list[UnwrappedAddress], + parent_addr: UnwrappedAddress, _runtime_vars: dict[str, Any], # serialized and sent to _child *, infect_asyncio: bool = False, diff --git a/tractor/msg/types.py b/tractor/msg/types.py index 3e58ae3a..e082d950 100644 --- a/tractor/msg/types.py +++ b/tractor/msg/types.py @@ -31,6 +31,7 @@ from typing import ( Type, TypeVar, TypeAlias, + # TYPE_CHECKING, Union, ) @@ -47,7 +48,7 @@ from tractor.msg import ( pretty_struct, ) from tractor.log import get_logger -from tractor._addr import AddressTypes +from tractor._addr import UnwrappedAddress log = get_logger('tractor.msgspec') @@ -142,9 +143,15 @@ class Aid( ''' name: str uuid: str - # TODO: use built-in support for UUIDs? - # -[ ] `uuid.UUID` which has multi-protocol support - # https://jcristharif.com/msgspec/supported-types.html#uuid + + # TODO? can/should we extend this field set? + # -[ ] use built-in support for UUIDs? `uuid.UUID` which has + # multi-protocol support + # https://jcristharif.com/msgspec/supported-types.html#uuid + # + # -[ ] as per the `.ipc._uds` / `._addr` comments, maybe we + # should also include at least `.pid` (equiv to port for tcp) + # and/or host-part always? class SpawnSpec( @@ -168,8 +175,8 @@ class SpawnSpec( # TODO: not just sockaddr pairs? # -[ ] abstract into a `TransportAddr` type? - reg_addrs: list[AddressTypes] - bind_addrs: list[AddressTypes] + reg_addrs: list[UnwrappedAddress] + bind_addrs: list[UnwrappedAddress]|None # TODO: caps based RPC support in the payload?