@@ -234,41 +234,42 @@ cdef class Unpacker(object):
234
234
(See also simplejson)
235
235
236
236
:param int max_buffer_size:
237
- Limits size of data waiting unpacked. 0 means system's INT_MAX (default).
237
+ Limits size of data waiting unpacked. 0 means system's INT_MAX.
238
+ The default value is 100*1024*1024 (100MiB).
238
239
Raises `BufferFull` exception when it is insufficient.
239
240
You should set this parameter when unpacking data from untrusted source.
240
241
241
242
:param int max_str_len:
242
243
Deprecated, use *max_buffer_size* instead.
243
- Limits max length of str. (default: max_buffer_size or 1024*1024 )
244
+ Limits max length of str. (default: max_buffer_size)
244
245
245
246
:param int max_bin_len:
246
247
Deprecated, use *max_buffer_size* instead.
247
- Limits max length of bin. (default: max_buffer_size or 1024*1024 )
248
+ Limits max length of bin. (default: max_buffer_size)
248
249
249
250
:param int max_array_len:
250
- Limits max length of array. (default: max_buffer_size or 128*1024 )
251
+ Limits max length of array. (default: max_buffer_size)
251
252
252
253
:param int max_map_len:
253
- Limits max length of map. (default: max_buffer_size//2 or 32*1024 )
254
+ Limits max length of map. (default: max_buffer_size//2)
254
255
255
256
:param int max_ext_len:
256
257
Deprecated, use *max_buffer_size* instead.
257
- Limits max size of ext type. (default: max_buffer_size or 1024*1024 )
258
+ Limits max size of ext type. (default: max_buffer_size)
258
259
259
260
:param str unicode_errors:
260
261
Error handler used for decoding str type. (default: `'strict'`)
261
262
262
263
263
264
Example of streaming deserialize from file-like object::
264
265
265
- unpacker = Unpacker(file_like, max_buffer_size=10*1024*1024 )
266
+ unpacker = Unpacker(file_like)
266
267
for o in unpacker:
267
268
process(o)
268
269
269
270
Example of streaming deserialize from socket::
270
271
271
- unpacker = Unpacker(max_buffer_size=10*1024*1024 )
272
+ unpacker = Unpacker()
272
273
while True:
273
274
buf = sock.recv(1024**2)
274
275
if not buf:
@@ -305,7 +306,7 @@ cdef class Unpacker(object):
305
306
def __init__ (self , file_like = None , *, Py_ssize_t read_size = 0 ,
306
307
bint use_list = True , bint raw = False , bint strict_map_key = True ,
307
308
object object_hook = None , object object_pairs_hook = None , object list_hook = None ,
308
- unicode_errors = None , Py_ssize_t max_buffer_size = 0 ,
309
+ unicode_errors = None , Py_ssize_t max_buffer_size = 100 * 1024 * 1024 ,
309
310
object ext_hook = ExtType,
310
311
Py_ssize_t max_str_len = - 1 ,
311
312
Py_ssize_t max_bin_len = - 1 ,
@@ -325,23 +326,24 @@ cdef class Unpacker(object):
325
326
if not PyCallable_Check(self .file_like_read):
326
327
raise TypeError (" `file_like.read` must be a callable." )
327
328
329
+ if not max_buffer_size:
330
+ max_buffer_size = INT_MAX
328
331
if max_str_len == - 1 :
329
- max_str_len = max_buffer_size or 1024 * 1024
332
+ max_str_len = max_buffer_size
330
333
if max_bin_len == - 1 :
331
- max_bin_len = max_buffer_size or 1024 * 1024
334
+ max_bin_len = max_buffer_size
332
335
if max_array_len == - 1 :
333
- max_array_len = max_buffer_size or 128 * 1024
336
+ max_array_len = max_buffer_size
334
337
if max_map_len == - 1 :
335
- max_map_len = max_buffer_size// 2 or 32 * 1024
338
+ max_map_len = max_buffer_size// 2
336
339
if max_ext_len == - 1 :
337
- max_ext_len = max_buffer_size or 1024 * 1024
340
+ max_ext_len = max_buffer_size
338
341
339
- if not max_buffer_size:
340
- max_buffer_size = INT_MAX
341
342
if read_size > max_buffer_size:
342
343
raise ValueError (" read_size should be less or equal to max_buffer_size" )
343
344
if not read_size:
344
345
read_size = min (max_buffer_size, 1024 ** 2 )
346
+
345
347
self .max_buffer_size = max_buffer_size
346
348
self .read_size = read_size
347
349
self .buf = < char * > PyMem_Malloc(read_size)
0 commit comments