[issue20856] bz2.peek always peeks all the remaining bytes ignoring n argument
New submission from Vajrasky Kok: # Bug demo TEXT_LINES = [ b'cutecat\n', b'promiscuousbonobo\n', ] TEXT = b''.join(TEXT_LINES) import bz2 filename = '/tmp/demo.bz2' with open(filename, 'wb') as f: f.write(bz2.compress(TEXT)) with bz2.BZ2File(filename) as bz2f: pdata = bz2f.peek(n=7) print(pdata) It outputs b'cutecat\npromiscuousbonobo\n', not b'cutecat'. Here is the patch to fix the bug. -- components: Library (Lib) files: use_n_argument_in_peek_bz2.patch keywords: patch messages: 212796 nosy: nadeem.vawda, vajrasky priority: normal severity: normal status: open title: bz2.peek always peeks all the remaining bytes ignoring n argument type: behavior versions: Python 3.4 Added file: http://bugs.python.org/file34291/use_n_argument_in_peek_bz2.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20856 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue20856] bz2.peek always peeks all the remaining bytes ignoring n argument
Serhiy Storchaka added the comment: This is documented behavior. .. method:: peek([n]) Return buffered data without advancing the file position. At least one byte of data will be returned (unless at EOF). The exact number of bytes returned is unspecified. -- nosy: +serhiy.storchaka resolution: - invalid stage: - committed/rejected status: open - closed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20856 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue20856] bz2.peek always peeks all the remaining bytes ignoring n argument
Vajrasky Kok added the comment: Just curious, why the exact number of bytes returned is unspecified in bz2 (in other words, n argument is ignored)? gzip uses n argument. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20856 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue20856] bz2.peek always peeks all the remaining bytes ignoring n argument
Serhiy Storchaka added the comment: Because it is unspecified in io.BufferedReader.peek() and in many classes implemented the io.BufferedReader interface. .. method:: peek([size]) Return bytes from the stream without advancing the position. At most one single read on the raw stream is done to satisfy the call. The number of bytes returned may be less or more than requested. I agree that this is weird, but this is a much larger issue than just bz2. We can't just fix this for bz2. This worths a discussion on Python-Dev. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20856 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com