From 3ea64436468acc4b5a95b71c92726f85d89dc081 Mon Sep 17 00:00:00 2001
From: Axel Farrugia <axel.farrugia@cea.fr>
Date: Fri, 21 Mar 2025 10:42:01 +0100
Subject: [PATCH] [Fix](Exports) labels are now generted once and optional
 inputs are ignored

---
 aidge_core/export_utils/generate_main.py | 35 ++++++++++++++----------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/aidge_core/export_utils/generate_main.py b/aidge_core/export_utils/generate_main.py
index b8aa14517..ae86116dc 100644
--- a/aidge_core/export_utils/generate_main.py
+++ b/aidge_core/export_utils/generate_main.py
@@ -32,30 +32,35 @@ def generate_main_cpp(export_folder: str, graph_view: aidge_core.GraphView, inpu
     gv_inputs: list[tuple[aidge_core.Node, int]] = graph_view.get_ordered_inputs()
     gv_outputs: list[tuple[aidge_core.Node, int]] = graph_view.get_ordered_outputs()
 
+    # Generate input file(s)
     for in_node, in_idx in gv_inputs:
         in_node_input, in_node_input_idx = in_node.input(in_idx)
         in_name = f"{in_node.name()}_input_{in_idx}" if in_node_input is None else f"{in_node_input.name()}_output_{in_node_input_idx}"
-        inputs_name.append(in_name)
         input_tensor = in_node.get_operator().get_input(in_idx)
-        if input_tensor is None or input_tensor.undefined() or not input_tensor.has_impl():
-            if inputs_tensor is not None:
-                aidge_core.Log.notice("No support for inputs_tensor argument yet.")
-                aidge_core.Log.notice(f"No input tensor set for {in_name}, main generated will not be functionnal after code generation.")
-            else:
-                aidge_core.Log.notice(f"No input tensor set for {in_name}, main generated will not be functionnal after code generation.")
+        # if input_tensor is None or input_tensor.undefined() or not input_tensor.has_impl():
+        #     if inputs_tensor is not None:
+        #         aidge_core.Log.notice("No support for inputs_tensor argument yet.")
+        #         aidge_core.Log.notice(f"No input tensor set for {in_name}, main generated will not be functionnal after code generation.")
+        #     else:
+        #         aidge_core.Log.notice(f"No input tensor set for {in_name}, main generated will not be functionnal after code generation.")
+
+        # Ignore optional inputs
+        if in_node.get_operator().input_category(in_idx) == aidge_core.InputCategory(2):
+             aidge_core.Log.notice(f"Ignoring optional input {in_name}.")
         else:
-            # Generate input file
+            inputs_name.append(in_name)
             generate_input_file(
                  export_folder=str(Path(export_folder) / "data"), 
                  array_name=in_name, 
                  tensor=input_tensor)
-        if labels is not None:
-             # Generate labels
-             generate_input_file(
-                  export_folder=str(Path(export_folder) / "data"),
-                  array_name="labels",
-                  tensor=labels
-             )
+    
+    # Generate labels file
+    if labels is not None:
+        generate_input_file(
+            export_folder=str(Path(export_folder) / "data"),
+            array_name="labels",
+            tensor=labels
+        )
 
     for out_node, out_id in gv_outputs:
         outputs_name.append(f"{out_node.name()}_output_{out_id}")
-- 
GitLab