Skip to content

Commit 0323c2f

Browse files
adapt to and require borghash 0.1.0
1 parent 0551150 commit 0323c2f

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ classifiers = [
3030
]
3131
license = {text="BSD"}
3232
dependencies = [
33-
"borghash ~= 0.0.1",
33+
"borghash ~= 0.1.0",
3434
"borgstore ~= 0.1.0",
3535
"msgpack >=1.0.3, <=1.1.0",
3636
"packaging",

src/borg/hashindex.pyx

+11-4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ class HTProxyMixin:
3535

3636

3737
ChunkIndexEntry = namedtuple('ChunkIndexEntry', 'flags size')
38+
ChunkIndexEntryFormatT = namedtuple('ChunkIndexEntryFormatT', 'flags size')
39+
ChunkIndexEntryFormat = ChunkIndexEntryFormatT(flags="I", size="I")
3840

3941

4042
class ChunkIndex(HTProxyMixin, MutableMapping):
@@ -57,7 +59,8 @@ class ChunkIndex(HTProxyMixin, MutableMapping):
5759
else:
5860
if usable is not None:
5961
capacity = usable * 2 # load factor 0.5
60-
self.ht = HashTableNT(key_size=32, value_format="<II", value_type=ChunkIndexEntry, capacity=capacity)
62+
self.ht = HashTableNT(key_size=32, value_type=ChunkIndexEntry, value_format=ChunkIndexEntryFormat,
63+
capacity=capacity)
6164

6265
def hide_system_flags(self, value):
6366
user_flags = value.flags & self.M_USER
@@ -130,17 +133,21 @@ class ChunkIndex(HTProxyMixin, MutableMapping):
130133

131134

132135
FuseVersionsIndexEntry = namedtuple('FuseVersionsIndexEntry', 'version hash')
136+
FuseVersionsIndexEntryFormatT = namedtuple('FuseVersionsIndexEntryFormatT', 'version hash')
137+
FuseVersionsIndexEntryFormat = FuseVersionsIndexEntryFormatT(version="I", hash="16s")
133138

134139

135140
class FuseVersionsIndex(HTProxyMixin, MutableMapping):
136141
"""
137142
Mapping from key128 to (file_version32, file_content_hash128) to support the FUSE versions view.
138143
"""
139144
def __init__(self):
140-
self.ht = HashTableNT(key_size=16, value_format="<I16s", value_type=FuseVersionsIndexEntry)
145+
self.ht = HashTableNT(key_size=16, value_type=FuseVersionsIndexEntry, value_format=FuseVersionsIndexEntryFormat)
141146

142147

143148
NSIndex1Entry = namedtuple('NSIndex1Entry', 'segment offset')
149+
NSIndex1EntryFormatT = namedtuple('NSIndex1EntryFormatT', 'segment offset')
150+
NSIndex1EntryFormat = NSIndex1EntryFormatT(segment="I", offset="I")
144151

145152

146153
class NSIndex1(HTProxyMixin, MutableMapping):
@@ -150,14 +157,14 @@ class NSIndex1(HTProxyMixin, MutableMapping):
150157
MAX_VALUE = 2**32 - 1 # borghash has the full uint32_t range
151158
MAGIC = b"BORG_IDX" # borg 1.x
152159
HEADER_FMT = "<8sIIBB" # magic, entries, buckets, ksize, vsize
153-
VALUE_FMT = "<II" # borg 1.x on-disk: little-endian segment, offset
154160
KEY_SIZE = 32
155161
VALUE_SIZE = 8
156162

157163
def __init__(self, capacity=1000, path=None, usable=None):
158164
if usable is not None:
159165
capacity = usable * 2 # load factor 0.5
160-
self.ht = HashTableNT(key_size=self.KEY_SIZE, value_format=self.VALUE_FMT, value_type=NSIndex1Entry, capacity=capacity)
166+
self.ht = HashTableNT(key_size=self.KEY_SIZE, value_type=NSIndex1Entry, value_format=NSIndex1EntryFormat,
167+
capacity=capacity)
161168
if path:
162169
self._read(path)
163170

0 commit comments

Comments
 (0)