Format based on Keep a Changelog.
Parse API:
loads()- Parse markdown stringload()- Parse file, follows[text](file.md)linksTaskStore.check()- Raise on warningsFrontmatter- File-level metadata (timezone, locale) via YAML front matter
Mutation API:
update()- Update single task in-memorybatch_update()- Update multiple taskswrite_updates()- Write changes to filesREMOVEsentinel for field removal- Helper functions:
add_tags,remove_tags,add_assignees,remove_assignees
Task Features:
- States: open, done, cancelled, blocked
- Metadata: projects, tags, assignees, priority, duration
- Dates: due, created, started, done, planned, paused
- Custom fields via
key:valuesyntax - Subtask support via indentation
Recurrence:
- Simple patterns:
daily,weekly,monthly,yearly - Multiplied patterns:
2weeks,3days,2d,3w - Day of month:
15th,1st,31st(clamps to month end) - Nth weekday:
2nd-tuesday,last-friday,1st-monday - Natural language:
"every other week"(via recurrent library) - Auto-creates next occurrence when recurring task marked done
Inheritance:
- Heading inheritance (projects, tags, assignees, custom fields)
- Subtask inheritance from parent tasks
Types:
Task- Dict-like with attribute accessTaskStore- Iterable with warnings and frontmatterTaskChanges- Changes for mutationFrontmatter- File-level metadataUpdateResult,BatchUpdateResult,WriteResultStateMachine,StateTransition- Customizable state transitionsTaskState,UpdateStatus- Enums for states and update results
- Lark parser (Earley algorithm)
- Pendulum for timezone-aware date handling
- Recurrent for natural language recurrence parsing
- Explicit state machine with O(1) transition lookup
- 80% test coverage threshold
- Golden tests for parse and mutate
- Python 3.11+ required