From 18df9e288a95c88647ba9be8093c89ac68d1d9ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 2 Dec 2024 14:08:51 +0100 Subject: [PATCH 1/2] client: replaces __del__ with __exit__ method to properly define ctx manager --- src/pydase/client/client.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pydase/client/client.py b/src/pydase/client/client.py index 0fa860c..fdb4df9 100644 --- a/src/pydase/client/client.py +++ b/src/pydase/client/client.py @@ -3,6 +3,7 @@ import logging import sys import threading import urllib.parse +from types import TracebackType from typing import TYPE_CHECKING, Any, TypedDict, cast import socketio # type: ignore @@ -109,10 +110,14 @@ class Client: self.connect(block_until_connected=block_until_connected) def __enter__(self) -> Self: - self.connect(block_until_connected=True) return self - def __del__(self) -> None: + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None, + ) -> None: self.disconnect() def connect(self, block_until_connected: bool = True) -> None: From 27a832bbd1311898a4035de51c4cbf557ac0fbd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Mon, 2 Dec 2024 14:18:53 +0100 Subject: [PATCH 2/2] client: adds ctx manager tests --- tests/client/test_client.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/client/test_client.py b/tests/client/test_client.py index ae29443..40e7a80 100644 --- a/tests/client/test_client.py +++ b/tests/client/test_client.py @@ -149,3 +149,15 @@ def test_tab_completion(pydase_client: pydase.Client) -> None: "sub_service", ] ) + + +def test_context_manager(pydase_client: pydase.Client) -> None: + client = pydase.Client(url="ws://localhost:9999") + + assert client.proxy.connected + + with client: + client.proxy.my_property = 1337.01 + assert client.proxy.my_property == 1337.01 + + assert not client.proxy.connected