mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	[3.13] gh-129873: IDLE: Improve help.py's method of parsing HTML (GH-129859) (#129884)
gh-129873: IDLE: Improve help.py's method of parsing HTML (GH-129859)
In `help.copy_strip`, only copy the text `<section>`.  In `help.HelpParser.handle_starttag` and elsewhere, remove code to skip the no longer present html.  Add a reminder at the top of idle.rst to run copy_strip after changes.
---------
(cherry picked from commit 6fbf15f98e)
Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
			
			
This commit is contained in:
		
							parent
							
								
									c28eed3c27
								
							
						
					
					
						commit
						f7d885a8ff
					
				
					 5 changed files with 30 additions and 416 deletions
				
			
		|  | @ -12,6 +12,9 @@ IDLE --- Python editor and shell | ||||||
|    single: Python Editor |    single: Python Editor | ||||||
|    single: Integrated Development Environment |    single: Integrated Development Environment | ||||||
| 
 | 
 | ||||||
|  | .. | ||||||
|  |    Remember to update Lib/idlelib/help.html with idlelib.help.copy_source() when modifying this file. | ||||||
|  | 
 | ||||||
| -------------- | -------------- | ||||||
| 
 | 
 | ||||||
| IDLE is Python's Integrated Development and Learning Environment. | IDLE is Python's Integrated Development and Learning Environment. | ||||||
|  |  | ||||||
|  | @ -19,6 +19,9 @@ Released on 2024-10-07 | ||||||
| 
 | 
 | ||||||
| gh-120104: Fix padding in config and search dialog windows in IDLE. | gh-120104: Fix padding in config and search dialog windows in IDLE. | ||||||
| 
 | 
 | ||||||
|  | gh-129873: Simplify displaying the IDLE doc by only copying the text | ||||||
|  | section of idle.html to idlelib/help.html. Patch by Stan Ulbrych. | ||||||
|  | 
 | ||||||
| gh-120083: Add explicit black IDLE Hovertip foreground color needed for | gh-120083: Add explicit black IDLE Hovertip foreground color needed for | ||||||
| recent macOS. Fixes Sonoma showing unreadable white on pale yellow. | recent macOS. Fixes Sonoma showing unreadable white on pale yellow. | ||||||
| Patch by John Riggles. | Patch by John Riggles. | ||||||
|  |  | ||||||
|  | @ -1,231 +1,7 @@ | ||||||
| <!DOCTYPE html> | <section id="idle"> | ||||||
| 
 |  | ||||||
| <html lang="en" data-content_root="../"> |  | ||||||
|   <head> |  | ||||||
|     <meta charset="utf-8" /> |  | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> |  | ||||||
| 
 |  | ||||||
|     <title>IDLE — Python editor and shell — Python 3.14.0a4 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0"> |  | ||||||
| 
 |  | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" /> |  | ||||||
|     <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=aa5eeaf2" /> |  | ||||||
|     <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=5349f25f" /> |  | ||||||
| 
 |  | ||||||
|     <script src="../_static/documentation_options.js?v=058caec0"></script> |  | ||||||
|     <script src="../_static/doctools.js?v=9bcbadda"></script> |  | ||||||
|     <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> |  | ||||||
| 
 |  | ||||||
|     <script src="../_static/sidebar.js"></script> |  | ||||||
| 
 |  | ||||||
|     <link rel="search" type="application/opensearchdescription+xml" |  | ||||||
|           title="Search within Python 3.14.0a4 documentation" |  | ||||||
|           href="../_static/opensearch.xml"/> |  | ||||||
|     <link rel="author" title="About these documents" href="../about.html" /> |  | ||||||
|     <link rel="index" title="Index" href="../genindex.html" /> |  | ||||||
|     <link rel="search" title="Search" href="../search.html" /> |  | ||||||
|     <link rel="copyright" title="Copyright" href="../copyright.html" /> |  | ||||||
|     <link rel="next" title="Development Tools" href="development.html" /> |  | ||||||
|     <link rel="prev" title="tkinter.ttk — Tk themed widgets" href="tkinter.ttk.html" /> |  | ||||||
| 
 |  | ||||||
