diff --git a/bin/plug_ins/FFDC/cp_ffdc_check b/bin/plug_ins/FFDC/cp_ffdc_check
index 8d51271..b928658 100755
--- a/bin/plug_ins/FFDC/cp_ffdc_check
+++ b/bin/plug_ins/FFDC/cp_ffdc_check
@@ -1,35 +1,41 @@
 #!/usr/bin/env python3
 
+from gen_arg import *
+from gen_call_robot import *
+from gen_cmd import *
+from gen_misc import *
+from gen_plug_in_utils import *
 from gen_print import *
 from gen_valid import *
-from gen_arg import *
-from gen_misc import *
-from gen_cmd import *
-from gen_plug_in_utils import *
-from gen_call_robot import *
 
 # Set exit_on_error for gen_valid functions.
 set_exit_on_error(True)
 
 parser = argparse.ArgumentParser(
-    usage='%(prog)s [OPTIONS]',
-    description="%(prog)s will determine whether FFDC should be collected.  If so, it will return "
-    + repr(dump_ffdc_rc()) + ".",
+    usage="%(prog)s [OPTIONS]",
+    description=(
+        "%(prog)s will determine whether FFDC should be collected.  If so, it"
+        " will return "
+    )
+    + repr(dump_ffdc_rc())
+    + ".",
     formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-    prefix_chars='-+')
+    prefix_chars="-+",
+)
 
 # The stock_list will be passed to gen_get_options.  We populate it with the names of stock parm options we
 # want.  These stock parms are pre-defined by gen_get_options.
-stock_list = [("test_mode", get_plug_default("test_mode", 0)),
-              ("quiet", get_plug_default("quiet", 0)),
-              ("debug", get_plug_default("debug", 0))]
+stock_list = [
+    ("test_mode", get_plug_default("test_mode", 0)),
+    ("quiet", get_plug_default("quiet", 0)),
+    ("debug", get_plug_default("debug", 0)),
+]
 
 # For now we are hard-coding this value vs adding a soft_errors=boolean entry in the parm_def file.
 FFDC_SOFT_ERRORS = 1
 
 
-def exit_function(signal_number=0,
-                  frame=None):
+def exit_function(signal_number=0, frame=None):
     r"""
     Execute whenever the program ends normally or with the signals that we catch (i.e. TERM, INT).
 
@@ -52,14 +58,15 @@
 
 
 def main():
-
     gen_setup()
 
     print_plug_in_header()
 
     if FFDC_COMMAND.upper() == "FAIL":
         if AUTOBOOT_BOOT_SUCCESS == "0":
-            print_timen("The caller wishes to dump FFDC after each boot failure.")
+            print_timen(
+                "The caller wishes to dump FFDC after each boot failure."
+            )
             exit(dump_ffdc_rc())
     elif FFDC_COMMAND.upper() == "ALL":
         print_timen("The caller wishes to dump FFDC after each boot test.")
@@ -73,8 +80,10 @@
         # Check the num_error_logs value left by the Soft_errors plug-in.
         num_error_logs = int(restore_plug_in_value(0, "Soft_errors"))
         if num_error_logs > 0:
-            print_timen("The \"Soft_errors\" plug-in found soft_errors and the"
-                        + " caller wishes to dump FFDC on soft errors.")
+            print_timen(
+                'The "Soft_errors" plug-in found soft_errors and the'
+                + " caller wishes to dump FFDC on soft errors."
+            )
             exit(dump_ffdc_rc())
 
     print_timen("The caller does not wish for any FFDC to be collected.")
