On Sat, Mar 30, 2002, Guido van Rossum wrote:
Interestingly enough, the exception message says "__nonzero__ should return an int" but really means "__nonzero__ must return an int".
You've been staring at standards too much, haven't you? The difference between MUST and SHOULD isn't as clear-cut as most standards people use them.
True, but I'd be happy if Python were to take a step in the formal direction here. I don't think we want to write standards-like documentation, of course, but adopting a bit more precision couldn't hurt and might help.