There is an indentation error in the definition for __str__/__repr__ in dateutil.parser.ParserError, which means that __repr__ is never even defined for the class:
>>> from dateutil.parser import ParserError
>>> ParserError("Hi")
dateutil.parser._parser.ParserError('Hi')
I think the definition of the repr is also a bit problematic, in that even if you fix the indentation issue, it would return ParserError(Hi) instead of ParserError('Hi') in the above situation. I will make a PR shortly.