On Thu, Feb 20, 2014 at 09:44:57PM +0100, spir wrote:
But I would like to be able to add an error type to assertions (in addition to the optional message). This is particularly useful for people (like me) who systematically check func inputs (for client debugging comfort), using assert's.
Then your code is systematically broken, and badly so. All anyone needs to do to disable your checking is pass -O to the Python interpreter. assert is not a short-cut for lazy programmers to avoid having to write an explicit "if cond: raise SomethingAppropriate(message)". Assertions have specific uses. You should read this post I made last November: https://mail.python.org/pipermail/python-list/2013-November/660401.html
It would be mainly ValueError and TypeError.
Example: assert x > 0, "x should be positive", ValueError
-1 Apart from the optimization-disables-asserts issue, this breaks the readers expectation for what assertions are used for and what they will do. Here, you are actually using an assert for a critical piece of error checking, but you are disguising it as a checked comment or piece of less critical defensive programming. -- Steven