Steven D'Aprano, 03.07.2010 06:35:
On Sat, 3 Jul 2010 11:39:07 am Greg Ewing wrote:
Stefan Behnel wrote:
So, would it still be Python if it folded
1 + "1"
into
raise TypeError()
at compile time?
It would have to be
raise TypeError("Exactly the message that would have been
produced at run time")
Python doesn't make any guarantees about the message that exceptions
display, so I don't think you need to match the message, just the
exception. Anyone testing for specific exception messages is living in
a state of sin and shouldn't complain when their code stops working.
Yep, the Cython project keeps running into this all over the place. When we
reimplement CPython functionality for performance reasons, we make sure we
match the behaviour exactly, which usually means that we try to match the
exceptions and their messages as well. Since we use doctests for our test
suite, this means that we need to special case some Python versions in the
test suite to make sure we test our code as good as possible without
letting the tests break across CPython versions. This can be really tricky
at times.
The general trend seems to be that modified exception messages become more
exact and telling over time, so we tend to follow Python 3.x in our own
choice of error messages.
Stefan
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com