SILENT KILLERPanel

Current Path: > > usr > lib64 > python2.7 > idlelib > >


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //usr/lib64/python2.7/idlelib//

NameTypeSizeLast ModifiedActions
Icons Directory - -
idle_test Directory - -
AutoComplete.py File 8964 bytes April 10 2024 04:58:35.
AutoComplete.pyc File 8012 bytes April 10 2024 04:58:46.
AutoComplete.pyo File 8012 bytes April 10 2024 04:58:46.
AutoCompleteWindow.py File 17318 bytes April 10 2024 04:58:35.
AutoCompleteWindow.pyc File 12480 bytes April 10 2024 04:58:46.
AutoCompleteWindow.pyo File 12421 bytes April 10 2024 04:58:43.
AutoExpand.py File 3395 bytes April 10 2024 04:58:35.
AutoExpand.pyc File 3502 bytes April 10 2024 04:58:46.
AutoExpand.pyo File 3502 bytes April 10 2024 04:58:46.
Bindings.py File 2976 bytes April 10 2024 04:58:35.
Bindings.pyc File 4695 bytes April 10 2024 04:58:46.
Bindings.pyo File 4695 bytes April 10 2024 04:58:46.
CREDITS.txt File 1866 bytes April 10 2024 04:58:35.
CallTipWindow.py File 6065 bytes April 10 2024 04:58:35.
CallTipWindow.pyc File 6136 bytes April 10 2024 04:58:46.
CallTipWindow.pyo File 6136 bytes April 10 2024 04:58:46.
CallTips.py File 7740 bytes April 10 2024 04:58:35.
CallTips.pyc File 8133 bytes April 10 2024 04:58:46.
CallTips.pyo File 8133 bytes April 10 2024 04:58:46.
ChangeLog File 56393 bytes April 10 2024 04:58:35.
ClassBrowser.py File 6999 bytes April 10 2024 04:58:35.
ClassBrowser.pyc File 9500 bytes April 10 2024 04:58:46.
ClassBrowser.pyo File 9500 bytes April 10 2024 04:58:46.
CodeContext.py File 8342 bytes April 10 2024 04:58:35.
CodeContext.pyc File 6658 bytes April 10 2024 04:58:46.
CodeContext.pyo File 6614 bytes April 10 2024 04:58:43.
ColorDelegator.py File 9762 bytes April 10 2024 04:58:35.
ColorDelegator.pyc File 8898 bytes April 10 2024 04:58:46.
ColorDelegator.pyo File 8898 bytes April 10 2024 04:58:46.
Debugger.py File 18236 bytes April 10 2024 04:58:35.
Debugger.pyc File 17546 bytes April 10 2024 04:58:46.
Debugger.pyo File 17546 bytes April 10 2024 04:58:46.
Delegator.py File 665 bytes April 10 2024 04:58:35.
Delegator.pyc File 1268 bytes April 10 2024 04:58:46.
Delegator.pyo File 1268 bytes April 10 2024 04:58:46.
EditorWindow.py File 65498 bytes April 10 2024 04:58:35.
EditorWindow.pyc File 56858 bytes April 10 2024 04:58:46.
EditorWindow.pyo File 56756 bytes April 10 2024 04:58:43.
FileList.py File 3718 bytes April 10 2024 04:58:35.
FileList.pyc File 4025 bytes April 10 2024 04:58:46.
FileList.pyo File 3992 bytes April 10 2024 04:58:43.
FormatParagraph.py File 7287 bytes April 10 2024 04:58:35.
FormatParagraph.pyc File 7142 bytes April 10 2024 04:58:46.
FormatParagraph.pyo File 7142 bytes April 10 2024 04:58:46.
GrepDialog.py File 5145 bytes April 10 2024 04:58:35.
GrepDialog.pyc File 6425 bytes April 10 2024 04:58:46.
GrepDialog.pyo File 6425 bytes April 10 2024 04:58:46.
HISTORY.txt File 10317 bytes April 10 2024 04:58:35.
HyperParser.py File 10497 bytes April 10 2024 04:58:35.
HyperParser.pyc File 6673 bytes April 10 2024 04:58:46.
HyperParser.pyo File 6673 bytes April 10 2024 04:58:46.
IOBinding.py File 21911 bytes April 10 2024 04:58:35.
IOBinding.pyc File 18535 bytes April 10 2024 04:58:46.
IOBinding.pyo File 18535 bytes April 10 2024 04:58:46.
IdleHistory.py File 4052 bytes April 10 2024 04:58:35.
IdleHistory.pyc File 4060 bytes April 10 2024 04:58:46.
IdleHistory.pyo File 4060 bytes April 10 2024 04:58:46.
MultiCall.py File 17701 bytes April 10 2024 04:58:35.
MultiCall.pyc File 16351 bytes April 10 2024 04:58:46.
MultiCall.pyo File 16277 bytes April 10 2024 04:58:43.
MultiStatusBar.py File 1348 bytes April 10 2024 04:58:35.
MultiStatusBar.pyc File 2279 bytes April 10 2024 04:58:46.
MultiStatusBar.pyo File 2279 bytes April 10 2024 04:58:46.
NEWS.txt File 47247 bytes April 10 2024 04:58:35.
ObjectBrowser.py File 4376 bytes April 10 2024 04:58:35.
ObjectBrowser.pyc File 7067 bytes April 10 2024 04:58:46.
ObjectBrowser.pyo File 7067 bytes April 10 2024 04:58:46.
OutputWindow.py File 4576 bytes April 10 2024 04:58:35.
OutputWindow.pyc File 5232 bytes April 10 2024 04:58:46.
OutputWindow.pyo File 5232 bytes April 10 2024 04:58:46.
ParenMatch.py File 6714 bytes April 10 2024 04:58:35.
ParenMatch.pyc File 7129 bytes April 10 2024 04:58:46.
ParenMatch.pyo File 7129 bytes April 10 2024 04:58:46.
PathBrowser.py File 3009 bytes April 10 2024 04:58:35.
PathBrowser.pyc File 4486 bytes April 10 2024 04:58:46.
PathBrowser.pyo File 4486 bytes April 10 2024 04:58:46.
Percolator.py File 3222 bytes April 10 2024 04:58:35.
Percolator.pyc File 4608 bytes April 10 2024 04:58:46.
Percolator.pyo File 4424 bytes April 10 2024 04:58:43.
PyParse.py File 19510 bytes April 10 2024 04:58:35.
PyParse.pyc File 10005 bytes April 10 2024 04:58:46.
PyParse.pyo File 9567 bytes April 10 2024 04:58:43.
PyShell.py File 58862 bytes April 10 2024 04:58:35.
PyShell.pyc File 52826 bytes April 10 2024 04:58:46.
PyShell.pyo File 52724 bytes April 10 2024 04:58:43.
README.txt File 7890 bytes April 10 2024 04:58:35.
RemoteDebugger.py File 11632 bytes April 10 2024 04:58:35.
RemoteDebugger.pyc File 16325 bytes April 10 2024 04:58:46.
RemoteDebugger.pyo File 16171 bytes April 10 2024 04:58:43.
RemoteObjectBrowser.py File 942 bytes April 10 2024 04:58:35.
RemoteObjectBrowser.pyc File 2150 bytes April 10 2024 04:58:46.
RemoteObjectBrowser.pyo File 2150 bytes April 10 2024 04:58:46.
ReplaceDialog.py File 6639 bytes April 10 2024 04:58:35.
ReplaceDialog.pyc File 7756 bytes April 10 2024 04:58:46.
ReplaceDialog.pyo File 7756 bytes April 10 2024 04:58:46.
RstripExtension.py File 1050 bytes April 10 2024 04:58:35.
RstripExtension.pyc File 1613 bytes April 10 2024 04:58:46.
RstripExtension.pyo File 1613 bytes April 10 2024 04:58:46.
ScriptBinding.py File 8459 bytes April 10 2024 04:58:35.
ScriptBinding.pyc File 8201 bytes April 10 2024 04:58:46.
ScriptBinding.pyo File 8201 bytes April 10 2024 04:58:46.
ScrolledList.py File 4373 bytes April 10 2024 04:58:35.
ScrolledList.pyc File 6482 bytes April 10 2024 04:58:46.
ScrolledList.pyo File 6482 bytes April 10 2024 04:58:46.
SearchDialog.py File 2630 bytes April 10 2024 04:58:35.
SearchDialog.pyc File 3983 bytes April 10 2024 04:58:46.
SearchDialog.pyo File 3983 bytes April 10 2024 04:58:46.
SearchDialogBase.py File 7094 bytes April 10 2024 04:58:35.
SearchDialogBase.pyc File 8462 bytes April 10 2024 04:58:46.
SearchDialogBase.pyo File 8462 bytes April 10 2024 04:58:46.
SearchEngine.py File 7463 bytes April 10 2024 04:58:35.
SearchEngine.pyc File 8302 bytes April 10 2024 04:58:46.
SearchEngine.pyo File 8302 bytes April 10 2024 04:58:46.
StackViewer.py File 4431 bytes April 10 2024 04:58:35.
StackViewer.pyc File 6404 bytes April 10 2024 04:58:46.
StackViewer.pyo File 6404 bytes April 10 2024 04:58:46.
TODO.txt File 8478 bytes April 10 2024 04:58:35.
ToolTip.py File 3173 bytes April 10 2024 04:58:35.
ToolTip.pyc File 4669 bytes April 10 2024 04:58:46.
ToolTip.pyo File 4669 bytes April 10 2024 04:58:46.
TreeWidget.py File 15037 bytes April 10 2024 04:58:35.
TreeWidget.pyc File 17694 bytes April 10 2024 04:58:46.
TreeWidget.pyo File 17694 bytes April 10 2024 04:58:46.
UndoDelegator.py File 10787 bytes April 10 2024 04:58:35.
UndoDelegator.pyc File 13555 bytes April 10 2024 04:58:46.
UndoDelegator.pyo File 13555 bytes April 10 2024 04:58:46.
WidgetRedirector.py File 6906 bytes April 10 2024 04:58:35.
WidgetRedirector.pyc File 7769 bytes April 10 2024 04:58:46.
WidgetRedirector.pyo File 7769 bytes April 10 2024 04:58:46.
WindowList.py File 2473 bytes April 10 2024 04:58:35.
WindowList.pyc File 3636 bytes April 10 2024 04:58:46.
WindowList.pyo File 3636 bytes April 10 2024 04:58:46.
ZoomHeight.py File 1300 bytes April 10 2024 04:58:35.
ZoomHeight.pyc File 1646 bytes April 10 2024 04:58:46.
ZoomHeight.pyo File 1646 bytes April 10 2024 04:58:46.
__init__.py File 288 bytes April 10 2024 04:58:35.
__init__.pyc File 431 bytes April 10 2024 04:58:46.
__init__.pyo File 431 bytes April 10 2024 04:58:46.
aboutDialog.py File 7014 bytes April 10 2024 04:58:35.
aboutDialog.pyc File 6848 bytes April 10 2024 04:58:46.
aboutDialog.pyo File 6848 bytes April 10 2024 04:58:46.
config-extensions.def File 2965 bytes April 10 2024 04:58:35.
config-highlight.def File 2515 bytes April 10 2024 04:58:35.
config-keys.def File 7777 bytes April 10 2024 04:58:35.
config-main.def File 2561 bytes April 10 2024 04:58:35.
configDialog.py File 65958 bytes April 10 2024 04:58:35.
configDialog.pyc File 53291 bytes April 10 2024 04:58:46.
configDialog.pyo File 53291 bytes April 10 2024 04:58:46.
configHandler.py File 32485 bytes April 10 2024 04:58:35.
configHandler.pyc File 29361 bytes April 10 2024 04:58:46.
configHandler.pyo File 29361 bytes April 10 2024 04:58:46.
configHelpSourceEdit.py File 6686 bytes April 10 2024 04:58:35.
configHelpSourceEdit.pyc File 6595 bytes April 10 2024 04:58:46.
configHelpSourceEdit.pyo File 6595 bytes April 10 2024 04:58:46.
configSectionNameDialog.py File 4040 bytes April 10 2024 04:58:35.
configSectionNameDialog.pyc File 4419 bytes April 10 2024 04:58:46.
configSectionNameDialog.pyo File 4419 bytes April 10 2024 04:58:46.
dynOptionMenuWidget.py File 1984 bytes April 10 2024 04:58:35.
dynOptionMenuWidget.pyc File 2790 bytes April 10 2024 04:58:46.
dynOptionMenuWidget.pyo File 2790 bytes April 10 2024 04:58:46.
extend.txt File 3642 bytes April 10 2024 04:58:35.
help.html File 42414 bytes April 10 2024 04:58:35.
help.py File 11035 bytes April 10 2024 04:58:35.
help.pyc File 12270 bytes April 10 2024 04:58:46.
help.pyo File 12270 bytes April 10 2024 04:58:46.
help.txt File 12144 bytes April 10 2024 04:58:35.
idle.py File 453 bytes April 10 2024 04:58:35.
idle.pyc File 410 bytes April 10 2024 04:58:46.
idle.pyo File 410 bytes April 10 2024 04:58:46.
idle.pyw File 563 bytes April 10 2024 04:58:35.
idlever.py File 415 bytes April 10 2024 04:58:35.
idlever.pyc File 578 bytes April 10 2024 04:58:46.
idlever.pyo File 578 bytes April 10 2024 04:58:46.
keybindingDialog.py File 12468 bytes April 10 2024 04:58:35.
keybindingDialog.pyc File 12173 bytes April 10 2024 04:58:46.
keybindingDialog.pyo File 12173 bytes April 10 2024 04:58:46.
macosxSupport.py File 8435 bytes April 10 2024 04:58:35.
macosxSupport.pyc File 8351 bytes April 10 2024 04:58:46.
macosxSupport.pyo File 8213 bytes April 10 2024 04:58:43.
rpc.py File 20150 bytes April 10 2024 04:58:35.
rpc.pyc File 21728 bytes April 10 2024 04:58:46.
rpc.pyo File 21622 bytes April 10 2024 04:58:43.
run.py File 12917 bytes April 10 2024 04:58:35.
run.pyc File 13419 bytes April 10 2024 04:58:46.
run.pyo File 13361 bytes April 10 2024 04:58:43.
tabbedpages.py File 18439 bytes April 10 2024 04:58:35.
tabbedpages.pyc File 18561 bytes April 10 2024 04:58:46.
tabbedpages.pyo File 18561 bytes April 10 2024 04:58:46.
textView.py File 3520 bytes April 10 2024 04:58:35.
textView.pyc File 4025 bytes April 10 2024 04:58:46.
textView.pyo File 4025 bytes April 10 2024 04:58:46.

