[py-svn] r34629 - in py/dist/py/apigen/tracer: . testing

fijal at codespeak.net fijal at codespeak.net
Wed Nov 15 14:56:29 CET 2006


Author: fijal
Date: Wed Nov 15 14:56:28 2006
New Revision: 34629

Modified:
   py/dist/py/apigen/tracer/docstorage.py
   py/dist/py/apigen/tracer/testing/test_docgen.py
Log:
Add simple idea how to iterate over base classes.


Modified: py/dist/py/apigen/tracer/docstorage.py
==============================================================================
--- py/dist/py/apigen/tracer/docstorage.py	(original)
+++ py/dist/py/apigen/tracer/docstorage.py	Wed Nov 15 14:56:28 2006
@@ -254,3 +254,11 @@
 
     def get_function_exceptions(self, name):
         return sorted(self.ds.descs[name].exceptions.keys())
+
+    def get_possible_base_classes(self, cls):
+        retval = []
+        for base in cls.__bases__:
+            for desc in self.ds.descs.values():
+                if isinstance(desc, ClassDesc) and desc.pyobj is base:
+                    retval.append(desc)
+        return retval

Modified: py/dist/py/apigen/tracer/testing/test_docgen.py
==============================================================================
--- py/dist/py/apigen/tracer/testing/test_docgen.py	(original)
+++ py/dist/py/apigen/tracer/testing/test_docgen.py	Wed Nov 15 14:56:28 2006
@@ -7,6 +7,7 @@
 
 #try:
 from py.__.apigen.tracer.tracer import DocStorage, Tracer
+from py.__.apigen.tracer.docstorage import DocStorageAccessor
 from py.__.apigen.tracer.testing.runtest import cut_pyc
 from py.__.apigen.tracer.description import FunctionDesc
 from py.__.apigen.tracer import model
@@ -216,3 +217,17 @@
     assert ds.descs['x'].exceptions.keys() == [ZeroDivisionError]
     assert ds.descs['y'].exceptions.keys() == [ZeroDivisionError]
     assert ds.descs['z'].exceptions.keys() == []
+
+def test_bases():
+    class A:
+        pass
+    
+    class B:
+        pass
+    
+    class C(A,B):
+        pass
+    
+    ds = DocStorage().from_dict({'C':C, 'B':B})
+    dsa = DocStorageAccessor(ds)
+    assert dsa.get_possible_base_classes(C) == [ds.descs['B']]


More information about the py-svn mailing list