array-api icon indicating copy to clipboard operation
array-api copied to clipboard

Intersphinx cross-referencing does not work naively

Open leofang opened this issue 3 years ago • 7 comments

I am improving CuPy's documentation and hit this issue...

Let's say I want to reference arange from the array API. Ideally, I would expect this should work out of box:

# conf.py
# ...
intersphinx_mapping = {
    ...
    'array_api': ('https://data-apis.org/array-api/2021.12/', None),
    ...
}
# ...

and in anywhere (rst files or docstrings) I could just do

:func:`array_api.arange`

to link to arange. Unfortunately, this does not work, nor does the global version (removing the array_api prefix). Instead I must do this following due to this repo's structure:

:func:`signatures.creation_functions.arange`

This is quite confusing and counter-intuitive. I could work with it, but I am wondering if we could do better, say re-organizing the Python stub files such that array_api.arange works, so opening this issue to collect feedbacks and suggestions.

leofang avatar May 10 '22 03:05 leofang

cc @steff456

kgryte avatar May 10 '22 05:05 kgryte

We should fix this, the signatures part should be removed.

rgommers avatar May 10 '22 06:05 rgommers

I've been trying to fix this issue without major luck. I'll give it another check to see if I can remove the signatures and also shorten the amount of writing in a cross reference.

steff456 avatar May 10 '22 07:05 steff456

Why don't we just rename signatures to array_api?

asmeurer avatar May 10 '22 09:05 asmeurer

Also in __init__.py we need to import all functions to provide a flat namespace (except for the extension modules).

leofang avatar May 10 '22 15:05 leofang

@kgryte Is there a way we can "backport" the fix #430 to v2021? It only fixed the draft version but not the latest (or 2021.12) version. Try comparing the outputs and you'll see:

python -m sphinx.ext.intersphinx https://data-apis.org/array-api/draft/objects.inv
python -m sphinx.ext.intersphinx https://data-apis.org/array-api/latest/objects.inv
python -m sphinx.ext.intersphinx https://data-apis.org/array-api/2021.12/objects.inv

leofang avatar May 23 '22 03:05 leofang

@leofang Yes, this should be possible. Will see what I can do.

kgryte avatar May 23 '22 04:05 kgryte

I believe this was fixed, the intersphinx content seems consistent across all versions and signatures isn't present:

% python -m sphinx.ext.intersphinx https://data-apis.org/array-api/2022.12/objects.inv | rg arange
	array_api.arange                         API_specification/generated/array_api.arange.html#array_api.arange
	API_specification/generated/array_api.arange arange                                  : API_specification/generated/array_api.arange.html

% python -m sphinx.ext.intersphinx https://data-apis.org/array-api/2021.12/objects.inv | rg arange
	array_api.arange                         API_specification/generated/array_api.arange.html#array_api.arange
	API_specification/generated/array_api.arange arange                                  : API_specification/generated/array_api.arange.html

% python -m sphinx.ext.intersphinx https://data-apis.org/array-api/latest/objects.inv | rg arange
	array_api.arange                         API_specification/generated/array_api.arange.html#array_api.arange
	API_specification/generated/array_api.arange arange                                  : API_specification/generated/array_api.arange.html

% python -m sphinx.ext.intersphinx https://data-apis.org/array-api/draft/objects.inv | rg arange
	array_api.arange                         API_specification/generated/array_api.arange.html#array_api.arange
	API_specification/generated/array_api.arange arange                                  : API_specification/generated/array_api.arange.html

So I'll close this - thanks all!

rgommers avatar Mar 09 '23 10:03 rgommers