Reading File: //usr/lib64/python2.7/idlelib///help.py

""" help.py: Implement the Idle help menu.
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 help.html with proper formatting.
Doc/library/idle.rst (Sphinx)=> Doc/build/html/library/idle.html
(help.copy_strip)=> Lib/idlelib/help.html

HelpParser - Parse help.html and render to tk Text.

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 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.
"""
from HTMLParser import HTMLParser
from os.path import abspath, dirname, isdir, isfile, join
from platform import python_version
from Tkinter import Tk, Toplevel, Frame, Text, Scrollbar, Menu, Menubutton
import tkFont as tkfont
from idlelib.configHandler import idleConf

use_ttk = False # until available to import
if use_ttk:
    from tkinter.ttk import Menubutton

## About IDLE ##


## IDLE Help ##

class HelpParser(HTMLParser):
    """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.
    The behavior for unsupported tags, such as table, is undefined.
    If the tags generated by Sphinx change, this class, especially
    the handle_starttag and handle_endtags methods, might have to also.
    """
    def __init__(self, text):
        HTMLParser.__init__(self)
        self.text = text         # text widget we're rendering into
        self.tags = ''           # current block level text tags to apply
        self.chartags = ''       # current character level text tags
        self.show = False        # used so we exclude page navigation
        self.hdrlink = False     # used so we don't show header links
        self.level = 0           # indentation level
        self.pre = False         # displaying preformatted text
        self.hprefix = ''        # prefix such as '25.5' to strip from headings
        self.nested_dl = False   # if we're in a nested <dl>
        self.simplelist = False  # simple list (no double spacing)
        self.toc = []            # pair headers with text indexes for toc
        self.header = ''         # text within header tags for toc

    def indent(self, amt=1):
        self.level += amt
        self.tags = '' if self.level == 0 else 'l'+str(self.level)

    def handle_starttag(self, tag, attrs):
        "Handle starttags in help.html."
        class_ = ''
        for a, v in attrs:
            if a == 'class':
                class_ = v
        s = ''
        if tag == 'div' and class_ == 'section':
            self.show = True    # start of main content
        elif tag == 'div' and class_ == 'sphinxsidebar':
            self.show = False   # end of main content
        elif tag == 'p' and class_ != 'first':
            s = '\n\n'
        elif tag == 'span' and class_ == 'pre':
            self.chartags = 'pre'
        elif tag == 'span' and class_ == 'versionmodified':
            self.chartags = 'em'
        elif tag == 'em':
            self.chartags = 'em'
        elif tag in ['ul', 'ol']:
            if class_.find('simple') != -1:
                s = '\n'
                self.simplelist = True
            else:
                self.simplelist = False
            self.indent()
        elif tag == 'dl':
            if self.level > 0:
                self.nested_dl = True
        elif tag == 'li':
            s = '\n* ' if self.simplelist else '\n\n* '
        elif tag == 'dt':
            s = '\n\n' if not self.nested_dl else '\n'  # avoid extra line
            self.nested_dl = False
        elif tag == 'dd':
            self.indent()
            s = '\n'
        elif tag == 'pre':
            self.pre = True
            if self.show:
                self.text.insert('end', '\n\n')
            self.tags = 'preblock'
        elif tag == 'a' and class_ == 'headerlink':
            self.hdrlink = True
        elif tag == 'h1':
            self.tags = tag
        elif tag in ['h2', 'h3']:
            if self.show:
                self.header = ''
                self.text.insert('end', '\n\n')
            self.tags = tag
        if self.show:
            self.text.insert('end', s, (self.tags, self.chartags))

    def handle_endtag(self, tag):
        "Handle endtags in help.html."
        if tag in ['h1', 'h2', 'h3']:
            self.indent(0)  # clear tag, reset indent
            if self.show:
                self.toc.append((self.header, self.text.index('insert')))
        elif tag in ['span', 'em']:
            self.chartags = ''
        elif tag == 'a':
            self.hdrlink = False
        elif tag == 'pre':
            self.pre = False
            self.tags = ''
        elif tag in ['ul', 'dd', 'ol']:
            self.indent(amt=-1)

    def handle_data(self, data):
        "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':
                self.hprefix = d[0:d.index(' ')]
            if self.tags in ['h1', 'h2', 'h3'] and self.hprefix != '':
                if d[0:len(self.hprefix)] == self.hprefix:
                    d = d[len(self.hprefix):].strip()
                self.header += d
            self.text.insert('end', d, (self.tags, self.chartags))

    def handle_charref(self, name):
        if self.show:
            self.text.insert('end', unichr(int(name)))


