diff --git a/lib/gen_robot_valid.py b/lib/gen_robot_valid.py
index 3e4a0cd..264393b 100755
--- a/lib/gen_robot_valid.py
+++ b/lib/gen_robot_valid.py
@@ -1,8 +1,7 @@
 #!/usr/bin/env python
 
 r"""
-This module provides validation functions like valid_value(), valid_integer(),
-etc. for robot programs.
+This module provides validation functions like valid_value(), valid_integer(), etc. for robot programs.
 """
 
 import re
@@ -17,14 +16,11 @@
     r"""
     Validate the robot variable name and return its value.
 
-    If the variable is undefined, this function will print an error message
-    and call BuiltIn().fail().
+    If the variable is undefined, this function will print an error message and call BuiltIn().fail().
 
     Description of arguments():
-    var_name                        The name of the robot variable (e.g.
-                                    "var1").  Do not include "${}" (e.g.
-                                    "${var1}".  Just provide the simple name
-                                    of the variable.
+    var_name                        The name of the robot variable (e.g. "var1").  Do not include "${}" (e.g.
+                                    "${var1}".  Just provide the simple name of the variable.
     """
 
     # Note: get_variable_value() seems to have no trouble with local variables.
@@ -40,25 +36,20 @@
 
 def valid_init(var_name, *args, **kwargs):
     r"""
-    Do initialization for variable validation and return var_name, args and
-    kwargs.
+    Do initialization for variable validation and return var_name, args and kwargs.
 
-    This function is to be called by all of the various validation functions
-    in this module.
+    This function is to be called by all of the various validation functions in this module.
 
     This function is designed solely for use by other functions in this file.
 
     Description of argument(s):
     var_name                        The name of the variable to be validated.
-    args                            The positional arguments to be passed to a
-                                    validation function.
-    kwargs                          The keyword arguments to be passed to a
-                                    validation function.
+    args                            The positional arguments to be passed to a validation function.
+    kwargs                          The keyword arguments to be passed to a validation function.
     """
 
     var_value = valid_var_name(var_name)
-    # Convert python string object definitions to objects (useful for robot
-    # callers).
+    # Convert python string object definitions to objects (useful for robot callers).
     args = fa.args_to_objects(args)
     kwargs = fa.args_to_objects(kwargs)
     return var_value, args, kwargs
@@ -81,8 +72,7 @@
         BuiltIn().fail(error_message)
 
 
-# The docstring header will be pre-pended to each validation function's
-# existing docstring.
+# The docstring header will be pre-pended to each validation function's existing docstring.
 docstring_header = \
     r"""
     Fail if the variable named by var_name is invalid.
@@ -95,16 +85,14 @@
 
     This function is designed solely for use by other functions in this file.
 
-    The caller should pass a docstring from a gen_valid.py validation
-    function.  This docstring will be changed to make a suitable docstring for
-    this module's corresponding validation function.
+    The caller should pass a docstring from a gen_valid.py validation function.  This docstring will be
+    changed to make a suitable docstring for this module's corresponding validation function.
 
     For example:
 
-    Let's suppose that gen_valid.py has a function called "valid_value()".
-    This module could make the following call to essentially copy gen_valid's
-    "valid_value()" function, modify it and then assign it to the local
-    version of the valid_value() function.
+    Let's suppose that gen_valid.py has a function called "valid_value()".  This module could make the
+    following call to essentially copy gen_valid's "valid_value()" function, modify it and then assign it to
+    the local version of the valid_value() function.
 
     valid.__doc__ = customize_doc_string(gv.valid.__doc__)
 
@@ -127,12 +115,10 @@
     return "\n".join(doc_string)
 
 
-# All of the following functions are robot wrappers for the equivalent
-# functions defined in gen_valid.py.  Note that the only difference between
-# any two of these locally defined functions is the function name and 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.
+# All of the following functions are robot wrappers for the equivalent functions defined in gen_valid.py.
+# Note that the only difference between any two of these locally defined functions is the function name and
+# 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):
 
@@ -222,8 +208,8 @@
     process_error_message(error_message)
 
 
-# Modify the validation function docstrings by calling customize_doc_string
-# for each function in the func_names list.
+# 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",
