On 27 January 2014 10:55, Victor Stinner <victor.stinner@gmail.com> wrote:
2014-01-27 Antoine Pitrou <solipsis@pitrou.net>:
> On Mon, 27 Jan 2014 10:45:37 +0100
> Victor Stinner <victor.stinner@gmail.com> wrote:
>>
>> - Tulip #111: StreamReader.readexactly() now raises an
>> IncompleteReadError if the
>> end of stream is reached before we received enough bytes, instead of returning
>> less bytes than requested.
>
> Why not simply EOFError?

IncompleteReadError has two additionnal attributes:

- partial: "incomplete" received bytes
- expected: total number of expected bytes (n parameter of readexactly)

I prefer to use a different exception to ensure that these attributes
are present. I don't like having to check "hasattr(exc, ...)".

Before this change, readexactly(n) returned the partial received bytes
if the end of the stream was reached.

I had the same doubt.  Note also that IncompleteReadError is a subclass of EOFError, so you can catch EOFError if you like.
 

Victor



--
Gustavo J. A. M. Carneiro
Gambit Research LLC
"The universe is always one step beyond logic." -- Frank Herbert