فهرست منبع

helpers: remove functions that are only used once

The read_msgpack and write_msgpack functions were only used in one place
each.  Since msgpack is read and written in lots of places, having
functions with these generic names is confusing. Also, the helpers
module is quite a mess, so reducing its size seems to be a good idea.
Jakob Schnitzer 10 سال پیش
والد
کامیت
17952dff48
2فایلهای تغییر یافته به همراه10 افزوده شده و 17 حذف شده
  1. 0 13
      borg/helpers.py
  2. 10 4
      borg/repository.py

+ 0 - 13
borg/helpers.py

@@ -697,19 +697,6 @@ def location_validator(archive=None):
     return validator
 
 
-def read_msgpack(filename):
-    with open(filename, 'rb') as fd:
-        return msgpack.unpack(fd)
-
-
-def write_msgpack(filename, d):
-    with open(filename + '.tmp', 'wb') as fd:
-        msgpack.pack(d, fd)
-        fd.flush()
-        os.fsync(fd.fileno())
-    os.rename(filename + '.tmp', filename)
-
-
 def decode_dict(d, keys, encoding='utf-8', errors='surrogateescape'):
     for key in keys:
         if isinstance(d.get(key), bytes):

+ 10 - 4
borg/repository.py

@@ -10,8 +10,8 @@ import shutil
 import struct
 from zlib import crc32
 
-from .helpers import Error, ErrorWithTraceback, IntegrityError, read_msgpack, write_msgpack, \
-                     unhexlify, ProgressIndicatorPercent
+import msgpack
+from .helpers import Error, ErrorWithTraceback, IntegrityError, unhexlify, ProgressIndicatorPercent
 from .hashindex import NSIndex
 from .locking import UpgradableLock, LockError, LockErrorT
 from .lrucache import LRUCache
@@ -189,7 +189,8 @@ class Repository:
         else:
             if do_cleanup:
                 self.io.cleanup(transaction_id)
-            hints = read_msgpack(os.path.join(self.path, 'hints.%d' % transaction_id))
+            with open(os.path.join(self.path, 'hints.%d' % transaction_id), 'rb') as fd:
+                hints = msgpack.unpack(fd)
             if hints[b'version'] != 1:
                 raise ValueError('Unknown hints file version: %d' % hints['version'])
             self.segments = hints[b'segments']
@@ -200,7 +201,12 @@ class Repository:
                  b'segments': self.segments,
                  b'compact': list(self.compact)}
         transaction_id = self.io.get_segments_transaction_id()
-        write_msgpack(os.path.join(self.path, 'hints.%d' % transaction_id), hints)
+        hints_file = os.path.join(self.path, 'hints.%d' % transaction_id)
+        with open(hints_file + '.tmp', 'wb') as fd:
+            msgpack.pack(hints, fd)
+            fd.flush()
+            os.fsync(fd.fileno())
+        os.rename(hints_file + '.tmp', hints_file)
         self.index.write(os.path.join(self.path, 'index.tmp'))
         os.rename(os.path.join(self.path, 'index.tmp'),
                   os.path.join(self.path, 'index.%d' % transaction_id))