[Python-Dev] TypeError messages

Rob Cliffe rob.cliffe at btinternet.com
Sun Feb 22 01:02:43 CET 2015


On 21/02/2015 21:39, MRAB wrote:
> On 2015-02-21 17:14, Antoine Pitrou wrote:
>> On Fri, 20 Feb 2015 14:05:11 +0000
>> Brett Cannon <brett at python.org> wrote:
>>> On Thu Feb 19 2015 at 5:52:07 PM Serhiy Storchaka <storchaka at gmail.com>
>>> wrote:
>>>
>>> > Different patterns for TypeError messages are used in the stdlib:
>>> >
>>> >      expected X, Y found
>>> >      expected X, found Y
>>> >      expected X, but Y found
>>> >      expected X instance, Y found
>>> >      X expected, not Y
>>> >      expect X, not Y
>>> >      need X, Y found
>>> >      X is required, not Y
>>> >      Z must be X, not Y
>>> >      Z should be X, not Y
>>> >
>>> > and more.
>>> >
>>> > What the pattern is most preferable?
>>> >
>>>
>>> My preference is for "expected X, but found Y".
>>
>> If we are busy nitpicking, why are we saying "found Y"? Nothing was
>> *found* by the callee, it just *got* an argument.
>>
> Well, it depends on the reason for the message.
>
> If you're passing an argument, then 'found' is the wrong word, but if
> you're parsing, say, a regex, then 'got' is the wrong word.
>
>> So it should be "expected X, but got Y".
>>
>> Personally, I think the "but" is superfluous: the contradiction is
>> already implied, so "expected X, got Y" is terser and conveys the
>> meaning just as well.
>>
> If you wanted a message to cover both argument-passing and parsing,
> then "expected Y, not Y" would do.
Assuming you meant "expected Y, not X":
+1
Perhaps better than all other suggestions so far.



More information about the Python-Dev mailing list