IVGCVSW-5571 Expose the TfLite Delegate to the TfLite python API

 * Implemented external delegate adaptor interface for TfLite
 * Activated armnn logging for delegate
 * Added logging info to indicate if gpu tuning is turned on
 * Added pytests to ensure functionality of the external delegate adaptor
 * Included the delegate directory into doxygen
 * Added documentation on how to use the external delegate in python

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: Id3b4588fb0b9ac7e3f47ba2c19feead7beb58e18
diff --git a/delegate/python/test/utils.py b/delegate/python/test/utils.py
new file mode 100644
index 0000000..3adc24f
--- /dev/null
+++ b/delegate/python/test/utils.py
@@ -0,0 +1,24 @@
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+
+import tflite_runtime.interpreter as tflite
+import numpy as np
+import os
+
+
+def run_mock_model(delegate, test_data_folder):
+    model_path = os.path.join(test_data_folder, 'mock_model.tflite')
+    interpreter = tflite.Interpreter(model_path=model_path,
+                                     experimental_delegates=[delegate])
+    interpreter.allocate_tensors()
+
+    # Get input and output tensors.
+    input_details = interpreter.get_input_details()
+    output_details = interpreter.get_output_details()
+
+    # Test model on random input data.
+    input_shape = input_details[0]['shape']
+    input_data = np.array(np.random.random_sample(input_shape), dtype=np.uint8)
+    interpreter.set_tensor(input_details[0]['index'], input_data)
+
+    interpreter.invoke()
\ No newline at end of file