|  | @@ -466,6 +466,9 @@ class chain(Signature):
 | 
	
		
			
				|  |  |      def from_dict(self, d, app=None):
 | 
	
		
			
				|  |  |          tasks = d['kwargs']['tasks']
 | 
	
		
			
				|  |  |          if d['args'] and tasks:
 | 
	
		
			
				|  |  | +            # make sure that tasks are made into signatures (Issue #2076)
 | 
	
		
			
				|  |  | +            if not isinstance(tasks[0], Signature):
 | 
	
		
			
				|  |  | +                tasks[0] = signature(tasks[0])
 | 
	
		
			
				|  |  |              # partial args passed on to first task in chain (Issue #1057).
 | 
	
		
			
				|  |  |              tasks[0]['args'] = tasks[0]._merge(d['args'])[0]
 | 
	
		
			
				|  |  |          return chain(*d['kwargs']['tasks'], app=app, **d['options'])
 | 
	
	
		
			
				|  | @@ -591,6 +594,9 @@ class group(Signature):
 | 
	
		
			
				|  |  |          if d['args'] and tasks:
 | 
	
		
			
				|  |  |              # partial args passed on to all tasks in the group (Issue #1057).
 | 
	
		
			
				|  |  |              for task in tasks:
 | 
	
		
			
				|  |  | +                # make sure that tasks are made into signatures (Issue #2076)
 | 
	
		
			
				|  |  | +                if not isinstance(tasks[0], Signature):
 | 
	
		
			
				|  |  | +                    task = signature(task)
 | 
	
		
			
				|  |  |                  task['args'] = task._merge(d['args'])[0]
 | 
	
		
			
				|  |  |          return group(tasks, app=app, **d['options'])
 | 
	
		
			
				|  |  |  
 |