diff --git a/scripts/update_schemas.py b/scripts/update_schemas.py
index d1c93bc..80208ad 100755
--- a/scripts/update_schemas.py
+++ b/scripts/update_schemas.py
@@ -11,7 +11,7 @@
 
 VERSION = "DSP8010_2021.4"
 
-WARNING = '''/****************************************************************
+WARNING = """/****************************************************************
  *                 READ THIS WARNING FIRST
  * This is an auto-generated header which contains definitions
  * for Redfish DMTF defined schemas.
@@ -20,132 +20,133 @@
  * this file are owned by DMTF.  Any modifications to these files
  * should be first pushed to the relevant registry in the DMTF
  * github organization.
- ***************************************************************/'''
+ ***************************************************************/"""
 
 # To use a new schema, add to list and rerun tool
 include_list = [
-    'AccountService',
-    'ActionInfo',
-    'Assembly',
-    'AttributeRegistry',
-    'Bios',
-    'Cable',
-    'CableCollection',
-    'Certificate',
-    'CertificateCollection',
-    'CertificateLocations',
-    'CertificateService',
-    'Chassis',
-    'ChassisCollection',
-    'ComputerSystem',
-    'ComputerSystemCollection',
-    'Drive',
-    'DriveCollection',
-    'EthernetInterface',
-    'EthernetInterfaceCollection',
-    'Event',
-    'EventDestination',
-    'EventDestinationCollection',
-    'EventService',
-    'IPAddresses',
-    'JsonSchemaFile',
-    'JsonSchemaFileCollection',  # redfish/v1/JsonSchemas
-    'LogEntry',
-    'LogEntryCollection',
-    'LogService',
-    'LogServiceCollection',
-    'Manager',
-    'ManagerAccount',
-    'ManagerAccountCollection',
-    'ManagerCollection',
-    'ManagerDiagnosticData',
-    'ManagerNetworkProtocol',
-    'Memory',
-    'MemoryCollection',
-    'Message',
-    'MessageRegistry',
-    'MessageRegistryCollection',
-    'MessageRegistryFile',
-    'MessageRegistryFileCollection',
-    'MetricDefinition',
-    'MetricDefinitionCollection',
-    'MetricReport',
-    'MetricReportCollection',
-    'MetricReportDefinition',
-    'MetricReportDefinitionCollection',
-    'OperatingConfig',
-    'OperatingConfigCollection',
-    'PCIeDevice',
-    'PCIeDeviceCollection',
-    'PCIeFunction',
-    'PCIeFunctionCollection',
-    'PhysicalContext',
-    'PCIeSlots',
-    'Power',
-    'Privileges',  # Used in Role
-    'Processor',
-    'ProcessorCollection',
-    'RedfishError',
-    'RedfishExtensions',
-    'Redundancy',
-    'Resource',
-    'Role',
-    'RoleCollection',
-    'Sensor',
-    'SensorCollection',
-    'ServiceRoot',
-    'Session',
-    'SessionCollection',
-    'SessionService',
-    'Settings',
-    'SoftwareInventory',
-    'SoftwareInventoryCollection',
-    'Storage',
-    'StorageCollection',
-    'StorageController',
-    'StorageControllerCollection',
-    'Task',
-    'TaskCollection',
-    'TaskService',
-    'TelemetryService',
-    'Thermal',
-    'ThermalSubsystem',
-    'Triggers',
-    'TriggersCollection',
-    'UpdateService',
-    'VLanNetworkInterfaceCollection',
-    'VLanNetworkInterface',
-    'VirtualMedia',
-    'VirtualMediaCollection',
-    'odata',
-    'odata-v4',
-    'redfish-error',
-    'redfish-payload-annotations',
-    'redfish-schema',
-    'redfish-schema-v1',
+    "AccountService",
+    "ActionInfo",
+    "Assembly",
+    "AttributeRegistry",
+    "Bios",
+    "Cable",
+    "CableCollection",
+    "Certificate",
+    "CertificateCollection",
+    "CertificateLocations",
+    "CertificateService",
+    "Chassis",
+    "ChassisCollection",
+    "ComputerSystem",
+    "ComputerSystemCollection",
+    "Drive",
+    "DriveCollection",
+    "EthernetInterface",
+    "EthernetInterfaceCollection",
+    "Event",
+    "EventDestination",
+    "EventDestinationCollection",
+    "EventService",
+    "IPAddresses",
+    "JsonSchemaFile",
+    "JsonSchemaFileCollection",  # redfish/v1/JsonSchemas
+    "LogEntry",
+    "LogEntryCollection",
+    "LogService",
+    "LogServiceCollection",
+    "Manager",
+    "ManagerAccount",
+    "ManagerAccountCollection",
+    "ManagerCollection",
+    "ManagerDiagnosticData",
+    "ManagerNetworkProtocol",
+    "Memory",
+    "MemoryCollection",
+    "Message",
+    "MessageRegistry",
+    "MessageRegistryCollection",
+    "MessageRegistryFile",
+    "MessageRegistryFileCollection",
+    "MetricDefinition",
+    "MetricDefinitionCollection",
+    "MetricReport",
+    "MetricReportCollection",
+    "MetricReportDefinition",
+    "MetricReportDefinitionCollection",
+    "OperatingConfig",
+    "OperatingConfigCollection",
+    "PCIeDevice",
+    "PCIeDeviceCollection",
+    "PCIeFunction",
+    "PCIeFunctionCollection",
+    "PhysicalContext",
+    "PCIeSlots",
+    "Power",
+    "Privileges",  # Used in Role
+    "Processor",
+    "ProcessorCollection",
+    "RedfishError",
+    "RedfishExtensions",
+    "Redundancy",
+    "Resource",
+    "Role",
+    "RoleCollection",
+    "Sensor",
+    "SensorCollection",
+    "ServiceRoot",
+    "Session",
+    "SessionCollection",
+    "SessionService",
+    "Settings",
+    "SoftwareInventory",
+    "SoftwareInventoryCollection",
+    "Storage",
+    "StorageCollection",
+    "StorageController",
+    "StorageControllerCollection",
+    "Task",
+    "TaskCollection",
+    "TaskService",
+    "TelemetryService",
+    "Thermal",
+    "ThermalSubsystem",
+    "Triggers",
+    "TriggersCollection",
+    "UpdateService",
+    "VLanNetworkInterfaceCollection",
+    "VLanNetworkInterface",
+    "VirtualMedia",
+    "VirtualMediaCollection",
+    "odata",
+    "odata-v4",
+    "redfish-error",
+    "redfish-payload-annotations",
+    "redfish-schema",
+    "redfish-schema-v1",
 ]
 
 SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
 
-proxies = {
-    'https': os.environ.get("https_proxy", None)
-}
+proxies = {"https": os.environ.get("https_proxy", None)}
 
 r = requests.get(
-    'https://www.dmtf.org/sites/default/files/standards/documents/' +
-    VERSION +
-    '.zip',
-    proxies=proxies)
+    "https://www.dmtf.org/sites/default/files/standards/documents/"
+    + VERSION
+    + ".zip",
+    proxies=proxies,
+)
 
 r.raise_for_status()
 
 
-static_path = os.path.realpath(os.path.join(SCRIPT_DIR, "..", "static",
-                                            "redfish", "v1"))
+static_path = os.path.realpath(
+    os.path.join(SCRIPT_DIR, "..", "static", "redfish", "v1")
+)
 
 
-cpp_path = os.path.realpath(os.path.join(SCRIPT_DIR, "..", "redfish-core",
-                                         "include"))
+cpp_path = os.path.realpath(
+    os.path.join(SCRIPT_DIR, "..", "redfish-core", "include")
+)
 
 
 schema_path = os.path.join(static_path, "schema")
@@ -156,17 +157,23 @@
 zip_ref = zipfile.ZipFile(zipBytesIO)
 
 # Remove the old files
-skip_prefixes = ('Oem')
+skip_prefixes = "Oem"
 if os.path.exists(schema_path):
-    files = [os.path.join(schema_path, f) for f in os.listdir(schema_path)
-             if not f.startswith(skip_prefixes)]
+    files = [
+        os.path.join(schema_path, f)
+        for f in os.listdir(schema_path)
+        if not f.startswith(skip_prefixes)
+    ]
     for f in files:
         os.remove(f)
 if os.path.exists(json_schema_path):
-    files = [os.path.join(json_schema_path, f) for f in
-             os.listdir(json_schema_path) if not f.startswith(skip_prefixes)]
+    files = [
+        os.path.join(json_schema_path, f)
+        for f in os.listdir(json_schema_path)
+        if not f.startswith(skip_prefixes)
+    ]
     for f in files:
-        if (os.path.isfile(f)):
+        if os.path.isfile(f):
             os.remove(f)
         else:
             shutil.rmtree(f)
@@ -177,18 +184,21 @@
 if not os.path.exists(json_schema_path):
     os.makedirs(json_schema_path)
 
-with open(metadata_index_path, 'w') as metadata_index:
+with open(metadata_index_path, "w") as metadata_index:
 
-    metadata_index.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+    metadata_index.write('<?xml version="1.0" encoding="UTF-8"?>\n')
     metadata_index.write(
         "<edmx:Edmx xmlns:edmx="
-        "\"http://docs.oasis-open.org/odata/ns/edmx\""
-        " Version=\"4.0\">\n")
+        '"http://docs.oasis-open.org/odata/ns/edmx"'
+        ' Version="4.0">\n'
+    )
 
     for zip_filepath in zip_ref.namelist():
-        if zip_filepath.startswith('csdl/') and \
-            (zip_filepath != VERSION + "/csdl/") and \
-                (zip_filepath != "csdl/"):
+        if (
+            zip_filepath.startswith("csdl/")
+            and (zip_filepath != VERSION + "/csdl/")
+            and (zip_filepath != "csdl/")
+        ):
             filename = os.path.basename(zip_filepath)
 
             # filename looks like Zone_v1.xml
@@ -197,15 +207,16 @@
                 print("excluding schema: " + filename)
                 continue
 
-            with open(os.path.join(schema_path, filename), 'wb') as schema_out:
+            with open(os.path.join(schema_path, filename), "wb") as schema_out:
 
                 metadata_index.write(
-                    "    <edmx:Reference Uri=\"/redfish/v1/schema/" +
-                    filename +
-                    "\">\n")
+                    '    <edmx:Reference Uri="/redfish/v1/schema/'
+                    + filename
+                    + '">\n'
+                )
 
                 content = zip_ref.read(zip_filepath)
-                content = content.replace(b'\r\n', b'\n')
+                content = content.replace(b"\r\n", b"\n")
                 xml_root = ET.fromstring(content)
                 edmx = "{http://docs.oasis-open.org/odata/ns/edmx}"
                 edm = "{http://docs.oasis-open.org/odata/ns/edm}"
@@ -217,75 +228,88 @@
                                 if namespace.startswith("RedfishExtensions"):
                                     metadata_index.write(
                                         "        "
-                                        "<edmx:Include Namespace=\"" +
-                                        namespace +
-                                        "\"  Alias=\"Redfish\"/>\n"
+                                        '<edmx:Include Namespace="'
+                                        + namespace
+                                        + '"  Alias="Redfish"/>\n'
                                     )
 
                                 else:
                                     metadata_index.write(
                                         "        "
-                                        "<edmx:Include Namespace=\""
-                                        + namespace + "\"/>\n"
+                                        '<edmx:Include Namespace="'
+                                        + namespace
+                                        + '"/>\n'
                                     )
                 schema_out.write(content)
                 metadata_index.write("    </edmx:Reference>\n")
 
-    metadata_index.write("    <edmx:DataServices>\n"
-                         "        <Schema "
-                         "xmlns=\"http://docs.oasis-open.org/odata/ns/edm\" "
-                         "Namespace=\"Service\">\n"
-                         "            <EntityContainer Name=\"Service\" "
-                         "Extends=\"ServiceRoot.v1_0_0.ServiceContainer\"/>\n"
-                         "        </Schema>\n"
-                         "    </edmx:DataServices>\n"
-                         )
+    metadata_index.write(
+        "    <edmx:DataServices>\n"
+        "        <Schema "
+        'xmlns="http://docs.oasis-open.org/odata/ns/edm" '
+        'Namespace="Service">\n'
+        '            <EntityContainer Name="Service" '
+        'Extends="ServiceRoot.v1_0_0.ServiceContainer"/>\n'
+        "        </Schema>\n"
+        "    </edmx:DataServices>\n"
+    )
     # TODO:Issue#32 There's a bug in the script that currently deletes this
     # schema (because it's an OEM schema). Because it's the only six, and we
     # don't update schemas very often, we just manually fix it. Need a
     # permanent fix to the script.
     metadata_index.write(
-        "    <edmx:Reference Uri=\"/redfish/v1/schema/OemManager_v1.xml\">\n")
-    metadata_index.write("        <edmx:Include Namespace=\"OemManager\"/>\n")
+        '    <edmx:Reference Uri="/redfish/v1/schema/OemManager_v1.xml">\n'
+    )
+    metadata_index.write('        <edmx:Include Namespace="OemManager"/>\n')
     metadata_index.write("    </edmx:Reference>\n")
 
     metadata_index.write(
-        "    <edmx:Reference Uri=\""
-        "/redfish/v1/schema/OemComputerSystem_v1.xml\">\n")
+        '    <edmx:Reference Uri="'
+        '/redfish/v1/schema/OemComputerSystem_v1.xml">\n'
+    )
     metadata_index.write(
-        "        <edmx:Include Namespace=\"OemComputerSystem\"/>\n")
+        '        <edmx:Include Namespace="OemComputerSystem"/>\n'
+    )
     metadata_index.write("    </edmx:Reference>\n")
 
     metadata_index.write(
-        "    <edmx:Reference Uri=\""
-        "/redfish/v1/schema/OemVirtualMedia_v1.xml\">\n")
+        '    <edmx:Reference Uri="'
+        '/redfish/v1/schema/OemVirtualMedia_v1.xml">\n'
+    )
     metadata_index.write(
-        "        <edmx:Include Namespace=\"OemVirtualMedia\"/>\n")
+        '        <edmx:Include Namespace="OemVirtualMedia"/>\n'
+    )
     metadata_index.write(
-        "        <edmx:Include Namespace=\"OemVirtualMedia.v1_0_0\"/>\n")
+        '        <edmx:Include Namespace="OemVirtualMedia.v1_0_0"/>\n'
+    )
     metadata_index.write("    </edmx:Reference>\n")
 
     metadata_index.write(
-        "    <edmx:Reference Uri=\""
-        "/redfish/v1/schema/OemAccountService_v1.xml\">\n")
+        '    <edmx:Reference Uri="'
+        '/redfish/v1/schema/OemAccountService_v1.xml">\n'
+    )
     metadata_index.write(
-        "        <edmx:Include Namespace=\"OemAccountService\"/>\n")
+        '        <edmx:Include Namespace="OemAccountService"/>\n'
+    )
     metadata_index.write(
-        "        <edmx:Include Namespace=\"OemAccountService.v1_0_0\"/>\n")
+        '        <edmx:Include Namespace="OemAccountService.v1_0_0"/>\n'
+    )
     metadata_index.write("    </edmx:Reference>\n")
 
     metadata_index.write(
-        "    <edmx:Reference Uri=\"/redfish/v1/schema/OemSession_v1.xml\">\n")
-    metadata_index.write("        <edmx:Include Namespace=\"OemSession\"/>\n")
+        '    <edmx:Reference Uri="/redfish/v1/schema/OemSession_v1.xml">\n'
+    )
+    metadata_index.write('        <edmx:Include Namespace="OemSession"/>\n')
     metadata_index.write(
-        "        <edmx:Include Namespace=\"OemSession.v1_0_0\"/>\n")
+        '        <edmx:Include Namespace="OemSession.v1_0_0"/>\n'
+    )
     metadata_index.write("    </edmx:Reference>\n")
 
     metadata_index.write("</edmx:Edmx>\n")
 
 schema_files = {}
 for zip_filepath in zip_ref.namelist():
-    if zip_filepath.startswith(os.path.join('json-schema/')):
+    if zip_filepath.startswith(os.path.join("json-schema/")):
         filename = os.path.basename(zip_filepath)
         filenamesplit = filename.split(".")
 
@@ -299,8 +323,9 @@
                 schema_files[filenamesplit[0]] = filenamesplit[1]
             else:
                 # need to see if we're a newer version.
-                if list(map(int, filenamesplit[1][1:].split("_"))) > list(map(
-                        int, thisSchemaVersion[1:].split("_"))):
+                if list(map(int, filenamesplit[1][1:].split("_"))) > list(
+                    map(int, thisSchemaVersion[1:].split("_"))
+                ):
                     schema_files[filenamesplit[0]] = filenamesplit[1]
         else:
             # Unversioned schema include directly.  Invent a version so it can
@@ -317,10 +342,10 @@
     schemadir = os.path.join(json_schema_path, schema)
     os.makedirs(schemadir)
 
-    with open(os.path.join(schemadir, schema + ".json"), 'wb') as schema_file:
-        schema_file.write(zip_ref.read(zip_filepath).replace(b'\r\n', b'\n'))
+    with open(os.path.join(schemadir, schema + ".json"), "wb") as schema_file:
+        schema_file.write(zip_ref.read(zip_filepath).replace(b"\r\n", b"\n"))
 
-with open(os.path.join(cpp_path, "schemas.hpp"), 'w') as hpp_file:
+with open(os.path.join(cpp_path, "schemas.hpp"), "w") as hpp_file:
     hpp_file.write(
         "#pragma once\n"
         "{WARNING}\n"
@@ -328,15 +353,11 @@
         "\n"
         "namespace redfish\n"
         "{{\n"
-        "    constexpr std::array schemas {{\n"
-        .format(
-            WARNING=WARNING))
-    for schema_file in schema_files:
-        hpp_file.write("        \"{}\",\n".format(schema_file))
-
-    hpp_file.write(
-        "    };\n"
-        "}\n"
+        "    constexpr std::array schemas {{\n".format(WARNING=WARNING)
     )
+    for schema_file in schema_files:
+        hpp_file.write('        "{}",\n'.format(schema_file))
+
+    hpp_file.write("    };\n" "}\n")
 
 zip_ref.close()
