@@ -221,7 +221,7 @@ def pack_array(self, array):
221221 if is_complex :
222222 array , imaginary = np .real (array ), np .imag (array )
223223 type_id = (rev_class_id [array .dtype ] if array .dtype .char != 'U'
224- else rev_class_id [np .dtype ('O' )])
224+ else rev_class_id [np .dtype ('O' )])
225225 if dtype_list [type_id ] is None :
226226 raise DataJointError ("Type %s is ambiguous or unknown" % array .dtype )
227227
@@ -264,11 +264,13 @@ def read_sparse_array(self):
264264 raise DataJointError ('datajoint-python does not yet support sparse arrays. Issue (#590)' )
265265
266266 def read_int (self ):
267- return int .from_bytes (self .read_value ('int64' ), byteorder = 'little' , signed = True )
267+ return int .from_bytes (self .read_binary ( self . read_value ('uint16' ) ), byteorder = 'little' , signed = True )
268268
269269 @staticmethod
270270 def pack_int (v ):
271- return b"\x0a " + v .to_bytes (v .bit_length () // 8 + 1 , byteorder = 'little' , signed = True )
271+ n_bytes = v .bit_length () // 8 + 1
272+ assert n_bytes <= 0xFFFF , 'Integers are limited to 65535 bytes'
273+ return b"\x0a " + np .uint16 (n_bytes ).tobytes () + v .to_bytes (n_bytes , byteorder = 'little' , signed = True )
272274
273275 def read_bool (self ):
274276 return bool (self .read_value ('bool' ))
@@ -309,7 +311,7 @@ def pack_string(s):
309311
310312 def read_bytes (self ):
311313 return self .read_binary (self .read_value ())
312-
314+
313315 @staticmethod
314316 def pack_bytes (s ):
315317 return b"\6 " + len_u64 (s ) + s
0 commit comments