From fe3e51cb20e7dedacd8591af2af5730c19fdb60c Mon Sep 17 00:00:00 2001 From: Kostis Papazafeiropoulos Date: Wed, 7 Jan 2026 17:58:31 +0000 Subject: [PATCH] refactor: Remove custom resource cleanup Remove custom session handling for resource cleanup. Since nubificus/vaccel#193 introduced automatic resource unregistration upon release, there is no longer need for the bugprone extra bookkeeping/cleanup for registered resource sessions. PR: https://github.com/nubificus/vaccel-python/pull/31 Signed-off-by: Kostis Papazafeiropoulos Reviewed-by: Anastassios Nanos Approved-by: Anastassios Nanos --- tests/test_resource.py | 20 ++++++++++---------- vaccel/resource.py | 22 +--------------------- vaccel/session.py | 2 +- 3 files changed, 12 insertions(+), 32 deletions(-) diff --git a/tests/test_resource.py b/tests/test_resource.py index dd3b0d9..c26d0fc 100644 --- a/tests/test_resource.py +++ b/tests/test_resource.py @@ -62,7 +62,7 @@ def test_resource_register(test_lib): ses = Session() res.register(ses) - assert res.is_registered(ses) + assert ses.has_resource(res) def test_resource_unregister(test_buffer): @@ -71,7 +71,7 @@ def test_resource_unregister(test_buffer): res.register(ses) res.unregister(ses) - assert not res.is_registered(ses) + assert not ses.has_resource(res) def test_resource_register_unregister_multi(test_lib, test_buffer): @@ -81,23 +81,23 @@ def test_resource_register_unregister_multi(test_lib, test_buffer): ses_b = Session() res_a.register(ses_a) - assert res_a.is_registered(ses_a) + assert ses_a.has_resource(res_a) res_b.register(ses_a) - assert res_b.is_registered(ses_a) + assert ses_a.has_resource(res_b) res_a.register(ses_b) - assert res_a.is_registered(ses_b) + assert ses_b.has_resource(res_a) res_b.register(ses_b) - assert res_b.is_registered(ses_b) + assert ses_b.has_resource(res_b) res_a.sync(ses_a) res_a.sync(ses_b) res_a.unregister(ses_a) - assert not res_a.is_registered(ses_a) + assert not ses_a.has_resource(res_a) res_b.unregister(ses_a) - assert not res_b.is_registered(ses_a) + assert not ses_a.has_resource(res_b) res_a.unregister(ses_b) - assert not res_a.is_registered(ses_b) + assert not ses_b.has_resource(res_a) res_b.unregister(ses_b) - assert not res_b.is_registered(ses_b) + assert not ses_b.has_resource(res_b) diff --git a/vaccel/resource.py b/vaccel/resource.py index 78409fd..76343cb 100644 --- a/vaccel/resource.py +++ b/vaccel/resource.py @@ -66,7 +66,6 @@ def __init__( self._type = type_ self._c_data = None self._c_obj_ptr = ffi.NULL - self.__sessions = [] super().__init__() def _init_c_obj(self): @@ -119,7 +118,6 @@ def from_buffer( inst._c_data = CBytes(inst._data) inst._c_paths = None inst._c_obj_ptr = ffi.NULL - inst.__sessions = [] super().__init__(inst) return inst @@ -146,7 +144,6 @@ def from_numpy(cls, data: "np.ndarray") -> "Resource": inst._c_data = CNumpyArray(inst._data) inst._c_paths = None inst._c_obj_ptr = ffi.NULL - inst.__sessions = [] super().__init__(inst) return inst @@ -172,13 +169,9 @@ def _del_c_obj(self): def __del__(self): try: - if self.id < 0: + if self.id <= 0: return - for session in self.__sessions: - if not session: - continue - self.unregister(session) self._del_c_obj() except NullPointerError: pass @@ -203,17 +196,6 @@ def remote_id(self) -> int: """ return int(self._c_ptr_or_raise.remote_id) - def is_registered(self, session: "Session") -> bool: - """Checks if the resource is registered with the session. - - Args: - session: The session to check for registration. - - Returns: - True if the resource is registered with the session. - """ - return session in self.__sessions - def register(self, session: "Session") -> None: """Registers the resource with a session. @@ -233,7 +215,6 @@ def register(self, session: "Session") -> None: f"Could not register resource {self.id} " f"with session {session.id}", ) - self.__sessions.append(session) def unregister(self, session: "Session") -> None: """Unregisters the resource from a session. @@ -254,7 +235,6 @@ def unregister(self, session: "Session") -> None: f"Could not unregister resource {self.id} " f"from session {session.id}", ) - self.__sessions.remove(session) def sync(self, session: "Session") -> None: """Synchronizes the resource data to reflect any remote changes. diff --git a/vaccel/session.py b/vaccel/session.py index c0f3927..04410b9 100644 --- a/vaccel/session.py +++ b/vaccel/session.py @@ -84,7 +84,7 @@ def _del_c_obj(self): def __del__(self): try: - if self.id < 0: + if self.id <= 0: return self._del_c_obj()