@dispatch(_strtypes)
def discover(s):
    if not s:
        return null

    for f in string_coercions:
        try:
            return discover(f(s))
        except (__HOLE__, KeyError):
            pass

    # don't let dateutil parse things like sunday, monday etc into dates
    if s.isalpha() or s.isspace():
        return string

    try:
        d = dateparse(s)
    except (ValueError, OverflowError):  # OverflowError for stuff like 'INF...'
        pass
    else:
        return date_ if is_zero_time(d.time()) else datetime_

    return string
dataset/ETHPy150Open blaze/datashape/datashape/discovery.py/discover