diff --git a/ffdc/ffdc_collector.py b/ffdc/ffdc_collector.py
index c09a71a..27b088c 100644
--- a/ffdc/ffdc_collector.py
+++ b/ffdc/ffdc_collector.py
@@ -758,7 +758,7 @@
         """
         redfish_parm = 'redfishtool -r ' \
                        + self.hostname + ' -S Always raw GET /redfish/v1/'
-        return(self.run_tool_cmd(redfish_parm, True))
+        return (self.run_tool_cmd(redfish_parm, True))
 
     def verify_ipmi(self):
         r"""
@@ -772,7 +772,7 @@
             ipmi_parm = 'ipmitool -I lanplus  -P ' \
                 + self.password + ' -H ' + self.hostname + ' power status'
 
-        return(self.run_tool_cmd(ipmi_parm, True))
+        return (self.run_tool_cmd(ipmi_parm, True))
 
     def run_tool_cmd(self,
                      parms_string,
diff --git a/lib/bmc_redfish.py b/lib/bmc_redfish.py
index db9e013..2ae405a 100644
--- a/lib/bmc_redfish.py
+++ b/lib/bmc_redfish.py
@@ -56,7 +56,7 @@
             if not result:
                 gp.lprint_var(except_type)
                 gp.lprint_varx("except_value", str(except_value))
-                raise(get_exception)
+                raise (get_exception)
         BuiltIn().set_global_variable("${REDFISH_SUPPORTED}", self.__inited__)
         BuiltIn().set_global_variable("${REDFISH_REST_SUPPORTED}", True)
 
diff --git a/lib/func_timer.py b/lib/func_timer.py
index 0021163..852bbf2 100644
--- a/lib/func_timer.py
+++ b/lib/func_timer.py
@@ -223,7 +223,7 @@
             # exception.
             gp.lprint_timen("Encountered exception in user's function.")
             self.cleanup()
-            raise(func_exception)
+            raise (func_exception)
         gp.lprint_timen("Returned from the user's function.")
 
         self.cleanup()
diff --git a/lib/gen_plug_in_utils.py b/lib/gen_plug_in_utils.py
index 7ec2088..0cf3262 100755
--- a/lib/gen_plug_in_utils.py
+++ b/lib/gen_plug_in_utils.py
@@ -288,7 +288,7 @@
     default_value = os.environ.get(package_var_name, None)
     if default_value is not None:
         # A package-name version of the variable was found so return its value.
-        return(default_value)
+        return (default_value)
 
     plug_var_name = PLUG_VAR_PREFIX + "_OVERRIDE_" + var_name
     default_value = os.environ.get(plug_var_name, None)
diff --git a/lib/gen_robot_ssh.py b/lib/gen_robot_ssh.py
index cd1a997..ab68415 100755
--- a/lib/gen_robot_ssh.py
+++ b/lib/gen_robot_ssh.py
@@ -142,7 +142,7 @@
         return
 
     # If we get to this point, the login has failed on all attempts so the exception will be raised again.
-    raise(except_value)
+    raise (except_value)
 
 
 def execute_ssh_command(cmd_buf,
@@ -305,7 +305,7 @@
             # We do not handle any other RuntimeErrors so we will raise the exception again.
             sshlib.close_all_connections()
             gp.lprintn(traceback.format_exc())
-            raise(except_value)
+            raise (except_value)
 
         # If we get to this point, the command was executed.
         break
