|  | @@ -9,7 +9,7 @@ from celery.utils import uuid
 | 
	
		
			
				|  |  |  from celery.utils.compat import UserList
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -class TaskSet(UserList):
 | 
	
		
			
				|  |  | +class TaskSet(list):
 | 
	
		
			
				|  |  |      """A task containing several subtasks, making it possible
 | 
	
		
			
				|  |  |      to track how many, or when all of the tasks have been completed.
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -26,10 +26,10 @@ class TaskSet(UserList):
 | 
	
		
			
				|  |  |      app = None
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def __init__(self, tasks=None, app=None, Publisher=None):
 | 
	
		
			
				|  |  | +        super(TaskSet, self).__init__(maybe_subtask(t) for t in tasks or [])
 | 
	
		
			
				|  |  |          self.app = app_or_default(app or self.app)
 | 
	
		
			
				|  |  | -        self.data = [maybe_subtask(t) for t in tasks or []]
 | 
	
		
			
				|  |  | -        self.total = len(self.tasks)
 | 
	
		
			
				|  |  |          self.Publisher = Publisher or self.app.amqp.TaskProducer
 | 
	
		
			
				|  |  | +        self.total = len(self)  # XXX compat
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def apply_async(self, connection=None, connect_timeout=None,
 | 
	
		
			
				|  |  |              publisher=None, taskset_id=None):
 | 
	
	
		
			
				|  | @@ -52,7 +52,7 @@ class TaskSet(UserList):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _async_results(self, taskset_id, publisher):
 | 
	
		
			
				|  |  |          return [task.apply_async(taskset_id=taskset_id, publisher=publisher)
 | 
	
		
			
				|  |  | -                for task in self.tasks]
 | 
	
		
			
				|  |  | +                    for task in self]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def apply(self, taskset_id=None):
 | 
	
		
			
				|  |  |          """Applies the TaskSet locally by blocking until all tasks return."""
 | 
	
	
		
			
				|  | @@ -60,11 +60,11 @@ class TaskSet(UserList):
 | 
	
		
			
				|  |  |          return self.app.TaskSetResult(setid, self._sync_results(setid))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _sync_results(self, taskset_id):
 | 
	
		
			
				|  |  | -        return [task.apply(taskset_id=taskset_id) for task in self.tasks]
 | 
	
		
			
				|  |  | +        return [task.apply(taskset_id=taskset_id) for task in self]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _get_tasks(self):
 | 
	
		
			
				|  |  | -        return self.data
 | 
	
		
			
				|  |  | +        return self
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _set_tasks(self, tasks):
 | 
	
		
			
				|  |  | -        self.data = tasks
 | 
	
		
			
				|  |  | +        self[:] = tasks
 | 
	
		
			
				|  |  |      tasks = property(_get_tasks, _set_tasks)
 |