diff --git a/include/aidge/graph/GraphView.hpp b/include/aidge/graph/GraphView.hpp
index 0fe66e4b64e4113901db2bcd525e1895e642c6de..813301a144682ba3e99de31ae324ffaedcc5209f 100644
--- a/include/aidge/graph/GraphView.hpp
+++ b/include/aidge/graph/GraphView.hpp
@@ -96,7 +96,7 @@ public:
      * specified location.
      * @param path
      */
-    void save(std::string path, bool verbose = false) const;
+    void save(std::string path, bool verbose = false, bool showProducers = true) const;
 
     inline bool inView(NodePtr nodePtr) const {
         return mNodes.find(nodePtr) != mNodes.end();
diff --git a/python_binding/graph/pybind_GraphView.cpp b/python_binding/graph/pybind_GraphView.cpp
index 32151a66a46f7d7da73473c90effa760ebc93891..8e0da01c89767844040fcbc7b48e727800436daa 100644
--- a/python_binding/graph/pybind_GraphView.cpp
+++ b/python_binding/graph/pybind_GraphView.cpp
@@ -23,7 +23,7 @@ namespace Aidge {
 void init_GraphView(py::module& m) {
     py::class_<GraphView, std::shared_ptr<GraphView>>(m, "GraphView")
           .def(py::init<>())
-          .def("save", &GraphView::save, py::arg("path"), py::arg("verbose") = false,
+          .def("save", &GraphView::save, py::arg("path"), py::arg("verbose") = false, py::arg("show_producers") = true,
           R"mydelimiter(
           Save the GraphView as a Mermaid graph in a .md file at the specified location.
 
@@ -97,7 +97,7 @@ void init_GraphView(py::module& m) {
           .def("get_nodes", &GraphView::getNodes)
           .def("get_node", &GraphView::getNode, py::arg("node_name"))
           .def("forward_dims", &GraphView::forwardDims)
-          .def("compile", &GraphView::compile, py::arg("backend"), py::arg("datatype"))
+          .def("compile", &GraphView::compile, py::arg("backend"), py::arg("datatype"), py::arg("device") = 0)
           .def("__call__", &GraphView::operator(), py::arg("connectors"))
           .def("set_datatype", &GraphView::setDataType, py::arg("datatype"))
           .def("set_backend", &GraphView::setBackend, py::arg("backend"), py::arg("device") = 0)
diff --git a/src/graph/GraphView.cpp b/src/graph/GraphView.cpp
index c2439a459dcbe1b53d6aa31fd467ca3cd137aa23..968e98e75cc587977eb3033fe7f25936880755a4 100644
--- a/src/graph/GraphView.cpp
+++ b/src/graph/GraphView.cpp
@@ -55,7 +55,7 @@ std::string Aidge::GraphView::name() const { return mName; }
 void Aidge::GraphView::setName(const std::string &name) { mName = name; }
 
 
-void Aidge::GraphView::save(std::string path, bool verbose) const {
+void Aidge::GraphView::save(std::string path, bool verbose, bool showProducers) const {
     FILE *fp = std::fopen((path + ".mmd").c_str(), "w");
     std::fprintf(fp,
                 "%%%%{init: {'flowchart': { 'curve': 'monotoneY'}, "
@@ -68,7 +68,7 @@ void Aidge::GraphView::save(std::string path, bool verbose) const {
     for (const std::shared_ptr<Node> &node_ptr : mNodes) {
         const std::string currentType = node_ptr->type();
         if (typeCounter.find(currentType) == typeCounter.end())
-        typeCounter[currentType] = 0;
+            typeCounter[currentType] = 0;
         ++typeCounter[currentType];
 
         std::string givenName =
@@ -83,13 +83,18 @@ void Aidge::GraphView::save(std::string path, bool verbose) const {
                       givenName.c_str());
         }
         else {
-          std::fprintf(fp, "%s(%s)\n", namePtrTable[node_ptr].c_str(),
-                      givenName.c_str());
+            if ((currentType != "Producer") || showProducers) {
+                std::fprintf(fp, "%s(%s)\n", namePtrTable[node_ptr].c_str(),
+                            givenName.c_str());
+            }
         }
     }
 
     // Write every link
     for (const std::shared_ptr<Node> &node_ptr : mNodes) {
+      if ((node_ptr -> type() == "Producer") && !showProducers) {
+        continue;
+      }
       IOIndex_t outputIdx = 0;
       for (auto childs : node_ptr->getOrderedChildren()) {
         for (auto child : childs) {