diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 89b7fded4..0c08b60bc 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -706,4 +706,5 @@ class PythonDomain(Domain): for modname, info in self.data['modules'].iteritems(): yield (modname, modname, 'module', info[0], 'module-' + modname, 0) for refname, (docname, type) in self.data['objects'].iteritems(): - yield (refname, refname, type, docname, refname, 1) + if type != 'module': # modules are already handled + yield (refname, refname, type, docname, refname, 1) diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 2d8b9d1f6..bf528e72b 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -106,6 +106,12 @@ def read_inventory_v2(f, uri, join, bufsize=16*1024): if not m: continue name, type, prio, location, dispname = m.groups() + if type == 'py:module' and type in invdata and \ + name in invdata[type]: # due to a bug in 1.1 and below, + # two inventory entries are created + # for Python modules, and the first + # one is correct + continue if location.endswith(u'$'): location = location[:-1] + name location = join(uri, location)