[issue20856] bz2.peek always peeks all the remaining bytes ignoring n argument

2014-03-06 Thread Vajrasky Kok

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

2014-03-06 Thread Serhiy Storchaka

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

2014-03-06 Thread Vajrasky Kok

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

2014-03-06 Thread Serhiy Storchaka

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