The only slightly unusual things here are that location is passed to
ParseError and both bytes and an int (so this accepts both), and the message
passed ProgrammingError is immediately converted to str. Therefore it is
typed as AnyStr, because there are a couple of instances that are already
passed as str.
There are a couple of places where bytes are being passed to builtin exceptions
that might need to be converted to str.