[Python-checkins] cpython (merge 3.5 -> default): Issue #16893: Add idlelib.help.copy_strip() to copy-rstrip Doc/.../idle.html.

terry.reedy python-checkins at python.org
Tue Sep 22 04:43:19 CEST 2015


https://hg.python.org/cpython/rev/09ebed6a8cb8
changeset:   98163:09ebed6a8cb8
parent:      98159:6988771a1084
parent:      98162:f08437278049
user:        Terry Jan Reedy <tjreedy at udel.edu>
date:        Mon Sep 21 22:40:31 2015 -0400
summary:
  Issue #16893: Add idlelib.help.copy_strip() to copy-rstrip Doc/.../idle.html.
Change destination to help.html.  Adjust NEWS entries.

files:
  Lib/idlelib/NEWS.txt  |   4 +-
  Lib/idlelib/help.html |   0 
  Lib/idlelib/help.py   |  53 ++++++++++++++++++++----------
  Misc/NEWS             |  28 ++-------------
  4 files changed, 42 insertions(+), 43 deletions(-)


diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -7,8 +7,8 @@
 
 - Issue #25199: Idle: add synchronization comments for future maintainers.
 
-- Issue #16893: Replace help.txt with idle.html for Idle doc display.
-  The new idlelib/idle.html is copied from Doc/build/html/library/idle.html.
+- Issue #16893: Replace help.txt with help.html for Idle doc display.
+  The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
   It looks better than help.txt and will better document Idle as released.
   The tkinter html viewer that works for this file was written by Mark Roseman.
   The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
diff --git a/Lib/idlelib/idle.html b/Lib/idlelib/help.html
rename from Lib/idlelib/idle.html
rename to Lib/idlelib/help.html
diff --git a/Lib/idlelib/help.py b/Lib/idlelib/help.py
--- a/Lib/idlelib/help.py
+++ b/Lib/idlelib/help.py
@@ -1,23 +1,26 @@
-"""
-help.py implements the Idle help menu and is subject to change.
+""" help.py: Implement the Idle help menu.
+Contents are subject to revision at any time, without notice.
 
-The contents are subject to revision at any time, without notice.
 
 Help => About IDLE: diplay About Idle dialog
 
 <to be moved here from aboutDialog.py>
 
-Help => IDLE Help: display idle.html with proper formatting
 
-HelpParser - Parses idle.html generated from idle.rst by Sphinx
-and renders to tk Text.
+Help => IDLE Help: Display help.html with proper formatting.
+Doc/library/idle.rst (Sphinx)=> Doc/build/html/library/idle.html
+(help.copy_strip)=> Lib/idlelib/help.html
 
-HelpText - Displays formatted idle.html.
+HelpParser - Parse help.html and and render to tk Text.
 
-HelpFrame - Contains text, scrollbar, and table-of-contents.
+HelpText - Display formatted help.html.
+
+HelpFrame - Contain text, scrollbar, and table-of-contents.
 (This will be needed for display in a future tabbed window.)
 
