Somebody posted a reply on the referenced SO thread:
Apparently, the solution is to reset the value of `__module__` on the
affected classes. So, in `a/__init__.py`, you can do the following to fix
the issue:
```python
A.__module__ = __name__
B.__module__ = __name__
```
This seems to fix the problem for us. Isn't there some sort of `:alias:`
command in Sphinx that could do something equivalent w/o this python hack?
Thanks, Andre
On Thursday, October 13, 2016 at 10:09:07 PM UTC+2, André Anjos wrote:
>
> I'm trying to get my Sphinx documentation build correctly and have
> cross-references (including those from inherited relations) work right.
>
> In my project, I have a situation which is depicted in the example below,
> which I replicated for convenience on [this github repo](
> https://github.com/anjos/sphinx-broken-xref):
>
> ```sh
> $ tree .
> .
> ├── a
> │ ├── b
> │ │ └── __init__.py
> │ └── __init__.py
> ├── conf.py
> ├── index.rst
> └── README.md
> ```
>
> In `a.b.__init__`, I declare classes `A` and `B`. `B` inherits from `A`.
> In `a.__init__`, I import `A` and `B` like: `from .b import A, B`. The
> reason I do this in my real projects is to reduce the import paths on
> modules while keeping implementation of specific classes in separate files.
>
> Then, in my rst files, I *autodoc* module `a` with `.. automodule:: a`.
> Because `a.b` is just an auxiliary module, I don't *autodoc* it since I
> don't want to get repeated references to the same classes and not to
> confuse the user on what they should be really doing. I also set
> `show-inheritance` expecting `a.B` will have a back link to `a.A`.
>
> If I try to sphinx-build this in nit-picky mode, I'll get the following
> warning:
>
> ```sh
> WARNING: py:class reference target not found: a.b.A
> ```
>
> If I look at the generated documentation for class `B`, then I verify it
> is not properly linked against class `A`, which just confirms the warning
> above. If I *autodoc* module `a.b` instead, it will work, but my
> documentation will not show the shortcuts I intended when I wrote the
> module.
>
> Is there a fix for this without *autodoc*'ing module `a.b`? I.e., keeping
> the imports in the way they are?
>
> Thanks for any tip.
>
> [1]
> http://stackoverflow.com/questions/40018681/sphinx-cross-referencing-breaks-for-inherited-objects-imported-and-documented-in
> [2] https://github.com/anjos/sphinx-broken-xref
> [3] https://github.com/sphinx-doc/sphinx/issues/3048
>
--
You received this message because you are subscribed to the Google Groups
"sphinx-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sphinx-users+unsubscr...@googlegroups.com.
To post to this group, send email to sphinx-users@googlegroups.com.
Visit this group at https://groups.google.com/group/sphinx-users.
For more options, visit https://groups.google.com/d/optout.