class HelpText(Text):
    "Display help.html."
    def __init__(self, parent, filename):
        "Configure tags and feed file to parser."
        uwide = idleConf.GetOption('main', 'EditorWindow', 'width', type='int')
        uhigh = idleConf.GetOption('main', 'EditorWindow', 'height', type='int')
        uhigh = 3 * uhigh // 4  # lines average 4/3 of editor line height
        Text.__init__(self, parent, wrap='word', highlightthickness=0,
                      padx=5, borderwidth=0, width=uwide, height=uhigh)

        normalfont = self.findfont(['TkDefaultFont', 'arial', 'helvetica'])
        fixedfont = self.findfont(['TkFixedFont', 'monaco', 'courier'])
        self['font'] = (normalfont, 12)
        self.tag_configure('em', font=(normalfont, 12, 'italic'))
        self.tag_configure('h1', font=(normalfont, 20, 'bold'))
        self.tag_configure('h2', font=(normalfont, 18, 'bold'))
        self.tag_configure('h3', font=(normalfont, 15, 'bold'))
        self.tag_configure('pre', font=(fixedfont, 12), background='#f6f6ff')
        self.tag_configure('preblock', font=(fixedfont, 10), lmargin1=25,
                borderwidth=1, relief='solid', background='#eeffcc')
        self.tag_configure('l1', lmargin1=25, lmargin2=25)
        self.tag_configure('l2', lmargin1=50, lmargin2=50)
        self.tag_configure('l3', lmargin1=75, lmargin2=75)
        self.tag_configure('l4', lmargin1=100, lmargin2=100)

        self.parser = HelpParser(self)
        with open(filename) as f:
            contents = f.read().decode(encoding='utf-8')
        self.parser.feed(contents)
        self['state'] = 'disabled'

    def findfont(self, names):
        "Return name of first font family derived from names."
        for name in names:
            if name.lower() in (x.lower() for x in tkfont.names(root=self)):
                font = tkfont.Font(name=name, exists=True, root=self)
                return font.actual()['family']
            elif name.lower() in (x.lower()
                                  for x in tkfont.families(root=self)):
                return name