-HelpWindow - Display idleframe in a standalone window.
+HelpWindow - Display HelpFrame in a standalone window.
+
+copy_strip - Copy idle.html to help.html, rstripping each line.
 
 show_idlehelp - Create HelpWindow.  Called in EditorWindow.help_dialog.
 """
@@ -36,7 +39,7 @@
 ## IDLE Help ##
 
 class HelpParser(HTMLParser):
-    """Render idle.html generated by Sphinx from idle.rst.
+    """Render help.html into a text widget.
 
     The overridden handle_xyz methods handle a subset of html tags.
     The supplied text should have the needed tag configurations.
@@ -62,7 +65,7 @@
         self.tags = '' if self.level == 0 else 'l'+str(self.level)
 
     def handle_starttag(self, tag, attrs):
-        "Handle starttags in idle.html."
+        "Handle starttags in help.html."
         class_ = ''
         for a, v in attrs:
             if a == 'class':
@@ -120,7 +123,7 @@
             self.text.insert('end', s, self.tags)
 
     def handle_endtag(self, tag):
-        "Handle endtags in idle.html."
+        "Handle endtags in help.html."
         if tag in ['h1', 'h2', 'h3', 'span', 'em']:
             self.indent(0)  # clear tag, reset indent
             if self.show and tag in ['h1', 'h2', 'h3']:
@@ -136,7 +139,7 @@
             self.indent(amt=-1)
 
     def handle_data(self, data):
-        "Handle date segments in idle.html."
+        "Handle date segments in help.html."
         if self.show and not self.hdrlink:
             d = data if self.pre else data.replace('\n', ' ')
             if self.tags == 'h1':
@@ -149,7 +152,7 @@
 
 
 class HelpText(Text):
-    "Display idle.html."
+    "Display help.html."
     def __init__(self, parent, filename):
         "Configure tags and feed file to parser."
         Text.__init__(self, parent, wrap='word', highlightthickness=0,
@@ -188,6 +191,7 @@
 
 
 class HelpFrame(Frame):
+    "Display html text, scrollbar, and toc."
     def __init__(self, parent, filename):
         Frame.__init__(self, parent)
         text = HelpText(self, filename)
@@ -202,6 +206,7 @@
         toc.grid(column=0, row=0, sticky='nw')
 
     def contents_widget(self, text):
+        "Create table of contents."
         toc = Menubutton(self, text='TOC')
         drop = Menu(toc, tearoff=False)
         for tag, lbl in text.parser.contents:
@@ -211,7 +216,7 @@
 
 
 class HelpWindow(Toplevel):
-
+    "Display frame with rendered html."
     def __init__(self, parent, filename, title):
         Toplevel.__init__(self, parent)
         self.wm_title(title)
@@ -221,11 +226,23 @@
         self.grid_rowconfigure(0, weight=1)
 
 
+def copy_strip():
+    "Copy idle.html to idlelib/help.html, stripping trailing whitespace."
+    src = join(abspath(dirname(dirname(dirname(__file__)))),
+               'Doc', 'build', 'html', 'library', 'idle.html')
+    dst = join(abspath(dirname(__file__)), 'help.html')
+    with open(src, 'rb') as inn,\
+         open(dst, 'wb') as out:
+        for line in inn:
+            out.write(line.rstrip() + '\n')
+    print('idle.html copied to help.html')
+
 def show_idlehelp(parent):
-    filename = join(abspath(dirname(__file__)), 'idle.html')
+    "Create HelpWindow; called from Idle Help event handler."
+    filename = join(abspath(dirname(__file__)), 'help.html')
     if not isfile(filename):
-        dirpath = join(abspath(dirname(dirname(dirname(__file__)))),
-                   'Doc', 'build', 'html', 'library')
+        # try copy_strip, present message
+        return 
     HelpWindow(parent, filename, 'IDLE Help')
 
 if __name__ == '__main__':
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -81,10 +81,13 @@
 IDLE
 ----
 
+- Issue #24861: Most of idlelib is private and subject to change.
+  Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.   
+
 - Issue #25199: Idle: add synchronization comments for future maintainers.
 
-- Issue #16893: Replace help.txt with idle.html for Idle doc display.
-  The new idlelib/idle.html is copied from Doc/build/html/idle.html.
+- Issue #16893: Replace help.txt with help.html for Idle doc display.
+  The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
   It looks better than help.txt and will better document Idle as released.
   The tkinter html viewer that works for this file was written by Rose Roseman.
   The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
@@ -200,27 +203,6 @@
 - Issue #23572: Fixed functools.singledispatch on classes with falsy
   metaclasses.  Patch by Ethan Furman.
 
-IDLE
-----
-
-- Issue #24861: Most of idlelib is private and subject to change.
-  Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.   
-
-- Issue #25199: Idle: add synchronization comments for future maintainers.
-
-- Issue #16893: Replace help.txt with idle.html for Idle doc display.
-  The new idlelib/idle.html is copied from Doc/build/html/library/idle.html.
-  It looks better than help.txt and will better document Idle as released.
-  The tkinter html viewer that works for this file was written by Mark Roseman.
-  The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
-
-- Issue #24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
-
-- Issue #24782: In Idle extension config dialog, replace tabs with sorted list.
-  Patch by Mark Roseman.
-
-- Issue #24790: Remove extraneous code (which also create 2 & 3 conflicts).
-
 Documentation
 -------------
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list