]> arthur.barton.de Git - bup.git/blobdiff - lib/bup/index.py
index.Writer.__del__: replace with context management
[bup.git] / lib / bup / index.py
index dd24d937064d9d1cb3296700d7745515b85b0ea0..b9a4013be032bfd75d68e350250a43d4b9571d85 100644 (file)
@@ -105,9 +105,12 @@ class MetaStoreWriter:
             self._file.close()
             self._file = None
 
-    def __del__(self):
-        # Be optimistic.
-        self.close()
+    def __enter__(self):
+        return self
+
+    def __exit__(self, type, value, traceback):
+        with pending_raise(value, rethrow=False):
+            self.close()
 
     def store(self, metadata):
         meta_encoded = metadata.encode(include_path=False)
@@ -436,8 +439,12 @@ class Reader:
                                                self.m[st.st_size - FOOTLEN
                                                       : st.st_size])[0]
 
-    def __del__(self):
-        self.close()
+    def __enter__(self):
+        return self
+
+    def __exit__(self, type, value, traceback):
+        with pending_raise(value, rethrow=False):
+            self.close()
 
     def __len__(self):
         return int(self.count)
@@ -530,8 +537,12 @@ class Writer:
         self.f = os.fdopen(ffd, 'wb', 65536)
         self.f.write(INDEX_HDR)
 
-    def __del__(self):
-        self.abort()
+    def __enter__(self):
+        return self
+
+    def __exit__(self, type, value, traceback):
+        with pending_raise(value, rethrow=False):
+            self.abort()
 
     def abort(self):
         f = self.f