class HelpFrame(Frame):
    "Display html text, scrollbar, and toc."
    def __init__(self, parent, filename):
        Frame.__init__(self, parent)
        text = HelpText(self, filename)
        self['background'] = text['background']
        scroll = Scrollbar(self, command=text.yview)
        text['yscrollcommand'] = scroll.set
        self.rowconfigure(0, weight=1)
        self.columnconfigure(1, weight=1)  # text
        self.toc_menu(text).grid(column=0, row=0, sticky='nw')
        text.grid(column=1, row=0, sticky='nsew')
        scroll.grid(column=2, row=0, sticky='ns')

    def toc_menu(self, text):
        "Create table of contents as drop-down menu."
        toc = Menubutton(self, text='TOC')
        drop = Menu(toc, tearoff=False)
        for lbl, dex in text.parser.toc:
            drop.add_command(label=lbl, command=lambda dex=dex:text.yview(dex))
        toc['menu'] = drop
        return toc


class HelpWindow(Toplevel):
    "Display frame with rendered html."
    def __init__(self, parent, filename, title):
        Toplevel.__init__(self, parent)
        self.wm_title(title)
        self.protocol("WM_DELETE_WINDOW", self.destroy)
        HelpFrame(self, filename).grid(column=0, row=0, sticky='nsew')
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)


