diff --git a/lib/logging_utils.py b/lib/logging_utils.py
index 0cdbea9..7936c25 100644
--- a/lib/logging_utils.py
+++ b/lib/logging_utils.py
@@ -4,23 +4,28 @@
 Provide useful error log utility keywords.
 """
 
-import gen_print as gp
-import variables as var
-import gen_robot_utils as gru
-import sys
-import os
 import imp
+import os
+import sys
 
+import gen_print as gp
+import gen_robot_utils as gru
+import variables as var
 from robot.libraries.BuiltIn import BuiltIn
 
-base_path = os.path.dirname(os.path.dirname(
-                            imp.find_module("gen_robot_print")[1])) + os.sep
+base_path = (
+    os.path.dirname(os.path.dirname(imp.find_module("gen_robot_print")[1]))
+    + os.sep
+)
 sys.path.append(base_path + "data/")
 gru.my_import_resource("logging_utils.robot")
 
 
-redfish_support_trans_state = int(os.environ.get('REDFISH_SUPPORT_TRANS_STATE', 0)) or \
-    int(BuiltIn().get_variable_value("${REDFISH_SUPPORT_TRANS_STATE}", default=0))
+redfish_support_trans_state = int(
+    os.environ.get("REDFISH_SUPPORT_TRANS_STATE", 0)
+) or int(
+    BuiltIn().get_variable_value("${REDFISH_SUPPORT_TRANS_STATE}", default=0)
+)
 
 
 def print_error_logs(error_logs, key_list=None):
@@ -107,7 +112,7 @@
     """
 
     if error_logs is None:
-        error_logs = BuiltIn().run_keyword('Get Error Logs')
+        error_logs = BuiltIn().run_keyword("Get Error Logs")
 
     # Look for any error log entries containing the 'AdditionalData' field
     # which in turn has an entry starting with "ESEL=".  Here is an excerpt of
@@ -119,9 +124,9 @@
     #       [AdditionalData][1]:   ESEL=00 00 df 00 00 00 00 20 00 04...
     esels = []
     for error_log in error_logs.values():
-        if 'AdditionalData' in error_log:
-            for additional_data in error_log['AdditionalData']:
-                if additional_data.startswith('ESEL='):
+        if "AdditionalData" in error_log:
+            for additional_data in error_log["AdditionalData"]:
+                if additional_data.startswith("ESEL="):
                     esels.append(additional_data)
 
     return esels
