docs: def generateBatches(tasks, givens):
      """
      A function to generate a batch of commands to run in a specific order as to
      meet all the dependencies for each command. For example, the commands with
      no dependencies are run first, and the commands with the most deep
      dependencies are run last
      """
      _removeGivensFromTasks(tasks, givens)
  
      batches = []
      while tasks:
          batch = set()
          for task, dependencies in tasks.items():
              if not dependencies:
                  batch.add(task)
  
          if not batch:
              _batchErrorProcessing(tasks)
  
          for task in batch:
              del tasks[task]
  
          for task, dependencies in tasks.items():
              for item in batch:
                  if item in dependencies:
                      tasks[task].remove(item)
  
          batches.append(batch)
      return batches