def METHOD_NAME(value: Any) -> Union[pendulum.DateTime, pendulum.Date, pendulum.Time]:
    # we use internal pendulum parse function. the generic function, for example, parses string "now" as now()
    # it also tries to parse ISO intervals but the code is very low quality
    # only iso dates are allowed
    dtv = None
    with contextlib.suppress(ValueError):
        dtv = parse_iso8601(value)
    # now try to parse a set of ISO like dates
    if not dtv:
        dtv = parse_datetime_common(value)
    if isinstance(dtv, datetime.time):
        return pendulum.time(dtv.hour, dtv.minute, dtv.second, dtv.microsecond)
    if isinstance(dtv, datetime.datetime):
        return pendulum.instance(dtv)
    return pendulum.date(dtv.year, dtv.month, dtv.day)