def METHOD_NAME(self):
    """Indicate that a formerly enqueued task is complete.
    Used by queue consumers. For each get() used to fetch a task,
    a subsequent call to task_done() tells the queue that the processing
    on the task is complete.
    If a join() is currently blocking, it will resume when all items have
    been processed (meaning that a task_done() call was received for every
    item that had been put() into the queue).
    Raises ValueError if called more times than there were items placed in
    the queue.
    """
    if self._unfinished_tasks <= 0:
        raise ValueError('task_done() called too many times')
    self._unfinished_tasks -= 1
    if self._unfinished_tasks == 0:
        self._finished.set()