fix: Return correct types for time utils

This commit is contained in:
Gavin D'souza 2022-02-02 19:46:09 +05:30
parent 2b4cb2e1c7
commit ad1fedf4a8

View file

@ -112,9 +112,9 @@ def get_timedelta(time: Optional[str] = None) -> Optional[datetime.timedelta]:
try:
t = parser.parse(time)
except ParserError as e:
if "day" in e.args[1]:
from frappe.utils import parse_timedelta
if "day" in e.args[1] or "hour must be in" in e.args[0]:
return parse_timedelta(time)
raise e
return datetime.timedelta(
hours=t.hour, minutes=t.minute, seconds=t.second, microseconds=t.microsecond
)
@ -329,17 +329,24 @@ def get_year_ending(date):
# last day of this month
return add_to_date(date, days=-1)
def get_time(time_str):
def get_time(time_str: str) -> datetime.time:
from dateutil import parser
from dateutil.parser import ParserError
if isinstance(time_str, datetime.datetime):
return time_str.time()
elif isinstance(time_str, datetime.time):
return time_str
else:
if isinstance(time_str, datetime.timedelta):
return format_timedelta(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
def get_datetime_str(datetime_obj):
if isinstance(datetime_obj, str):