diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..24f053004efdbe56df554597f7309bb4b94975d8
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,30 @@
+exclude: tests/test_python-syntax_error.py
+repos:
+-   repo: https://github.com/pre-commit/mirrors-clang-format
+    rev: v13.0.1
+    hooks:
+    -   id: clang-format
+        args: [-i, --style=Google]
+-   repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: v4.1.0
+    hooks:
+    -   id: trailing-whitespace
+    -   id: check-added-large-files
+    -   id: check-ast
+    -   id: check-merge-conflict
+    -   id: check-symlinks
+    -   id: check-toml
+    -   id: check-yaml
+    -   id: debug-statements
+    -   id: detect-private-key
+    -   id: end-of-file-fixer
+    -   id: mixed-line-ending
+    -   id: trailing-whitespace
+-   repo: https://github.com/psf/black
+    rev: 22.3.0
+    hooks:
+    -   id: black
+-   repo: https://github.com/PyCQA/flake8
+    rev: 4.0.1
+    hooks:
+    -   id: flake8
diff --git a/README.md b/README.md
index b606dc6c8a120484ac1d14758b49624b7602a764..d69c893d06a4cd02ebbecc7b35bd0d49029c89c8 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,8 @@
 [![Building Status](https://travis-ci.org/stack-of-tasks/dynamic-graph-python.svg?branch=master)](https://travis-ci.org/stack-of-tasks/dynamic-graph-python)
 [![Pipeline status](https://gitlab.laas.fr/stack-of-tasks/dynamic-graph-python/badges/master/pipeline.svg)](https://gitlab.laas.fr/stack-of-tasks/dynamic-graph-python/commits/master)
 [![Coverage report](https://gitlab.laas.fr/stack-of-tasks/dynamic-graph-python/badges/master/coverage.svg?job=doc-coverage)](http://projects.laas.fr/stack-of-tasks/doc/stack-of-tasks/dynamic-graph-python/master/coverage/)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/stack-of-tasks/dynamic-graph-python/master.svg)](https://results.pre-commit.ci/latest/github/stack-of-tasks/dynamic-graph-python)
 
 Python bindings for dynamic-graph.
 
diff --git a/doc/footer.html b/doc/footer.html
index 904585fa7856683a051b27902c2c89e2fe4b8211..bc0dd7a64d3dc40321667b6916157c053d326eb9 100644
--- a/doc/footer.html
+++ b/doc/footer.html
@@ -8,4 +8,3 @@
  </center>
  </body>
  </head>
-
diff --git a/doc/header.html b/doc/header.html
index 13fe829043403836beaa8a1f9ae3b05347b8d2f9..f84fec186570351d6d8b76796af7814d9b3adc4a 100644
--- a/doc/header.html
+++ b/doc/header.html
@@ -4,4 +4,3 @@
       <LINK HREF="package.css" REL="stylesheet" TYPE="text/css">
     </HEAD>
     <BODY>
-
diff --git a/doc/package.css b/doc/package.css
index f992392b8d5f99929d049a86a66bfaf807cdc431..5a66388cad0fd0dc3a97331de45937b3bd82c493 100644
--- a/doc/package.css
+++ b/doc/package.css
@@ -45,8 +45,8 @@ a:link {
     color:#0066CC
 }
 
-a:hover, a:active { 
-	text-decoration: underline; 
+a:hover, a:active {
+	text-decoration: underline;
 	color: #3C9A35;
 }
 
@@ -57,7 +57,7 @@ a:visited {
 }
 
 DIV.memitem
-{ 
+{
   spacing: 10px;
   width:100%;
   background:#FFFFFF;
@@ -70,7 +70,7 @@ DIV.memitem
 }
 
 DIV.memproto
-{ 
+{
   width:100%;
   background:#F0F0F0;
   font-size:100%;
@@ -82,7 +82,7 @@ DIV.memproto
 }
 
 DIV.memdoc
-{ 
+{
   padding: 10px;
   width:100%;
   font-size:100%;
@@ -189,7 +189,7 @@ DIV.nav
 }
 
 DIV.groupHeader
-{ 
+{
   padding-top: 30px;
   padding-bottom: 20px;
   background       : none;
@@ -201,23 +201,23 @@ DIV.groupHeader
   color:#0066CC;
 }
 
-.directory p 
-{ 
-    margin: 0px; 
-    white-space: nowrap; 
+.directory p
+{
+    margin: 0px;
+    white-space: nowrap;
     font-family: 'Lucida Grande','Lucida Sans Unicode',Verdana,Sans-Serif;
     font-size: 10pt;
     font-weight: normal;
 }
 
 
-.directory h3 
-{ 
+.directory h3
+{
     font-family: 'Lucida Grande','Lucida Sans Unicode',Verdana,Sans-Serif;
-    margin: 0px; 
-    margin-top: 1em; 
+    margin: 0px;
+    margin-top: 1em;
     padding-bottom: 20px;
-    font-size: 12pt; 
+    font-size: 12pt;
     font-variant: small-caps;
     text-align: center;
 }
@@ -227,4 +227,3 @@ DIV.groupHeader
     text-decoration: none;
     color:#0066CC
 }
-
diff --git a/doc/package.dox.cmake b/doc/package.dox.cmake
index 0ffaa240426e973fe8258896577f7290cc978414..727927337f1090597a4032c2bda62acf47ee4f6a 100644
--- a/doc/package.dox.cmake
+++ b/doc/package.dox.cmake
@@ -23,8 +23,8 @@ ABBREVIATE_BRIEF       = "The $name class" \
 ALWAYS_DETAILED_SEC    = YES
 INLINE_INHERITED_MEMB  = NO
 FULL_PATH_NAMES        = NO
-STRIP_FROM_PATH        = 
-STRIP_FROM_INC_PATH    = 
+STRIP_FROM_PATH        =
+STRIP_FROM_INC_PATH    =
 SHORT_NAMES            = NO
 JAVADOC_AUTOBRIEF      = YES
 MULTILINE_CPP_IS_BRIEF = NO
@@ -50,7 +50,7 @@ SORT_MEMBER_DOCS       = YES
 SORT_BRIEF_DOCS        = NO
 SORT_BY_SCOPE_NAME     = NO
 MAX_INITIALIZER_LINES  = 30
-FILE_VERSION_FILTER    = 
+FILE_VERSION_FILTER    =
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
@@ -60,18 +60,18 @@ WARN_IF_UNDOCUMENTED   = YES
 WARN_IF_DOC_ERROR      = YES
 WARN_NO_PARAMDOC       = NO
 WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = 
+WARN_LOGFILE           =
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
 RECURSIVE              = YES
-EXCLUDE                = 
+EXCLUDE                =
 EXCLUDE_SYMLINKS       = NO
-EXAMPLE_PATH           = 
+EXAMPLE_PATH           =
 EXAMPLE_PATTERNS       = *
 EXAMPLE_RECURSIVE      = NO
-INPUT_FILTER           = 
-FILTER_PATTERNS        = 
+INPUT_FILTER           =
+FILTER_PATTERNS        =
 FILTER_SOURCE_FILES    = NO
 #---------------------------------------------------------------------------
 # configuration options related to source browsing
@@ -81,7 +81,7 @@ FILTER_SOURCE_FILES    = NO
 #---------------------------------------------------------------------------
 ALPHABETICAL_INDEX     = NO
 COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
+IGNORE_PREFIX          =
 #---------------------------------------------------------------------------
 # configuration options related to the HTML output
 #---------------------------------------------------------------------------
@@ -89,8 +89,8 @@ GENERATE_HTML          = YES
 HTML_FILE_EXTENSION    = .html
 HTML_ALIGN_MEMBERS     = YES
 GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
+CHM_FILE               =
+HHC_LOCATION           =
 GENERATE_CHI           = NO
 BINARY_TOC             = NO
 TOC_EXPAND             = YES
@@ -106,8 +106,8 @@ LATEX_CMD_NAME         = latex
 MAKEINDEX_CMD_NAME     = makeindex
 COMPACT_LATEX          = NO
 PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
+EXTRA_PACKAGES         =
+LATEX_HEADER           =
 PDF_HYPERLINKS         = NO
 USE_PDFLATEX           = NO
 LATEX_BATCHMODE        = NO
@@ -118,8 +118,8 @@ LATEX_HIDE_INDICES     = NO
 RTF_OUTPUT             = rtf
 COMPACT_RTF            = NO
 RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
+RTF_STYLESHEET_FILE    =
+RTF_EXTENSIONS_FILE    =
 #---------------------------------------------------------------------------
 # configuration options related to the man page output
 #---------------------------------------------------------------------------
@@ -130,8 +130,8 @@ MAN_LINKS              = NO
 # configuration options related to the XML output
 #---------------------------------------------------------------------------
 XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
+XML_SCHEMA             =
+XML_DTD                =
 XML_PROGRAMLISTING     = YES
 #---------------------------------------------------------------------------
 # configuration options for the AutoGen Definitions output
@@ -142,20 +142,20 @@ GENERATE_AUTOGEN_DEF   = NO
 #---------------------------------------------------------------------------
 PERLMOD_LATEX          = NO
 PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
+PERLMOD_MAKEVAR_PREFIX =
 #---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
+# Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 ENABLE_PREPROCESSING   = YES
 MACRO_EXPANSION        = YES
 EXPAND_ONLY_PREDEF     = YES
 SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-EXPAND_AS_DEFINED      = 
+INCLUDE_PATH           =
+INCLUDE_FILE_PATTERNS  =
+EXPAND_AS_DEFINED      =
 SKIP_FUNCTION_MACROS   = YES
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references   
+# Configuration::additions related to external references
 #---------------------------------------------------------------------------
 TAGFILES               = \
 	${DYNAMIC_GRAPH_DOCDIR}/html/dynamic-graph.doxytag=${DYNAMIC_GRAPH_DOCDIR}/html
@@ -164,10 +164,10 @@ ALLEXTERNALS           = NO
 EXTERNAL_GROUPS        = YES
 PERL_PATH              = /usr/bin/perl
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
+# Configuration options related to the dot tool
 #---------------------------------------------------------------------------
 #---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
+# Configuration::additions related to the search engine
 #---------------------------------------------------------------------------
 SEARCHENGINE           = NO
 
@@ -196,7 +196,7 @@ GENERATE_TODOLIST      = YES
 GENERATE_TESTLIST      = NO
 GENERATE_BUGLIST       = NO
 GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
+ENABLED_SECTIONS       =
 SHOW_USED_FILES        = NO
 SHOW_DIRECTORIES       = NO
 #---------------------------------------------------------------------------
@@ -206,7 +206,7 @@ SHOW_DIRECTORIES       = NO
 # configuration options related to the input files
 #---------------------------------------------------------------------------
 FILE_PATTERNS          = *.hh *.idl
-EXCLUDE_PATTERNS       = 
+EXCLUDE_PATTERNS       =
 INPUT                  = ${${PROJECT_NAME}_SOURCE_DIR}/include \
                          ${CMAKE_CURRENT_SOURCE_DIR}/additionalDoc
 
@@ -260,13 +260,13 @@ GENERATE_AUTOGEN_DEF   = NO
 #---------------------------------------------------------------------------
 GENERATE_PERLMOD       = NO
 #---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
+# Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references   
+# Configuration::additions related to external references
 #---------------------------------------------------------------------------
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
+# Configuration options related to the dot tool
 #---------------------------------------------------------------------------
 CLASS_DIAGRAMS         = YES
 HIDE_UNDOC_RELATIONS   = YES
@@ -282,8 +282,8 @@ CALL_GRAPH             = NO
 GRAPHICAL_HIERARCHY    = YES
 DIRECTORY_GRAPH        = YES
 DOT_IMAGE_FORMAT       = png
-DOT_PATH               = 
-DOTFILE_DIRS           = 
+DOT_PATH               =
+DOTFILE_DIRS           =
 MAX_DOT_GRAPH_DEPTH    = 1000
 DOT_TRANSPARENT        = NO
 DOT_MULTI_TARGETS      = YES
diff --git a/include/dynamic-graph/python/convert-dg-to-py.hh b/include/dynamic-graph/python/convert-dg-to-py.hh
index f312d852b936156c103c713a5876627de5299cd6..53f36f6509e996eccb65a10c0dd99fc0833c07ec 100644
--- a/include/dynamic-graph/python/convert-dg-to-py.hh
+++ b/include/dynamic-graph/python/convert-dg-to-py.hh
@@ -9,7 +9,8 @@ namespace dynamicgraph {
 namespace python {
 namespace convert {
 
-command::Value toValue(boost::python::object o, const command::Value::Type& type);
+command::Value toValue(boost::python::object o,
+                       const command::Value::Type& type);
 boost::python::object fromValue(const command::Value& value);
 
 }  // namespace convert
diff --git a/include/dynamic-graph/python/dynamic-graph-py.hh b/include/dynamic-graph/python/dynamic-graph-py.hh
index 9ba21d69fba62e62cb940608b616894c630e3d58..f62c16ef93ccc3f75ba65ffe4a5d22a183a20255 100644
--- a/include/dynamic-graph/python/dynamic-graph-py.hh
+++ b/include/dynamic-graph/python/dynamic-graph-py.hh
@@ -32,14 +32,16 @@ inline bp::tuple to_py_tuple(Iterator begin, Iterator end) {
 
 template <typename T>
 inline std::vector<T> to_std_vector(const bp::object& iterable) {
-  return std::vector<T>(bp::stl_input_iterator<T>(iterable), bp::stl_input_iterator<T>());
+  return std::vector<T>(bp::stl_input_iterator<T>(iterable),
+                        bp::stl_input_iterator<T>());
 }
 
 void exposeSignals();
 
 // Declare functions defined in other source files
 namespace signalBase {
-SignalBase<int>* createSignalWrapper(const char* name, const char* type, bp::object object);
+SignalBase<int>* createSignalWrapper(const char* name, const char* type,
+                                     bp::object object);
 }  // namespace signalBase
 namespace entity {
 
diff --git a/include/dynamic-graph/python/interpreter.hh b/include/dynamic-graph/python/interpreter.hh
index 8df6231e1bb7b5772efc0425f236a11dbc50c35a..7ac7f05a9d81d4757901eae4ebe6b6f61d278400 100644
--- a/include/dynamic-graph/python/interpreter.hh
+++ b/include/dynamic-graph/python/interpreter.hh
@@ -25,11 +25,13 @@ class DYNAMIC_GRAPH_PYTHON_DLLAPI Interpreter {
   /// \brief Method to start python interperter.
   /// \param command string to execute
   /// Method deprecated, you *SHOULD* handle error messages.
-  [[deprecated("you *SHOULD* handle error messages")]] std::string python(const std::string& command);
+  [[deprecated("you *SHOULD* handle error messages")]] std::string python(
+      const std::string& command);
 
   /// \brief Method to start python interperter.
   /// \param command string to execute, result, stdout, stderr strings
-  void python(const std::string& command, std::string& result, std::string& out, std::string& err);
+  void python(const std::string& command, std::string& result, std::string& out,
+              std::string& err);
 
   /// \brief Method to exectue a python script.
   /// \param filename the filename
diff --git a/include/dynamic-graph/python/module.hh b/include/dynamic-graph/python/module.hh
index 7d9eb0c795f98e54970340dfa0b847ae8a86586d..1342e311b5c0cf491dde26926695a590ad07fe9d 100644
--- a/include/dynamic-graph/python/module.hh
+++ b/include/dynamic-graph/python/module.hh
@@ -43,14 +43,17 @@ bp::object makeEntity2() {
 ///         If some commands or signals are added or removed dynamiccally, then
 ///         it is better to disable the default behaviour and handle it
 ///         specifically.
-template <typename T, typename bases = boost::python::bases<dynamicgraph::Entity>,
+template <typename T,
+          typename bases = boost::python::bases<dynamicgraph::Entity>,
           int Options = AddCommands | AddSignals>
 inline auto exposeEntity() {
   // std::string hiddenClassName ("_" + T::CLASS_NAME);
   std::string hiddenClassName(T::CLASS_NAME);
   namespace bp = boost::python;
-  bp::class_<T, bases, boost::noncopyable> obj(hiddenClassName.c_str(), bp::init<std::string>());
-  /* TODO at the moment, I couldn't easily find a way to define a Python constructor
+  bp::class_<T, bases, boost::noncopyable> obj(hiddenClassName.c_str(),
+                                               bp::init<std::string>());
+  /* TODO at the moment, I couldn't easily find a way to define a Python
+  constructor
    * that would create the entity via the factory and then populate the
    * python object with its commands.
    * This is achieved with a factory function of the same name.
@@ -64,7 +67,8 @@ inline auto exposeEntity() {
             std::cout << "foo" << std::endl;
           assert(dynamic_cast<T*>(ent) != NULL);
           self = bp::object(bp::ptr(static_cast<T*>(ent)));
-          //dynamicgraph::Entity& unused = bp::extract<dynamicgraph::Entity&>(self);
+          //dynamicgraph::Entity& unused =
+  bp::extract<dynamicgraph::Entity&>(self);
           //entity::addCommands(self);
         })
   ;
diff --git a/include/dynamic-graph/python/signal-wrapper.hh b/include/dynamic-graph/python/signal-wrapper.hh
index 3a08ed3ba88e0a8f330b895857538dbf0319cdb2..30a22e2d1415e2025182daf389003d0cb7f5c208 100644
--- a/include/dynamic-graph/python/signal-wrapper.hh
+++ b/include/dynamic-graph/python/signal-wrapper.hh
@@ -35,7 +35,8 @@ class SignalWrapper : public Signal<T, Time> {
 
   static bool checkCallable(pyobject c, std::string& error);
 
-  SignalWrapper(std::string name, pyobject callable) : parent_t(name), callable(callable) {
+  SignalWrapper(std::string name, pyobject callable)
+      : parent_t(name), callable(callable) {
     typedef boost::function2<T&, T&, Time> function_t;
     function_t f = boost::bind(&SignalWrapper::call, this, _1, _2);
     this->setFunction(f);
diff --git a/include/dynamic-graph/python/signal.hh b/include/dynamic-graph/python/signal.hh
index 4b7deb7403feb03bedf0b7267770a4fac7ba3a12..8f7e67329f8edc0b7468df0b0f1d409531273fd0 100644
--- a/include/dynamic-graph/python/signal.hh
+++ b/include/dynamic-graph/python/signal.hh
@@ -18,11 +18,15 @@ auto exposeSignal(const std::string& name) {
   namespace bp = boost::python;
 
   typedef Signal<T, Time> S_t;
-  bp::class_<S_t, bp::bases<SignalBase<Time> >, boost::noncopyable> obj(name.c_str(), bp::init<std::string>());
-  obj.add_property("value", bp::make_function(&S_t::accessCopy, bp::return_value_policy<bp::copy_const_reference>()),
-                   &S_t::setConstant,  // TODO check the setter
-                   "the signal value.\n"
-                   "warning: for Eigen objects, sig.value[0] = 1. may not work).");
+  bp::class_<S_t, bp::bases<SignalBase<Time> >, boost::noncopyable> obj(
+      name.c_str(), bp::init<std::string>());
+  obj.add_property(
+      "value",
+      bp::make_function(&S_t::accessCopy,
+                        bp::return_value_policy<bp::copy_const_reference>()),
+      &S_t::setConstant,  // TODO check the setter
+      "the signal value.\n"
+      "warning: for Eigen objects, sig.value[0] = 1. may not work).");
   return obj;
 }
 
@@ -31,7 +35,8 @@ auto exposeSignalWrapper(const std::string& name) {
   namespace bp = boost::python;
 
   typedef SignalWrapper<T, Time> S_t;
-  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(name.c_str(), bp::no_init);
+  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(
+      name.c_str(), bp::no_init);
   return obj;
 }
 
@@ -40,7 +45,8 @@ auto exposeSignalPtr(const std::string& name) {
   namespace bp = boost::python;
 
   typedef SignalPtr<T, Time> S_t;
-  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(name.c_str(), bp::no_init);
+  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(
+      name.c_str(), bp::no_init);
   return obj;
 }
 
@@ -49,7 +55,8 @@ auto exposeSignalTimeDependent(const std::string& name) {
   namespace bp = boost::python;
 
   typedef SignalTimeDependent<T, Time> S_t;
-  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(name.c_str(), bp::no_init);
+  bp::class_<S_t, bp::bases<Signal<T, Time> >, boost::noncopyable> obj(
+      name.c_str(), bp::no_init);
   return obj;
 }
 
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..d5b38d0e6db93012326c5bad5073bfdca523321c
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,5 @@
+[tool.black]
+exclude = "tests/test_python-syntax_error.py"
+
+[tool.isort]
+line_length = 88
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4155cd476bc92ae6f1511bc3f6eb31b696607e30
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,4 @@
+[flake8]
+max-line-length = 88
+exclude = tests/test_python-syntax_error.py
+ignore = E226, E704, E24, E121, W504, E126, E123, W503, E203
diff --git a/src/dynamic_graph/attrpath.py b/src/dynamic_graph/attrpath.py
index 98d059ececbba8154dc116727ba6a8c510247ba6..4f76e3cdd99ea759f6344b2fcf6d6aab56dc7429 100644
--- a/src/dynamic_graph/attrpath.py
+++ b/src/dynamic_graph/attrpath.py
@@ -18,10 +18,11 @@ class CommandPath(object):
     to store entity commands. It has no members except those automatically
     defined at run time (which should be CommandPath or functions).
     """
+
     mother = None
 
     def __getattr__(self, name):
-        privateName = name + '_obj'
+        privateName = name + "_obj"
         if privateName in self.__dict__:
             obj = getattr(self, privateName)
             obj.mother = self.mother
@@ -30,9 +31,7 @@ class CommandPath(object):
 
 
 def createCommandModule(target, name):
-
     def createGetter(name):
-
         def __(self):
             obj = getattr(self, name)
             obj.mother = self
@@ -40,7 +39,7 @@ def createCommandModule(target, name):
 
         return __
 
-    privateName = name + '_obj'
+    privateName = name + "_obj"
     setattr(target, privateName, CommandPath())
 
     if not isinstance(target, CommandPath):
@@ -48,8 +47,8 @@ def createCommandModule(target, name):
 
 
 class CommandLauncher(object):
-    """
-    """
+    """ """
+
     mother = None
     fun = None
 
@@ -62,7 +61,7 @@ class CommandLauncher(object):
 
 def createCommandLauncher(target, name, fun):
     if isinstance(target, CommandPath):
-        privateName = name + '_obj'
+        privateName = name + "_obj"
         setattr(target, privateName, CommandLauncher(fun))
     else:
         setattr(target, name, fun)
@@ -76,7 +75,7 @@ def setattrpath(target, path, attribute):
     pathk = target
     read = True
     if isinstance(path, str):
-        path = path.split('.')
+        path = path.split(".")
     for tokenk in path[0:-1]:
         if (not read) | (tokenk not in pathk.__dict__):
             read = False
@@ -96,7 +95,7 @@ def getattrpath(target, path):
     """
     pathk = target
     if isinstance(path, str):
-        path = path.split('.')
+        path = path.split(".")
     for tokenk in path:
         privateName = tokenk + "_obj"
         if hasattr(pathk, privateName):
@@ -105,7 +104,12 @@ def getattrpath(target, path):
             if hasattr(pathk, tokenk):
                 pathk = getattr(pathk, tokenk)
             else:
-                raise Exception('Path does not exist -- while accessing "' + tokenk + '" in ' + '.'.join(path))
+                raise Exception(
+                    'Path does not exist -- while accessing "'
+                    + tokenk
+                    + '" in '
+                    + ".".join(path)
+                )
     return pathk
 
 
@@ -116,11 +120,11 @@ def existattrpath(target, path):
     """
     pathk = target
     if isinstance(path, str):
-        path = path.split('.')
+        path = path.split(".")
     for tokenk in path[0:-1]:
-        print('check ', tokenk)
+        print("check ", tokenk)
         privateName = tokenk + "_obj"
-        if (privateName not in pathk.__dict__):
+        if privateName not in pathk.__dict__:
             return False
         pathk = getattr(pathk, privateName)
     name = path[-1]
diff --git a/src/dynamic_graph/convert-dg-to-py.cc b/src/dynamic_graph/convert-dg-to-py.cc
index cdc22d3e5d4cd6bf55e062a9f87b7f8375c6227e..9df3a84b71deb36c4fcb86702d7116b2791be183 100644
--- a/src/dynamic_graph/convert-dg-to-py.cc
+++ b/src/dynamic_graph/convert-dg-to-py.cc
@@ -51,7 +51,8 @@ command::Value toValue(bp::object o, const command::Value::Type& valueType) {
       // TODO the vector of values cannot be built since
       // - the value type inside the vector are not know
       // - inferring the value type from the Python type is not implemented.
-      throw std::invalid_argument("not implemented: cannot create a vector of values");
+      throw std::invalid_argument(
+          "not implemented: cannot create a vector of values");
       break;
     default:
       std::cerr << "Only int, double and string are supported." << std::endl;
diff --git a/src/dynamic_graph/dynamic-graph-py.cc b/src/dynamic_graph/dynamic-graph-py.cc
index dfdeddc1bfd838e2919b3116b7dca0c267717473..0cf7355b3710abbc28584c81335ef0ee4718fe7a 100644
--- a/src/dynamic_graph/dynamic-graph-py.cc
+++ b/src/dynamic_graph/dynamic-graph-py.cc
@@ -32,7 +32,9 @@ namespace python {
 /**
    \brief plug a signal into another one.
 */
-void plug(SignalBase<int>* signalOut, SignalBase<int>* signalIn) { signalIn->plug(signalOut); }
+void plug(SignalBase<int>* signalOut, SignalBase<int>* signalIn) {
+  signalIn->plug(signalOut);
+}
 
 void enableTrace(bool enable, const char* filename) {
   if (enable)
@@ -48,7 +50,8 @@ namespace bp = boost::python;
 namespace dg = dynamicgraph;
 
 typedef bp::return_value_policy<bp::manage_new_object> manage_new_object;
-typedef bp::return_value_policy<bp::reference_existing_object> reference_existing_object;
+typedef bp::return_value_policy<bp::reference_existing_object>
+    reference_existing_object;
 
 typedef dg::PoolStorage::Entities MapOfEntities;
 
@@ -58,9 +61,14 @@ struct MapOfEntitiesPairToPythonConverter {
   }
 };
 
-MapOfEntities* getEntityMap() { return const_cast<MapOfEntities*>(&dg::PoolStorage::getInstance()->getEntityMap()); }
+MapOfEntities* getEntityMap() {
+  return const_cast<MapOfEntities*>(
+      &dg::PoolStorage::getInstance()->getEntityMap());
+}
 
-dg::SignalBase<int>* getSignal(dg::Entity& e, const std::string& name) { return &e.getSignal(name); }
+dg::SignalBase<int>* getSignal(dg::Entity& e, const std::string& name) {
+  return &e.getSignal(name);
+}
 
 class PythonEntity : public dg::Entity {
   DYNAMIC_GRAPH_ENTITY_DECL();
@@ -68,8 +76,12 @@ class PythonEntity : public dg::Entity {
  public:
   using dg::Entity::Entity;
 
-  void signalRegistration(dg::SignalBase<int>& signal) { dg::Entity::signalRegistration(signal); }
-  void signalDeregistration(const std::string& name) { dg::Entity::signalDeregistration(name); }
+  void signalRegistration(dg::SignalBase<int>& signal) {
+    dg::Entity::signalRegistration(signal);
+  }
+  void signalDeregistration(const std::string& name) {
+    dg::Entity::signalDeregistration(name);
+  }
 };
 
 DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(PythonEntity, "PythonEntity");
@@ -85,23 +97,31 @@ void exposeEntityBase() {
       .export_values();
 
   bp::class_<Entity, boost::noncopyable>("Entity", bp::no_init)
-      .add_property("name", bp::make_function(&Entity::getName, bp::return_value_policy<bp::copy_const_reference>()))
+      .add_property("name",
+                    bp::make_function(
+                        &Entity::getName,
+                        bp::return_value_policy<bp::copy_const_reference>()))
       .add_property("className",
-                    bp::make_function(&Entity::getClassName, bp::return_value_policy<bp::copy_const_reference>()),
+                    bp::make_function(
+                        &Entity::getClassName,
+                        bp::return_value_policy<bp::copy_const_reference>()),
                     "the class name of the Entity")
       .add_property("__doc__", &Entity::getDocString)
 
       .def("setLoggerVerbosityLevel", &Entity::setLoggerVerbosityLevel)
       .def("getLoggerVerbosityLevel", &Entity::getLoggerVerbosityLevel)
-      .add_property("loggerVerbosityLevel", &Entity::setLoggerVerbosityLevel, &Entity::getLoggerVerbosityLevel,
+      .add_property("loggerVerbosityLevel", &Entity::setLoggerVerbosityLevel,
+                    &Entity::getLoggerVerbosityLevel,
                     "the verbosity level of the entity")
       .def("setTimeSample", &Entity::setTimeSample)
       .def("getTimeSample", &Entity::getTimeSample)
-      .add_property("timeSample", &Entity::getTimeSample, &Entity::setTimeSample,
+      .add_property("timeSample", &Entity::getTimeSample,
+                    &Entity::setTimeSample,
                     "the time sample for printing debugging information")
       .def("setStreamPrintPeriod", &Entity::setStreamPrintPeriod)
       .def("getStreamPrintPeriod", &Entity::getStreamPrintPeriod)
-      .add_property("streamPrintPeriod", &Entity::getStreamPrintPeriod, &Entity::setStreamPrintPeriod,
+      .add_property("streamPrintPeriod", &Entity::getStreamPrintPeriod,
+                    &Entity::setStreamPrintPeriod,
                     "set the period at which debugging information are printed")
 
       .def(
@@ -119,10 +139,13 @@ void exposeEntityBase() {
             return ret;
           },
           "Return the list of signals.")
-      //.def("signal", +[](Entity& e, const std::string &name) { return &e.getSignal(name); },
+      //.def("signal", +[](Entity& e, const std::string &name) { return
+      //&e.getSignal(name); },
       // reference_existing_object())
-      .def("signal", &getSignal, reference_existing_object(), "get signal by name from an Entity", bp::arg("name"))
-      .def("hasSignal", &Entity::hasSignal, "return True if the entity has a signal with the given name")
+      .def("signal", &getSignal, reference_existing_object(),
+           "get signal by name from an Entity", bp::arg("name"))
+      .def("hasSignal", &Entity::hasSignal,
+           "return True if the entity has a signal with the given name")
 
       .def(
           "displaySignals",
@@ -133,12 +156,14 @@ void exposeEntityBase() {
               std::cout << "> has no signal\n";
             else
               std::cout << "> signal list:\n";
-            for (const auto& el : signals) el.second->display(std::cout << "    |-- <") << '\n';
+            for (const auto& el : signals)
+              el.second->display(std::cout << "    |-- <") << '\n';
           },
           "Print the list of signals into standard output: temporary.")
 
       /*
-      .def("__getattr__", +[](Entity& e, const std::string &name) -> SignalBase<int>* { return &e.getSignal(name); },
+      .def("__getattr__", +[](Entity& e, const std::string &name) ->
+      SignalBase<int>* { return &e.getSignal(name); },
           reference_existing_object())
       def __getattr__(self, name):
           try:
@@ -147,16 +172,16 @@ void exposeEntityBase() {
               try:
                   object.__getattr__(self, name)
               except AttributeError:
-                  raise AttributeError("'%s' entity has no attribute %s\n" % (self.name, name) +
-                                       '  entity attributes are usually either\n' + '    - commands,\n' +
-                                       '    - signals or,\n' + '    - user defined attributes')
+                  raise AttributeError("'%s' entity has no attribute %s\n" %
+      (self.name, name) + '  entity attributes are usually either\n' + '    -
+      commands,\n' + '    - signals or,\n' + '    - user defined attributes')
                                        */
       /*
-      .def("__setattr__", +[](bp::object self, const std::string &name, bp::object value) {
-            Entity& e = bp::extract<Entity&> (self);
-            if (e.hasSignal(name))
-              throw std::invalid_argument(name + " already designates a signal. "
-                  "It is not advised to set a new attribute of the same name.");
+      .def("__setattr__", +[](bp::object self, const std::string &name,
+      bp::object value) { Entity& e = bp::extract<Entity&> (self); if
+      (e.hasSignal(name)) throw std::invalid_argument(name + " already
+      designates a signal. " "It is not advised to set a new attribute of the
+      same name.");
             // TODO How do you do that ? I am sure it is possible.
             //object.__setattr__(self, name, value)
           })
@@ -165,66 +190,85 @@ void exposeEntityBase() {
       /* TODO ?
       def boundNewCommand(self, cmdName):
           """
-          At construction, all existing commands are bound directly in the class.
-          This method enables to bound new commands dynamically. These new bounds
-          are not made with the class, but directly with the object instance.
+          At construction, all existing commands are bound directly in the
+      class. This method enables to bound new commands dynamically. These new
+      bounds are not made with the class, but directly with the object instance.
           """
       def boundAllNewCommands(self):
           """
-          For all commands that are not attribute of the object instance nor of the
-          class, a new attribute of the instance is created to bound the command.
+          For all commands that are not attribute of the object instance nor of
+      the class, a new attribute of the instance is created to bound the
+      command.
           """
           */
 
       // For backward compat
-      .add_static_property("entities", bp::make_function(&getEntityMap, reference_existing_object()));
+      .add_static_property(
+          "entities",
+          bp::make_function(&getEntityMap, reference_existing_object()));
 
   python::exposeEntity<PythonEntity, bp::bases<Entity>, 0>()
       .def("signalRegistration", &PythonEntity::signalRegistration)
       .def("signalDeregistration", &PythonEntity::signalDeregistration);
 
-  python::exposeEntity<python::PythonSignalContainer, bp::bases<Entity>, 0>().def(
-      "rmSignal", &python::PythonSignalContainer::rmSignal, "Remove a signal", bp::arg("signal_name"));
+  python::exposeEntity<python::PythonSignalContainer, bp::bases<Entity>, 0>()
+      .def("rmSignal", &python::PythonSignalContainer::rmSignal,
+           "Remove a signal", bp::arg("signal_name"));
 }
 
 void exposeCommand() {
   using dg::command::Command;
   bp::class_<Command, boost::noncopyable>("Command", bp::no_init)
-      .def("__call__", bp::raw_function(dg::python::entity::executeCmd, 1), "execute the command")
+      .def("__call__", bp::raw_function(dg::python::entity::executeCmd, 1),
+           "execute the command")
       .add_property("__doc__", &Command::getDocstring);
 }
 
 void exposeOldAPI() {
-  bp::def("plug", dynamicgraph::python::plug, "plug an output signal into an input signal",
+  bp::def("plug", dynamicgraph::python::plug,
+          "plug an output signal into an input signal",
           (bp::arg("signalOut"), "signalIn"));
-  bp::def("enableTrace", dynamicgraph::python::enableTrace, "Enable or disable tracing debug info in a file");
+  bp::def("enableTrace", dynamicgraph::python::enableTrace,
+          "Enable or disable tracing debug info in a file");
   // Signals
-  bp::def("create_signal_wrapper", dynamicgraph::python::signalBase::createSignalWrapper, reference_existing_object(),
-          "create a SignalWrapper C++ object");
+  bp::def("create_signal_wrapper",
+          dynamicgraph::python::signalBase::createSignalWrapper,
+          reference_existing_object(), "create a SignalWrapper C++ object");
   // Entity
-  bp::def("factory_get_entity_class_list", dynamicgraph::python::factory::getEntityClassList,
+  bp::def("factory_get_entity_class_list",
+          dynamicgraph::python::factory::getEntityClassList,
           "return the list of entity classes");
-  bp::def("writeGraph", dynamicgraph::python::pool::writeGraph, "Write the graph of entities in a filename.");
-  bp::def("get_entity_list", dynamicgraph::python::pool::getEntityList, "return the list of instanciated entities");
-  bp::def("addLoggerFileOutputStream", dynamicgraph::python::debug::addLoggerFileOutputStream,
+  bp::def("writeGraph", dynamicgraph::python::pool::writeGraph,
+          "Write the graph of entities in a filename.");
+  bp::def("get_entity_list", dynamicgraph::python::pool::getEntityList,
+          "return the list of instanciated entities");
+  bp::def("addLoggerFileOutputStream",
+          dynamicgraph::python::debug::addLoggerFileOutputStream,
           "add a output file stream to the logger by filename");
-  bp::def("addLoggerCoutOutputStream", dynamicgraph::python::debug::addLoggerCoutOutputStream,
+  bp::def("addLoggerCoutOutputStream",
+          dynamicgraph::python::debug::addLoggerCoutOutputStream,
           "add std::cout as output stream to the logger");
-  bp::def("closeLoggerFileOutputStream", dynamicgraph::python::debug::closeLoggerFileOutputStream,
+  bp::def("closeLoggerFileOutputStream",
+          dynamicgraph::python::debug::closeLoggerFileOutputStream,
           "close all the loggers file output streams.");
-  bp::def("real_time_logger_destroy", dynamicgraph::python::debug::realTimeLoggerDestroy,
+  bp::def("real_time_logger_destroy",
+          dynamicgraph::python::debug::realTimeLoggerDestroy,
           "Destroy the real time logger.");
-  bp::def("real_time_logger_spin_once", dynamicgraph::python::debug::realTimeLoggerSpinOnce,
+  bp::def("real_time_logger_spin_once",
+          dynamicgraph::python::debug::realTimeLoggerSpinOnce,
           "Destroy the real time logger.");
-  bp::def("real_time_logger_instance", dynamicgraph::python::debug::realTimeLoggerInstance,
+  bp::def("real_time_logger_instance",
+          dynamicgraph::python::debug::realTimeLoggerInstance,
           "Starts the real time logger.");
 }
 
 void enableEigenPy() {
   eigenpy::enableEigenPy();
 
-  if (!eigenpy::register_symbolic_link_to_registered_type<Eigen::Quaterniond>()) eigenpy::exposeQuaternion();
-  if (!eigenpy::register_symbolic_link_to_registered_type<Eigen::AngleAxisd>()) eigenpy::exposeAngleAxis();
+  if (!eigenpy::register_symbolic_link_to_registered_type<Eigen::Quaterniond>())
+    eigenpy::exposeQuaternion();
+  if (!eigenpy::register_symbolic_link_to_registered_type<Eigen::AngleAxisd>())
+    eigenpy::exposeAngleAxis();
 
   eigenpy::enableEigenPySpecific<Eigen::Matrix4d>();
 }
@@ -255,12 +299,19 @@ BOOST_PYTHON_MODULE(wrap) {
             for (const auto& el : m) res.append(bp::ptr(el.second));
             return bp::tuple(res);
           })
-      .def("__getitem__", static_cast<dg::Entity*& (MapOfEntities::*)(const std::string& k)>(&MapOfEntities::at),
+      .def("__getitem__",
+           static_cast<dg::Entity*& (MapOfEntities::*)(const std::string& k)>(
+               &MapOfEntities::at),
            reference_existing_object())
       .def(
-          "__setitem__", +[](MapOfEntities& m, const std::string& n, dg::Entity* e) { m.emplace(n, e); })
+          "__setitem__", +[](MapOfEntities& m, const std::string& n,
+                             dg::Entity* e) { m.emplace(n, e); })
       .def("__iter__", bp::iterator<MapOfEntities>())
       .def(
-          "__contains__", +[](const MapOfEntities& m, const std::string& n) -> bool { return m.count(n); });
-  bp::to_python_converter<MapOfEntities::value_type, MapOfEntitiesPairToPythonConverter>();
+          "__contains__",
+          +[](const MapOfEntities& m, const std::string& n) -> bool {
+            return m.count(n);
+          });
+  bp::to_python_converter<MapOfEntities::value_type,
+                          MapOfEntitiesPairToPythonConverter>();
 }
diff --git a/src/dynamic_graph/entity-py.cc b/src/dynamic_graph/entity-py.cc
index 268e58770ea178c83017db9b5435483cbfca1215..b62839c3bbcacead1d014b26096dcf0ca5630eb1 100644
--- a/src/dynamic_graph/entity-py.cc
+++ b/src/dynamic_graph/entity-py.cc
@@ -37,7 +37,8 @@ namespace entity {
 /// \param obj an Entity object
 void addCommands(bp::object obj) {
   Entity& entity = bp::extract<Entity&>(obj);
-  for (const auto& el : entity.getNewStyleCommandMap()) obj.attr(el.first.c_str()) = bp::object(bp::ptr(el.second));
+  for (const auto& el : entity.getNewStyleCommandMap())
+    obj.attr(el.first.c_str()) = bp::object(bp::ptr(el.second));
 }
 
 /// \param obj an Entity object
@@ -56,16 +57,20 @@ void addSignals(bp::object obj) {
 Entity* create(const char* className, const char* instanceName) {
   Entity* obj = NULL;
   /* Try to find if the corresponding object already exists. */
-  if (dynamicgraph::PoolStorage::getInstance()->existEntity(instanceName, obj)) {
+  if (dynamicgraph::PoolStorage::getInstance()->existEntity(instanceName,
+                                                            obj)) {
     if (obj->getClassName() != className) {
-      throw std::invalid_argument("Found an object named " + std::string(instanceName) +
+      throw std::invalid_argument("Found an object named " +
+                                  std::string(instanceName) +
                                   ",\n"
                                   "but this object is of type " +
-                                  std::string(obj->getClassName()) + " and not " + std::string(className));
+                                  std::string(obj->getClassName()) +
+                                  " and not " + std::string(className));
     }
   } else /* If not, create a new object. */
   {
-    obj = dynamicgraph::FactoryStorage::getInstance()->newEntity(std::string(className), std::string(instanceName));
+    obj = dynamicgraph::FactoryStorage::getInstance()->newEntity(
+        std::string(className), std::string(instanceName));
   }
 
   return obj;
@@ -78,7 +83,8 @@ bp::object executeCmd(bp::tuple args, bp::dict) {
     throw std::out_of_range("Wrong number of arguments");
   std::vector<Value> values;
   values.reserve(command.valueTypes().size());
-  for (int i = 1; i < bp::len(args); ++i) values.push_back(convert::toValue(args[i], command.valueTypes()[i - 1]));
+  for (int i = 1; i < bp::len(args); ++i)
+    values.push_back(convert::toValue(args[i], command.valueTypes()[i - 1]));
   command.setParameterValues(values);
   return convert::fromValue(command.execute());
 }
diff --git a/src/dynamic_graph/pool-py.cc b/src/dynamic_graph/pool-py.cc
index 338a89f8690c2d56050459c3b2acd1b2aa37d0ac..194c5df0e177fe9228e9130caf01df6324a3d36f 100644
--- a/src/dynamic_graph/pool-py.cc
+++ b/src/dynamic_graph/pool-py.cc
@@ -12,9 +12,13 @@ namespace python {
 
 namespace pool {
 
-void writeGraph(const char* filename) { PoolStorage::getInstance()->writeGraph(filename); }
+void writeGraph(const char* filename) {
+  PoolStorage::getInstance()->writeGraph(filename);
+}
 
-const std::map<std::string, Entity*>* getEntityMap() { return &PoolStorage::getInstance()->getEntityMap(); }
+const std::map<std::string, Entity*>* getEntityMap() {
+  return &PoolStorage::getInstance()->getEntityMap();
+}
 
 /**
    \brief Get list of entities
@@ -22,7 +26,8 @@ const std::map<std::string, Entity*>* getEntityMap() { return &PoolStorage::getI
 bp::list getEntityList() {
   std::vector<std::string> entityNames;
   bp::list res;
-  const PoolStorage::Entities& listOfEntities = PoolStorage::getInstance()->getEntityMap();
+  const PoolStorage::Entities& listOfEntities =
+      PoolStorage::getInstance()->getEntityMap();
 
   for (const auto& el : listOfEntities) res.append(el.second->getName());
   return res;
diff --git a/src/dynamic_graph/script_shortcuts.py b/src/dynamic_graph/script_shortcuts.py
index 04a1bb71d77d14ab7d1acf5c7b63c4988852f3de..4d62d7895f847ea7e171d6ee329a068eef6cb80b 100644
--- a/src/dynamic_graph/script_shortcuts.py
+++ b/src/dynamic_graph/script_shortcuts.py
@@ -19,10 +19,10 @@ from .signal_base import SignalBase
 
 # Enables shortcut "name"
 def sig_short_name(self):
-    return self.getName().split(':')[-1]
+    return self.getName().split(":")[-1]
 
 
-setattr(SignalBase, 'name', property(sig_short_name))
+setattr(SignalBase, "name", property(sig_short_name))
 
 
 # Enables shortcuts "m"
@@ -56,12 +56,12 @@ def sigMatPrint(sig):
     return PrettySignalPrint(sig)
 
 
-setattr(SignalBase, 'm', property(PrettySignalPrint))
+setattr(SignalBase, "m", property(PrettySignalPrint))
 
 
 # Enable the same as 'm', but directly on the signal object.
 def sigRepr(self):
-    return self.name + ' = ' + str(self.value)
+    return self.name + " = " + str(self.value)
 
 
 def sigCall(sig, iter):
@@ -74,9 +74,9 @@ def sigTimeIncr(sig, iter):
     print(sigRepr(sig))
 
 
-setattr(SignalBase, '__repr__', sigRepr)
-setattr(SignalBase, '__call__', sigCall)
-setattr(SignalBase, '__add__', sigTimeIncr)
+setattr(SignalBase, "__repr__", sigRepr)
+setattr(SignalBase, "__call__", sigCall)
+setattr(SignalBase, "__add__", sigTimeIncr)
 
 
 # Enables shortcut "deps"
@@ -97,19 +97,17 @@ class SignalDepPrint:
         return self
 
 
-setattr(SignalBase, 'deps', property(SignalDepPrint))
+setattr(SignalBase, "deps", property(SignalDepPrint))
 
-setattr(Entity, 'sigs', property(Entity.displaySignals))
-setattr(Entity, '__repr__', Entity.__str__)
+setattr(Entity, "sigs", property(Entity.displaySignals))
+setattr(Entity, "__repr__", Entity.__str__)
 
-sys.ps1 = '% '
+sys.ps1 = "% "
 
 
 # Enable function that can be call without()def optionalparentheses(f):
 def optionalparentheses(f):
-
     class decoclass:
-
         def __init__(self, f):
             self.functor = f
 
@@ -118,7 +116,7 @@ def optionalparentheses(f):
             if isinstance(res, str):
                 return res
             else:
-                return ''
+                return ""
 
         def __call__(self, *arg):
             return self.functor(*arg)
diff --git a/src/dynamic_graph/signal-base-py.cc b/src/dynamic_graph/signal-base-py.cc
index d9aadf8972efee4b336af3265f8bc716ad70f5e2..a6f4db6dc74a00076b340e7d8df2c06c20f2ae5d 100644
--- a/src/dynamic_graph/signal-base-py.cc
+++ b/src/dynamic_graph/signal-base-py.cc
@@ -41,11 +41,18 @@ template <typename Time>
 void exposeSignalBase(const char* name) {
   typedef SignalBase<Time> S_t;
   bp::class_<S_t, boost::noncopyable>(name, bp::no_init)
-      .add_property("time", bp::make_function(&S_t::getTime, bp::return_value_policy<bp::copy_const_reference>()),
+      .add_property("time",
+                    bp::make_function(
+                        &S_t::getTime,
+                        bp::return_value_policy<bp::copy_const_reference>()),
                     &S_t::setTime)
-      .add_property("name", bp::make_function(&S_t::getName, bp::return_value_policy<bp::copy_const_reference>()))
+      .add_property("name",
+                    bp::make_function(
+                        &S_t::getName,
+                        bp::return_value_policy<bp::copy_const_reference>()))
 
-      .def("getName", &S_t::getName, bp::return_value_policy<bp::copy_const_reference>())
+      .def("getName", &S_t::getName,
+           bp::return_value_policy<bp::copy_const_reference>())
       .def(
           "getClassName",
           +[](const S_t& s) -> std::string {
@@ -57,7 +64,8 @@ void exposeSignalBase(const char* name) {
       .def("plug", &S_t::plug, "Plug the signal to another signal")
       .def("unplug", &S_t::unplug, "Unplug the signal")
       .def("isPlugged", &S_t::isPlugged, "Whether the signal is plugged")
-      .def("getPlugged", &S_t::getPluged, bp::return_value_policy<bp::reference_existing_object>(),
+      .def("getPlugged", &S_t::getPluged,
+           bp::return_value_policy<bp::reference_existing_object>(),
            "To which signal the signal is plugged")
 
       .def("recompute", &S_t::recompute, "Recompute the signal at given time")
@@ -82,9 +90,13 @@ void exposeSignalBase(const char* name) {
 template <>
 auto exposeSignal<MatrixHomogeneous, time_type>(const std::string& name) {
   typedef Signal<MatrixHomogeneous, time_type> S_t;
-  bp::class_<S_t, bp::bases<SignalBase<time_type> >, boost::noncopyable> obj(name.c_str(), bp::init<std::string>());
+  bp::class_<S_t, bp::bases<SignalBase<time_type> >, boost::noncopyable> obj(
+      name.c_str(), bp::init<std::string>());
   obj.add_property(
-      "value", +[](const S_t& signal) -> Matrix4 { return signal.accessCopy().matrix(); },
+      "value",
+      +[](const S_t& signal) -> Matrix4 {
+        return signal.accessCopy().matrix();
+      },
       +[](S_t& signal, const Matrix4& v) {
         // TODO it isn't hard to support pinocchio::SE3 type here.
         // However, this adds a dependency to pinocchio.
@@ -117,7 +129,8 @@ void exposeSignals() {
 namespace signalBase {
 
 template <class T>
-SignalWrapper<T, int>* createSignalWrapperTpl(const char* name, bp::object o, std::string& error) {
+SignalWrapper<T, int>* createSignalWrapperTpl(const char* name, bp::object o,
+                                              std::string& error) {
   typedef SignalWrapper<T, int> SignalWrapper_t;
   if (!SignalWrapper_t::checkCallable(o, error)) {
     return NULL;
@@ -140,7 +153,8 @@ PythonSignalContainer* getPythonSignalContainer() {
 /**
    \brief Create an instance of SignalWrapper
 */
-SignalBase<int>* createSignalWrapper(const char* name, const char* type, bp::object object) {
+SignalBase<int>* createSignalWrapper(const char* name, const char* type,
+                                     bp::object object) {
   PythonSignalContainer* psc = getPythonSignalContainer();
   if (psc == NULL) return NULL;
 
diff --git a/src/dynamic_graph/signal-wrapper.cc b/src/dynamic_graph/signal-wrapper.cc
index 32684db423c14d594a7e6c956d59930cb4166b96..cc41fb07bc0f46fe145df8950c4284539fba3741 100644
--- a/src/dynamic_graph/signal-wrapper.cc
+++ b/src/dynamic_graph/signal-wrapper.cc
@@ -8,13 +8,17 @@
 
 namespace dynamicgraph {
 namespace python {
-void PythonSignalContainer::signalRegistration(const SignalArray<int>& signals) {
+void PythonSignalContainer::signalRegistration(
+    const SignalArray<int>& signals) {
   Entity::signalRegistration(signals);
 }
 
-void PythonSignalContainer::rmSignal(const std::string& name) { Entity::signalDeregistration(name); }
+void PythonSignalContainer::rmSignal(const std::string& name) {
+  Entity::signalDeregistration(name);
+}
 
-DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(PythonSignalContainer, "PythonSignalContainer");
+DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(PythonSignalContainer,
+                                   "PythonSignalContainer");
 
 template <class T, class Time>
 bool SignalWrapper<T, Time>::checkCallable(pyobject c, std::string& error) {
diff --git a/src/dynamic_graph/signal_base.py b/src/dynamic_graph/signal_base.py
index cfc065c7795a20ea37462eeed3635c273d5de0d4..10761f371eb27ad22bf995e0577be440144288a3 100644
--- a/src/dynamic_graph/signal_base.py
+++ b/src/dynamic_graph/signal_base.py
@@ -17,17 +17,22 @@ def stringToTuple(vector):
     Transform a string of format '[n](x_1,x_2,...,x_n)' into a tuple of numbers.
     """
     # Find vector length
-    a = re.match(r'\[(\d+)\]', vector)
+    a = re.match(r"\[(\d+)\]", vector)
     size = int(a.group(1))
     # remove '[n]' prefix
-    vector = vector[len(a.group(0)):]
+    vector = vector[len(a.group(0)) :]
     # remove '(' and ')' at beginning and end
-    vector = vector.lstrip('(').rstrip(')\n')
+    vector = vector.lstrip("(").rstrip(")\n")
     # split string by ','
-    vector = vector.split(',')
+    vector = vector.split(",")
     # check size
     if len(vector) != size:
-        raise TypeError('displayed size ' + str(size) + ' of vector does not fit actual size: ' + str(len(vector)))
+        raise TypeError(
+            "displayed size "
+            + str(size)
+            + " of vector does not fit actual size: "
+            + str(len(vector))
+        )
     res = map(float, vector)
     return tuple(res)
 
@@ -37,10 +42,10 @@ def tupleToString(vector):
     Transform a tuple of numbers into a string of format
     '[n](x_1, x_2, ..., x_n)'
     """
-    string = '[%d](' % len(vector)
+    string = "[%d](" % len(vector)
     for x in vector[:-1]:
-        string += '%f,' % x
-    string += '%f)' % vector[-1]
+        string += "%f," % x
+    string += "%f)" % vector[-1]
     return string
 
 
@@ -51,20 +56,30 @@ def stringToMatrix(string):
     of tuple of numbers.
     """
     # Find matrix size
-    a = re.search(r'\[(\d+),(\d+)]', string)
+    a = re.search(r"\[(\d+),(\d+)]", string)
     nRows = int(a.group(1))
     nCols = int(a.group(2))
     # Remove '[n,m]' prefix
-    string = string[len(a.group(0)):]
-    rows = string.split('),(')
+    string = string[len(a.group(0)) :]
+    rows = string.split("),(")
     if len(rows) != nRows:
-        raise TypeError('displayed nb rows ' + nRows + ' of matrix does not fit actual nb rows: ' + str(len(rows)))
+        raise TypeError(
+            "displayed nb rows "
+            + nRows
+            + " of matrix does not fit actual nb rows: "
+            + str(len(rows))
+        )
     m = []
     for rstr in rows:
-        rstr = rstr.lstrip('(').rstrip(')\n')
-        r = map(float, rstr.split(','))
+        rstr = rstr.lstrip("(").rstrip(")\n")
+        r = map(float, rstr.split(","))
         if len(r) != nCols:
-            raise TypeError('one row length ' + len(r) + ' of matrix does not fit displayed nb cols: ' + nCols)
+            raise TypeError(
+                "one row length "
+                + len(r)
+                + " of matrix does not fit displayed nb cols: "
+                + nCols
+            )
         m.append(tuple(r))
     return tuple(m)
 
@@ -76,19 +91,19 @@ def matrixToString(matrix):
     """
     nRows = len(matrix)
     if nRows == 0:
-        return '[0,0](())'
+        return "[0,0](())"
     nCols = len(matrix[0])
-    string = '[%d,%d](' % (nRows, nCols)
+    string = "[%d,%d](" % (nRows, nCols)
     for r in range(nRows):
-        string += '('
+        string += "("
         for c in range(nCols):
             string += str(float(matrix[r][c]))
             if c != nCols - 1:
-                string += ','
-        string += ')'
+                string += ","
+        string += ")"
         if r != nRows - 1:
-            string += ','
-    string += ')'
+            string += ","
+    string += ")"
     return string
 
 
@@ -102,18 +117,18 @@ def objectToString(obj):
       - an integer,
       - a boolean,
     """
-    if (hasattr(obj, "__iter__")):
+    if hasattr(obj, "__iter__"):
         # matrix or vector
         if len(obj) == 0:
             return ""
         else:
-            if (hasattr(obj[0], "__iter__")):
+            if hasattr(obj[0], "__iter__"):
                 # matrix
                 return matrixToString(obj)
             else:
                 # vector
                 return tupleToString(obj)
-    elif hasattr(obj, 'name'):
+    elif hasattr(obj, "name"):
         return obj.name
     else:
         return str(obj)
diff --git a/src/dynamic_graph/tools.py b/src/dynamic_graph/tools.py
index dd145a086885ac6270afc2bc2e870c6780970300..3af6176f411f9b7621580c081c7c565ccef6c825 100644
--- a/src/dynamic_graph/tools.py
+++ b/src/dynamic_graph/tools.py
@@ -8,8 +8,8 @@ def addTrace(robot, trace, entityName, signalName, autoRecompute=True):
     """
     Add a signal to a tracer and recompute it automatically if necessary.
     """
-    signal = '{0}.{1}'.format(entityName, signalName)
-    filename = '{0}-{1}'.format(entityName, signalName).replace('/', '_')
+    signal = "{0}.{1}".format(entityName, signalName)
+    filename = "{0}-{1}".format(entityName, signalName).replace("/", "_")
     trace.add(signal, filename)
     if autoRecompute:
         robot.device.after.addSignal(signal)
diff --git a/src/dynamic_graph/tracer/wrap.cc b/src/dynamic_graph/tracer/wrap.cc
index fcb6d22ad6e9f1a70ff22f0e00fd89b515c71d58..10a0a0257e42ed78e0f62f2a3e07c8f35b3fb9c7 100644
--- a/src/dynamic_graph/tracer/wrap.cc
+++ b/src/dynamic_graph/tracer/wrap.cc
@@ -6,5 +6,6 @@ BOOST_PYTHON_MODULE(wrap) {
   using dynamicgraph::Tracer;
 
   bp::import("dynamic_graph");
-  dynamicgraph::python::exposeEntity<Tracer>().def("addSignal", &Tracer::addSignalToTrace);
+  dynamicgraph::python::exposeEntity<Tracer>().def("addSignal",
+                                                   &Tracer::addSignalToTrace);
 }
diff --git a/src/interpreter.cc b/src/interpreter.cc
index fa75936803e4df9a8bffc7804500ad94e4a99626..f80dbb1efeefc6eb802f29d74620658b59d4736e 100644
--- a/src/interpreter.cc
+++ b/src/interpreter.cc
@@ -12,27 +12,29 @@
 #include "dynamic-graph/debug.h"
 #include "dynamic-graph/python/interpreter.hh"
 
-std::ofstream dg_debugfile("/tmp/dynamic-graph-traces.txt", std::ios::trunc& std::ios::out);
+std::ofstream dg_debugfile("/tmp/dynamic-graph-traces.txt",
+                           std::ios::trunc& std::ios::out);
 
 // Python initialization commands
 namespace dynamicgraph {
 namespace python {
-static const std::string pythonPrefix[8] = {"from __future__ import print_function\n",
-                                            "import traceback\n",
-                                            "class StdoutCatcher:\n"
-                                            "    def __init__(self):\n"
-                                            "        self.data = ''\n"
-                                            "    def write(self, stuff):\n"
-                                            "        self.data = self.data + stuff\n"
-                                            "    def fetch(self):\n"
-                                            "        s = self.data[:]\n"
-                                            "        self.data = ''\n"
-                                            "        return s\n",
-                                            "stdout_catcher = StdoutCatcher()\n",
-                                            "stderr_catcher = StdoutCatcher()\n",
-                                            "import sys\n",
-                                            "sys.stdout = stdout_catcher",
-                                            "sys.stderr = stderr_catcher"};
+static const std::string pythonPrefix[8] = {
+    "from __future__ import print_function\n",
+    "import traceback\n",
+    "class StdoutCatcher:\n"
+    "    def __init__(self):\n"
+    "        self.data = ''\n"
+    "    def write(self, stuff):\n"
+    "        self.data = self.data + stuff\n"
+    "    def fetch(self):\n"
+    "        s = self.data[:]\n"
+    "        self.data = ''\n"
+    "        return s\n",
+    "stdout_catcher = StdoutCatcher()\n",
+    "stderr_catcher = StdoutCatcher()\n",
+    "import sys\n",
+    "sys.stdout = stdout_catcher",
+    "sys.stderr = stderr_catcher"};
 
 bool HandleErr(std::string& err, PyObject* globals_, int PythonInputType) {
   dgDEBUGIN(15);
@@ -42,7 +44,8 @@ bool HandleErr(std::string& err, PyObject* globals_, int PythonInputType) {
   if (PyErr_Occurred() != NULL) {
     bool is_syntax_error = PyErr_ExceptionMatches(PyExc_SyntaxError);
     PyErr_Print();
-    PyObject* stderr_obj = PyRun_String("stderr_catcher.fetch()", Py_eval_input, globals_, globals_);
+    PyObject* stderr_obj = PyRun_String("stderr_catcher.fetch()", Py_eval_input,
+                                        globals_, globals_);
     err = obj_to_str(stderr_obj);
     Py_DECREF(stderr_obj);
 
@@ -98,7 +101,8 @@ Interpreter::~Interpreter() {
   // Ideally, we should call Py_Finalize but this is not really supported by
   // Python.
   // Instead, we merelly remove variables.
-  // Code was taken here: https://github.com/numpy/numpy/issues/8097#issuecomment-356683953
+  // Code was taken here:
+  // https://github.com/numpy/numpy/issues/8097#issuecomment-356683953
   {
     PyObject* poAttrList = PyObject_Dir(mainmod_);
     PyObject* poAttrIter = PyObject_GetIter(poAttrList);
@@ -108,11 +112,13 @@ Interpreter::~Interpreter() {
       std::string oAttrName(obj_to_str(poAttrName));
 
       // Make sure we don't delete any private objects.
-      if (oAttrName.compare(0, 2, "__") != 0 || oAttrName.compare(oAttrName.size() - 2, 2, "__") != 0) {
+      if (oAttrName.compare(0, 2, "__") != 0 ||
+          oAttrName.compare(oAttrName.size() - 2, 2, "__") != 0) {
         PyObject* poAttr = PyObject_GetAttr(mainmod_, poAttrName);
 
         // Make sure we don't delete any module objects.
-        if (poAttr && poAttr->ob_type != mainmod_->ob_type) PyObject_SetAttr(mainmod_, poAttrName, NULL);
+        if (poAttr && poAttr->ob_type != mainmod_->ob_type)
+          PyObject_SetAttr(mainmod_, poAttrName, NULL);
 
         Py_DECREF(poAttr);
       }
@@ -135,7 +141,8 @@ std::string Interpreter::python(const std::string& command) {
   return lres;
 }
 
-void Interpreter::python(const std::string& command, std::string& res, std::string& out, std::string& err) {
+void Interpreter::python(const std::string& command, std::string& res,
+                         std::string& out, std::string& err) {
   res = "";
   out = "";
   err = "";
@@ -150,18 +157,21 @@ void Interpreter::python(const std::string& command, std::string& res, std::stri
   PyEval_RestoreThread(_pyState);
 
   std::cout << command.c_str() << std::endl;
-  PyObject* result = PyRun_String(command.c_str(), Py_eval_input, globals_, globals_);
+  PyObject* result =
+      PyRun_String(command.c_str(), Py_eval_input, globals_, globals_);
   // Check if the result is null.
   if (result == NULL) {
     // Test if this is a syntax error (due to the evaluation of an expression)
     // else just output the problem.
     if (!HandleErr(err, globals_, Py_eval_input)) {
       // If this is a statement, re-parse the command.
-      result = PyRun_String(command.c_str(), Py_single_input, globals_, globals_);
+      result =
+          PyRun_String(command.c_str(), Py_single_input, globals_, globals_);
 
       // If there is still an error build the appropriate err string.
       if (result == NULL) HandleErr(err, globals_, Py_single_input);
-      // If there is no error, make sure that the previous error message is erased.
+      // If there is no error, make sure that the previous error message is
+      // erased.
       else
         err = "";
     } else
@@ -169,7 +179,8 @@ void Interpreter::python(const std::string& command, std::string& res, std::stri
   }
 
   PyObject* stdout_obj = 0;
-  stdout_obj = PyRun_String("stdout_catcher.fetch()", Py_eval_input, globals_, globals_);
+  stdout_obj =
+      PyRun_String("stdout_catcher.fetch()", Py_eval_input, globals_, globals_);
   out = obj_to_str(stdout_obj);
   Py_DECREF(stdout_obj);
   // Local display for the robot (in debug mode or for the logs)
@@ -210,7 +221,8 @@ void Interpreter::runPythonFile(std::string filename, std::string& err) {
   PyEval_RestoreThread(_pyState);
 
   err = "";
-  PyObject* run = PyRun_File(pFile, filename.c_str(), Py_file_input, globals_, globals_);
+  PyObject* run =
+      PyRun_File(pFile, filename.c_str(), Py_file_input, globals_, globals_);
   if (run == NULL) {
     HandleErr(err, globals_, Py_file_input);
     std::cerr << err << std::endl;
diff --git a/tests/custom_entity.cpp b/tests/custom_entity.cpp
index b6da82241fb39af8956bbe22dc4bbe7b78184823..a7aa2f58692d4c6a7e150cab633c1a4afdddfa0d 100644
--- a/tests/custom_entity.cpp
+++ b/tests/custom_entity.cpp
@@ -23,7 +23,8 @@ namespace dynamicgraph {
 CustomEntity::CustomEntity(const std::string n)
     : Entity(n),
       m_sigdSIN(NULL, "CustomEntity(" + name + ")::input(double)::in_double"),
-      m_sigdTimeDepSOUT(boost::bind(&CustomEntity::update, this, _1, _2), m_sigdSIN,
+      m_sigdTimeDepSOUT(boost::bind(&CustomEntity::update, this, _1, _2),
+                        m_sigdSIN,
                         "CustomEntity(" + name + ")::input(double)::out_double")
 
 {
@@ -31,10 +32,14 @@ CustomEntity::CustomEntity(const std::string n)
 
   using namespace dynamicgraph::command;
 
-  this->addCommand("act", makeCommandVoid0(*this, &CustomEntity::act, docCommandVoid0("act on input signal")));
+  this->addCommand("act",
+                   makeCommandVoid0(*this, &CustomEntity::act,
+                                    docCommandVoid0("act on input signal")));
 }
 
-void CustomEntity::addSignal() { signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT); }
+void CustomEntity::addSignal() {
+  signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT);
+}
 
 void CustomEntity::rmValidSignal() {
   signalDeregistration("in_double");
@@ -45,14 +50,22 @@ double &CustomEntity::update(double &res, const int &inTime) {
   const double &aDouble = m_sigdSIN(inTime);
   res = aDouble;
   logger().stream(MSG_TYPE_ERROR) << "start update " << res << '\n';
-  DYNAMIC_GRAPH_ENTITY_DEBUG(*this) << "This is a message of level MSG_TYPE_DEBUG\n";
-  DYNAMIC_GRAPH_ENTITY_INFO(*this) << "This is a message of level MSG_TYPE_INFO\n";
-  DYNAMIC_GRAPH_ENTITY_WARNING(*this) << "This is a message of level MSG_TYPE_WARNING\n";
-  DYNAMIC_GRAPH_ENTITY_ERROR(*this) << "This is a message of level MSG_TYPE_ERROR\n";
-  DYNAMIC_GRAPH_ENTITY_DEBUG_STREAM(*this) << "This is a message of level MSG_TYPE_DEBUG_STREAM\n";
-  DYNAMIC_GRAPH_ENTITY_INFO_STREAM(*this) << "This is a message of level MSG_TYPE_INFO_STREAM\n";
-  DYNAMIC_GRAPH_ENTITY_WARNING_STREAM(*this) << "This is a message of level MSG_TYPE_WARNING_STREAM\n";
-  DYNAMIC_GRAPH_ENTITY_ERROR_STREAM(*this) << "This is a message of level MSG_TYPE_ERROR_STREAM\n";
+  DYNAMIC_GRAPH_ENTITY_DEBUG(*this)
+      << "This is a message of level MSG_TYPE_DEBUG\n";
+  DYNAMIC_GRAPH_ENTITY_INFO(*this)
+      << "This is a message of level MSG_TYPE_INFO\n";
+  DYNAMIC_GRAPH_ENTITY_WARNING(*this)
+      << "This is a message of level MSG_TYPE_WARNING\n";
+  DYNAMIC_GRAPH_ENTITY_ERROR(*this)
+      << "This is a message of level MSG_TYPE_ERROR\n";
+  DYNAMIC_GRAPH_ENTITY_DEBUG_STREAM(*this)
+      << "This is a message of level MSG_TYPE_DEBUG_STREAM\n";
+  DYNAMIC_GRAPH_ENTITY_INFO_STREAM(*this)
+      << "This is a message of level MSG_TYPE_INFO_STREAM\n";
+  DYNAMIC_GRAPH_ENTITY_WARNING_STREAM(*this)
+      << "This is a message of level MSG_TYPE_WARNING_STREAM\n";
+  DYNAMIC_GRAPH_ENTITY_ERROR_STREAM(*this)
+      << "This is a message of level MSG_TYPE_ERROR_STREAM\n";
   logger().stream(MSG_TYPE_ERROR) << "end update\n";
   return res;
 }
diff --git a/tests/dynamic-graph-python-test.cc b/tests/dynamic-graph-python-test.cc
index af2b39dcaa68f16e14fe966aa20ddff7c330b59c..7302a2ddc759b40f5288c6988dc89db4f39b078a 100644
--- a/tests/dynamic-graph-python-test.cc
+++ b/tests/dynamic-graph-python-test.cc
@@ -6,4 +6,6 @@
 
 #include <iostream>
 
-GraphTest::GraphTest() { std::cout << "Constructor of unitTesting object of class Graph." << std::endl; }
+GraphTest::GraphTest() {
+  std::cout << "Constructor of unitTesting object of class Graph." << std::endl;
+}
diff --git a/tests/dynamic-graph-python-test.cpp b/tests/dynamic-graph-python-test.cpp
index af2b39dcaa68f16e14fe966aa20ddff7c330b59c..7302a2ddc759b40f5288c6988dc89db4f39b078a 100644
--- a/tests/dynamic-graph-python-test.cpp
+++ b/tests/dynamic-graph-python-test.cpp
@@ -6,4 +6,6 @@
 
 #include <iostream>
 
-GraphTest::GraphTest() { std::cout << "Constructor of unitTesting object of class Graph." << std::endl; }
+GraphTest::GraphTest() {
+  std::cout << "Constructor of unitTesting object of class Graph." << std::endl;
+}
diff --git a/tests/interpreter-test-runfile.cc b/tests/interpreter-test-runfile.cc
index eb84cbc72f806a9cb187a84856a89464c969485c..9ff3254947acd13cb887778f1e7036f47eb26652 100644
--- a/tests/interpreter-test-runfile.cc
+++ b/tests/interpreter-test-runfile.cc
@@ -1,16 +1,19 @@
-// The purpose of this unit test is to check the interpreter::runPythonFile method
+// The purpose of this unit test is to check the interpreter::runPythonFile
+// method
 #include <cstring>
 #include <iostream>
 
 #include "dynamic-graph/python/interpreter.hh"
 
-bool testFile(const std::string& filename, const std::string& expectedOutput, int numTest) {
+bool testFile(const std::string& filename, const std::string& expectedOutput,
+              int numTest) {
   std::string err = "";
   dynamicgraph::python::Interpreter interp;
   for (int i = 0; i < numTest; ++i) {
     interp.runPythonFile(filename, err);
     if (err != expectedOutput) {
-      std::cerr << "At iteration " << i << ", the output was not the one expected:" << std::endl;
+      std::cerr << "At iteration " << i
+                << ", the output was not the one expected:" << std::endl;
       std::cerr << " expected: " << expectedOutput << std::endl;
       std::cerr << " err:      " << err << std::endl;
       return false;
@@ -19,7 +22,8 @@ bool testFile(const std::string& filename, const std::string& expectedOutput, in
   return true;
 }
 
-bool testInterpreterDestructor(const std::string& filename, const std::string& expectedOutput) {
+bool testInterpreterDestructor(const std::string& filename,
+                               const std::string& expectedOutput) {
   std::string err = "";
   {
     dynamicgraph::python::Interpreter interp;
@@ -50,17 +54,22 @@ int main(int argc, char** argv) {
   // because re as been imported in a previous test and it is not
   // safe to delete imported module...
   res = testFile(PATH "test_python-name_error.py",
-                 std::string("Traceback (most recent call last):\n"
-                             "  File \"" PATH "test_python-name_error.py\", line 7, in <module>\n"
-                             "    pathList = re.split(':', pkgConfigPath)  # noqa\n"
-                             "NameError: name 're' is not defined\n"),
+                 std::string(
+                     "Traceback (most recent call last):\n"
+                     "  File \"" PATH
+                     "test_python-name_error.py\", line 7, in <module>\n"
+                     "    pathList = re.split(\":\", pkgConfigPath)  # noqa\n"
+                     "NameError: name 're' is not defined\n"),
                  numTest) &&
         res;
 
   res = testFile(PATH "test_python-ok.py", "", numTest) && res;
-  res = testFile(PATH "unexistant_file.py", PATH "unexistant_file.py cannot be open", numTest) && res;
+  res = testFile(PATH "unexistant_file.py",
+                 PATH "unexistant_file.py cannot be open", numTest) &&
+        res;
   res = testFile(PATH "test_python-syntax_error.py",
-                 std::string("  File \"" PATH "test_python-syntax_error.py\", line 2\n"
+                 std::string("  File \"" PATH
+                             "test_python-syntax_error.py\", line 2\n"
                              "    hello world\n"
 #if PY_MINOR_VERSION >= 10
                              "          ^^^^^\n"
@@ -72,6 +81,8 @@ int main(int argc, char** argv) {
                              "SyntaxError: invalid syntax\n"),
                  numTest) &&
         res;
-  res = testInterpreterDestructor(PATH "test_python-restart_interpreter.py", "") && res;
+  res = testInterpreterDestructor(PATH "test_python-restart_interpreter.py",
+                                  "") &&
+        res;
   return (res ? 0 : 1);
 }
diff --git a/tests/test_bindings.py b/tests/test_bindings.py
index d4d8a3680c08d159557ee0bb06f56ce337256916..425da39aac6d3d72399621ff816fc6aac5492ba8 100644
--- a/tests/test_bindings.py
+++ b/tests/test_bindings.py
@@ -3,50 +3,59 @@ import unittest
 import dynamic_graph as dg
 from custom_entity import CustomEntity
 
-ERR = """Python argument types in
+ERR = (
+    """Python argument types in
     dynamic_graph.wrap.plug(%s, %s)
 did not match C++ signature:
-    plug(dynamicgraph::SignalBase<int>* signalOut, dynamicgraph::SignalBase<int>* signalIn)"""
+    plug("""
+    "dynamicgraph::SignalBase<int>* signalOut, "
+    "dynamicgraph::SignalBase<int>* signalIn)"
+)
 
 
 class BindingsTests(unittest.TestCase):
-
     def test_type_check(self):
         """
         test the type checking in signal plugs
         """
-        first = CustomEntity('first_entity')
-        second = CustomEntity('second_entity')
+        first = CustomEntity("first_entity")
+        second = CustomEntity("second_entity")
         # Check that we can connect first.out to second.in
-        dg.plug(first.signal('out_double'), second.signal('in_double'))
+        dg.plug(first.signal("out_double"), second.signal("in_double"))
 
         # Check that we can't connect first.out to second
         with self.assertRaises(TypeError) as cm_in:
-            dg.plug(first.signal('out_double'), second)
-        self.assertEqual(str(cm_in.exception), ERR % ("SignalTimeDependentDouble", "CustomEntity"))
+            dg.plug(first.signal("out_double"), second)
+        self.assertEqual(
+            str(cm_in.exception), ERR % ("SignalTimeDependentDouble", "CustomEntity")
+        )
 
         # Check that we can't connect first to second.in
         with self.assertRaises(TypeError) as cm_out:
-            dg.plug(first, second.signal('in_double'))
-        self.assertEqual(str(cm_out.exception), ERR % ("CustomEntity", "SignalPtrDouble"))
+            dg.plug(first, second.signal("in_double"))
+        self.assertEqual(
+            str(cm_out.exception), ERR % ("CustomEntity", "SignalPtrDouble")
+        )
 
     def test_dg_exc(self):
         """
         test that exceptions from dynamic graph are correctly raised
         """
-        ent = CustomEntity('test_dg_exc')
+        ent = CustomEntity("test_dg_exc")
         # check that accessing a non initialized signal raises
         with self.assertRaises(RuntimeError) as cm:
             ent.act()
         self.assertEqual(
             str(cm.exception),
-            'In SignalPtr: SIN ptr not set. (in signal <CustomEntity(test_dg_exc)::input(double)::in_double>)')
+            "In SignalPtr: SIN ptr not set. "
+            "(in signal <CustomEntity(test_dg_exc)::input(double)::in_double>)",
+        )
 
         # check that accessing an initialized signal doesn't raise
-        ent_2 = CustomEntity('another_entity')
-        dg.plug(ent_2.signal('out_double'), ent.signal('in_double'))
+        ent_2 = CustomEntity("another_entity")
+        dg.plug(ent_2.signal("out_double"), ent.signal("in_double"))
         ent.act()
 
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     unittest.main()
diff --git a/tests/test_custom_entity.py b/tests/test_custom_entity.py
index e1fc6f619be297a4365e01e86bb47dca69e83d07..a22239958665f128b28650208e81d38d646a6dc6 100644
--- a/tests/test_custom_entity.py
+++ b/tests/test_custom_entity.py
@@ -5,8 +5,13 @@ import os
 import time
 
 from custom_entity import CustomEntity
-from dynamic_graph import (addLoggerCoutOutputStream, addLoggerFileOutputStream, closeLoggerFileOutputStream,
-                           real_time_logger_destroy, real_time_logger_spin_once)
+from dynamic_graph import (
+    addLoggerCoutOutputStream,
+    addLoggerFileOutputStream,
+    closeLoggerFileOutputStream,
+    real_time_logger_destroy,
+    real_time_logger_spin_once,
+)
 from dynamic_graph.entity import VerbosityLevel
 
 print(os.getcwd())
diff --git a/tests/test_python-name_error.py b/tests/test_python-name_error.py
index a245077dd6fe95c3f82684c222e3baa71d17bff6..46b7b430aa5053661b5f9e9ce4844c98015d8dd0 100644
--- a/tests/test_python-name_error.py
+++ b/tests/test_python-name_error.py
@@ -3,7 +3,7 @@ import os
 
 pkgConfigPath = os.environ.get("PKG_CONFIG_PATH")
 if pkgConfigPath is None:
-    pkgConfigPath = ''
-pathList = re.split(':', pkgConfigPath)  # noqa
+    pkgConfigPath = ""
+pathList = re.split(":", pkgConfigPath)  # noqa
 
 print(pathList)
diff --git a/tests/test_python-ok.py b/tests/test_python-ok.py
index 6b51a84ccc67744dad75d06b9de21e77bb2e15a1..d4641c9c34b40c5bd10edcefb2366841da4ee058 100644
--- a/tests/test_python-ok.py
+++ b/tests/test_python-ok.py
@@ -3,7 +3,7 @@ import re
 
 pkgConfigPath = os.environ.get("PKG_CONFIG_PATH")
 if pkgConfigPath is None:
-    pkgConfigPath = ''
-pathList = re.split(':', pkgConfigPath)
+    pkgConfigPath = ""
+pathList = re.split(":", pkgConfigPath)
 
 print(pathList)
diff --git a/tests/test_python-restart_interpreter.py b/tests/test_python-restart_interpreter.py
index 9c759cc83b0652dfc67bcc00cb17c02315011776..99bc30be60983a109c24b9c9657c420b5fc027e5 100644
--- a/tests/test_python-restart_interpreter.py
+++ b/tests/test_python-restart_interpreter.py
@@ -3,6 +3,6 @@ import numpy  # noqa
 
 # Make sure the variable is deleted.
 if "var" in locals() or "var" in globals():
-    raise ValueError('Not cleaned')
+    raise ValueError("Not cleaned")
 
 var = "This string should have been deleted."