Commits

Ali Gholami Rudi  committed d143fdf

builtins: using utils.cacheit in BuiltinModule

  • Participants
  • Parent commits c9ac12a

Comments (0)

Files changed (1)

File rope/base/builtins.py

 import inspect
 
 import rope.base.evaluate
-from rope.base import pynames, pyobjects, arguments
+from rope.base import pynames, pyobjects, arguments, utils
 
 
 class BuiltinModule(pyobjects.AbstractModule):
         super(BuiltinModule, self).__init__()
         self.name = name
         self.initial = initial
-        self.attributes = None
 
     parent = None
 
     def get_attributes(self):
-        if self.attributes is None:
-            self._calculate_attributes()
         return self.attributes
 
     def get_doc(self):
     def get_name(self):
         return self.name
 
-    def _calculate_attributes(self):
-        self.attributes = {}
-        if self.module is not None:
-            self.attributes = _object_attributes(self.module, self)
-        self.attributes.update(self.initial)
+    @property
+    @utils.cacheit
+    def attributes(self):
+        result = _object_attributes(self.module, self)
+        result.update(self.initial)
+        return result
 
-    _loaded = False
-    _module = None
     @property
+    @utils.cacheit
     def module(self):
-        if not self._loaded:
-            self._loaded = True
-            try:
-                self._module = __import__(self.name)
-            except ImportError:
-                self._module = None
-        return self._module
+        try:
+            return __import__(self.name)
+        except ImportError:
+            return
 
 
 class _BuiltinElement(object):