clean tests
This commit is contained in:
@@ -2,6 +2,7 @@ from __future__ import annotations
|
||||
|
||||
from contextlib import contextmanager
|
||||
from contextvars import ContextVar
|
||||
import inspect
|
||||
from typing import Any, Callable
|
||||
|
||||
Callback = Callable[[str, Any], None]
|
||||
@@ -12,6 +13,15 @@ _callbacks_var: ContextVar[dict[str, Callback | None]] = ContextVar(
|
||||
)
|
||||
_node_id_var: ContextVar[str | None] = ContextVar("argonode_execution_node_id", default=None)
|
||||
|
||||
_LEGACY_CALLBACK_ATTRS = {
|
||||
"preview": "_broadcast_fn",
|
||||
"table": "_broadcast_table_fn",
|
||||
"mesh": "_broadcast_mesh_fn",
|
||||
"overlay": "_broadcast_overlay_fn",
|
||||
"value": "_broadcast_value_fn",
|
||||
"warning": "_broadcast_warning_fn",
|
||||
}
|
||||
|
||||
|
||||
@contextmanager
|
||||
def execution_callbacks(
|
||||
@@ -50,12 +60,42 @@ def current_node_id() -> str | None:
|
||||
return _node_id_var.get()
|
||||
|
||||
|
||||
def _legacy_emit(kind: str, payload: Any) -> bool:
|
||||
callback_attr = _LEGACY_CALLBACK_ATTRS.get(kind)
|
||||
if not callback_attr:
|
||||
return False
|
||||
|
||||
frame = inspect.currentframe()
|
||||
try:
|
||||
frame = frame.f_back
|
||||
while frame is not None:
|
||||
for owner_name in ("self", "cls"):
|
||||
owner = frame.f_locals.get(owner_name)
|
||||
if owner is None:
|
||||
continue
|
||||
|
||||
candidate = owner if isinstance(owner, type) else owner.__class__
|
||||
callback = getattr(candidate, callback_attr, None)
|
||||
node_id = getattr(candidate, "_current_node_id", None)
|
||||
if callback is not None and node_id:
|
||||
callback(str(node_id), payload)
|
||||
return True
|
||||
frame = frame.f_back
|
||||
finally:
|
||||
del frame
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def _emit(kind: str, payload: Any) -> None:
|
||||
callbacks = _callbacks_var.get()
|
||||
callback = callbacks.get(kind)
|
||||
node_id = current_node_id()
|
||||
if callback is not None and node_id:
|
||||
callback(node_id, payload)
|
||||
return
|
||||
|
||||
_legacy_emit(kind, payload)
|
||||
|
||||
|
||||
def emit_preview(payload: Any) -> None:
|
||||
|
||||
Reference in New Issue
Block a user