]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools/GenFds: change objects to sets
authorCarsey, Jaben <jaben.carsey@intel.com>
Tue, 23 Oct 2018 17:29:20 +0000 (01:29 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Thu, 25 Oct 2018 12:15:07 +0000 (20:15 +0800)
Change lists and tuples used solely for "in" testing to sets.
These operations are not order dependent.
fixed some line length for PEP8 compliance on some.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
BaseTools/Source/Python/GenFds/FdfParser.py

index 62bf9f14012a29134b37805b469c86fa86554781..8b4d5e7fd863cc5e24602784fbc96f36fbb1c870 100644 (file)
@@ -70,6 +70,7 @@ SEPARATORS = {TAB_EQUAL_SPLIT, TAB_VALUE_SPLIT, TAB_COMMA_SPLIT, '{', '}'}
 ALIGNMENTS = {"Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",\r
                                     "256K", "512K", "1M", "2M", "4M", "8M", "16M"}\r
 ALIGNMENT_NOAUTO = ALIGNMENTS - {"Auto"}\r
+CR_LB_SET = {T_CHAR_CR, TAB_LINE_BREAK}\r
 \r
 RegionSizePattern = compile("\s*(?P<base>(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P<size>(?:0x|0X)?[a-fA-F0-9]+)\s*")\r
 RegionSizeGuidPattern = compile("\s*(?P<base>\w+\.\w+[\.\w\[\]]*)\s*\|\s*(?P<size>\w+\.\w+[\.\w\[\]]*)\s*")\r
@@ -266,7 +267,7 @@ class FdfParser:
     #\r
     def _SkipWhiteSpace(self):\r
         while not self._EndOfFile():\r
-            if self._CurrentChar() in (TAB_PRINTCHAR_NUL, T_CHAR_CR, TAB_LINE_BREAK, TAB_SPACE_SPLIT, T_CHAR_TAB):\r
+            if self._CurrentChar() in {TAB_PRINTCHAR_NUL, T_CHAR_CR, TAB_LINE_BREAK, TAB_SPACE_SPLIT, T_CHAR_TAB}:\r
                 self._SkippedChars += str(self._CurrentChar())\r
                 self._GetOneChar()\r
             else:\r
@@ -406,14 +407,14 @@ class FdfParser:
             return\r
 \r
         Offset = StartPos[1]\r
-        while self.Profile.FileLinesList[StartPos[0]][Offset] not in (T_CHAR_CR, TAB_LINE_BREAK):\r
+        while self.Profile.FileLinesList[StartPos[0]][Offset] not in CR_LB_SET:\r
             self.Profile.FileLinesList[StartPos[0]][Offset] = Value\r
             Offset += 1\r
 \r
         Line = StartPos[0]\r
         while Line < EndPos[0]:\r
             Offset = 0\r
-            while self.Profile.FileLinesList[Line][Offset] not in (T_CHAR_CR, TAB_LINE_BREAK):\r
+            while self.Profile.FileLinesList[Line][Offset] not in CR_LB_SET:\r
                 self.Profile.FileLinesList[Line][Offset] = Value\r
                 Offset += 1\r
             Line += 1\r
@@ -707,7 +708,7 @@ class FdfParser:
                     PreIndex = 0\r
                     StartPos = CurLine.find('$(', PreIndex)\r
                     EndPos = CurLine.find(')', StartPos+2)\r
-                    while StartPos != -1 and EndPos != -1 and self._Token not in [TAB_IF_DEF, TAB_IF_N_DEF, TAB_IF, TAB_ELSE_IF]:\r
+                    while StartPos != -1 and EndPos != -1 and self._Token not in {TAB_IF_DEF, TAB_IF_N_DEF, TAB_IF, TAB_ELSE_IF}:\r
                         MacroName = CurLine[StartPos+2: EndPos]\r
                         MacorValue = self._GetMacroValue(MacroName)\r
                         if MacorValue is not None:\r
@@ -759,7 +760,7 @@ class FdfParser:
                 self.Profile.PcdFileLineDict[PcdPair] = FileLineTuple\r
 \r
                 self._WipeOffArea.append(((SetLine, SetOffset), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
-            elif self._Token in (TAB_IF_DEF, TAB_IF_N_DEF, TAB_IF):\r
+            elif self._Token in {TAB_IF_DEF, TAB_IF_N_DEF, TAB_IF}:\r
                 IfStartPos = (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len(self._Token))\r
                 IfList.append([IfStartPos, None, None])\r
 \r
@@ -777,7 +778,7 @@ class FdfParser:
                 IfList[-1] = [IfList[-1][0], ConditionSatisfied, BranchDetermined]\r
                 if ConditionSatisfied:\r
                     self._WipeOffArea.append((IfList[-1][0], (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
-            elif self._Token in (TAB_ELSE_IF, '!else'):\r
+            elif self._Token in {TAB_ELSE_IF, TAB_ELSE}:\r
                 ElseStartPos = (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len(self._Token))\r
                 if len(IfList) <= 0:\r
                     raise Warning("Missing !if statement", self.FileName, self.CurrentLineNumber)\r
@@ -860,13 +861,12 @@ class FdfParser:
 \r
         MacroDict.update(GlobalData.gGlobalDefines)\r
         MacroDict.update(GlobalData.gCommandLineDefines)\r
-        if GlobalData.BuildOptionPcd:\r
-            for Item in GlobalData.BuildOptionPcd:\r
-                if isinstance(Item, tuple):\r
-                    continue\r
-                PcdName, TmpValue = Item.split(TAB_EQUAL_SPLIT)\r
-                TmpValue = BuildOptionValue(TmpValue, {})\r
-                MacroDict[PcdName.strip()] = TmpValue\r
+        for Item in GlobalData.BuildOptionPcd:\r
+            if isinstance(Item, tuple):\r
+                continue\r
+            PcdName, TmpValue = Item.split(TAB_EQUAL_SPLIT)\r
+            TmpValue = BuildOptionValue(TmpValue, {})\r
+            MacroDict[PcdName.strip()] = TmpValue\r
         # Highest priority\r
 \r
         return MacroDict\r
@@ -967,7 +967,7 @@ class FdfParser:
     def _GetExpression(self):\r
         Line = self.Profile.FileLinesList[self.CurrentLineNumber - 1]\r
         Index = len(Line) - 1\r
-        while Line[Index] in [T_CHAR_CR, TAB_LINE_BREAK]:\r
+        while Line[Index] in CR_LB_SET:\r
             Index -= 1\r
         ExpressionString = self.Profile.FileLinesList[self.CurrentLineNumber - 1][self.CurrentOffsetWithinLine:Index+1]\r
         self.CurrentOffsetWithinLine += len(ExpressionString)\r
@@ -1066,7 +1066,7 @@ class FdfParser:
         if self.CurrentLineNumber != StartLine:\r
             EndPos = len(self.Profile.FileLinesList[StartLine-1])\r
         self._Token = self.Profile.FileLinesList[StartLine-1][StartPos: EndPos]\r
-        if self._Token.lower() in [TAB_IF, TAB_END_IF, TAB_ELSE_IF, TAB_ELSE, TAB_IF_DEF, TAB_IF_N_DEF, TAB_ERROR, TAB_INCLUDE]:\r
+        if self._Token.lower() in {TAB_IF, TAB_END_IF, TAB_ELSE_IF, TAB_ELSE, TAB_IF_DEF, TAB_IF_N_DEF, TAB_ERROR, TAB_INCLUDE}:\r
             self._Token = self._Token.lower()\r
         if StartPos != self.CurrentOffsetWithinLine:\r
             return True\r
@@ -1813,7 +1813,7 @@ class FdfParser:
         if not self._GetNextWord():\r
             return True\r
 \r
-        if not self._Token in ("SET", BINARY_FILE_TYPE_FV, "FILE", "DATA", "CAPSULE", "INF"):\r
+        if not self._Token in {"SET", BINARY_FILE_TYPE_FV, "FILE", "DATA", "CAPSULE", "INF"}:\r
             #\r
             # If next token is a word which is not a valid FV type, it might be part of [PcdOffset[|PcdSize]]\r
             # Or it might be next region's offset described by an expression which starts with a PCD.\r
@@ -2147,10 +2147,10 @@ class FdfParser:
         if not self._GetNextToken():\r
             raise Warning("expected alignment value", self.FileName, self.CurrentLineNumber)\r
 \r
-        if self._Token.upper() not in ("1", "2", "4", "8", "16", "32", "64", "128", "256", "512", \\r
+        if self._Token.upper() not in {"1", "2", "4", "8", "16", "32", "64", "128", "256", "512", \\r
                                         "1K", "2K", "4K", "8K", "16K", "32K", "64K", "128K", "256K", "512K", \\r
                                         "1M", "2M", "4M", "8M", "16M", "32M", "64M", "128M", "256M", "512M", \\r
-                                        "1G", "2G"):\r
+                                        "1G", "2G"}:\r
             raise Warning("Unknown alignment value '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
         Obj.FvAlignment = self._Token\r
         return True\r
@@ -2198,12 +2198,12 @@ class FdfParser:
         if not self._GetNextToken():\r
             raise Warning("expected FvForceRebase value", self.FileName, self.CurrentLineNumber)\r
 \r
-        if self._Token.upper() not in ["TRUE", "FALSE", "0", "0X0", "0X00", "1", "0X1", "0X01"]:\r
+        if self._Token.upper() not in {"TRUE", "FALSE", "0", "0X0", "0X00", "1", "0X1", "0X01"}:\r
             raise Warning("Unknown FvForceRebase value '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
 \r
-        if self._Token.upper() in ["TRUE", "1", "0X1", "0X01"]:\r
+        if self._Token.upper() in {"TRUE", "1", "0X1", "0X01"}:\r
             Obj.FvForceRebase = True\r
-        elif self._Token.upper() in ["FALSE", "0", "0X0", "0X00"]:\r
+        elif self._Token.upper() in {"FALSE", "0", "0X0", "0X00"}:\r
             Obj.FvForceRebase = False\r
         else:\r
             Obj.FvForceRebase = None\r
@@ -2224,19 +2224,19 @@ class FdfParser:
         while self._GetNextWord():\r
             IsWordToken = True\r
             name = self._Token\r
-            if name not in ("ERASE_POLARITY", "MEMORY_MAPPED", \\r
+            if name not in {"ERASE_POLARITY", "MEMORY_MAPPED", \\r
                            "STICKY_WRITE", "LOCK_CAP", "LOCK_STATUS", "WRITE_ENABLED_CAP", \\r
                            "WRITE_DISABLED_CAP", "WRITE_STATUS", "READ_ENABLED_CAP", \\r
                            "READ_DISABLED_CAP", "READ_STATUS", "READ_LOCK_CAP", \\r
                            "READ_LOCK_STATUS", "WRITE_LOCK_CAP", "WRITE_LOCK_STATUS", \\r
-                           "WRITE_POLICY_RELIABLE", "WEAK_ALIGNMENT", "FvUsedSizeEnable"):\r
+                           "WRITE_POLICY_RELIABLE", "WEAK_ALIGNMENT", "FvUsedSizeEnable"}:\r
                 self._UndoToken()\r
                 return False\r
 \r
             if not self._IsToken(TAB_EQUAL_SPLIT):\r
                 raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
-            if not self._GetNextToken() or self._Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
+            if not self._GetNextToken() or self._Token.upper() not in {"TRUE", "FALSE", "1", "0"}:\r
                 raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber)\r
 \r
             FvObj.FvAttributeDict[name] = self._Token\r
@@ -2272,7 +2272,7 @@ class FdfParser:
         if not self._IsToken(TAB_EQUAL_SPLIT):\r
             raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
 \r
-        if not self._GetNextToken() or self._Token not in ('TRUE', 'FALSE'):\r
+        if not self._GetNextToken() or self._Token not in {'TRUE', 'FALSE'}:\r
             raise Warning("expected TRUE or FALSE for FvNameString", self.FileName, self.CurrentLineNumber)\r
 \r
         FvObj.FvNameString = self._Token\r
@@ -2586,7 +2586,7 @@ class FdfParser:
     #\r
     @staticmethod\r
     def _FileCouldHaveRelocFlag (FileType):\r
-        if FileType in (SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, 'PEI_DXE_COMBO'):\r
+        if FileType in {SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, 'PEI_DXE_COMBO'}:\r
             return True\r
         else:\r
             return False\r
@@ -2601,7 +2601,7 @@ class FdfParser:
     #\r
     @staticmethod\r
     def _SectionCouldHaveRelocFlag (SectionType):\r
-        if SectionType in (BINARY_FILE_TYPE_TE, BINARY_FILE_TYPE_PE32):\r
+        if SectionType in {BINARY_FILE_TYPE_TE, BINARY_FILE_TYPE_PE32}:\r
             return True\r
         else:\r
             return False\r
@@ -2647,7 +2647,7 @@ class FdfParser:
                 raise Warning("expected FD name", self.FileName, self.CurrentLineNumber)\r
             FfsFileObj.FdName = self._Token\r
 \r
-        elif self._Token in (TAB_DEFINE, "APRIORI", "SECTION"):\r
+        elif self._Token in {TAB_DEFINE, "APRIORI", "SECTION"}:\r
             self._UndoToken()\r
             self._GetSectionData(FfsFileObj, MacroDict)\r
 \r
@@ -2919,8 +2919,8 @@ class FdfParser:
                 self.SetFileBufferPos(OldPos)\r
                 return False\r
 \r
-            if self._Token not in ("COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\\r
-                               BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, "SUBTYPE_GUID", BINARY_FILE_TYPE_SMM_DEPEX):\r
+            if self._Token not in {"COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\\r
+                               BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, "SUBTYPE_GUID", BINARY_FILE_TYPE_SMM_DEPEX}:\r
                 raise Warning("Unknown section type '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
             if AlignValue == 'Auto'and (not self._Token == BINARY_FILE_TYPE_PE32) and (not self._Token == BINARY_FILE_TYPE_TE):\r
                 raise Warning("Auto alignment can only be used in PE32 or TE section ", self.FileName, self.CurrentLineNumber)\r
@@ -3067,7 +3067,7 @@ class FdfParser:
                     continue\r
                 except ValueError:\r
                     raise Warning("expected Number", self.FileName, self.CurrentLineNumber)\r
-            elif self._Token.upper() not in ("TRUE", "FALSE", "1", "0"):\r
+            elif self._Token.upper() not in {"TRUE", "FALSE", "1", "0"}:\r
                 raise Warning("expected TRUE/FALSE (1/0)", self.FileName, self.CurrentLineNumber)\r
             AttribDict[AttribKey] = self._Token\r
 \r
@@ -3254,21 +3254,21 @@ class FdfParser:
     def _GetCapsuleTokens(self, Obj):\r
         if not self._GetNextToken():\r
             return False\r
-        while self._Token in ("CAPSULE_GUID", "CAPSULE_HEADER_SIZE", "CAPSULE_FLAGS", "OEM_CAPSULE_FLAGS", "CAPSULE_HEADER_INIT_VERSION"):\r
+        while self._Token in {"CAPSULE_GUID", "CAPSULE_HEADER_SIZE", "CAPSULE_FLAGS", "OEM_CAPSULE_FLAGS", "CAPSULE_HEADER_INIT_VERSION"}:\r
             Name = self._Token.strip()\r
             if not self._IsToken(TAB_EQUAL_SPLIT):\r
                 raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
             if not self._GetNextToken():\r
                 raise Warning("expected value", self.FileName, self.CurrentLineNumber)\r
             if Name == 'CAPSULE_FLAGS':\r
-                if not self._Token in ("PersistAcrossReset", "PopulateSystemTable", "InitiateReset"):\r
+                if not self._Token in {"PersistAcrossReset", "PopulateSystemTable", "InitiateReset"}:\r
                     raise Warning("expected PersistAcrossReset, PopulateSystemTable, or InitiateReset", self.FileName, self.CurrentLineNumber)\r
                 Value = self._Token.strip()\r
                 while self._IsToken(TAB_COMMA_SPLIT):\r
                     Value += TAB_COMMA_SPLIT\r
                     if not self._GetNextToken():\r
                         raise Warning("expected value", self.FileName, self.CurrentLineNumber)\r
-                    if not self._Token in ("PersistAcrossReset", "PopulateSystemTable", "InitiateReset"):\r
+                    if not self._Token in {"PersistAcrossReset", "PopulateSystemTable", "InitiateReset"}:\r
                         raise Warning("expected PersistAcrossReset, PopulateSystemTable, or InitiateReset", self.FileName, self.CurrentLineNumber)\r
                     Value += self._Token.strip()\r
             elif Name == 'OEM_CAPSULE_FLAGS':\r
@@ -3478,7 +3478,7 @@ class FdfParser:
         AfileName = self._Token\r
         AfileBaseName = os.path.basename(AfileName)\r
 \r
-        if os.path.splitext(AfileBaseName)[1]  not in [".bin", ".BIN", ".Bin", ".dat", ".DAT", ".Dat", ".data", ".DATA", ".Data"]:\r
+        if os.path.splitext(AfileBaseName)[1]  not in {".bin", ".BIN", ".Bin", ".dat", ".DAT", ".Dat", ".data", ".DATA", ".Data"}:\r
             raise Warning('invalid binary file type, should be one of "bin",BINARY_FILE_TYPE_BIN,"Bin","dat","DAT","Dat","data","DATA","Data"', \\r
                           self.FileName, self.CurrentLineNumber)\r
 \r
@@ -3568,12 +3568,22 @@ class FdfParser:
     def _GetModuleType(self):\r
         if not self._GetNextWord():\r
             raise Warning("expected Module type", self.FileName, self.CurrentLineNumber)\r
-        if self._Token.upper() not in (SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, SUP_MODULE_DXE_CORE, \\r
-                             SUP_MODULE_DXE_DRIVER, SUP_MODULE_DXE_SAL_DRIVER, \\r
-                             SUP_MODULE_DXE_SMM_DRIVER, SUP_MODULE_DXE_RUNTIME_DRIVER, \\r
-                             SUP_MODULE_UEFI_DRIVER, SUP_MODULE_UEFI_APPLICATION, SUP_MODULE_USER_DEFINED, TAB_DEFAULT, SUP_MODULE_BASE, \\r
-                             EDK_COMPONENT_TYPE_SECURITY_CORE, EDK_COMPONENT_TYPE_COMBINED_PEIM_DRIVER, EDK_COMPONENT_TYPE_PIC_PEIM, EDK_COMPONENT_TYPE_RELOCATABLE_PEIM, \\r
-                                        "PE32_PEIM", EDK_COMPONENT_TYPE_BS_DRIVER, EDK_COMPONENT_TYPE_RT_DRIVER, EDK_COMPONENT_TYPE_SAL_RT_DRIVER, EDK_COMPONENT_TYPE_APPLICATION, "ACPITABLE", SUP_MODULE_SMM_CORE, SUP_MODULE_MM_STANDALONE, SUP_MODULE_MM_CORE_STANDALONE):\r
+        if self._Token.upper() not in {\r
+                SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM,\r
+                SUP_MODULE_DXE_CORE, SUP_MODULE_DXE_DRIVER,\r
+                SUP_MODULE_DXE_SAL_DRIVER, SUP_MODULE_DXE_SMM_DRIVER,\r
+                SUP_MODULE_DXE_RUNTIME_DRIVER, SUP_MODULE_UEFI_DRIVER,\r
+                SUP_MODULE_UEFI_APPLICATION, SUP_MODULE_USER_DEFINED,\r
+                TAB_DEFAULT, SUP_MODULE_BASE,\r
+                EDK_COMPONENT_TYPE_SECURITY_CORE,\r
+                EDK_COMPONENT_TYPE_COMBINED_PEIM_DRIVER,\r
+                EDK_COMPONENT_TYPE_PIC_PEIM,\r
+                EDK_COMPONENT_TYPE_RELOCATABLE_PEIM, "PE32_PEIM",\r
+                EDK_COMPONENT_TYPE_BS_DRIVER, EDK_COMPONENT_TYPE_RT_DRIVER,\r
+                EDK_COMPONENT_TYPE_SAL_RT_DRIVER,\r
+                EDK_COMPONENT_TYPE_APPLICATION, "ACPITABLE",\r
+                SUP_MODULE_SMM_CORE, SUP_MODULE_MM_STANDALONE,\r
+                SUP_MODULE_MM_CORE_STANDALONE}:\r
             raise Warning("Unknown Module type '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
         return self._Token\r
 \r
@@ -3614,8 +3624,10 @@ class FdfParser:
             raise Warning("expected FFS type", self.FileName, self.CurrentLineNumber)\r
 \r
         Type = self._Token.strip().upper()\r
-        if Type not in ("RAW", "FREEFORM", SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM,\\r
-                             "PEI_DXE_COMBO", "DRIVER", SUP_MODULE_DXE_CORE, EDK_COMPONENT_TYPE_APPLICATION, "FV_IMAGE", "SMM", SUP_MODULE_SMM_CORE, SUP_MODULE_MM_STANDALONE, SUP_MODULE_MM_CORE_STANDALONE):\r
+        if Type not in {"RAW", "FREEFORM", SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM,\r
+                        "PEI_DXE_COMBO", "DRIVER", SUP_MODULE_DXE_CORE, EDK_COMPONENT_TYPE_APPLICATION,\r
+                        "FV_IMAGE", "SMM", SUP_MODULE_SMM_CORE, SUP_MODULE_MM_STANDALONE,\r
+                        SUP_MODULE_MM_CORE_STANDALONE}:\r
             raise Warning("Unknown FV type '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
 \r
         if not self._IsToken(TAB_EQUAL_SPLIT):\r
@@ -3707,8 +3719,12 @@ class FdfParser:
 \r
             SectionName = self._Token\r
 \r
-            if SectionName not in ("COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\\r
-                                    BINARY_FILE_TYPE_UI, BINARY_FILE_TYPE_PEI_DEPEX, "VERSION", "SUBTYPE_GUID", BINARY_FILE_TYPE_SMM_DEPEX):\r
+            if SectionName not in {\r
+                    "COMPAT16", BINARY_FILE_TYPE_PE32,\r
+                    BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE",\r
+                    "RAW",BINARY_FILE_TYPE_DXE_DEPEX, BINARY_FILE_TYPE_UI,\r
+                    BINARY_FILE_TYPE_PEI_DEPEX, "VERSION", "SUBTYPE_GUID",\r
+                    BINARY_FILE_TYPE_SMM_DEPEX}:\r
                 raise Warning("Unknown leaf section name '%s'" % SectionName, self.FileName, self.CurrentLineNumber)\r
 \r
 \r
@@ -3762,8 +3778,12 @@ class FdfParser:
             return False\r
         SectionName = self._Token\r
 \r
-        if SectionName not in ("COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\\r
-                               BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID, BINARY_FILE_TYPE_SMM_DEPEX):\r
+        if SectionName not in {\r
+                    "COMPAT16", BINARY_FILE_TYPE_PE32,\r
+                    BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE",\r
+                    "RAW",BINARY_FILE_TYPE_DXE_DEPEX, BINARY_FILE_TYPE_UI,\r
+                    BINARY_FILE_TYPE_PEI_DEPEX, "VERSION", "SUBTYPE_GUID",\r
+                    BINARY_FILE_TYPE_SMM_DEPEX, BINARY_FILE_TYPE_GUID}:\r
             self._UndoToken()\r
             return False\r
 \r
@@ -3805,8 +3825,13 @@ class FdfParser:
                 if self._IsToken(TAB_VALUE_SPLIT):\r
                     FvImageSectionObj.FvFileExtension = self._GetFileExtension()\r
                 elif self._GetNextToken():\r
-                    if self._Token not in ("}", "COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\\r
-                               BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID, BINARY_FILE_TYPE_SMM_DEPEX):\r
+                    if self._Token not in {\r
+                            "}", "COMPAT16", BINARY_FILE_TYPE_PE32,\r
+                            BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE,\r
+                            "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\r
+                            BINARY_FILE_TYPE_UI, "VERSION",\r
+                            BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID,\r
+                            BINARY_FILE_TYPE_SMM_DEPEX}:\r
                         FvImageSectionObj.FvFileName = self._Token\r
                     else:\r
                         self._UndoToken()\r
@@ -3886,8 +3911,13 @@ class FdfParser:
         if self._IsToken(TAB_VALUE_SPLIT):\r
             EfiSectionObj.FileExtension = self._GetFileExtension()\r
         elif self._GetNextToken():\r
-            if self._Token not in ("}", "COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\\r
-                       BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID, BINARY_FILE_TYPE_SMM_DEPEX):\r
+            if self._Token not in {\r
+                    "}", "COMPAT16", BINARY_FILE_TYPE_PE32,\r
+                    BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE,\r
+                    "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\r
+                    BINARY_FILE_TYPE_UI, "VERSION",\r
+                    BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID,\r
+                    BINARY_FILE_TYPE_SMM_DEPEX}:\r
 \r
                 if self._Token.startswith('PCD'):\r
                     self._UndoToken()\r
@@ -3921,7 +3951,7 @@ class FdfParser:
     #\r
     @staticmethod\r
     def _RuleSectionCouldBeOptional(SectionType):\r
-        if SectionType in (BINARY_FILE_TYPE_DXE_DEPEX, BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, "RAW", BINARY_FILE_TYPE_SMM_DEPEX):\r
+        if SectionType in {BINARY_FILE_TYPE_DXE_DEPEX, BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, "RAW", BINARY_FILE_TYPE_SMM_DEPEX}:\r
             return True\r
         else:\r
             return False\r
@@ -3936,7 +3966,7 @@ class FdfParser:
     #\r
     @staticmethod\r
     def _RuleSectionCouldHaveBuildNum(SectionType):\r
-        if SectionType in ("VERSION"):\r
+        if SectionType == "VERSION":\r
             return True\r
         else:\r
             return False\r
@@ -3951,7 +3981,7 @@ class FdfParser:
     #\r
     @staticmethod\r
     def _RuleSectionCouldHaveString(SectionType):\r
-        if SectionType in (BINARY_FILE_TYPE_UI, "VERSION"):\r
+        if SectionType in {BINARY_FILE_TYPE_UI, "VERSION"}:\r
             return True\r
         else:\r
             return False\r
@@ -3966,34 +3996,34 @@ class FdfParser:
     #\r
     def _CheckRuleSectionFileType(self, SectionType, FileType):\r
         if SectionType == "COMPAT16":\r
-            if FileType not in ("COMPAT16", "SEC_COMPAT16"):\r
+            if FileType not in {"COMPAT16", "SEC_COMPAT16"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == BINARY_FILE_TYPE_PE32:\r
-            if FileType not in (BINARY_FILE_TYPE_PE32, "SEC_PE32"):\r
+            if FileType not in {BINARY_FILE_TYPE_PE32, "SEC_PE32"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == BINARY_FILE_TYPE_PIC:\r
-            if FileType not in (BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_PIC):\r
+            if FileType not in {BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_PIC}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == BINARY_FILE_TYPE_TE:\r
-            if FileType not in (BINARY_FILE_TYPE_TE, "SEC_TE"):\r
+            if FileType not in {BINARY_FILE_TYPE_TE, "SEC_TE"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "RAW":\r
-            if FileType not in (BINARY_FILE_TYPE_BIN, "SEC_BIN", "RAW", "ASL", "ACPI"):\r
+            if FileType not in {BINARY_FILE_TYPE_BIN, "SEC_BIN", "RAW", "ASL", "ACPI"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == BINARY_FILE_TYPE_DXE_DEPEX or SectionType == BINARY_FILE_TYPE_SMM_DEPEX:\r
-            if FileType not in (BINARY_FILE_TYPE_DXE_DEPEX, "SEC_DXE_DEPEX", BINARY_FILE_TYPE_SMM_DEPEX):\r
+            if FileType not in {BINARY_FILE_TYPE_DXE_DEPEX, "SEC_DXE_DEPEX", BINARY_FILE_TYPE_SMM_DEPEX}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == BINARY_FILE_TYPE_UI:\r
-            if FileType not in (BINARY_FILE_TYPE_UI, "SEC_UI"):\r
+            if FileType not in {BINARY_FILE_TYPE_UI, "SEC_UI"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == "VERSION":\r
-            if FileType not in ("VERSION", "SEC_VERSION"):\r
+            if FileType not in {"VERSION", "SEC_VERSION"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == BINARY_FILE_TYPE_PEI_DEPEX:\r
-            if FileType not in (BINARY_FILE_TYPE_PEI_DEPEX, "SEC_PEI_DEPEX"):\r
+            if FileType not in {BINARY_FILE_TYPE_PEI_DEPEX, "SEC_PEI_DEPEX"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
         elif SectionType == BINARY_FILE_TYPE_GUID:\r
-            if FileType not in (BINARY_FILE_TYPE_PE32, "SEC_GUID"):\r
+            if FileType not in {BINARY_FILE_TYPE_PE32, "SEC_GUID"}:\r
                 raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)\r
 \r
     ## _GetRuleEncapsulationSection() method\r
@@ -4073,6 +4103,7 @@ class FdfParser:
     #   @retval False       Not able to find a VTF\r
     #\r
     def _GetVtf(self):\r
+        HW_ARCH_SET = {TAB_ARCH_IA32, TAB_ARCH_X64, TAB_ARCH_IPF, TAB_ARCH_ARM, TAB_ARCH_AARCH64}\r
         if not self._GetNextToken():\r
             return False\r
 \r
@@ -4093,7 +4124,7 @@ class FdfParser:
             raise Warning("expected '.'", self.FileName, self.CurrentLineNumber)\r
 \r
         Arch = self._SkippedChars.rstrip(TAB_SPLIT).upper()\r
-        if Arch not in {TAB_ARCH_IA32, TAB_ARCH_X64, TAB_ARCH_IPF, TAB_ARCH_ARM, TAB_ARCH_AARCH64}:\r
+        if Arch not in HW_ARCH_SET:\r
             raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)\r
 \r
         if not self._GetNextWord():\r
@@ -4107,7 +4138,7 @@ class FdfParser:
         if self._IsToken(TAB_COMMA_SPLIT):\r
             if not self._GetNextWord():\r
                 raise Warning("expected Arch list", self.FileName, self.CurrentLineNumber)\r
-            if self._Token.upper() not in (TAB_ARCH_IA32, TAB_ARCH_X64, TAB_ARCH_IPF, TAB_ARCH_ARM, TAB_ARCH_AARCH64):\r
+            if self._Token.upper() not in HW_ARCH_SET:\r
                 raise Warning("Unknown Arch '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
             VtfObj.ArchList = self._Token.upper()\r
 \r
@@ -4169,7 +4200,7 @@ class FdfParser:
                 if not self._GetNextWord():\r
                     raise Warning("Expected Region Name", self.FileName, self.CurrentLineNumber)\r
 \r
-                if self._Token not in ("F", "N", "S"):    #, "H", "L", "PH", "PL"): not support\r
+                if self._Token not in {"F", "N", "S"}:    #, "H", "L", "PH", "PL"): not support\r
                     raise Warning("Unknown location type '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
 \r
                 CompStatementObj.FilePos = self._Token\r
@@ -4185,7 +4216,7 @@ class FdfParser:
 \r
         if not self._GetNextToken():\r
             raise Warning("expected Component type", self.FileName, self.CurrentLineNumber)\r
-        if self._Token not in ("FIT", "PAL_B", "PAL_A", "OEM"):\r
+        if self._Token not in {"FIT", "PAL_B", "PAL_A", "OEM"}:\r
             if not self._Token.startswith("0x") or len(self._Token) < 3 or len(self._Token) > 4 or \\r
                 not self._Token[2] in hexdigits or not self._Token[-1] in hexdigits:\r
                 raise Warning("Unknown location type '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
@@ -4213,7 +4244,7 @@ class FdfParser:
 \r
         if not self._GetNextToken():\r
             raise Warning("expected Component CS", self.FileName, self.CurrentLineNumber)\r
-        if self._Token not in ("1", "0"):\r
+        if self._Token not in {"1", "0"}:\r
             raise Warning("Unknown  Component CS '%s'" % self._Token, self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompCs = self._Token\r
 \r
@@ -4538,8 +4569,7 @@ class FdfParser:
     #   @param  FvList      referenced FV by section\r
     #\r
     def _GetReferencedFdFvTupleFromSection(self, FfsFile, FdList = [], FvList = []):\r
-        SectionStack = []\r
-        SectionStack.extend(FfsFile.SectionList)\r
+        SectionStack = list(FfsFile.SectionList)\r
         while SectionStack != []:\r
             SectionObj = SectionStack.pop()\r
             if isinstance(SectionObj, FvImageSection):\r
@@ -4567,9 +4597,8 @@ class FdfParser:
         MaxLength = len (self.Profile.FvDict)\r
         for FvName in self.Profile.FvDict:\r
             LogStr = "\nCycle Reference Checking for FV: %s\n" % FvName\r
-            RefFvStack = []\r
-            RefFvStack.append(FvName)\r
-            FdAnalyzedList = []\r
+            RefFvStack = set(FvName)\r
+            FdAnalyzedList = set()\r
 \r
             Index = 0\r
             while RefFvStack and Index < MaxLength:\r
@@ -4594,17 +4623,17 @@ class FdfParser:
                         for FvNameInFd in FvInFdList:\r
                             LogStr += "FD %s contains FV %s\n" % (RefFdName, FvNameInFd)\r
                             if FvNameInFd not in RefFvStack:\r
-                                RefFvStack.append(FvNameInFd)\r
+                                RefFvStack.add(FvNameInFd)\r
 \r
                             if FvName in RefFvStack or FvNameFromStack in RefFvStack:\r
                                 EdkLogger.info(LogStr)\r
                                 return True\r
-                    FdAnalyzedList.append(RefFdName)\r
+                    FdAnalyzedList.add(RefFdName)\r
 \r
                 for RefFvName in RefFvList:\r
                     LogStr += "FV %s contains FV %s\n" % (FvNameFromStack, RefFvName)\r
                     if RefFvName not in RefFvStack:\r
-                        RefFvStack.append(RefFvName)\r
+                        RefFvStack.add(RefFvName)\r
 \r
                     if FvName in RefFvStack or FvNameFromStack in RefFvStack:\r
                         EdkLogger.info(LogStr)\r
@@ -4619,13 +4648,12 @@ class FdfParser:
             # Capsule image to be checked.\r
             #\r
             LogStr = "\n\n\nCycle Reference Checking for Capsule: %s\n" % CapName\r
-            RefCapStack = []\r
-            RefCapStack.append(CapName)\r
-            FdAnalyzedList = []\r
-            FvAnalyzedList = []\r
+            RefCapStack = {CapName}\r
+            FdAnalyzedList = set()\r
+            FvAnalyzedList = set()\r
 \r
             Index = 0\r
-            while RefCapStack != [] and Index < MaxLength:\r
+            while RefCapStack and Index < MaxLength:\r
                 Index = Index + 1\r
                 CapNameFromStack = RefCapStack.pop()\r
                 if CapNameFromStack.upper() in self.Profile.CapsuleDict:\r
@@ -4645,25 +4673,21 @@ class FdfParser:
                             continue\r
 \r
                         LogStr += "Capsule %s contains FD %s\n" % (CapNameFromStack, RefFdName)\r
-                        CapInFdList = self._GetCapInFd(RefFdName)\r
-                        if CapInFdList != []:\r
-                            for CapNameInFd in CapInFdList:\r
-                                LogStr += "FD %s contains Capsule %s\n" % (RefFdName, CapNameInFd)\r
-                                if CapNameInFd not in RefCapStack:\r
-                                    RefCapStack.append(CapNameInFd)\r
-\r
-                                if CapName in RefCapStack or CapNameFromStack in RefCapStack:\r
-                                    EdkLogger.info(LogStr)\r
-                                    return True\r
-\r
-                        FvInFdList = self._GetFvInFd(RefFdName)\r
-                        if FvInFdList != []:\r
-                            for FvNameInFd in FvInFdList:\r
-                                LogStr += "FD %s contains FV %s\n" % (RefFdName, FvNameInFd)\r
-                                if FvNameInFd not in RefFvList:\r
-                                    RefFvList.append(FvNameInFd)\r
-\r
-                        FdAnalyzedList.append(RefFdName)\r
+                        for CapNameInFd in self._GetCapInFd(RefFdName):\r
+                            LogStr += "FD %s contains Capsule %s\n" % (RefFdName, CapNameInFd)\r
+                            if CapNameInFd not in RefCapStack:\r
+                                RefCapStack.append(CapNameInFd)\r
+\r
+                            if CapName in RefCapStack or CapNameFromStack in RefCapStack:\r
+                                EdkLogger.info(LogStr)\r
+                                return True\r
+\r
+                        for FvNameInFd in self._GetFvInFd(RefFdName):\r
+                            LogStr += "FD %s contains FV %s\n" % (RefFdName, FvNameInFd)\r
+                            if FvNameInFd not in RefFvList:\r
+                                RefFvList.append(FvNameInFd)\r
+\r
+                        FdAnalyzedList.add(RefFdName)\r
                     #\r
                     # the number of the parsed FV and FD image\r
                     #\r
@@ -4678,7 +4702,7 @@ class FdfParser:
                         else:\r
                             continue\r
                         self._GetReferencedFdFvTuple(FvObj, RefFdList, RefFvList)\r
-                        FvAnalyzedList.append(RefFvName)\r
+                        FvAnalyzedList.add(RefFvName)\r
 \r
         return False\r
 \r