parameters: (self)
docstring: Pulls a next group of tasks to execute in :py:attr:`waflib.Runner.Parallel.outstanding`.
  		Ensures that all tasks in the current build group are complete before processing the next one.
docstring_summary: Pulls a next group of tasks to execute in :py:attr:`waflib.Runner.Parallel.outstanding`.
  		Ensures that all tasks in the current build group are complete before processing the next one.
docstring_tokens: Pulls a next group of tasks to execute in : py : attr : waflib . Runner . Parallel . outstanding . Ensures that all tasks in the current build group are complete before processing the next one .
function: def refill_task_list(self):
  		"""
  		Pulls a next group of tasks to execute in :py:attr:`waflib.Runner.Parallel.outstanding`.
  		Ensures that all tasks in the current build group are complete before processing the next one.
  		"""
  		while self.count > self.numjobs * GAP:
  			self.get_out()
  
  		while not self.outstanding:
  			if self.count:
  				self.get_out()
  				if self.outstanding:
  					break
  			elif self.postponed:
  				try:
  					cond = self.deadlock == self.processed
  				except AttributeError:
  					pass
  				else:
  					if cond:
  						# The most common reason is conflicting build order declaration
  						# for example: "X run_after Y" and "Y run_after X"
  						# Another can be changing "run_after" dependencies while the build is running
  						# for example: updating "tsk.run_after" in the "runnable_status" method
  						lst = []
  						for tsk in self.postponed:
  							deps = [id(x) for x in tsk.run_after if not x.hasrun]
  							lst.append('%s\t-> %r' % (repr(tsk), deps))
  							if not deps:
  								lst.append('\n  task %r dependencies are done, check its *runnable_status*?' % id(tsk))
  						raise Errors.WafError('Deadlock detected: check the task build order%s' % ''.join(lst))
  				self.deadlock = self.processed
  
  			if self.postponed:
  				self.outstanding.extend(self.postponed)
  				self.postponed.clear()
  			elif not self.count:
  				if self.incomplete:
  					for x in self.incomplete:
  						for k in x.run_after:
  							if not k.hasrun:
  								break
  						else:
  							# dependency added after the build started without updating revdeps
  							self.incomplete.remove(x)
  							self.outstanding.append(x)
  							break
  					else:
  						if self.stop or self.error:
  							break
  						raise Errors.WafError('Broken revdeps detected on %r' % self.incomplete)
  				else:
  					tasks = next(self.biter)
  					ready, waiting = self.prio_and_split(tasks)
  					self.outstanding.extend(ready)
  					self.incomplete.update(waiting)
  					self.total = self.bld.total()
  					break
function_tokens: def refill_task_list ( self ) : while self . count > self . numjobs * GAP : self . get_out ( ) while not self . outstanding : if self . count : self . get_out ( ) if self . outstanding : break elif self . postponed : try : cond = self . deadlock == self . processed except AttributeError : pass else : if cond : # The most common reason is conflicting build order declaration # for example: "X run_after Y" and "Y run_after X" # Another can be changing "run_after" dependencies while the build is running # for example: updating "tsk.run_after" in the "runnable_status" method lst = [ ] for tsk in self . postponed : deps = [ id ( x ) for x in tsk . run_after if not x . hasrun ] lst . append ( '%s\t-> %r' % ( repr ( tsk ) , deps ) ) if not deps : lst . append ( '\n  task %r dependencies are done, check its *runnable_status*?' % id ( tsk ) ) raise Errors . WafError ( 'Deadlock detected: check the task build order%s' % '' . join ( lst ) ) self . deadlock = self . processed if self . postponed : self . outstanding . extend ( self . postponed ) self . postponed . clear ( ) elif not self . count : if self . incomplete : for x in self . incomplete : for k in x . run_after : if not k . hasrun : break else : # dependency added after the build started without updating revdeps self . incomplete . remove ( x ) self . outstanding . append ( x ) break else : if self . stop or self . error : break raise Errors . WafError ( 'Broken revdeps detected on %r' % self . incomplete ) else : tasks = next ( self . biter ) ready , waiting = self . prio_and_split ( tasks ) self . outstanding . extend ( ready ) self . incomplete . update ( waiting ) self . total = self . bld . total ( ) break