docs: def challenge(self,
  	              task_desc,
  	              expect=None,
  	              hints=None,
  	              congratulations='OK',
  	              failed='FAILED',
  	              expect_type='exact',
  	              challenge_type='command',
  	              shutit_pexpect_child=None,
  	              timeout=None,
  	              check_exit=None,
  	              fail_on_empty_before=True,
  	              record_command=True,
  	              exit_values=None,
  	              echo=True,
  	              escape=False,
  	              pause=1,
  	              loglevel=logging.DEBUG,
  	              follow_on_context=None,
  	              num_stages=None):
  		"""Set the user a task to complete, success being determined by matching the output.
  
  		Either pass in regexp(s) desired from the output as a string or a list, or an md5sum of the output wanted.
  
  		@param follow_on_context     On success, move to this context. A dict of information about that context.
  		                             context              = the type of context, eg docker, bash
  		                             ok_container_name    = if passed, send user to this container
  		                             reset_container_name = if resetting, send user to this container
  		@param challenge_type        Behaviour of challenge made to user
  		                             command = check for output of single command
  		                             golf    = user gets a pause point, and when leaving, command follow_on_context['check_command'] is run to check the output
  		"""
  		shutit_global.shutit_global_object.yield_to_draw()
  		shutit_pexpect_child = shutit_pexpect_child or self.get_current_shutit_pexpect_session().pexpect_child
  		shutit_pexpect_session = self.get_shutit_pexpect_session_from_child(shutit_pexpect_child)
  		return shutit_pexpect_session.challenge(self,
  		                                        task_desc=task_desc,
    		                                        expect=expect,
  		                                        hints=hints,
  		                                        congratulations=congratulations,
  		                                        failed=failed,
  		                                        expect_type=expect_type,
  		                                        challenge_type=challenge_type,
  		                                        timeout=timeout,
  		                                        check_exit=check_exit,
  		                                        fail_on_empty_before=fail_on_empty_before,
  		                                        record_command=record_command,
  		                                        exit_values=exit_values,
  		                                        echo=echo,
  		                                        escape=escape,
  		                                        pause=pause,
  		                                        loglevel=loglevel,
  		                                        follow_on_context=follow_on_context,
  		                                        num_stages=num_stages)