I would still prefer the proposal that requires the errors to derive from AssertionError, since there *are* people that will use this for some sort of data validation. It's more likely because of Python's "easier to ask forgiveness than permission" idea; imagine someone "asserts" with a custom exception that some sort of input data is correct/safe. Then someone else uses the library in their website. With -O. If it's restricted to subclasses of AssertionError, then people will be less likely to use it for random error checking that *should* run in release mode.