from typing import List, Dict
import datetime
class Task:
def __init__(self, title: str, due_date: str, completed: bool = False):
self.title = title
self.due_date = datetime.datetime.strptime(due_date, "%Y-%m-%d")
self.completed = completed
def mark_complete(self):
self.completed = True
def __repr__(self):
status = "✓" if self.completed else "✗"
return f"[{status}] {self.title} (Due: {self.due_date.date()})"
class TaskManager:
def __init__(self):
self.tasks: List[Task] = []
def add_task(self, title: str, due_date: str):
self.tasks.append(Task(title, due_date))
def get_pending(self) -> List[Task]:
return [task for task in self.tasks if not task.completed]
def get_completed(self) -> List[Task]:
return [task for task in self.tasks if task.completed]
def show_all(self):
for task in self.tasks:
print(task)
if __name__ == "__main__":
manager = TaskManager()
manager.add_task("Finish Webflow CMS setup", "2025-09-10")
manager.add_task("Write Python demo code", "2025-09-12")
manager.add_task("Deploy project", "2025-09-20")
print("\n--- All Tasks ---")
manager.show_all()
print("\n--- Marking first task complete ---")
manager.tasks[0].mark_complete()
print("\n--- Pending Tasks ---")
print(manager.get_pending())
print("\n--- Completed Tasks ---")
print(manager.get_completed())