From 4491e405c5609096bab7def810b19a5de9879ed2 Mon Sep 17 00:00:00 2001 From: Herman Snevajs Date: Fri, 28 Aug 2026 12:29:44 +0200 Subject: [PATCH 1/2] release geodifflib on shutdown() for macOS --- pygeodiff/geodifflib.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pygeodiff/geodifflib.py b/pygeodiff/geodifflib.py index 68fd7137..90311816 100644 --- a/pygeodiff/geodifflib.py +++ b/pygeodiff/geodifflib.py @@ -74,11 +74,16 @@ def __del__(self): self.shutdown() def shutdown(self): - if self.lib is not None: + lib = getattr(self, "lib", None) + if lib is not None: if platform.system() == "Windows": from _ctypes import FreeLibrary - FreeLibrary(self.lib._handle) + FreeLibrary(lib._handle) + else: + from _ctypes import dlclose + + dlclose(lib._handle) self.lib = None def _register_functions(self): From d3773aa82990ba0351cb8dd9d93281596336c166 Mon Sep 17 00:00:00 2001 From: Herman Snevajs Date: Thu, 10 Sep 2026 13:25:49 +0200 Subject: [PATCH 2/2] tidy up self.lib --- pygeodiff/geodifflib.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pygeodiff/geodifflib.py b/pygeodiff/geodifflib.py index 90311816..fc4d28a7 100644 --- a/pygeodiff/geodifflib.py +++ b/pygeodiff/geodifflib.py @@ -44,6 +44,7 @@ def __init__(self, name): If name is None, the environment variable GEODIFFLIB is used. If that is not set, it tries to import c-extension from wheel. """ + self.lib = None if name is None: name = os.getenv("GEODIFFLIB") if not name: @@ -74,16 +75,15 @@ def __del__(self): self.shutdown() def shutdown(self): - lib = getattr(self, "lib", None) - if lib is not None: + if self.lib is not None: if platform.system() == "Windows": from _ctypes import FreeLibrary - FreeLibrary(lib._handle) + FreeLibrary(self.lib._handle) else: from _ctypes import dlclose - dlclose(lib._handle) + dlclose(self.lib._handle) self.lib = None def _register_functions(self):