@@ -348,8 +348,8 @@ cdef class HashTableNT:
348348 if value_type is None:
349349 raise ValueError("value_type must be specified (a namedtuple type corresponding to value_format ).")
350350 self.key_size = key_size
351- self.value_format = value_format
352- self.value_size = struct .calcsize( self .value_format)
351+ self.value_struct = struct .Struct( value_format)
352+ self.value_size = self .value_struct.size
353353 self.value_type = value_type
354354 self.inner = HashTable(key_size = self .key_size, value_size = self .value_size, capacity = capacity)
355355 _fill(self , items )
@@ -369,10 +369,10 @@ cdef class HashTableNT:
369369 value = self .value_type(* value)
370370 else :
371371 raise TypeError (f" Expected an instance of {self.value_type}, got {type(value)}" )
372- return struct . pack(self .value_format, * value)
372+ return self .value_struct. pack(* value)
373373
374374 def _to_namedtuple_value (self , binary_value: bytes ) -> Any:
375- unpacked_data = struct . unpack(self .value_format, binary_value)
375+ unpacked_data = self .value_struct. unpack(binary_value)
376376 return self.value_type(*unpacked_data )
377377
378378 def _set_raw(self , key: bytes , value: bytes ) -> None:
@@ -460,7 +460,7 @@ cdef class HashTableNT:
460460 meta = {
461461 ' key_size' : self .key_size,
462462 ' value_size' : self .value_size,
463- ' value_format' : self .value_format ,
463+ ' value_format' : self .value_struct.format ,
464464 ' value_type_name' : self .value_type.__name__ ,
465465 ' value_type_fields' : self .value_type._fields,
466466 ' capacity' : self .inner.capacity,
0 commit comments