class_docstr: A queue, useful for coordinating producer and consumer coroutines.
  
  If maxsize is less than or equal to zero, the queue size is infinite. If it
  is an integer greater than 0, then "await put()" will block when the
  queue reaches maxsize, until an item is removed by get().
  
  Unlike the standard library Queue, you can reliably know this Queue's size
  with qsize(), since your single-threaded asyncio application won't be
  interrupted between calling qsize() and doing an operation on the Queue.
class_docstr_tok: ["A","queue",",","useful","for","coordinating","producer","and","consumer","coroutines",".","If","maxsize","is","less","than","or","equal","to","zero",",","the","queue","size","is","infinite",".","If","it","is","an","integer","greater","than","0",",","then","``","await","put","(",")","''","will","block","when","the","queue","reaches","maxsize",",","until","an","item","is","removed","by","get","(",")",".","Unlike","the","standard","library","Queue",",","you","can","reliably","know","this","Queue","'s","size","with","qsize","(",")",",","since","your","single-threaded","asyncio","application","wo","n't","be","interrupted","between","calling","qsize","(",")","and","doing","an","operation","on","the","Queue","."]
docstr: 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.
docstr_tok: ["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","."]
code: def task_done(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()
  
imports: import collections
  import heapq
  from types import GenericAlias
  from .None import locks
  from .None import mixins
label_desc: Use image node_id 15 for calling the Queue obj's underlying member method code with example usage: obj.task_done() without return types