perf: faster time parsing (#32701)

Same as previous date and datetime improvement, this uses C parser
instead of python `parser`.
This commit is contained in:
Ankush Menat 2025-05-28 15:56:34 +05:30 committed by GitHub
parent 27b6171a05
commit 03713cfd80
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -640,12 +640,17 @@ def get_time(
return time_str
elif isinstance(time_str, datetime.timedelta):
return (datetime.datetime.min + time_str).time()
try:
return parser.parse(time_str).time()
except ParserError as e:
if "day" in e.args[1] or "hour must be in" in e.args[0]:
return (datetime.datetime.min + parse_timedelta(time_str)).time()
raise e
# PERF: Our DATE_FORMAT is same as ISO format.
return datetime.time.fromisoformat(time_str)
except ValueError:
try:
return parser.parse(time_str).time()
except ParserError as e:
if "day" in e.args[1] or "hour must be in" in e.args[0]:
return (datetime.datetime.min + parse_timedelta(time_str)).time()
raise e
def get_datetime_str(datetime_obj: DateTimeLikeObject) -> str: