diff --git a/lib/gen_robot_valid.py b/lib/gen_robot_valid.py
index 5580a5e..d1e8d23 100755
--- a/lib/gen_robot_valid.py
+++ b/lib/gen_robot_valid.py
@@ -5,10 +5,10 @@
 """
 
 import re
+
+import func_args as fa
 import gen_print as gp
 import gen_valid as gv
-import func_args as fa
-
 from robot.libraries.BuiltIn import BuiltIn
 
 
@@ -27,8 +27,9 @@
     var_value = BuiltIn().get_variable_value("${" + var_name + "}")
     if var_value is None:
         var_value = "<undefined>"
-        error_message = gv.valid_value(var_value, invalid_values=[var_value],
-                                       var_name=var_name)
+        error_message = gv.valid_value(
+            var_value, invalid_values=[var_value], var_name=var_name
+        )
         BuiltIn().fail(error_message)
 
     return var_value
@@ -73,8 +74,7 @@
 
 
 # The docstring header will be pre-pended to each validation function's existing docstring.
-docstring_header = \
-    r"""
+docstring_header = r"""
     Fail if the variable named by var_name is invalid.
     """
 
@@ -105,12 +105,19 @@
 
     start_ix = 0
     # Find the "var_value" line.
-    start_ix = next((index for index, value in
-                     enumerate(doc_string[start_ix:], start_ix)
-                     if re.match("[ ]+var_value  ", value)), None)
+    start_ix = next(
+        (
+            index
+            for index, value in enumerate(doc_string[start_ix:], start_ix)
+            if re.match("[ ]+var_value  ", value)
+        ),
+        None,
+    )
     # Replace the "var_value" line with our "var_name" line.
-    doc_string[start_ix] = "    var_name                        " \
+    doc_string[start_ix] = (
+        "    var_name                        "
         + "The name of the variable to be validated."
+    )
 
     return "\n".join(doc_string)
 
@@ -120,121 +127,134 @@
 # the gv.<function name> which they call.  Also, note that the docstring for each is created by modifying the
 # docstring from the supporting gen_valid.py function.
 
-def valid_type(var_name, *args, **kwargs):
 
+def valid_type(var_name, *args, **kwargs):
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_type(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_type(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_value(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_value(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_value(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_range(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_range(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_range(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_integer(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_integer(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_integer(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_float(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_float(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_float(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_date_time(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_date_time(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_date_time(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_dir_path(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_dir_path(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_dir_path(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_file_path(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_file_path(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_file_path(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_path(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_path(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_path(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_list(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_list(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_list(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_dict(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_dict(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_dict(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_program(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_program(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_program(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 def valid_length(var_name, *args, **kwargs):
-
     var_value, args, kwargs = valid_init(var_name, *args, **kwargs)
-    error_message = \
-        gv.valid_length(var_value, *args, var_name=var_name, **kwargs)
+    error_message = gv.valid_length(
+        var_value, *args, var_name=var_name, **kwargs
+    )
     process_error_message(error_message)
 
 
 # Modify the validation function docstrings by calling customize_doc_string for each function in the
 # func_names list.
 func_names = [
-    "valid_type", "valid_value", "valid_range", "valid_integer",
-    "valid_dir_path", "valid_file_path", "valid_path", "valid_list",
-    "valid_dict", "valid_program", "valid_length", "valid_float",
-    "valid_date_time"
+    "valid_type",
+    "valid_value",
+    "valid_range",
+    "valid_integer",
+    "valid_dir_path",
+    "valid_file_path",
+    "valid_path",
+    "valid_list",
+    "valid_dict",
+    "valid_program",
+    "valid_length",
+    "valid_float",
+    "valid_date_time",
 ]
 
 for func_name in func_names:
-    cmd_buf = func_name \
-        + ".__doc__ = customize_doc_string(gv.raw_doc_strings['" \
-        + func_name + "'])"
+    cmd_buf = (
+        func_name
+        + ".__doc__ = customize_doc_string(gv.raw_doc_strings['"
+        + func_name
+        + "'])"
+    )
     exec(cmd_buf)
