[Python-checkins] r66265 - in doctools/trunk: sphinx/ext/autodoc.py tests/test_autodoc.py

georg.brandl python-checkins at python.org
Sat Sep 6 22:11:05 CEST 2008


Author: georg.brandl
Date: Sat Sep  6 22:11:04 2008
New Revision: 66265

Log:
Fix handling of __all__ for modules and add a test.


Modified:
   doctools/trunk/sphinx/ext/autodoc.py
   doctools/trunk/tests/test_autodoc.py

Modified: doctools/trunk/sphinx/ext/autodoc.py
==============================================================================
--- doctools/trunk/sphinx/ext/autodoc.py	(original)
+++ doctools/trunk/sphinx/ext/autodoc.py	Sat Sep  6 22:11:04 2008
@@ -499,7 +499,14 @@
             if what == 'module':
                 if hasattr(todoc, '__all__'):
                     members_check_module = False
-                    all_members = inspect.getmembers(todoc, lambda x: x in todoc.__all__)
+                    all_members = []
+                    for mname in todoc.__all__:
+                        try:
+                            all_members.append((mname, getattr(todoc, mname)))
+                        except AttributeError:
+                            self.warn('missing attribute mentioned in __all__: '
+                                      'module %s, attribute %s' %
+                                      (todoc.__name__, mname))
                 else:
                     # for implicit module members, check __module__ to avoid
                     # documenting imported objects

Modified: doctools/trunk/tests/test_autodoc.py
==============================================================================
--- doctools/trunk/tests/test_autodoc.py	(original)
+++ doctools/trunk/tests/test_autodoc.py	Sat Sep  6 22:11:04 2008
@@ -268,9 +268,9 @@
 
     def assert_result_contains(item, *args):
         gen.generate(*args)
+        print '\n'.join(gen.result)
         assert len(gen.warnings) == 0, gen.warnings
         assert item in gen.result
-        print '\n'.join(gen.result)
         del gen.result[:]
 
     # no module found?
@@ -322,6 +322,16 @@
     assert_result_contains('   :deprecated:', 'module', 'test_autodoc', [], None)
     options.platform = 'Platform'
     assert_result_contains('   :platform: Platform', 'module', 'test_autodoc', [], None)
+    # test if __all__ is respected for modules
+    assert_result_contains('.. class:: Class', 'module', 'test_autodoc',
+                           ['__all__'], None)
+    try:
+        assert_result_contains('.. exception:: CustomEx', 'module', 'test_autodoc',
+                               ['__all__'], None)
+    except AssertionError:
+        pass
+    else:
+        assert False, 'documented CustomEx which is not in __all__'
 
     # test noindex flag
     options.noindex = True
@@ -335,6 +345,8 @@
 
 # --- generate fodder ------------
 
+__all__ = ['Class']
+
 class CustomEx(Exception):
     """My custom exception."""
 


More information about the Python-checkins mailing list