Compare commits
5 Commits
e904af679b
...
84a888f381
Author | SHA1 | Date |
---|---|---|
|
84a888f381 | |
|
c1141c1f66 | |
|
bfa31f94c4 | |
|
8040ae6994 | |
|
08ac89b807 |
|
@ -46,6 +46,7 @@ dependencies = [
|
||||||
# typed IPC msging
|
# typed IPC msging
|
||||||
"msgspec>=0.19.0",
|
"msgspec>=0.19.0",
|
||||||
"cffi>=1.17.1",
|
"cffi>=1.17.1",
|
||||||
|
"bidict>=0.23.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
# ------ project ------
|
# ------ project ------
|
||||||
|
|
|
@ -50,8 +50,8 @@ if __name__ == "__main__":
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
subactor = Actor(
|
subactor = Actor(
|
||||||
args.uid[0],
|
name=args.uid[0],
|
||||||
uid=args.uid[1],
|
uuid=args.uid[1],
|
||||||
loglevel=args.loglevel,
|
loglevel=args.loglevel,
|
||||||
spawn_method="trio"
|
spawn_method="trio"
|
||||||
)
|
)
|
||||||
|
|
|
@ -107,6 +107,10 @@ class Portal:
|
||||||
# point.
|
# point.
|
||||||
self._expect_result_ctx: Context|None = None
|
self._expect_result_ctx: Context|None = None
|
||||||
self._streams: set[MsgStream] = set()
|
self._streams: set[MsgStream] = set()
|
||||||
|
|
||||||
|
# TODO, this should be PRIVATE (and never used publicly)! since it's just
|
||||||
|
# a cached ref to the local runtime instead of calling
|
||||||
|
# `current_actor()` everywhere.. XD
|
||||||
self.actor: Actor = current_actor()
|
self.actor: Actor = current_actor()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -504,8 +508,12 @@ class LocalPortal:
|
||||||
return it's result.
|
return it's result.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
obj = self.actor if ns == 'self' else importlib.import_module(ns)
|
obj = (
|
||||||
func = getattr(obj, func_name)
|
self.actor
|
||||||
|
if ns == 'self'
|
||||||
|
else importlib.import_module(ns)
|
||||||
|
)
|
||||||
|
func: Callable = getattr(obj, func_name)
|
||||||
return await func(**kwargs)
|
return await func(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -595,8 +595,17 @@ class MsgStream(trio.abc.Channel):
|
||||||
trio.ClosedResourceError,
|
trio.ClosedResourceError,
|
||||||
trio.BrokenResourceError,
|
trio.BrokenResourceError,
|
||||||
BrokenPipeError,
|
BrokenPipeError,
|
||||||
) as trans_err:
|
) as _trans_err:
|
||||||
if hide_tb:
|
trans_err = _trans_err
|
||||||
|
if (
|
||||||
|
hide_tb
|
||||||
|
and
|
||||||
|
self._ctx.chan._exc is trans_err
|
||||||
|
# ^XXX, IOW, only if the channel is marked errored
|
||||||
|
# for the same reason as whatever its underlying
|
||||||
|
# transport raised, do we keep the full low-level tb
|
||||||
|
# suppressed from the user.
|
||||||
|
):
|
||||||
raise type(trans_err)(
|
raise type(trans_err)(
|
||||||
*trans_err.args
|
*trans_err.args
|
||||||
) from trans_err
|
) from trans_err
|
||||||
|
|
|
@ -478,7 +478,6 @@ async def attach_to_ringbuf_stream(
|
||||||
yield trio.StapledStream(sender, receiver)
|
yield trio.StapledStream(sender, receiver)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class RingBuffBytesSender(trio.abc.SendChannel[bytes]):
|
class RingBuffBytesSender(trio.abc.SendChannel[bytes]):
|
||||||
'''
|
'''
|
||||||
In order to guarantee full messages are received, all bytes
|
In order to guarantee full messages are received, all bytes
|
||||||
|
@ -522,7 +521,6 @@ class RingBuffBytesSender(trio.abc.SendChannel[bytes]):
|
||||||
if self._batch_msg_len == self.batch_size:
|
if self._batch_msg_len == self.batch_size:
|
||||||
await self.flush()
|
await self.flush()
|
||||||
|
|
||||||
|
|
||||||
async def aclose(self) -> None:
|
async def aclose(self) -> None:
|
||||||
await self._sender.aclose()
|
await self._sender.aclose()
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,10 @@ if _USE_POSIX:
|
||||||
try:
|
try:
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpy.lib import recfunctions as rfn
|
from numpy.lib import recfunctions as rfn
|
||||||
import nptyping
|
# TODO ruff complains with,
|
||||||
|
# warning| F401: `nptyping` imported but unused; consider using
|
||||||
|
# `importlib.util.find_spec` to test for availability
|
||||||
|
import nptyping # noqa
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,10 @@ class MsgpackTransport(MsgTransport):
|
||||||
|
|
||||||
) -> None:
|
) -> None:
|
||||||
self.stream = stream
|
self.stream = stream
|
||||||
self._laddr, self._raddr = self.get_stream_addrs(stream)
|
(
|
||||||
|
self._laddr,
|
||||||
|
self._raddr,
|
||||||
|
) = self.get_stream_addrs(stream)
|
||||||
|
|
||||||
# create read loop instance
|
# create read loop instance
|
||||||
self._aiter_pkts = self._iter_packets()
|
self._aiter_pkts = self._iter_packets()
|
||||||
|
|
|
@ -76,7 +76,7 @@ def transport_from_stream(
|
||||||
'''
|
'''
|
||||||
transport = None
|
transport = None
|
||||||
if isinstance(stream, trio.SocketStream):
|
if isinstance(stream, trio.SocketStream):
|
||||||
sock = stream.socket
|
sock: socket.socket = stream.socket
|
||||||
match sock.family:
|
match sock.family:
|
||||||
case socket.AF_INET | socket.AF_INET6:
|
case socket.AF_INET | socket.AF_INET6:
|
||||||
transport = 'tcp'
|
transport = 'tcp'
|
||||||
|
|
11
uv.lock
11
uv.lock
|
@ -11,6 +11,15 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 },
|
{ url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bidict"
|
||||||
|
version = "0.23.1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/9a/6e/026678aa5a830e07cd9498a05d3e7e650a4f56a42f267a53d22bcda1bdc9/bidict-0.23.1.tar.gz", hash = "sha256:03069d763bc387bbd20e7d49914e75fc4132a41937fa3405417e1a5a2d006d71", size = 29093 }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/99/37/e8730c3587a65eb5645d4aba2d27aae48e8003614d6aaf15dda67f702f1f/bidict-0.23.1-py3-none-any.whl", hash = "sha256:5dae8d4d79b552a71cbabc7deb25dfe8ce710b17ff41711e13010ead2abfc3e5", size = 32764 },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cffi"
|
name = "cffi"
|
||||||
version = "1.17.1"
|
version = "1.17.1"
|
||||||
|
@ -349,6 +358,7 @@ name = "tractor"
|
||||||
version = "0.1.0a6.dev0"
|
version = "0.1.0a6.dev0"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
{ name = "bidict" },
|
||||||
{ name = "cffi" },
|
{ name = "cffi" },
|
||||||
{ name = "colorlog" },
|
{ name = "colorlog" },
|
||||||
{ name = "msgspec" },
|
{ name = "msgspec" },
|
||||||
|
@ -371,6 +381,7 @@ dev = [
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
requires-dist = [
|
requires-dist = [
|
||||||
|
{ name = "bidict", specifier = ">=0.23.1" },
|
||||||
{ name = "cffi", specifier = ">=1.17.1" },
|
{ name = "cffi", specifier = ">=1.17.1" },
|
||||||
{ name = "colorlog", specifier = ">=6.8.2,<7" },
|
{ name = "colorlog", specifier = ">=6.8.2,<7" },
|
||||||
{ name = "msgspec", specifier = ">=0.19.0" },
|
{ name = "msgspec", specifier = ">=0.19.0" },
|
||||||
|
|
Loading…
Reference in New Issue