]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: refactor class properties
authorCarsey, Jaben <jaben.carsey@intel.com>
Mon, 10 Sep 2018 22:18:04 +0000 (06:18 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Thu, 20 Sep 2018 14:18:06 +0000 (22:18 +0800)
use decorators and auto cache those that were cached manually
remove properties never used

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/Common/Misc.py

index fc90ccb2c86efe5d9f23e0c0f198200c2604c949..fb6a844dd5829e959b7eb0148c3bffb93dd4a1bb 100644 (file)
@@ -38,6 +38,7 @@ from Common.LongFilePathSupport import OpenLongFilePath as open
 from Common.MultipleWorkspace import MultipleWorkspace as mws\r
 import uuid\r
 from CommonDataClass.Exceptions import BadExpression\r
+from Common.caching import cached_property\r
 import subprocess\r
 ## Regular expression used to find out place holders in string template\r
 gPlaceholderPattern = re.compile("\$\{([^$()\s]+)\}", re.MULTILINE | re.UNICODE)\r
@@ -1724,8 +1725,6 @@ class PathClass(object):
         self.ToolCode = ToolCode\r
         self.ToolChainFamily = ToolChainFamily\r
 \r
-        self._Key = None\r
-\r
     ## Convert the object of this class to a string\r
     #\r
     #  Convert member Path of the class to a string\r
@@ -1778,12 +1777,12 @@ class PathClass(object):
     def __hash__(self):\r
         return hash(self.Path)\r
 \r
-    def _GetFileKey(self):\r
-        if self._Key is None:\r
-            self._Key = self.Path.upper()   # + self.ToolChainFamily + self.TagName + self.ToolCode + self.Target\r
-        return self._Key\r
+    @cached_property\r
+    def Key(self):\r
+        return self.Path.upper()\r
 \r
-    def _GetTimeStamp(self):\r
+    @property\r
+    def TimeStamp(self):\r
         return os.stat(self.Path)[8]\r
 \r
     def Validate(self, Type='', CaseSensitive=True):\r
@@ -1822,9 +1821,6 @@ class PathClass(object):
             self.Path = os.path.join(RealRoot, RealFile)\r
         return ErrorCode, ErrorInfo\r
 \r
-    Key = property(_GetFileKey)\r
-    TimeStamp = property(_GetTimeStamp)\r
-\r
 ## Parse PE image to get the required PE informaion.\r
 #\r
 class PeImageClass():\r
@@ -1934,8 +1930,8 @@ class DefaultStore():
         for sid, name in self.DefaultStores.values():\r
             if sid == minid:\r
                 return name\r
-class SkuClass():\r
 \r
+class SkuClass():\r
     DEFAULT = 0\r
     SINGLE = 1\r
     MULTIPLE =2\r
@@ -1956,8 +1952,8 @@ class SkuClass():
         self.SkuIdSet = []\r
         self.SkuIdNumberSet = []\r
         self.SkuData = SkuIds\r
-        self.__SkuInherit = {}\r
-        self.__SkuIdentifier = SkuIdentifier\r
+        self._SkuInherit = {}\r
+        self._SkuIdentifier = SkuIdentifier\r
         if SkuIdentifier == '' or SkuIdentifier is None:\r
             self.SkuIdSet = ['DEFAULT']\r
             self.SkuIdNumberSet = ['0U']\r
@@ -1981,7 +1977,7 @@ class SkuClass():
                 EdkLogger.error("build", PARAMETER_INVALID,\r
                             ExtraData="SKU-ID [%s] is not supported by the platform. [Valid SKU-ID: %s]"\r
                                       % (each, " | ".join(SkuIds.keys())))\r
-        if self.SkuUsageType != self.SINGLE:\r
+        if self.SkuUsageType != SkuClass.SINGLE:\r
             self.AvailableSkuIds.update({'DEFAULT':0, 'COMMON':0})\r
         if self.SkuIdSet:\r
             GlobalData.gSkuids = (self.SkuIdSet)\r
@@ -1995,11 +1991,11 @@ class SkuClass():
                 GlobalData.gSkuids.sort()\r
 \r
     def GetNextSkuId(self, skuname):\r
-        if not self.__SkuInherit:\r
-            self.__SkuInherit = {}\r
+        if not self._SkuInherit:\r
+            self._SkuInherit = {}\r
             for item in self.SkuData.values():\r
-                self.__SkuInherit[item[1]]=item[2] if item[2] else "DEFAULT"\r
-        return self.__SkuInherit.get(skuname, "DEFAULT")\r
+                self._SkuInherit[item[1]]=item[2] if item[2] else "DEFAULT"\r
+        return self._SkuInherit.get(skuname, "DEFAULT")\r
 \r
     def GetSkuChain(self, sku):\r
         if sku == "DEFAULT":\r
@@ -2029,55 +2025,45 @@ class SkuClass():
 \r
         return skuorder\r
 \r
-    def __SkuUsageType(self):\r
-\r
-        if self.__SkuIdentifier.upper() == "ALL":\r
+    @property\r
+    def SkuUsageType(self):\r
+        if self._SkuIdentifier.upper() == "ALL":\r
             return SkuClass.MULTIPLE\r
 \r
         if len(self.SkuIdSet) == 1:\r
             if self.SkuIdSet[0] == 'DEFAULT':\r
                 return SkuClass.DEFAULT\r
-            else:\r
-                return SkuClass.SINGLE\r
-        elif len(self.SkuIdSet) == 2:\r
-            if 'DEFAULT' in self.SkuIdSet:\r
-                return SkuClass.SINGLE\r
-            else:\r
-                return SkuClass.MULTIPLE\r
-        else:\r
-            return SkuClass.MULTIPLE\r
-    def DumpSkuIdArrary(self):\r
+            return SkuClass.SINGLE\r
+        if len(self.SkuIdSet) == 2 and 'DEFAULT' in self.SkuIdSet:\r
+            return SkuClass.SINGLE\r
+        return SkuClass.MULTIPLE\r
 \r
-        ArrayStrList = []\r
+    def DumpSkuIdArrary(self):\r
         if self.SkuUsageType == SkuClass.SINGLE:\r
-            ArrayStr = "{0x0}"\r
-        else:\r
-            for skuname in self.AvailableSkuIds:\r
-                if skuname == "COMMON":\r
-                    continue\r
-                while skuname != "DEFAULT":\r
-                    ArrayStrList.append(hex(int(self.AvailableSkuIds[skuname])))\r
-                    skuname = self.GetNextSkuId(skuname)\r
-                ArrayStrList.append("0x0")\r
-            ArrayStr = "{" + ",".join(ArrayStrList) +  "}"\r
-        return ArrayStr\r
-    def __GetAvailableSkuIds(self):\r
+            return "{0x0}"\r
+        ArrayStrList = []\r
+        for skuname in self.AvailableSkuIds:\r
+            if skuname == "COMMON":\r
+                continue\r
+            while skuname != "DEFAULT":\r
+                ArrayStrList.append(hex(int(self.AvailableSkuIds[skuname])))\r
+                skuname = self.GetNextSkuId(skuname)\r
+            ArrayStrList.append("0x0")\r
+        return "{{{myList}}}".format(myList=",".join(ArrayStrList))\r
+\r
+    @property\r
+    def AvailableSkuIdSet(self):\r
         return self.AvailableSkuIds\r
 \r
-    def __GetSystemSkuID(self):\r
-        if self.__SkuUsageType() == SkuClass.SINGLE:\r
+    @property\r
+    def SystemSkuId(self):\r
+        if self.SkuUsageType == SkuClass.SINGLE:\r
             if len(self.SkuIdSet) == 1:\r
                 return self.SkuIdSet[0]\r
             else:\r
                 return self.SkuIdSet[0] if self.SkuIdSet[0] != 'DEFAULT' else self.SkuIdSet[1]\r
         else:\r
             return 'DEFAULT'\r
-    def __GetAvailableSkuIdNumber(self):\r
-        return self.SkuIdNumberSet\r
-    SystemSkuId = property(__GetSystemSkuID)\r
-    AvailableSkuIdSet = property(__GetAvailableSkuIds)\r
-    SkuUsageType = property(__SkuUsageType)\r
-    AvailableSkuIdNumSet = property(__GetAvailableSkuIdNumber)\r
 \r
 #\r
 # Pack a registry format GUID\r