raises an unhelpful error `TypeError: 'NoneType' object is not iterable` on bad string (e.g. "yay") with Python3,
`ValueError: unknown string format` in Python2.

so it should be caught and translated to the ValueError (also keeps backward compatibility)

```python
try:
    return dateutil.parser.parse(string)
except (TypeError, ValueError):
    raise ValueError('{0!r} is not a valid date'.format(string))
```