|  | @@ -954,7 +954,8 @@ class group(Signature):
 | 
											
												
													
														|  |                  yield task, task.freeze(group_id=group_id, root_id=root_id)
 |  |                  yield task, task.freeze(group_id=group_id, root_id=root_id)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def _apply_tasks(self, tasks, producer=None, app=None, p=None,
 |  |      def _apply_tasks(self, tasks, producer=None, app=None, p=None,
 | 
											
												
													
														|  | -                     add_to_parent=None, chord=None, **options):
 |  | 
 | 
											
												
													
														|  | 
 |  | +                     add_to_parent=None, chord=None,
 | 
											
												
													
														|  | 
 |  | +                     args=None, kwargs=None, **options):
 | 
											
												
													
														|  |          # pylint: disable=redefined-outer-name
 |  |          # pylint: disable=redefined-outer-name
 | 
											
												
													
														|  |          #   XXX chord is also a class in outer scope.
 |  |          #   XXX chord is also a class in outer scope.
 | 
											
												
													
														|  |          app = app or self.app
 |  |          app = app or self.app
 | 
											
										
											
												
													
														|  | @@ -962,6 +963,7 @@ class group(Signature):
 | 
											
												
													
														|  |              for sig, res in tasks:
 |  |              for sig, res in tasks:
 | 
											
												
													
														|  |                  sig.apply_async(producer=producer, add_to_parent=False,
 |  |                  sig.apply_async(producer=producer, add_to_parent=False,
 | 
											
												
													
														|  |                                  chord=sig.options.get('chord') or chord,
 |  |                                  chord=sig.options.get('chord') or chord,
 | 
											
												
													
														|  | 
 |  | +                                args=args, kwargs=kwargs,
 | 
											
												
													
														|  |                                  **options)
 |  |                                  **options)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |                  # adding callback to result, such that it will gradually
 |  |                  # adding callback to result, such that it will gradually
 | 
											
										
											
												
													
														|  | @@ -996,9 +998,10 @@ class group(Signature):
 | 
											
												
													
														|  |              return self.freeze()
 |  |              return self.freeze()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          options, group_id, root_id = self._freeze_gid(options)
 |  |          options, group_id, root_id = self._freeze_gid(options)
 | 
											
												
													
														|  | -        tasks = self._prepared(self.tasks, args, group_id, root_id, app)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        tasks = self._prepared(self.tasks, [], group_id, root_id, app)
 | 
											
												
													
														|  |          p = barrier()
 |  |          p = barrier()
 | 
											
												
													
														|  | -        results = list(self._apply_tasks(tasks, producer, app, p, **options))
 |  | 
 | 
											
												
													
														|  | 
 |  | +        results = list(self._apply_tasks(tasks, producer, app, p,
 | 
											
												
													
														|  | 
 |  | +                                         args=args, kwargs=kwargs, **options))
 | 
											
												
													
														|  |          result = self.app.GroupResult(group_id, results, ready_barrier=p)
 |  |          result = self.app.GroupResult(group_id, results, ready_barrier=p)
 | 
											
												
													
														|  |          p.finalize()
 |  |          p.finalize()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -1021,9 +1024,9 @@ class group(Signature):
 | 
											
												
													
														|  |          if not self.tasks:
 |  |          if not self.tasks:
 | 
											
												
													
														|  |              return self.freeze()  # empty group returns GroupResult
 |  |              return self.freeze()  # empty group returns GroupResult
 | 
											
												
													
														|  |          options, group_id, root_id = self._freeze_gid(options)
 |  |          options, group_id, root_id = self._freeze_gid(options)
 | 
											
												
													
														|  | -        tasks = self._prepared(self.tasks, args, group_id, root_id, app)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        tasks = self._prepared(self.tasks, [], group_id, root_id, app)
 | 
											
												
													
														|  |          return app.GroupResult(group_id, [
 |  |          return app.GroupResult(group_id, [
 | 
											
												
													
														|  | -            sig.apply(**options) for sig, _ in tasks
 |  | 
 | 
											
												
													
														|  | 
 |  | +            sig.apply(args=args, kwargs=kwargs, **options) for sig, _ in tasks
 | 
											
												
													
														|  |          ])
 |  |          ])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def set_immutable(self, immutable):
 |  |      def set_immutable(self, immutable):
 | 
											
										
											
												
													
														|  | @@ -1140,7 +1143,7 @@ class chord(Signature):
 | 
											
												
													
														|  |                   args=(), kwargs={}, app=None, **options):
 |  |                   args=(), kwargs={}, app=None, **options):
 | 
											
												
													
														|  |          Signature.__init__(
 |  |          Signature.__init__(
 | 
											
												
													
														|  |              self, task, args,
 |  |              self, task, args,
 | 
											
												
													
														|  | -            dict(kwargs, header=_maybe_group(header, app),
 |  | 
 | 
											
												
													
														|  | 
 |  | +            dict(kwargs=kwargs, header=_maybe_group(header, app),
 | 
											
												
													
														|  |                   body=maybe_signature(body, app=app)), app=app, **options
 |  |                   body=maybe_signature(body, app=app)), app=app, **options
 | 
											
												
													
														|  |          )
 |  |          )
 | 
											
												
													
														|  |          self.subtask_type = 'chord'
 |  |          self.subtask_type = 'chord'
 | 
											
										
											
												
													
														|  | @@ -1198,8 +1201,8 @@ class chord(Signature):
 | 
											
												
													
														|  |                      router=None, result_cls=None, **options):
 |  |                      router=None, result_cls=None, **options):
 | 
											
												
													
														|  |          args = (tuple(args) + tuple(self.args)
 |  |          args = (tuple(args) + tuple(self.args)
 | 
											
												
													
														|  |                  if args and not self.immutable else self.args)
 |  |                  if args and not self.immutable else self.args)
 | 
											
												
													
														|  | -        body = kwargs.get('body') or self.kwargs['body']
 |  | 
 | 
											
												
													
														|  | -        kwargs = dict(self.kwargs, **kwargs)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        body = kwargs.pop('body', None) or self.kwargs['body']
 | 
											
												
													
														|  | 
 |  | +        kwargs = dict(self.kwargs['kwargs'], **kwargs)
 | 
											
												
													
														|  |          body = body.clone(**options)
 |  |          body = body.clone(**options)
 | 
											
												
													
														|  |          app = self._get_app(body)
 |  |          app = self._get_app(body)
 | 
											
												
													
														|  |          tasks = (self.tasks.clone() if isinstance(self.tasks, group)
 |  |          tasks = (self.tasks.clone() if isinstance(self.tasks, group)
 |