<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def sendline(self, sendspec):
 		"""Sends line, handling background and newline directives. 		True means: 'all handled here ok' 		False means: you'll need to 'expect' the right thing from here. 		"""

		assert not sendspec.started, shutit_util.print_debug()
		shutit = self.shutit
		shutit.log('Sending in pexpect session (' + str(id(self)) + '): ' + str(sendspec.send), level=logging.DEBUG)
		if sendspec.expect:
			shutit.log('Expecting: ' + str(sendspec.expect), level=logging.DEBUG)
		else:
			shutit.log('Not expecting anything', level=logging.DEBUG)
		try:
			# Check there are no background commands running that have block_other_commands set iff
			# this sendspec says
			if self._check_blocked(sendspec) and sendspec.ignore_background != True:
				shutit.log('sendline: blocked', level=logging.DEBUG)
				return False
			# If this is marked as in the background, create a background object and run in the background.
			if sendspec.run_in_background:
				shutit.log('sendline: run_in_background', level=logging.DEBUG)
				# If this is marked as in the background, create a background object and run in the background after newlines sorted.
				shutit_background_command_object = self.login_stack.get_current_login_item().append_background_send(sendspec)
				# Makes no sense to check exit for a background command.
				sendspec.check_exit = False
			if sendspec.nonewline != True:
				sendspec.send += '\n'
				# sendspec has newline added now, so no need to keep marker
				sendspec.nonewline = True
			if sendspec.run_in_background:
				shutit_background_command_object.run_background_command()
				return True
			#shutit.log('sendline: actually sending: ' + sendspec.send, level=logging.DEBUG)
			self.pexpect_child.send(sendspec.send)
			return False
		except OSError:
			self.shutit.fail('Caught failure to send, assuming user has exited from pause point.')