@@ -221,7 +221,7 @@ def pack_array(self, array):
221
221
if is_complex :
222
222
array , imaginary = np .real (array ), np .imag (array )
223
223
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' )])
225
225
if dtype_list [type_id ] is None :
226
226
raise DataJointError ("Type %s is ambiguous or unknown" % array .dtype )
227
227
@@ -264,11 +264,13 @@ def read_sparse_array(self):
264
264
raise DataJointError ('datajoint-python does not yet support sparse arrays. Issue (#590)' )
265
265
266
266
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 )
268
268
269
269
@staticmethod
270
270
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 )
272
274
273
275
def read_bool (self ):
274
276
return bool (self .read_value ('bool' ))
@@ -309,7 +311,7 @@ def pack_string(s):
309
311
310
312
def read_bytes (self ):
311
313
return self .read_binary (self .read_value ())
312
-
314
+
313
315
@staticmethod
314
316
def pack_bytes (s ):
315
317
return b"\6 " + len_u64 (s ) + s
0 commit comments