sphinx-doc/sphinx

:attr: links to intersphinx-reachable properties are still broken

flying-sheep opened this issue · 4 comments

Describe the bug
#7061 contained a workaround to unbreak the bug where :attr: wasn’t able to refer to properties.

unfortunately the workaround doesn’t address intersphinx links, as intersphinx relies on the missing-reference hook to resolve references. The resolve_xref function containing the workaround always returns None for intersphinx links, and intersphinx’ missing-reference hook doesn’t contain a workaround.

#7068 is the correct fix for this problem that makes further workarounds unnecessary.

To Reproduce

echo >conf.py <<EOF
extensions = ["sphinx.ext.intersphinx"]
intersphinx_mapping = dict(pandas=("https://pandas.pydata.org/pandas-docs/stable/", None))
EOF
echo ':attr:`pandas.DataFrame.iloc`' >index.rst
sphinx build . html

Expected behavior

  • :attr: links to properties work with intersphinx as well (fixed by #7068, could also be fixed by another workaround)
  • objects.inv contains entries for properties under py:attribute (fixed by #7068)

Environment info

  • OS: All
  • Python version: 3.8
  • Sphinx version: 2.4.1
  • Sphinx extensions: sphinx.ext.intersphinx

I would prefer if we just merge #7068 and forget that the whole thing happened. It’s already confusing enough that #7061 was merged and people can refer to properties using :meth: now and it’ll look completely nonsensical:

grafik

iloc and loc aren’t callable, those parentheses should not be there.

I'd not like to merge big changes into 2.4.x release. So I just made a small fix to patch intersphinx for :attr: role. I know this way is ugly, but...

I understand, I do however want to point out that e32a610 was a breaking change that went into 2.1.0. Merging #7068 (hopefully) won’t break anything, only deprecate things.

Fixed by #7187
Thank you for reporting.
I'll start to review and consider design of #7068 later.