mirror of
https://github.com/home-assistant/core.git
synced 2026-07-05 21:55:36 +01:00
d766aae436
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: frenck <195327+frenck@users.noreply.github.com>
34 lines
1012 B
Python
34 lines
1012 B
Python
"""Utility functions for the Todoist integration."""
|
|
|
|
from datetime import date, datetime
|
|
|
|
from todoist_api_python.models import Due
|
|
|
|
from homeassistant.util import dt as dt_util
|
|
|
|
|
|
def parse_due_date(task_due: Due | None) -> date | datetime | None:
|
|
"""Parse due date from Todoist task due object.
|
|
|
|
The due.date field contains either a date object (for date-only tasks)
|
|
or a datetime object (for tasks with a specific time). When deserialized
|
|
from the API via from_dict(), these are already proper Python date/datetime
|
|
objects.
|
|
|
|
Args:
|
|
task_due: The Due object from a Todoist task, or None.
|
|
|
|
Returns:
|
|
A date object for date-only due dates, a localized datetime for
|
|
datetime due dates, or None if no due date is set.
|
|
|
|
"""
|
|
if task_due is None or not (due_date := task_due.date):
|
|
return None
|
|
|
|
if isinstance(due_date, datetime):
|
|
return dt_util.as_local(due_date)
|
|
if isinstance(due_date, date):
|
|
return due_date
|
|
return None
|