Skip to content

Latest commit

 

History

History
219 lines (162 loc) · 4.15 KB

File metadata and controls

219 lines (162 loc) · 4.15 KB

Types

Task

Dict-like task with attribute access.

Dict Interface

task["title"]           # content fields
dict(task)              # all content fields
task.keys()             # content field names

Content Fields (dict + attr)

Field Type
state str
title str
priority str | None
due_date str | None
planned_date str | None
done_date str | None
estimate_minutes int | None
recurrence str | None
created_date str | None
started_date str | None
paused_date str | None
assignees list[str]
project_path str | None
tags list[str]
custom_fields dict[str, str]
subtasks list[Task]

Location Fields (attr only)

Field Type
file Path | None
line int | None
indent int

Provenance Fields (attr only)

Field Type
inherited_project_path str | None
explicit_project_path str | None
inherited_tags list[str]
explicit_tags list[str]
inherited_assignees list[str]
explicit_assignees list[str]
inherited_custom_fields dict[str, str]
explicit_custom_fields dict[str, str]

Methods

Method Description
to_dict() Serialize to dict
to_markdown() Serialize to markdown
to_markdown_line() Full line with indent
to_markdown_block() Task + subtasks
content_eq(other) Compare content only
content_hash() Hash for deduplication

TaskStore

Parse result. Iterable over tasks.

for task in store: ...
len(store)
store[0]
Field Type
tasks list[Task]
warnings list[Warning]
files dict[Path, FileInfo]
root_file Path | None
frontmatter Frontmatter | None
Property/Method Description
is_clean True if no warnings
check() Raise ParseError if warnings

TaskChanges

Changes to apply via update().

Field Type
state str | None | REMOVE
title str | None
priority str | None | REMOVE
due_date str | None | REMOVE
planned_date str | None | REMOVE
done_date str | None | REMOVE
estimate_minutes int | None | REMOVE
recurrence str | None | REMOVE
tags list[str] | None
assignees list[str] | None
custom_fields dict[str, str] | None
subtasks list[Task] | None

Notes:

  • None = no change
  • REMOVE = remove field
  • Lists replace entirely (use helpers to merge)

UpdateResult

Result of update().

Field Type
status UpdateStatus
task Task | None
rejected list[RejectedChange]
error str | None

UpdateStatus

Value Meaning
SUCCESS All changes applied
PARTIAL Some rejected
FAIL Task not found or ambiguous

BatchUpdateResult

Result of batch_update().

Field Type
total int
succeeded int
partial int
failed int
results list[UpdateResult]

WriteResult

Result of write_updates().

Field Type
files_modified list[Path]
tasks_updated int

REMOVE

Sentinel to remove field.

from taskmark import REMOVE
changes = TaskChanges(priority=REMOVE)

Warning

Parse warning.

Field Type
line int
message str
source_file str | None

FileInfo

File metadata.

Field Type
path Path
content str
lines list[str]
linked_from Path | None
link_line int | None

Frontmatter

File-level metadata from YAML front matter.

Field Type
timezone str | None
locale str | None

ParseError

Exception from check().