Fix `.boxed_type` facepalm, drop `.src_actor_uid`
The misname of `._boxed_type` as `._src_type` was only manifesting as a reallly strange boxing error with a packed exception-group, not sure how or why only that but it's fixed now XD Start refining/cleaning out stuff for sure we don't need (based on multiple local test runs): - discard `.src_actor_uid` fully since test set has been moved over to `.src_uid`; this means also removing the `.msgdata` insertion from `pack_error()`; a patch to all internals is coming next obvi! - don't pass `boxed_type` to `RemoteActorError.__init__()` from `unpack_error()` since it's now set directly via the `.msgdata["boxed_type_str"]`/`error_msg: dict` input , but in the case where **it is passed as an arg** (only for ctxc in `._rpc._invoke()` rn) make sure we only do the `.__init__()` insert when `boxed_type is not None`.mv_to_new_trio_py3.11
parent
5fb5682269
commit
78434f6317
|
@ -109,7 +109,6 @@ class RemoteActorError(Exception):
|
|||
|
||||
'''
|
||||
reprol_fields: list[str] = [
|
||||
# 'src_actor_uid',
|
||||
'src_uid',
|
||||
'relay_path',
|
||||
# 'relay_uid',
|
||||
|
@ -143,9 +142,6 @@ class RemoteActorError(Exception):
|
|||
# pre-`return` lines?
|
||||
# sanity on inceptions
|
||||
if boxed_type is RemoteActorError:
|
||||
if self.src_type_str == 'RemoteActorError':
|
||||
import pdbp; pdbp.set_trace()
|
||||
|
||||
assert self.src_type_str != 'RemoteActorError'
|
||||
assert self.src_uid not in self.relay_path
|
||||
|
||||
|
@ -158,7 +154,7 @@ class RemoteActorError(Exception):
|
|||
# should better emphasize that special (one off?) case
|
||||
# either by customizing `ContextCancelled.__init__()` or
|
||||
# through a special factor func?
|
||||
else:
|
||||
elif boxed_type:
|
||||
if not self.msgdata.get('boxed_type_str'):
|
||||
self.msgdata['boxed_type_str'] = str(
|
||||
type(boxed_type).__name__
|
||||
|
@ -206,7 +202,7 @@ class RemoteActorError(Exception):
|
|||
|
||||
'''
|
||||
if self._boxed_type is None:
|
||||
self._src_type = get_err_type(
|
||||
self._boxed_type = get_err_type(
|
||||
self.msgdata['boxed_type_str']
|
||||
)
|
||||
|
||||
|
@ -235,9 +231,6 @@ class RemoteActorError(Exception):
|
|||
def src_uid(self) -> tuple[str, str]|None:
|
||||
if src_uid := (
|
||||
self.msgdata.get('src_uid')
|
||||
# TODO: remove!
|
||||
or
|
||||
self.msgdata.get('src_actor_uid')
|
||||
):
|
||||
return tuple(src_uid)
|
||||
# TODO: use path lookup instead?
|
||||
|
@ -245,12 +238,6 @@ class RemoteActorError(Exception):
|
|||
# self.msgdata['relay_path'][0]
|
||||
# )
|
||||
|
||||
# TODO: deprecate this for ^!
|
||||
@property
|
||||
def src_actor_uid(self) -> tuple[str, str]|None:
|
||||
log.warning('.src_actor_uid` is deprecated, use `.src_uid` instead!')
|
||||
return self.src_uid
|
||||
|
||||
@property
|
||||
def tb_str(
|
||||
self,
|
||||
|
@ -517,7 +504,8 @@ def pack_error(
|
|||
# an onion/inception we need to pack
|
||||
if (
|
||||
type(exc) is RemoteActorError
|
||||
and exc.boxed_type != RemoteActorError
|
||||
and (boxed := exc.boxed_type)
|
||||
and boxed != RemoteActorError
|
||||
):
|
||||
# sanity on source error (if needed when tweaking this)
|
||||
assert (src_type := exc.src_type) != RemoteActorError
|
||||
|
@ -536,13 +524,6 @@ def pack_error(
|
|||
# the input `exc` type.
|
||||
error_msg['boxed_type_str'] = 'RemoteActorError'
|
||||
|
||||
# import pdbp; pdbp.set_trace()
|
||||
# log.debug(
|
||||
# 'INCEPTION packing!\n\n'
|
||||
# f'{pformat(exc.msgdata)}\n\n'
|
||||
# f'{exc}\n'
|
||||
# )
|
||||
|
||||
else:
|
||||
error_msg['src_uid'] = our_uid
|
||||
error_msg['src_type_str'] = type(exc).__name__
|
||||
|
@ -566,6 +547,7 @@ def unpack_error(
|
|||
|
||||
chan: Channel|None = None,
|
||||
box_type: RemoteActorError = RemoteActorError,
|
||||
|
||||
hide_tb: bool = True,
|
||||
|
||||
) -> None|Exception:
|
||||
|
@ -593,15 +575,15 @@ def unpack_error(
|
|||
+
|
||||
tb_str
|
||||
)
|
||||
boxed_type_str: str = (
|
||||
# TODO: deprecate this!
|
||||
error_dict.get('boxed_type_str')
|
||||
# or error_dict['boxed_type']
|
||||
)
|
||||
boxed_type: Type[BaseException] = Exception
|
||||
|
||||
# try to lookup a suitable error type from the local runtime
|
||||
# env then use it to construct a local instance.
|
||||
boxed_type_str: str = error_dict['boxed_type_str']
|
||||
boxed_type: Type[BaseException] = get_err_type(boxed_type_str)
|
||||
|
||||
if boxed_type_str == 'ContextCancelled':
|
||||
boxed_type = box_type = ContextCancelled
|
||||
box_type = ContextCancelled
|
||||
assert boxed_type is box_type
|
||||
|
||||
# TODO: already included by `_this_mod` in else loop right?
|
||||
#
|
||||
|
@ -609,19 +591,11 @@ def unpack_error(
|
|||
# we include the relay_path info and the
|
||||
# original source error.
|
||||
elif boxed_type_str == 'RemoteActorError':
|
||||
boxed_type = RemoteActorError
|
||||
assert boxed_type is RemoteActorError
|
||||
assert len(error_dict['relay_path']) >= 1
|
||||
|
||||
# try to lookup a suitable error type
|
||||
# from the local runtime env.
|
||||
else:
|
||||
boxed_type = get_err_type(boxed_type_str)
|
||||
|
||||
exc = box_type(
|
||||
message,
|
||||
boxed_type=boxed_type,
|
||||
|
||||
# unpack other fields into error type init
|
||||
**error_dict,
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue