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

  1. Check 'task in pq.entry_finder' before calling, or use dict .get with a default
  2. Ensure the task is added via add_task before querying
  3. 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

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)