Skip to content

Commit 2b10d06

Browse files
committed
Revert compact_dict in transformed update_task payloads
Keep compact_dict for simple pass-through payloads, but restore explicit field-by-field construction in update_task (sync/async) where values require date and datetime transformations.
1 parent c214844 commit 2b10d06

2 files changed

Lines changed: 64 additions & 44 deletions

File tree

todoist_api_python/api.py

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ def add_task_quick(
350350
)
351351
return Task.from_dict(task_data)
352352

353-
def update_task(
353+
def update_task( # noqa: PLR0912
354354
self,
355355
task_id: str,
356356
*,
@@ -396,27 +396,37 @@ def update_task(
396396
"""
397397
endpoint = get_api_url(f"{TASKS_PATH}/{task_id}")
398398

399-
data = compact_dict(
400-
content=content,
401-
description=description,
402-
labels=labels,
403-
priority=priority,
404-
due_string=due_string,
405-
due_lang=due_lang,
406-
due_date=format_date(due_date) if due_date is not None else None,
407-
due_datetime=(
408-
format_datetime(due_datetime) if due_datetime is not None else None
409-
),
410-
assignee_id=assignee_id,
411-
day_order=day_order,
412-
collapsed=collapsed,
413-
duration=duration,
414-
duration_unit=duration_unit,
415-
deadline_date=(
416-
format_date(deadline_date) if deadline_date is not None else None
417-
),
418-
deadline_lang=deadline_lang,
419-
)
399+
data: dict[str, Any] = {}
400+
if content is not None:
401+
data["content"] = content
402+
if description is not None:
403+
data["description"] = description
404+
if labels is not None:
405+
data["labels"] = labels
406+
if priority is not None:
407+
data["priority"] = priority
408+
if due_string is not None:
409+
data["due_string"] = due_string
410+
if due_lang is not None:
411+
data["due_lang"] = due_lang
412+
if due_date is not None:
413+
data["due_date"] = format_date(due_date)
414+
if due_datetime is not None:
415+
data["due_datetime"] = format_datetime(due_datetime)
416+
if assignee_id is not None:
417+
data["assignee_id"] = assignee_id
418+
if day_order is not None:
419+
data["day_order"] = day_order
420+
if collapsed is not None:
421+
data["collapsed"] = collapsed
422+
if duration is not None:
423+
data["duration"] = duration
424+
if duration_unit is not None:
425+
data["duration_unit"] = duration_unit
426+
if deadline_date is not None:
427+
data["deadline_date"] = format_date(deadline_date)
428+
if deadline_lang is not None:
429+
data["deadline_lang"] = deadline_lang
420430

421431
task_data: dict[str, Any] = post(
422432
self._client,

todoist_api_python/api_async.py

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ async def add_task_quick(
374374
)
375375
return Task.from_dict(task_data)
376376

377-
async def update_task(
377+
async def update_task( # noqa: PLR0912
378378
self,
379379
task_id: str,
380380
*,
@@ -420,27 +420,37 @@ async def update_task(
420420
"""
421421
endpoint = get_api_url(f"{TASKS_PATH}/{task_id}")
422422

423-
data = compact_dict(
424-
content=content,
425-
description=description,
426-
labels=labels,
427-
priority=priority,
428-
due_string=due_string,
429-
due_lang=due_lang,
430-
due_date=format_date(due_date) if due_date is not None else None,
431-
due_datetime=(
432-
format_datetime(due_datetime) if due_datetime is not None else None
433-
),
434-
assignee_id=assignee_id,
435-
day_order=day_order,
436-
collapsed=collapsed,
437-
duration=duration,
438-
duration_unit=duration_unit,
439-
deadline_date=(
440-
format_date(deadline_date) if deadline_date is not None else None
441-
),
442-
deadline_lang=deadline_lang,
443-
)
423+
data: dict[str, Any] = {}
424+
if content is not None:
425+
data["content"] = content
426+
if description is not None:
427+
data["description"] = description
428+
if labels is not None:
429+
data["labels"] = labels
430+
if priority is not None:
431+
data["priority"] = priority
432+
if due_string is not None:
433+
data["due_string"] = due_string
434+
if due_lang is not None:
435+
data["due_lang"] = due_lang
436+
if due_date is not None:
437+
data["due_date"] = format_date(due_date)
438+
if due_datetime is not None:
439+
data["due_datetime"] = format_datetime(due_datetime)
440+
if assignee_id is not None:
441+
data["assignee_id"] = assignee_id
442+
if day_order is not None:
443+
data["day_order"] = day_order
444+
if collapsed is not None:
445+
data["collapsed"] = collapsed
446+
if duration is not None:
447+
data["duration"] = duration
448+
if duration_unit is not None:
449+
data["duration_unit"] = duration_unit
450+
if deadline_date is not None:
451+
data["deadline_date"] = format_date(deadline_date)
452+
if deadline_lang is not None:
453+
data["deadline_lang"] = deadline_lang
444454

445455
task_data: dict[str, Any] = await post_async(
446456
self._client,

0 commit comments

Comments
 (0)