diff --git a/gui/lib/supporting_libs.py b/gui/lib/supporting_libs.py
index 4cc3044..ae7d005 100644
--- a/gui/lib/supporting_libs.py
+++ b/gui/lib/supporting_libs.py
@@ -9,7 +9,6 @@
 import socket
 
 
-class supporting_libs():
-
+class supporting_libs:
     def get_hostname_from_ip_address(self, ip):
         return socket.gethostbyaddr(ip)[0]
diff --git a/gui/lib/utils_get_version.py b/gui/lib/utils_get_version.py
index 0c7f279..3f1d331 100755
--- a/gui/lib/utils_get_version.py
+++ b/gui/lib/utils_get_version.py
@@ -1,11 +1,19 @@
 #!/usr/bin/env python3
 
-import gen_print as gp
-import gen_cmd as gc
 import collections
 
-module_names = ['Selenium2Library', 'SeleniumLibrary', 'SSHLibrary', 'requests',
-                'XvfbRobot', 'robotremoteserver', 'redfish']
+import gen_cmd as gc
+import gen_print as gp
+
+module_names = [
+    "Selenium2Library",
+    "SeleniumLibrary",
+    "SSHLibrary",
+    "requests",
+    "XvfbRobot",
+    "robotremoteserver",
+    "redfish",
+]
 
 import_versions = collections.OrderedDict()
 
@@ -13,8 +21,13 @@
     try:
         cmd_buf = "import " + module_name
         exec(cmd_buf)
-        cmd_buf = "import_versions['" + module_name + "'] = " + module_name \
-                  + ".__version__"
+        cmd_buf = (
+            "import_versions['"
+            + module_name
+            + "'] = "
+            + module_name
+            + ".__version__"
+        )
         exec(cmd_buf)
     except ImportError:
         import_versions[module_name] = "Not installed"
@@ -50,21 +63,30 @@
 
     quiet = 1
     versions = collections.OrderedDict()
-    for package in ['python', 'python3', 'robot', 'firefox', 'google-chrome']:
+    for package in ["python", "python3", "robot", "firefox", "google-chrome"]:
         # Note: "robot --version" returns 0x00000000000000fb.
         # Note: If package does not exist, 0x7f is returned.
-        rc, version = gc.shell_cmd(package + " --version",
-                                   valid_rcs=[0, 0x7f, 0xfb])
-        versions[package] = "Not installed" if rc == 0x7f else version.rstrip('\n')
+        rc, version = gc.shell_cmd(
+            package + " --version", valid_rcs=[0, 0x7F, 0xFB]
+        )
+        versions[package] = (
+            "Not installed" if rc == 0x7F else version.rstrip("\n")
+        )
 
     versions.update(import_versions)
 
-    for package in ['robotframework-angularjs', 'robotframework-scplibrary',
-                    'robotframework-extendedselenium2library']:
-        rc, version = gc.shell_cmd("pip3 show " + package
-                                   + " | grep Version | sed -re 's/.*: //g'")
-        versions[package] = "Not installed" if not version else version.rstrip('\n')
+    for package in [
+        "robotframework-angularjs",
+        "robotframework-scplibrary",
+        "robotframework-extendedselenium2library",
+    ]:
+        rc, version = gc.shell_cmd(
+            "pip3 show " + package + " | grep Version | sed -re 's/.*: //g'"
+        )
+        versions[package] = (
+            "Not installed" if not version else version.rstrip("\n")
+        )
 
     rc, version = gc.shell_cmd("lsb_release -d -s")
-    versions["host OS"] = "Failed" if not version else version.rstrip('\n')
+    versions["host OS"] = "Failed" if not version else version.rstrip("\n")
     return versions
