Repository navigation
Automate creation of idlelib/help.html from Doc/.../idle.html #69405
Description
Activity
This continues bpo-16893, which replaced help.txt with help.html for the Idle doc display. It also replaced the display classes with new classes in help.py. I currently create help.html in a .bat file. With Doc as current directory, it uses
..\pcbuild\python_d.exe -c "from idlelib.help import copy_strip; copy_strip()"
With a change to the help.py if __name__ block so that
..\pcbuild\python_d.exe -m idlelib.help copy_strip
would work.This issue is first about revising Zack Ware's makefile patch, https://bugs.python.org/file36975/issue16893-v4.diff, which adds an 'idledoc' target. It is attached to bpo-16893. It needs 'copy' replaced by 'copy, strip, and rename'. The command above requires finding a compatible python.exe, and I do not know if that is a problem.
In normal use, 'idledoc' should only be invoked for the earliest 3.x getting maintenance patches, and the result merged forward.
If this is resolved, it would be nice if the new 'idledoc' target were built as apart of the release process, and any changes checked in. But the latter should currently still be done for all 3.x branches
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on Sep 23, 2015 - addedbuildThe build process and cross-buildThe build process and cross-build
on Jun 19, 2017 Zach, I currently build idlelib/help.html by first building a complete doc set and then copying from Doc/.../idle.html, stripping trailing whitespace on the say. One problem is that the result has a lot of extraneous stuff aside from the doc text itself: the code for the header, sidebar, and footer. These are a nuisance when committing changes and for extracting just the text we want.
I would prefer to create a clean .html from Doc/library/idle.rst that just has the code for the doc, without the extraneous matter. Do you know how? I looked in Doc/make.bat and it says it will not work on single files.
EDIT: fixed in #129873.
Sphinx can be run with an empty conf like so:
html_theme = 'basic' html_static_path = [] html_js_files = [] html_css_files = [] html_show_sourcelink = False html_show_copyright = False html_show_sphinx = FalseAnd then stripping everything that is not in
<section id="idle">returns the desired result.*Maybe an action could be added that runs when idle.html is modified? It would build, extract the file and then create the conf and then a simple bash script with a counter to clean up.
Otherwise we have to manually update with each PR. (This should probably be done in the meantime as it has not been done for a while)
*The only thing left is :source: but maybe we can just modify the docs to a link to clean that up?
I now use a custom .bat file to run sphinx and copy-trim the result. This works as long as I am the only one editing idle.rst and remember to run the .bat file.
FWIW, there is some tooling for
help()topics inDoc/tools/extensions/pydoc_topics.pyand release-tools.- removedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on Feb 7, 2025 Adding a workflow for when a PR modifies /Doc/Lib/idle.rst would be better than updating with releases in my opinion.
@StanFromIreland In PR #132723 you tried and due to problems rejected idea of auto updating help.html if older that idle.rst. I want to consider your alternative of adding a check. I am not sure if it passing should be required. It might work better with Z. Ware's idea of adding 'idledoc' target to makefile. What do you think?
Adding the makefile target would be good, we already have one for regeneration of pydoc-topics.
We could add a check to the existing check generated files workflow. Making it optional is also possible.
We could also consider adding it to the release process, like pydoc-topics.
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsNo status
- StatusShow more project fieldsTodo
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs