Title: Dead link in help(lib2to3/idlelib/turtledemo/tkinter.sub/test_*/?)
Type: behavior Stage: needs patch
Components: Documentation, Library (Lib) Versions: Python 3.10, Python 3.9, Python 3.8
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: docs@python, martin.panter, r.david.murray, skip.montanaro, terry.reedy, wyz23x2
Priority: normal Keywords:

Created on 2020-03-24 05:06 by wyz23x2, last changed 2020-08-07 14:40 by wyz23x2.

Messages (7)
msg364917 - (view) Author: wyz23x2 (wyz23x2) * Date: 2020-03-24 05:06
When typing this in shell:
>>> import lib2to3
>>> help(lib2to3)

The output contains this link:
    The following documentation is automatically generated from the Python

But when you access it, 404!
This works:

Please change it. Thanks!
msg365232 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2020-03-28 21:18
Lib/lib2to3 is a directory with containing
   ### empty
Unlike most python-coded modules, there is no Doc/library/lib2to3.rst and hence no generated lib2to3.html.  Instead, there is a 2to3.rst and 2to3.html.  In the module index, module xyz is usually linked to .../library/xyz.html#module-xyz.  But lib2to3 is somewhere linked instead to .../library/2to3.html#module-lib2to3.

As implied by the changed title, this issue is not at all unique to lib2to3.  Just as lib2to3 implements the command line app 2to3, with 2to3.rst, idlelib implements IDLE with idle.rst.  Turtle demo is domumented within turtle.rst.  Most tkinter submodule have no doc other than a mention within tkinter.rst.  These could perhaps have a # target added.  (I am not familiar with exactly how.)   But there are also the numerous test modules that have no doc, and the generated doc for these is less useful than the code itself.  

Possible solutions framed in terms of lib2to3:

1. Manual redirection: add lib2to3.rst and hence lib2to3.html with the correct url, possibly with additional text.  But this is not the only module documented within a file with another name, and would not work for things like test files that should not be documented.

2. Auto redirection: persuade whoever manages to add
a redirection for lib2to3.  Fragile.

3. Hardcode the exception in the help output generation.  The latter is generated by  The module doc location under MODULE REFERENCE is generated by pydoc.Doc.getdocloc.  This function already has a couple of (probably obsolete) tuples of exceptions, so adding more seems OK.

The oddity is that .html is added if and only if the doc location does not start with 'http'.  lines 414-417.I think that this is backwards. It only works because adds missing .html, even to "", which is why the bug? has not been noticed.  Note that by default, docloc starts with 'https://', so by default, .html is omitted.

Skip, David, and Martin, you have all modified this part of the code.  Do any of you disagree that there is a bug?
msg365246 - (view) Author: wyz23x2 (wyz23x2) * Date: 2020-03-29 07:40
My opinion:
I think No.2 makes more sense to users that visit the docs directly by; they will copy the "" format from other modules. But I also agree it's fragile.
No.3 is good too, according to me. Can use it if No.2 is too fragile.
msg368021 - (view) Author: wyz23x2 (wyz23x2) * Date: 2020-05-04 08:56
msg368044 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2020-05-04 12:40
Not until decision made.  And not be me until I have my development machine running.
msg368102 - (view) Author: wyz23x2 (wyz23x2) * Date: 2020-05-05 03:52
msg374998 - (view) Author: wyz23x2 (wyz23x2) * Date: 2020-08-07 14:39
Ping? Which of the 3 should we choose?
Date User Action Args
2020-08-07 14:40:08wyz23x2setversions: - Python 3.7
2020-08-07 14:39:58wyz23x2setmessages: + msg374998
versions: + Python 3.10
2020-05-05 03:52:08wyz23x2setmessages: + msg368102
2020-05-04 12:40:28terry.reedysetmessages: + msg368044
2020-05-04 08:56:43wyz23x2setmessages: + msg368021
2020-03-29 07:40:15wyz23x2setmessages: + msg365246
2020-03-28 21:18:46terry.reedysettype: performance -> behavior
title: Dead link in help(lib2to3) -> Dead link in help(lib2to3/idlelib/turtledemo/tkinter.sub/test_*/?)
components: - 2to3 (2.x to 3.x conversion tool)

nosy: + skip.montanaro, martin.panter, r.david.murray, terry.reedy
versions: + Python 3.7, Python 3.9
messages: + msg365232
stage: needs patch
2020-03-24 05:06:26wyz23x2create