Commits

Georg Brandl committed c711a39 Merge

merge with 0.6

  • Participants
  • Parent commits f057b3a, c7f1e36

Comments (0)

Files changed (6)

 Release 0.6.2 (in development)
 ==============================
 
+* Fix autodoc crash for objects without a ``__name__``.
+
+* Fix intersphinx for installations without urllib2.HTTPSHandler.
+
 * #134: Fix pending_xref leftover nodes when using the todolist
   directive from the todo extension.
 
 include babel.cfg
 include Makefile
 include ez_setup.py
+include sphinx-autogen.py
 include sphinx-build.py
 include sphinx-quickstart.py
 
 ... use Sphinx with SCons?
    Glenn Hutchings has written a SCons build script to build Sphinx
    documentation; it is hosted here: http://bitbucket.org/zondo/sphinx-scons
-   
+
+... convert from my existing docs using MoinMoin markup?
+   The easiest way is to convert to xhtml, then convert `xhtml to reST`_.  You'll
+   still need to mark up classes and such, but the headings and code examples
+   come through cleanly.
+
 
 .. _api role: http://git.savannah.gnu.org/cgit/kenozooid.git/tree/doc/extapi.py
+.. _xhtml to reST: http://docutils.sourceforge.net/sandbox/xhtml2rest/xhtml2rest.py

sphinx/ext/autodoc.py

         else:
             # __dict__ contains only the members directly defined in
             # the class (but get them via getattr anyway, to e.g. get
-            # unbound method objects instead of function objects)
+            # unbound method objects instead of function objects);
+            # using keys() because apparently there are objects for which
+            # __dict__ changes while getting attributes
             return False, sorted([
                 (mname, self.get_attr(self.object, mname))
-                for mname in self.get_attr(self.object, '__dict__')])
+                for mname in self.get_attr(self.object, '__dict__').keys()])
 
     def filter_members(self, members, want_all):
         """
         # if the class is documented under another name, document it
         # as data/attribute
         if ret:
-            self.doc_as_attr = (self.objpath[-1] != self.object.__name__)
+            if hasattr(self.object, '__name__'):
+                self.doc_as_attr = (self.objpath[-1] != self.object.__name__)
+            else:
+                self.doc_as_attr = True
         return ret
 
     def format_args(self):

sphinx/ext/autosummary/generate.py

 
 
 if __name__ == '__main__':
-    main()
+    main(sys.argv)

sphinx/ext/intersphinx.py

 
 from sphinx.builders.html import INVENTORY_FILENAME
 
+handlers = [urllib2.ProxyHandler(), urllib2.HTTPRedirectHandler(),
+            urllib2.HTTPHandler()]
+if hasattr(urllib2, 'HTTPSHandler'):
+    handlers.append(urllib2.HTTPSHandler)
 
-urllib2.install_opener(urllib2.build_opener(
-    urllib2.ProxyHandler(), urllib2.HTTPRedirectHandler(),
-    urllib2.HTTPHandler(), urllib2.HTTPSHandler()))
+urllib2.install_opener(urllib2.build_opener(*handlers))
 
 
 def fetch_inventory(app, uri, inv):