Browse Source

fix: Return correct types for time utils

version-14
Gavin D'souza 3 years ago
parent
commit
ad1fedf4a8
1 changed files with 13 additions and 6 deletions
  1. +13
    -6
      frappe/utils/data.py

+ 13
- 6
frappe/utils/data.py View File

@@ -112,9 +112,9 @@ def get_timedelta(time: Optional[str] = None) -> Optional[datetime.timedelta]:
try: try:
t = parser.parse(time) t = parser.parse(time)
except ParserError as e: 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) return parse_timedelta(time)
raise e
return datetime.timedelta( return datetime.timedelta(
hours=t.hour, minutes=t.minute, seconds=t.second, microseconds=t.microsecond 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 # last day of this month
return add_to_date(date, days=-1) 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 import parser
from dateutil.parser import ParserError


if isinstance(time_str, datetime.datetime): if isinstance(time_str, datetime.datetime):
return time_str.time() return time_str.time()
elif isinstance(time_str, datetime.time): elif isinstance(time_str, datetime.time):
return time_str 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() 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): def get_datetime_str(datetime_obj):
if isinstance(datetime_obj, str): if isinstance(datetime_obj, str):


Loading…
Cancel
Save