def copy_strip():
    """Copy idle.html to idlelib/help.html, stripping trailing whitespace.

    Files with trailing whitespace cannot be pushed to the hg cpython
    repository.  For 3.x (on Windows), help.html is generated, after
    editing idle.rst in the earliest maintenance version, with
      sphinx-build -bhtml . build/html
      python_d.exe -c "from idlelib.help import copy_strip; copy_strip()"
    After refreshing TortoiseHG workshop to generate a diff,
    check  both the diff and displayed text.  Push the diff along with
    the idle.rst change and merge both into default (or an intermediate
    maintenance version).

    When the 'earlist' version gets its final maintenance release,
    do an update as described above, without editing idle.rst, to
    rebase help.html on the next version of idle.rst.  Do not worry
    about version changes as version is not displayed.  Examine other
    changes and the result of Help -> IDLE Help.

    If maintenance and default versions of idle.rst diverge, and
    merging does not go smoothly, then consider generating
    separate help.html files from separate idle.htmls.
    """
    src = join(abspath(dirname(dirname(dirname(__file__)))),
               'Doc', 'build', 'html', 'library', 'idle.html')
    dst = join(abspath(dirname(__file__)), 'help.html')
    with open(src, 'r') as inn,\
         open(dst, 'w') as out:
        for line in inn:
            out.write(line.rstrip() + '\n')
    print('idle.html copied to help.html')

def show_idlehelp(parent):
    "Create HelpWindow; called from Idle Help event handler."
    filename = join(abspath(dirname(__file__)), 'help.html')
    if not isfile(filename):
        # try copy_strip, present message
        return
    HelpWindow(parent, filename, 'IDLE Help (%s)' % python_version())

if __name__ == '__main__':
    from idlelib.idle_test.htest import run
    run(show_idlehelp)

SILENT KILLER Tool