docs: def expect_allow_interrupt(self,
  	                           shutit_pexpect_child,
  	                           expect,
  	                           timeout,
  	                           iteration_s=1):
  		"""This function allows you to interrupt the run at more or less any
  		point by breaking up the timeout into interactive chunks.
  		"""
  		shutit_global.shutit_global_object.yield_to_draw()
  		shutit_pexpect_session = self.get_shutit_pexpect_session_from_child(shutit_pexpect_child)
  		accum_timeout = 0
  		if isinstance(expect, str):
  			expect = [expect]
  		if timeout < 1:
  			timeout = 1
  		if iteration_s > timeout:
  			iteration_s = timeout - 1
  		if iteration_s < 1:
  			iteration_s = 1
  		timed_out = True
  		iteration_n = 0
  		while accum_timeout < timeout:
  			iteration_n+=1
  			res = shutit_pexpect_session.expect(expect, timeout=iteration_s, iteration_n=iteration_n)
  			if res == len(expect):
  				if self.build['ctrlc_stop']:
  					timed_out = False
  					self.build['ctrlc_stop'] = False
  					break
  				accum_timeout += iteration_s
  			else:
  				return res
  		if timed_out and not shutit_global.shutit_global_object.determine_interactive():
  			self.log('Command timed out, trying to get terminal back for you', level=logging.DEBUG)
  			self.fail('Timed out and could not recover') # pragma: no cover
  		else:
  			if shutit_global.shutit_global_object.determine_interactive():
  				shutit_pexpect_child.send('\x03')
  				res = shutit_pexpect_session.expect(expect,timeout=1)
  				if res == len(expect):
  					shutit_pexpect_child.send('\x1a')
  					res = shutit_pexpect_session.expect(expect,timeout=1)
  					if res == len(expect):
  						self.fail('CTRL-C sent by ShutIt following a timeout, and could not recover') # pragma: no cover
  				shutit_pexpect_session.pause_point('CTRL-C sent by ShutIt following a timeout; the command has been cancelled')
  				return res
  			else:
  				if timed_out:
  					self.fail('Timed out and interactive, but could not recover') # pragma: no cover
  				else:
  					self.fail('CTRL-C hit and could not recover') # pragma: no cover
  		self.fail('Should not get here (expect_allow_interrupt)') # pragma: no cover
  		return True