@@ -267,13 +267,13 @@ def unpack(object stream, object object_hook=None, object list_hook=None,
267267cdef class Unpacker(object ):
268268 """
269269 Streaming unpacker.
270- read_size is used like file_like.read(read_size)
271270
272271 `file_like` is a file-like object having `.read(n)` method.
273272 When `Unpacker` initialized with `file_like`, unpacker reads serialized data
274273 from it and `.feed()` method is not usable.
275274
276- `read_size` is used as `file_like.read(read_size)`. (default: 1024**2)
275+ `read_size` is used as `file_like.read(read_size)`.
276+ (default: min(1024**2, max_buffer_size))
277277
278278 If `use_list` is true, msgpack list is deserialized to Python list.
279279 Otherwise, it is deserialized to Python tuple. (default: False)
@@ -329,7 +329,7 @@ cdef class Unpacker(object):
329329 free(self .buf)
330330 self .buf = NULL
331331
332- def __init__ (self , file_like = None , Py_ssize_t read_size = 1024 * 1024 , bint use_list = 0 ,
332+ def __init__ (self , file_like = None , Py_ssize_t read_size = 0 , bint use_list = 0 ,
333333 object object_hook = None , object list_hook = None ,
334334 encoding = None , unicode_errors = ' strict' , int max_buffer_size = 0 ):
335335 self .use_list = use_list
@@ -340,6 +340,8 @@ cdef class Unpacker(object):
340340 raise ValueError (" `file_like.read` must be a callable." )
341341 if not max_buffer_size:
342342 max_buffer_size = INT_MAX
343+ if not read_size:
344+ read_size = min (max_buffer_size, 1024 ** 2 )
343345 self .max_buffer_size = max_buffer_size
344346 if read_size > max_buffer_size:
345347 raise ValueError (" read_size should be less or equal to max_buffer_size" )
0 commit comments