diff --git a/saf-python-sdk/pyproject.toml b/saf-python-sdk/pyproject.toml index f9b43392f..5c3ffa3e8 100644 --- a/saf-python-sdk/pyproject.toml +++ b/saf-python-sdk/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "saf-python-sdk" -version = "0.1.1" +version = "0.1.2" description = "Standalone advanced graph runtime powered by Rust engine" readme = "README.md" requires-python = ">=3.10" diff --git a/saf-python-sdk/python/saf_python_sdk/advanced_graph/state.py b/saf-python-sdk/python/saf_python_sdk/advanced_graph/state.py index c8a6ed958..26440de99 100644 --- a/saf-python-sdk/python/saf_python_sdk/advanced_graph/state.py +++ b/saf-python-sdk/python/saf_python_sdk/advanced_graph/state.py @@ -350,14 +350,9 @@ class _GraphEngineRun: return event def _run_awaitable_in_worker(self, awaitable: Coroutine[Any, Any, Any]) -> Any: - loop = cast( - asyncio.AbstractEventLoop | None, - getattr(self._local, "worker_loop", None), - ) - if loop is None or loop.is_closed(): - loop = asyncio.new_event_loop() - self._local.worker_loop = loop - return loop.run_until_complete(awaitable) + # Create and close a dedicated loop per execution to avoid + # interpreter-shutdown warnings from lingering thread-local loops. + return asyncio.run(awaitable) def _normalize_result_to_sends(result: Any, *, default_input: Any) -> list[Send]: diff --git a/saf-python-sdk/python/saf_python_sdk/langgraph_rust_core.cpython-313-darwin.so b/saf-python-sdk/python/saf_python_sdk/langgraph_rust_core.cpython-313-darwin.so index 9e3fd37d3..dcdb42fc7 100755 Binary files a/saf-python-sdk/python/saf_python_sdk/langgraph_rust_core.cpython-313-darwin.so and b/saf-python-sdk/python/saf_python_sdk/langgraph_rust_core.cpython-313-darwin.so differ