def _respond(self, request, response_message_id, workspace):
        payload_decoder = PayloadDecoder(request.payload)
        source_code = payload_decoder.get_next_string()
        line = payload_decoder.get_next_int()
        column = payload_decoder.get_next_int()

        suggestions = workspace.auto_complete(source_code, line, column)
        data_frame = pandas.DataFrame(suggestions)
        data_bytes = workspace.serializer.data_frame_to_bytes(data_frame)

        return AbstractRequestHandler._create_response(request, response_message_id,
                                                       response_payload=_create_byte_array_payload(data_bytes))
    def _respond(self, request, response_message_id, workspace):
        payload_decoder = PayloadDecoder(request.payload)
        name = payload_decoder.get_next_string()
        start = payload_decoder.get_next_int()
        end = payload_decoder.get_next_int()

        data_frame = workspace.get_variable(name)
        if type(data_frame) != pandas.core.frame.DataFrame:
            raise TypeError("Expected pandas.DataFrame, got: " + str(type(data_frame))
                            + "\nPlease make sure your output_table is a pandas.DataFrame.")
        data_frame_chunk = data_frame[start:end + 1]
        data_bytes = workspace.serializer.data_frame_to_bytes(data_frame_chunk, start)

        return AbstractRequestHandler._create_response(request, response_message_id,
                                                       response_payload=_create_byte_array_payload(data_bytes))