#!/usr/bin/env python3 """example.py — Demonstrates core Python features for Doom Emacs workflow. Navigate: C-M-a/e (function boundaries), SPC s i (imenu), gd (definition) Format: SPC m f (ruff format), Run: SPC m r """ import argparse from dataclasses import dataclass, field @dataclass class Task: """A simple task with priority and tags.""" title: str priority: int = 0 tags: list[str] = field(default_factory=list) done: bool = False def mark_done(self) -> None: self.done = True def summary(self) -> str: status = "DONE" if self.done else "TODO" tag_str = ", ".join(self.tags) if self.tags else "none" return f"[{status}] {self.title} (p{self.priority}, tags: {tag_str})" def filter_tasks(tasks: list[Task], *, min_priority: int = 0) -> list[Task]: """Return undone tasks with priority >= min_priority.""" return [t for t in tasks if not t.done and t.priority >= min_priority] def load_tasks_from_file(path: str) -> list[Task]: """Load tasks from a simple text file (one title per line).""" tasks: list[Task] = [] try: with open(path, encoding="utf-8") as fh: for i, line in enumerate(fh): title = line.strip() if title: tasks.append(Task(title=title, priority=i % 3)) except FileNotFoundError: print(f"File not found: {path}, using demo tasks") tasks = [ Task("Write tests", priority=2, tags=["dev"]), Task("Update docs", priority=1, tags=["docs"]), Task("Deploy v2", priority=2, tags=["ops", "dev"]), ] return tasks def main() -> None: parser = argparse.ArgumentParser(description="Task manager demo") parser.add_argument("-f", "--file", default="tasks.txt", help="Task file") parser.add_argument("-p", "--priority", type=int, default=1, help="Min priority") args = parser.parse_args() tasks = load_tasks_from_file(args.file) tasks[0].mark_done() important = filter_tasks(tasks, min_priority=args.priority) print(f"Open tasks (priority >= {args.priority}):") for task in important: print(f" {task.summary()}") if __name__ == "__main__": main()