<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_background_commands_complete(self):
 		"""Check whether any background commands are running or to be run. 		If none are, return True. If any are, return False. 		"""

		unstarted_command_exists  = False
		self.shutit_obj.log('In check_background_commands_complete: all background objects: ' + str(self.background_objects),level=logging.DEBUG)
		self.shutit_obj.log('Login id: ' + str(self.login_id),level=logging.DEBUG)
		for background_object in self.background_objects:
			self.shutit_obj.log('Background object send: ' + str(background_object.sendspec.send),level=logging.DEBUG)
		background_objects_to_remove = []
		def remove_background_objects(a_background_objects_to_remove):
			for background_object in a_background_objects_to_remove:
				self.background_objects.remove(background_object)
		for background_object in self.background_objects:
			self.shutit_obj.log('Checking background object: ' + str(background_object),level=logging.DEBUG)
			state = background_object.check_background_command_state()
			self.shutit_obj.log('State is: ' + state,level=logging.DEBUG)
			if state in ('C','F','T'):
				background_objects_to_remove.append(background_object)
				self.background_objects_completed.append(background_object)
			elif state == 'S':
				# Running command exists
				self.shutit_obj.log('check_background_command_state returning False (S) for ' + str(background_object),level=logging.DEBUG)
				remove_background_objects(background_objects_to_remove)
				return False, 'S', background_object
			elif state == 'N':
				self.shutit_obj.log('UNSTARTED COMMAND! ' + str(background_object.sendspec.send),level=logging.DEBUG)
				unstarted_command_exists = True
			else:
				remove_background_objects(background_objects_to_remove)
				assert False, shutit_util.print_debug(msg='Un-handled: ' + state)
			if state == 'F':
				self.shutit_obj.log('check_background_command_state returning False (F) for ' + str(background_object),level=logging.DEBUG)
				remove_background_objects(background_objects_to_remove)
				return False, 'F', background_object
		remove_background_objects(background_objects_to_remove)
		self.shutit_obj.log('Checking background objects done.',level=logging.DEBUG)
		if unstarted_command_exists:
			# Start up an unstarted one (in order), and return False
			for background_object in self.background_objects:
				state = background_object.check_background_command_state()
				if state == 'N':
					background_object.run_background_command()
					self.shutit_obj.log('check_background_command_state returning False (N) for ' + str(background_object),level=logging.DEBUG)
					return False, 'N', background_object
		# Nothing left to do - return True.
		self.shutit_obj.log('check_background_command_state returning True (OK)',level=logging.DEBUG)
		return True, 'OK', None