Anonymous avatar Anonymous committed bd22278

don't crash on AttributeError during attribute analysis

fixes issue #15
thanks Fazlul Shahriar for reporting

Comments (0)

Files changed (2)

rope/base/builtins.py

     for name in dir(obj):
         if name == 'None':
             continue
-        child = getattr(obj, name)
+        try:
+            child = getattr(obj, name)
+        except AttributeError:
+            # descriptors are allowed to raise AttributeError
+            # even if they are in dir()
+            continue
         pyobject = None
         if inspect.isclass(child):
             pyobject = BuiltinClass(child, {}, parent=parent)

ropetest/builtinstest.py

         self.mod.write(src)
         self.project.pycore.analyze_module(self.mod)
 
+    def test_abstractmethods_attribute(self):
+        # see http://bugs.python.org/issue10006 for details
+        src = 'class SubType(type): pass\nsubtype = SubType()\n'
+        self.mod.write(src)
+        self.project.pycore.analyze_module(self.mod)
+
 
 class BuiltinModulesTest(unittest.TestCase):
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.