|     <link rel="canonical" href="https://docs.python.org/3/library/idle.html" /> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <style> |  | ||||||
|       @media only screen { |  | ||||||
|         table.full-width-table { |  | ||||||
|             width: 100%; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     </style> |  | ||||||
| <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css"> |  | ||||||
|     <link rel="shortcut icon" type="image/png" href="../_static/py.svg" /> |  | ||||||
|             <script type="text/javascript" src="../_static/copybutton.js"></script> |  | ||||||
|             <script type="text/javascript" src="../_static/menu.js"></script> |  | ||||||
|             <script type="text/javascript" src="../_static/search-focus.js"></script> |  | ||||||
|             <script type="text/javascript" src="../_static/themetoggle.js"></script> |  | ||||||
|             <script type="text/javascript" src="../_static/rtd_switcher.js"></script> |  | ||||||
|             <meta name="readthedocs-addons-api-version" content="1"> |  | ||||||
| 
 |  | ||||||
|   </head> |  | ||||||
| <body> |  | ||||||
| <div class="mobile-nav"> |  | ||||||
|     <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation" |  | ||||||
|            aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" /> |  | ||||||
|     <nav class="nav-content" role="navigation"> |  | ||||||
|         <label for="menuToggler" class="toggler__label"> |  | ||||||
|             <span></span> |  | ||||||
|         </label> |  | ||||||
|         <span class="nav-items-wrapper"> |  | ||||||
|             <a href="https://www.python.org/" class="nav-logo"> |  | ||||||
|                 <img src="../_static/py.svg" alt="Logo"/> |  | ||||||
|             </a> |  | ||||||
|             <span class="version_switcher_placeholder"></span> |  | ||||||
|             <form role="search" class="search" action="../search.html" method="get"> |  | ||||||
|                 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon"> |  | ||||||
|                     <path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path> |  | ||||||
|                 </svg> |  | ||||||
|                 <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" /> |  | ||||||
|                 <input type="submit" value="Go"/> |  | ||||||
|             </form> |  | ||||||
|         </span> |  | ||||||
|     </nav> |  | ||||||
|     <div class="menu-wrapper"> |  | ||||||
|         <nav class="menu" role="navigation" aria-label="main navigation"> |  | ||||||
|             <div class="language_switcher_placeholder"></div> |  | ||||||
| 
 |  | ||||||
| <label class="theme-selector-label"> |  | ||||||
|     Theme |  | ||||||
|     <select class="theme-selector" oninput="activateTheme(this.value)"> |  | ||||||
|         <option value="auto" selected>Auto</option> |  | ||||||
|         <option value="light">Light</option> |  | ||||||
|         <option value="dark">Dark</option> |  | ||||||
|     </select> |  | ||||||
| </label> |  | ||||||
|   <div> |  | ||||||
|     <h3><a href="../contents.html">Table of Contents</a></h3> |  | ||||||
|     <ul> |  | ||||||
| <li><a class="reference internal" href="#">IDLE — Python editor and shell</a><ul> |  | ||||||
| <li><a class="reference internal" href="#menus">Menus</a><ul> |  | ||||||
| <li><a class="reference internal" href="#file-menu-shell-and-editor">File menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#edit-menu-shell-and-editor">Edit menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#format-menu-editor-window-only">Format menu (Editor window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#run-menu-editor-window-only">Run menu (Editor window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#shell-menu-shell-window-only">Shell menu (Shell window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#debug-menu-shell-window-only">Debug menu (Shell window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#options-menu-shell-and-editor">Options menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#window-menu-shell-and-editor">Window menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#help-menu-shell-and-editor">Help menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#context-menus">Context menus</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#editing-and-navigation">Editing and Navigation</a><ul> |  | ||||||
| <li><a class="reference internal" href="#editor-windows">Editor windows</a></li> |  | ||||||
| <li><a class="reference internal" href="#key-bindings">Key bindings</a></li> |  | ||||||
| <li><a class="reference internal" href="#automatic-indentation">Automatic indentation</a></li> |  | ||||||
| <li><a class="reference internal" href="#search-and-replace">Search and Replace</a></li> |  | ||||||
| <li><a class="reference internal" href="#completions">Completions</a></li> |  | ||||||
| <li><a class="reference internal" href="#calltips">Calltips</a></li> |  | ||||||
| <li><a class="reference internal" href="#code-context">Code Context</a></li> |  | ||||||
| <li><a class="reference internal" href="#shell-window">Shell window</a></li> |  | ||||||
| <li><a class="reference internal" href="#text-colors">Text colors</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#startup-and-code-execution">Startup and Code Execution</a><ul> |  | ||||||
| <li><a class="reference internal" href="#command-line-usage">Command line usage</a></li> |  | ||||||
| <li><a class="reference internal" href="#startup-failure">Startup failure</a></li> |  | ||||||
| <li><a class="reference internal" href="#running-user-code">Running user code</a></li> |  | ||||||
| <li><a class="reference internal" href="#user-output-in-shell">User output in Shell</a></li> |  | ||||||
| <li><a class="reference internal" href="#developing-tkinter-applications">Developing tkinter applications</a></li> |  | ||||||
| <li><a class="reference internal" href="#running-without-a-subprocess">Running without a subprocess</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#help-and-preferences">Help and Preferences</a><ul> |  | ||||||
| <li><a class="reference internal" href="#help-sources">Help sources</a></li> |  | ||||||
| <li><a class="reference internal" href="#setting-preferences">Setting preferences</a></li> |  | ||||||
| <li><a class="reference internal" href="#idle-on-macos">IDLE on macOS</a></li> |  | ||||||
| <li><a class="reference internal" href="#extensions">Extensions</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#module-idlelib">idlelib — implementation of IDLE application</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </div> |  | ||||||
|   <div> |  | ||||||
|     <h4>Previous topic</h4> |  | ||||||
|     <p class="topless"><a href="tkinter.ttk.html" |  | ||||||
|                           title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">tkinter.ttk</span></code> — Tk themed widgets</a></p> |  | ||||||
|   </div> |  | ||||||
|   <div> |  | ||||||
|     <h4>Next topic</h4> |  | ||||||
|     <p class="topless"><a href="development.html" |  | ||||||
|                           title="next chapter">Development Tools</a></p> |  | ||||||
|   </div> |  | ||||||
|   <div role="note" aria-label="source link"> |  | ||||||
|     <h3>This Page</h3> |  | ||||||
|     <ul class="this-page-menu"> |  | ||||||
|       <li><a href="../bugs.html">Report a Bug</a></li> |  | ||||||
|       <li> |  | ||||||
|         <a href="https://github.com/python/cpython/blob/main/Doc/library/idle.rst" |  | ||||||
|             rel="nofollow">Show Source |  | ||||||
|         </a> |  | ||||||
|       </li> |  | ||||||
|     </ul> |  | ||||||
|   </div> |  | ||||||
|         </nav> |  | ||||||
|     </div> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <div class="related" role="navigation" aria-label="Related"> |  | ||||||
|       <h3>Navigation</h3> |  | ||||||
|       <ul> |  | ||||||
|         <li class="right" style="margin-right: 10px"> |  | ||||||
|           <a href="../genindex.html" title="General Index" |  | ||||||
|              accesskey="I">index</a></li> |  | ||||||
|         <li class="right" > |  | ||||||
|           <a href="../py-modindex.html" title="Python Module Index" |  | ||||||
|              >modules</a> |</li> |  | ||||||
|         <li class="right" > |  | ||||||
|           <a href="development.html" title="Development Tools" |  | ||||||
|              accesskey="N">next</a> |</li> |  | ||||||
|         <li class="right" > |  | ||||||
|           <a href="tkinter.ttk.html" title="tkinter.ttk — Tk themed widgets" |  | ||||||
|              accesskey="P">previous</a> |</li> |  | ||||||
| 
 |  | ||||||
|           <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li> |  | ||||||
|           <li><a href="https://www.python.org/">Python</a> »</li> |  | ||||||
|           <li class="switchers"> |  | ||||||
|             <div class="language_switcher_placeholder"></div> |  | ||||||
|             <div class="version_switcher_placeholder"></div> |  | ||||||
|           </li> |  | ||||||
|           <li> |  | ||||||
| 
 |  | ||||||
|           </li> |  | ||||||
|     <li id="cpython-language-and-version"> |  | ||||||
|       <a href="../index.html">3.14.0a4 Documentation</a> » |  | ||||||
|     </li> |  | ||||||
| 
 |  | ||||||
|           <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> |  | ||||||
|           <li class="nav-item nav-item-2"><a href="tk.html" accesskey="U">Graphical User Interfaces with Tk</a> »</li> |  | ||||||
|         <li class="nav-item nav-item-this"><a href="">IDLE — Python editor and shell</a></li> |  | ||||||
|                 <li class="right"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <div class="inline-search" role="search"> |  | ||||||
|         <form class="inline-search" action="../search.html" method="get"> |  | ||||||
|           <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" /> |  | ||||||
|           <input type="submit" value="Go" /> |  | ||||||
|         </form> |  | ||||||
|     </div> |  | ||||||
|                      | |  | ||||||
|                 </li> |  | ||||||
|             <li class="right"> |  | ||||||
| <label class="theme-selector-label"> |  | ||||||
|     Theme |  | ||||||
|     <select class="theme-selector" oninput="activateTheme(this.value)"> |  | ||||||
|         <option value="auto" selected>Auto</option> |  | ||||||
|         <option value="light">Light</option> |  | ||||||
|         <option value="dark">Dark</option> |  | ||||||
|     </select> |  | ||||||
| </label> |</li> |  | ||||||
| 
 |  | ||||||
|       </ul> |  | ||||||
|     </div> |  | ||||||
| 
 |  | ||||||
|     <div class="document"> |  | ||||||
|       <div class="documentwrapper"> |  | ||||||
|         <div class="bodywrapper"> |  | ||||||
|           <div class="body" role="main"> |  | ||||||
| 
 |  | ||||||
|   <section id="idle"> |  | ||||||
| <span id="idle-python-editor-and-shell"></span><h1>IDLE — Python editor and shell<a class="headerlink" href="#idle" title="Link to this heading">¶</a></h1> | <span id="idle-python-editor-and-shell"></span><h1>IDLE — Python editor and shell<a class="headerlink" href="#idle" title="Link to this heading">¶</a></h1> | ||||||
| <p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/main/Lib/idlelib/">Lib/idlelib/</a></p> | <p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/main/Lib/idlelib/">Lib/idlelib/</a></p> | ||||||
| <hr class="docutils" id="index-0" /> | <span class="target" id="index-0"></span><hr class="docutils" /> | ||||||
| <p>IDLE is Python’s Integrated Development and Learning Environment.</p> | <p>IDLE is Python’s Integrated Development and Learning Environment.</p> | ||||||
| <p>IDLE has the following features:</p> | <p>IDLE has the following features:</p> | ||||||
| <ul class="simple"> | <ul class="simple"> | ||||||
|  | @ -1027,168 +803,3 @@ <h3>Extensions<a class="headerlink" href="#extensions" title="Link to this headi | ||||||
| </section> | </section> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|             <div class="clearer"></div> |  | ||||||
|           </div> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|       <div class="sphinxsidebar" role="navigation" aria-label="Main"> |  | ||||||
|         <div class="sphinxsidebarwrapper"> |  | ||||||
|   <div> |  | ||||||
|     <h3><a href="../contents.html">Table of Contents</a></h3> |  | ||||||
|     <ul> |  | ||||||
| <li><a class="reference internal" href="#">IDLE — Python editor and shell</a><ul> |  | ||||||
| <li><a class="reference internal" href="#menus">Menus</a><ul> |  | ||||||
| <li><a class="reference internal" href="#file-menu-shell-and-editor">File menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#edit-menu-shell-and-editor">Edit menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#format-menu-editor-window-only">Format menu (Editor window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#run-menu-editor-window-only">Run menu (Editor window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#shell-menu-shell-window-only">Shell menu (Shell window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#debug-menu-shell-window-only">Debug menu (Shell window only)</a></li> |  | ||||||
| <li><a class="reference internal" href="#options-menu-shell-and-editor">Options menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#window-menu-shell-and-editor">Window menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#help-menu-shell-and-editor">Help menu (Shell and Editor)</a></li> |  | ||||||
| <li><a class="reference internal" href="#context-menus">Context menus</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#editing-and-navigation">Editing and Navigation</a><ul> |  | ||||||
| <li><a class="reference internal" href="#editor-windows">Editor windows</a></li> |  | ||||||
| <li><a class="reference internal" href="#key-bindings">Key bindings</a></li> |  | ||||||
| <li><a class="reference internal" href="#automatic-indentation">Automatic indentation</a></li> |  | ||||||
| <li><a class="reference internal" href="#search-and-replace">Search and Replace</a></li> |  | ||||||
| <li><a class="reference internal" href="#completions">Completions</a></li> |  | ||||||
| <li><a class="reference internal" href="#calltips">Calltips</a></li> |  | ||||||
| <li><a class="reference internal" href="#code-context">Code Context</a></li> |  | ||||||
| <li><a class="reference internal" href="#shell-window">Shell window</a></li> |  | ||||||
| <li><a class="reference internal" href="#text-colors">Text colors</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#startup-and-code-execution">Startup and Code Execution</a><ul> |  | ||||||
| <li><a class="reference internal" href="#command-line-usage">Command line usage</a></li> |  | ||||||
| <li><a class="reference internal" href="#startup-failure">Startup failure</a></li> |  | ||||||
| <li><a class="reference internal" href="#running-user-code">Running user code</a></li> |  | ||||||
| <li><a class="reference internal" href="#user-output-in-shell">User output in Shell</a></li> |  | ||||||
| <li><a class="reference internal" href="#developing-tkinter-applications">Developing tkinter applications</a></li> |  | ||||||
| <li><a class="reference internal" href="#running-without-a-subprocess">Running without a subprocess</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#help-and-preferences">Help and Preferences</a><ul> |  | ||||||
| <li><a class="reference internal" href="#help-sources">Help sources</a></li> |  | ||||||
| <li><a class="reference internal" href="#setting-preferences">Setting preferences</a></li> |  | ||||||
| <li><a class="reference internal" href="#idle-on-macos">IDLE on macOS</a></li> |  | ||||||
| <li><a class="reference internal" href="#extensions">Extensions</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| <li><a class="reference internal" href="#module-idlelib">idlelib — implementation of IDLE application</a></li> |  | ||||||
| </ul> |  | ||||||
| </li> |  | ||||||
| </ul> |  | ||||||
| 
 |  | ||||||
|   </div> |  | ||||||
|   <div> |  | ||||||
|     <h4>Previous topic</h4> |  | ||||||
|     <p class="topless"><a href="tkinter.ttk.html" |  | ||||||
|                           title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">tkinter.ttk</span></code> — Tk themed widgets</a></p> |  | ||||||
|   </div> |  | ||||||
|   <div> |  | ||||||
|     <h4>Next topic</h4> |  | ||||||
|     <p class="topless"><a href="development.html" |  | ||||||
|                           title="next chapter">Development Tools</a></p> |  | ||||||
|   </div> |  | ||||||
|   <div role="note" aria-label="source link"> |  | ||||||
|     <h3>This Page</h3> |  | ||||||
|     <ul class="this-page-menu"> |  | ||||||
|       <li><a href="../bugs.html">Report a Bug</a></li> |  | ||||||
|       <li> |  | ||||||
|         <a href="https://github.com/python/cpython/blob/main/Doc/library/idle.rst" |  | ||||||
|             rel="nofollow">Show Source |  | ||||||
|         </a> |  | ||||||
|       </li> |  | ||||||
|     </ul> |  | ||||||
|   </div> |  | ||||||
|         </div> |  | ||||||
| <div id="sidebarbutton" title="Collapse sidebar"> |  | ||||||
| <span>«</span> |  | ||||||
| </div> |  | ||||||
| 
 |  | ||||||
|       </div> |  | ||||||
|       <div class="clearer"></div> |  | ||||||
|     </div> |  | ||||||
|     <div class="related" role="navigation" aria-label="Related"> |  | ||||||
|       <h3>Navigation</h3> |  | ||||||
|       <ul> |  | ||||||
|         <li class="right" style="margin-right: 10px"> |  | ||||||
|           <a href="../genindex.html" title="General Index" |  | ||||||
|              >index</a></li> |  | ||||||
|         <li class="right" > |  | ||||||
|           <a href="../py-modindex.html" title="Python Module Index" |  | ||||||
|              >modules</a> |</li> |  | ||||||
|         <li class="right" > |  | ||||||
|           <a href="development.html" title="Development Tools" |  | ||||||
|              >next</a> |</li> |  | ||||||
|         <li class="right" > |  | ||||||
|           <a href="tkinter.ttk.html" title="tkinter.ttk — Tk themed widgets" |  | ||||||
|              >previous</a> |</li> |  | ||||||
| 
 |  | ||||||
|           <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li> |  | ||||||
|           <li><a href="https://www.python.org/">Python</a> »</li> |  | ||||||
|           <li class="switchers"> |  | ||||||
|             <div class="language_switcher_placeholder"></div> |  | ||||||
|             <div class="version_switcher_placeholder"></div> |  | ||||||
|           </li> |  | ||||||
|           <li> |  | ||||||
| 
 |  | ||||||
|           </li> |  | ||||||
|     <li id="cpython-language-and-version"> |  | ||||||
|       <a href="../index.html">3.14.0a4 Documentation</a> » |  | ||||||
|     </li> |  | ||||||
| 
 |  | ||||||
|           <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> |  | ||||||
|           <li class="nav-item nav-item-2"><a href="tk.html" >Graphical User Interfaces with Tk</a> »</li> |  | ||||||
|         <li class="nav-item nav-item-this"><a href="">IDLE — Python editor and shell</a></li> |  | ||||||
|                 <li class="right"> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     <div class="inline-search" role="search"> |  | ||||||
|         <form class="inline-search" action="../search.html" method="get"> |  | ||||||
|           <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" /> |  | ||||||
|           <input type="submit" value="Go" /> |  | ||||||
|         </form> |  | ||||||
|     </div> |  | ||||||
|                      | |  | ||||||
|                 </li> |  | ||||||
|             <li class="right"> |  | ||||||
| <label class="theme-selector-label"> |  | ||||||
|     Theme |  | ||||||
|     <select class="theme-selector" oninput="activateTheme(this.value)"> |  | ||||||
|         <option value="auto" selected>Auto</option> |  | ||||||
|         <option value="light">Light</option> |  | ||||||
|         <option value="dark">Dark</option> |  | ||||||
|     </select> |  | ||||||
| </label> |</li> |  | ||||||
| 
 |  | ||||||
|       </ul> |  | ||||||
|     </div> |  | ||||||
|     <div class="footer"> |  | ||||||
|     © <a href="../copyright.html">Copyright</a> 2001 Python Software Foundation. |  | ||||||
|     <br /> |  | ||||||
|     This page is licensed under the Python Software Foundation License Version 2. |  | ||||||
|     <br /> |  | ||||||
|     Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License. |  | ||||||
|     <br /> |  | ||||||
|     See <a href="/license.html">History and License</a> for more information.<br /> |  | ||||||
|     <br /> |  | ||||||
| 
 |  | ||||||
|     The Python Software Foundation is a non-profit corporation. |  | ||||||
| <a href="https://www.python.org/psf/donations/">Please donate.</a> |  | ||||||
| <br /> |  | ||||||
|     <br /> |  | ||||||
| 
 |  | ||||||
|     Last updated on Feb 07, 2025 (05:56 UTC). |  | ||||||
|     <a href="/bugs.html">Found a bug</a>? |  | ||||||
|     <br /> |  | ||||||
| 
 |  | ||||||
|     Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. |  | ||||||
|     </div> |  | ||||||
| 
 |  | ||||||
|   </body> |  | ||||||
| </html> |  | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ | ||||||
| 
 | 
 | ||||||
| HelpWindow - Display HelpFrame in a standalone window. | HelpWindow - Display HelpFrame in a standalone window. | ||||||
| 
 | 
 | ||||||
| copy_strip - Copy idle.html to help.html, rstripping each line. | copy_strip - Copy the text part of idle.html to help.html while rstripping each line. | ||||||
| 
 | 
 | ||||||
| show_idlehelp - Create HelpWindow.  Called in EditorWindow.help_dialog. | show_idlehelp - Create HelpWindow.  Called in EditorWindow.help_dialog. | ||||||
| """ | """ | ||||||
|  | @ -54,7 +54,6 @@ def __init__(self, text): | ||||||
|         self.text = text         # Text widget we're rendering into. |         self.text = text         # Text widget we're rendering into. | ||||||
|         self.tags = ''           # Current block level text tags to apply. |         self.tags = ''           # Current block level text tags to apply. | ||||||
|         self.chartags = ''       # Current character level text tags. |         self.chartags = ''       # Current character level text tags. | ||||||
|         self.show = False        # Exclude html page navigation. |  | ||||||
|         self.hdrlink = False     # Exclude html header links. |         self.hdrlink = False     # Exclude html header links. | ||||||
|         self.level = 0           # Track indentation level. |         self.level = 0           # Track indentation level. | ||||||
|         self.pre = False         # Displaying preformatted text? |         self.pre = False         # Displaying preformatted text? | ||||||
|  | @ -77,11 +76,7 @@ def handle_starttag(self, tag, attrs): | ||||||
|             if a == 'class': |             if a == 'class': | ||||||
|                 class_ = v |                 class_ = v | ||||||
|         s = '' |         s = '' | ||||||
|         if tag == 'section' and attrs == [('id', 'idle')]: |         if tag == 'p' and self.prevtag and not self.prevtag[0]: | ||||||
|             self.show = True    # Start main content. |  | ||||||
|         elif tag == 'div' and class_ == 'clearer': |  | ||||||
|             self.show = False   # End main content. |  | ||||||
|         elif tag == 'p' and self.prevtag and not self.prevtag[0]: |  | ||||||
|             # Begin a new block for <p> tags after a closed tag. |             # Begin a new block for <p> tags after a closed tag. | ||||||
|             # Avoid extra lines, e.g. after <pre> tags. |             # Avoid extra lines, e.g. after <pre> tags. | ||||||
|             lastline = self.text.get('end-1c linestart', 'end-1c') |             lastline = self.text.get('end-1c linestart', 'end-1c') | ||||||
|  | @ -112,7 +107,6 @@ def handle_starttag(self, tag, attrs): | ||||||
|             s = '\n' |             s = '\n' | ||||||
|         elif tag == 'pre': |         elif tag == 'pre': | ||||||
|             self.pre = True |             self.pre = True | ||||||
|             if self.show: |  | ||||||
|             self.text.insert('end', '\n\n') |             self.text.insert('end', '\n\n') | ||||||
|             self.tags = 'preblock' |             self.tags = 'preblock' | ||||||
|         elif tag == 'a' and class_ == 'headerlink': |         elif tag == 'a' and class_ == 'headerlink': | ||||||
|  | @ -120,11 +114,9 @@ def handle_starttag(self, tag, attrs): | ||||||
|         elif tag == 'h1': |         elif tag == 'h1': | ||||||
|             self.tags = tag |             self.tags = tag | ||||||
|         elif tag in ['h2', 'h3']: |         elif tag in ['h2', 'h3']: | ||||||
|             if self.show: |  | ||||||
|             self.header = '' |             self.header = '' | ||||||
|             self.text.insert('end', '\n\n') |             self.text.insert('end', '\n\n') | ||||||
|             self.tags = tag |             self.tags = tag | ||||||
|         if self.show: |  | ||||||
|         self.text.insert('end', s, (self.tags, self.chartags)) |         self.text.insert('end', s, (self.tags, self.chartags)) | ||||||
|         self.prevtag = (True, tag) |         self.prevtag = (True, tag) | ||||||
| 
 | 
 | ||||||
|  | @ -132,7 +124,6 @@ def handle_endtag(self, tag): | ||||||
|         "Handle endtags in help.html." |         "Handle endtags in help.html." | ||||||
|         if tag in ['h1', 'h2', 'h3']: |         if tag in ['h1', 'h2', 'h3']: | ||||||
|             assert self.level == 0 |             assert self.level == 0 | ||||||
|             if self.show: |  | ||||||
|             indent = ('        ' if tag == 'h3' else |             indent = ('        ' if tag == 'h3' else | ||||||
|                       '    ' if tag == 'h2' else |                       '    ' if tag == 'h2' else | ||||||
|                       '') |                       '') | ||||||
|  | @ -151,7 +142,7 @@ def handle_endtag(self, tag): | ||||||
| 
 | 
 | ||||||
|     def handle_data(self, data): |     def handle_data(self, data): | ||||||
|         "Handle date segments in help.html." |         "Handle date segments in help.html." | ||||||
|         if self.show and not self.hdrlink: |         if not self.hdrlink: | ||||||
|             d = data if self.pre else data.replace('\n', ' ') |             d = data if self.pre else data.replace('\n', ' ') | ||||||
|             if self.tags == 'h1': |             if self.tags == 'h1': | ||||||
|                 try: |                 try: | ||||||
|  | @ -253,7 +244,7 @@ def __init__(self, parent, filename, title): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def copy_strip():  # pragma: no cover | def copy_strip():  # pragma: no cover | ||||||
|     """Copy idle.html to idlelib/help.html, stripping trailing whitespace. |     """Copy the text part of idle.html to idlelib/help.html while stripping trailing whitespace. | ||||||
| 
 | 
 | ||||||
|     Files with trailing whitespace cannot be pushed to the git cpython |     Files with trailing whitespace cannot be pushed to the git cpython | ||||||
|     repository.  For 3.x (on Windows), help.html is generated, after |     repository.  For 3.x (on Windows), help.html is generated, after | ||||||
|  | @ -265,7 +256,7 @@ def copy_strip():  # pragma: no cover | ||||||
| 
 | 
 | ||||||
|     It can be worthwhile to occasionally generate help.html without |     It can be worthwhile to occasionally generate help.html without | ||||||
|     touching idle.rst.  Changes to the master version and to the doc |     touching idle.rst.  Changes to the master version and to the doc | ||||||
|     build system may result in changes that should not changed |     build system may result in changes that should not change | ||||||
|     the displayed text, but might break HelpParser. |     the displayed text, but might break HelpParser. | ||||||
| 
 | 
 | ||||||
|     As long as master and maintenance versions of idle.rst remain the |     As long as master and maintenance versions of idle.rst remain the | ||||||
|  | @ -278,10 +269,14 @@ def copy_strip():  # pragma: no cover | ||||||
|     src = join(abspath(dirname(dirname(dirname(__file__)))), |     src = join(abspath(dirname(dirname(dirname(__file__)))), | ||||||
|             'Doc', 'build', 'html', 'library', 'idle.html') |             'Doc', 'build', 'html', 'library', 'idle.html') | ||||||
|     dst = join(abspath(dirname(__file__)), 'help.html') |     dst = join(abspath(dirname(__file__)), 'help.html') | ||||||
|     with open(src, 'rb') as inn,\ | 
 | ||||||
|          open(dst, 'wb') as out: |     with open(src, 'r', encoding="utf-8") as inn, open(dst, 'w', encoding="utf-8") as out: | ||||||
|  |         copy = False | ||||||
|         for line in inn: |         for line in inn: | ||||||
|             out.write(line.rstrip() + b'\n') |             if '<section id="idle">' in line: copy = True | ||||||
|  |             if '<div class="clearer">' in line: break | ||||||
|  |             if copy: out.write(line.strip() + '\n') | ||||||
|  | 
 | ||||||
|     print(f'{src} copied to {dst}') |     print(f'{src} copied to {dst}') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | Simplify displaying the IDLE doc by only copying the text section of | ||||||
|  | idle.html to idlelib/help.html. Patch by Stan Ulbrych. | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Miss Islington (bot)
						Miss Islington (bot)