From e15c0e9aec6d02f53fb3d6938f3208c24bb7e2f1 Mon Sep 17 00:00:00 2001
From: Charles Villard <charles.villard@cea.fr>
Date: Thu, 30 Jan 2025 17:24:39 +0100
Subject: [PATCH] add: pybind: add filter using bitwise enum

---
 python_binding/graph/pybind_GraphView.cpp   |  1 +
 python_binding/operator/pybind_Operator.cpp | 12 +++++++-----
 python_binding/pybind_core.cpp              | 12 ++++++------
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/python_binding/graph/pybind_GraphView.cpp b/python_binding/graph/pybind_GraphView.cpp
index abb1a9eca..37576b695 100644
--- a/python_binding/graph/pybind_GraphView.cpp
+++ b/python_binding/graph/pybind_GraphView.cpp
@@ -50,6 +50,7 @@ void init_GraphView(py::module& m) {
           )mydelimiter")
 
           .def("get_input_nodes", &GraphView::inputNodes,
+          py::arg("filter") = Aidge::InputCategory::All,
           R"mydelimiter(
           Get set of input Nodes.
 
diff --git a/python_binding/operator/pybind_Operator.cpp b/python_binding/operator/pybind_Operator.cpp
index 18708adee..94b41f691 100644
--- a/python_binding/operator/pybind_Operator.cpp
+++ b/python_binding/operator/pybind_Operator.cpp
@@ -28,11 +28,13 @@ void init_Operator(py::module& m){
         .value("Data", OperatorType::Data)
         .value("Tensor", OperatorType::Tensor);
 
-    py::enum_<InputCategory>(m, "InputCategory")
-        .value("Data", InputCategory::Data)
-        .value("Param", InputCategory::Param)
-        .value("OptionalData", InputCategory::OptionalData)
-        .value("OptionalParam", InputCategory::OptionalParam);
+    py::enum_<Aidge::InputCategory>(m, "InputCategory", py::arithmetic())
+        .value("Optional", Aidge::InputCategory::Optional)
+        .value("Data", Aidge::InputCategory::Data)
+        .value("OptionalData", Aidge::InputCategory::OptionalData)
+        .value("Param", Aidge::InputCategory::Param)
+        .value("OptionalParam", Aidge::InputCategory::OptionalParam)
+        .value("All", Aidge::InputCategory::All);
 
     py::class_<Operator, std::shared_ptr<Operator>>(m, "Operator")
     .def("__repr__", &Operator::repr)
diff --git a/python_binding/pybind_core.cpp b/python_binding/pybind_core.cpp
index 7fef82847..ee10cc068 100644
--- a/python_binding/pybind_core.cpp
+++ b/python_binding/pybind_core.cpp
@@ -132,12 +132,6 @@ void init_Aidge(py::module& m) {
     init_Attributes(m);
     init_Spikegen(m);
 
-    init_Node(m);
-    init_GraphView(m);
-    init_OpArgs(m);
-    init_Connector(m);
-    init_SinglePassGraphMatching(m);
-
     init_OperatorImpl(m);
     init_Log(m);
     init_Operator(m);
@@ -146,6 +140,12 @@ void init_Aidge(py::module& m) {
     init_StaticAnalysis(m);
     init_DynamicAnalysis(m);
 
+    init_Node(m);
+    init_GraphView(m);
+    init_OpArgs(m);
+    init_Connector(m);
+    init_SinglePassGraphMatching(m);
+
     init_Abs(m);
     init_Add(m);
     init_And(m);
-- 
GitLab