From 63a41850b1499407e1ed3200b695cdf2d25d7136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jan=C3=9Fen?= Date: Fri, 28 Mar 2025 11:41:31 +0100 Subject: [PATCH] Improved error handling --- executorlib/backend/interactive_parallel.py | 2 +- executorlib/backend/interactive_serial.py | 2 +- executorlib/standalone/interactive/communication.py | 5 ++--- tests/test_backend_interactive_serial.py | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/executorlib/backend/interactive_parallel.py b/executorlib/backend/interactive_parallel.py index c1969c00..5ae2c320 100644 --- a/executorlib/backend/interactive_parallel.py +++ b/executorlib/backend/interactive_parallel.py @@ -80,7 +80,7 @@ def main() -> None: if mpi_rank_zero: interface_send( socket=socket, - result_dict={"error": error, "error_type": str(type(error))}, + result_dict={"error": error}, ) else: # Send output diff --git a/executorlib/backend/interactive_serial.py b/executorlib/backend/interactive_serial.py index 1bf957c1..34fb2288 100644 --- a/executorlib/backend/interactive_serial.py +++ b/executorlib/backend/interactive_serial.py @@ -56,7 +56,7 @@ def main(argument_lst: Optional[list[str]] = None): except Exception as error: interface_send( socket=socket, - result_dict={"error": error, "error_type": str(type(error))}, + result_dict={"error": error}, ) else: # Send output diff --git a/executorlib/standalone/interactive/communication.py b/executorlib/standalone/interactive/communication.py index 248405e4..aea013f6 100644 --- a/executorlib/standalone/interactive/communication.py +++ b/executorlib/standalone/interactive/communication.py @@ -47,8 +47,7 @@ def receive_dict(self) -> dict: if "result" in output: return output["result"] else: - error_type = output["error_type"].split("'")[1] - raise eval(error_type)(output["error"]) + raise output["error"] def send_and_receive_dict(self, input_dict: dict) -> dict: """ @@ -181,7 +180,7 @@ def interface_send(socket: Optional[zmq.Socket], result_dict: dict): Args: socket (zmq.Socket): socket for the connection - result_dict (dict): dictionary to be sent, supported keys are result, error and error_type. + result_dict (dict): dictionary to be sent, supported keys are result and error. """ if socket is not None: socket.send(cloudpickle.dumps(result_dict)) diff --git a/tests/test_backend_interactive_serial.py b/tests/test_backend_interactive_serial.py index 327800f3..6c9ee40d 100644 --- a/tests/test_backend_interactive_serial.py +++ b/tests/test_backend_interactive_serial.py @@ -52,7 +52,7 @@ def test_main_as_thread_error(self): t.start() submit_error(socket=socket) self.assertEqual( - cloudpickle.loads(socket.recv())["error_type"], "" + str(type(cloudpickle.loads(socket.recv())["error"])), "" ) self.assertEqual(cloudpickle.loads(socket.recv()), {"result": True}) socket.close() @@ -78,7 +78,7 @@ def test_submit_as_thread_error(self): t.start() main(argument_lst=["--zmqport", str(port)]) self.assertEqual( - cloudpickle.loads(socket.recv())["error_type"], "" + str(type(cloudpickle.loads(socket.recv())["error"])), "" ) self.assertEqual(cloudpickle.loads(socket.recv()), {"result": True}) socket.close()