python is becoming a weird language. we introduced type checking so we don't have to do these mental gymnastics. and yet as the article suggests, there are still reasons to do them.
The same issues come up in Java. It is not so clear if an exception you design should be checked or unchecked, if you should derive from IllegalArgumentException when appropriate, or just throw an IllegalArgumentException, etc.