mission-peace/interview · error · ValueError
task does not exist
Error message
task does not exist
What it means
get_task_priority looks up the task in entry_finder and returns its stored priority; if the task was never added or was already removed/popped it raises ValueError("task does not exist"). The priority queue only knows tasks tracked in its entry_finder dict.
Solutions
- Check 'task in pq.entry_finder' before calling, or use dict .get with a default
- Ensure the task is added via add_task before querying
- Catch ValueError around the call for optional lookups
Example fix
// before priority = pq.get_task_priority(task) // after priority = pq.entry_finder[task][0] if task in pq.entry_finder else None
Defensive patterns
Strategy: validation
Validate before calling
priority = pq.entry_finder[task][0] if task in pq.entry_finder else None
Type guard
def task_exists(pq, task):
return task in pq.entry_finder Try / catch
try:
priority = pq.get_task_priority(task)
except ValueError:
priority = None Prevention
- Only query priorities for tasks added via add_task and not yet popped
- Keep task keys canonical (same type/value) across add and lookup
- Use entry_finder membership checks instead of exception flow in hot paths
When it happens
Trigger: Calling get_task_priority(task) for a task not added via add_task, or one already removed via remove_task/pop_task.
Common situations: Querying a task after it was popped by a consumer, a typo'd or differently-typed task key (e.g. tuple vs string), or a stale reference held after queue processing.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
AI-assisted analysis of mission-peace/interview@94be5deb0c (2026-09-08).
Data as JSON: /api/errors/a94ccaa9bdbc99f2.
Report an issue: GitHub.
Appendix: source
Thrown at python/graph/priorityqueue.py:26
def __init__(self, is_min_heap):
self.pq = []
self.entry_finder = {}
if(is_min_heap is True):
self.mul = 1
else :
self.mul = -1
def contains_task(self, task):
if task in self.entry_finder:
return True
else:
return False
def get_task_priority(self, task):
if task in self.entry_finder:
return (self.entry_finder[task])[0]
raise ValueError("task does not exist")
def add_task(self, priority, task):
if task in self.entry_finder:
raise KeyError("Key already exists")
entry = [self.mul*priority, False, task]
self.entry_finder[task] = entry
heappush(self.pq, entry)
def change_task_priority(self, priority, task):
if task not in self.entry_finder:
raise KeyError("Task not found")
self.remove_task(task)
entry = [self.mul*priority, False, task]
self.entry_finder[task] = entry
heappush(self.pq, entry)
def remove_task(self, task):
entry = self.entry_finder.pop(task)View on GitHub (pinned to 94be5deb0c)