Make a copy of the input for the run function and consume the input to free up the queue for more input. If all
        input is consumed, there is no need to overload this function. Input is provided as lists. To copy and consume
        input the following commands can be run:

        1. To consume all the input
        >>> copy['entity'] = input['entity'][:]
        >>> del input['entity'][:]

        2. To consume one item from the input (and pass it to run as a single item - not a list)
        >>> copy['entity'] = input['entity'].pop()

        3. To use an item but not consume it
        >>> copy['entity'] = input['entity'][0]

        :param input: input arguments
        :return: copy of the input arguments

def consume_input(self, input):
        """
        Make a copy of the input for the run function and consume the input to free up the queue for more input. If all
        input is consumed, there is no need to overload this function. Input is provided as lists. To copy and consume
        input the following commands can be run:

        1. To consume all the input
        >>> copy['entity'] = input['entity'][:]
        >>> del input['entity'][:]

        2. To consume one item from the input (and pass it to run as a single item - not a list)
        >>> copy['entity'] = input['entity'].pop()

        3. To use an item but not consume it
        >>> copy['entity'] = input['entity'][0]

        :param input: input arguments
        :return: copy of the input arguments
        """
        copy = {}
        for key in input:
            copy[key] = input[key][:]
            del input[key][:]
        return copy