From 72962c99b716268a3f08d773f559891fde72227b Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Thu, 1 Nov 2012 17:52:41 +0100 Subject: [PATCH] Fix test_autodoc with Python 3.3, patches by Jon and Takayuki. --- sphinx/ext/autodoc.py | 2 +- sphinx/util/__init__.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index b0657dc9e..44c7ad8bb 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -1105,7 +1105,7 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): """ objtype = 'method' member_order = 50 - priority = 0 + priority = 1 # must be more than FunctionDocumenter @classmethod def can_document_member(cls, member, membername, isattr, parent): diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py index 6cb83aec2..5d0c28119 100644 --- a/sphinx/util/__init__.py +++ b/sphinx/util/__init__.py @@ -197,13 +197,18 @@ def get_module_source(modname): except Exception, err: raise PycodeError('error importing %r' % modname, err) mod = sys.modules[modname] - if hasattr(mod, '__loader__'): + filename = getattr(mod, '__file__', None) + loader = getattr(mod, '__loader__', None) + if loader and getattr(loader, 'get_filename', None): try: - source = mod.__loader__.get_source(modname) + filename = loader.get_filename(modname) + except Exception, err: + raise PycodeError('error getting filename for %r' % filename, err) + if filename is None and loader: + try: + return 'string', loader.get_source(modname) except Exception, err: raise PycodeError('error getting source for %r' % modname, err) - return 'string', source - filename = getattr(mod, '__file__', None) if filename is None: raise PycodeError('no source found for module %r' % modname) filename = path.normpath(path.abspath(filename))