|
README.txt: an index to idlelib files and the IDLE menu. |
|
|
|
IDLE is Python's Integrated Development and Learning |
|
Environment. The user documentation is part of the Library Reference and |
|
is available in IDLE by selecting Help => IDLE Help. This README documents |
|
idlelib for IDLE developers and curious users. |
|
|
|
IDLELIB FILES lists files alphabetically by category, |
|
with a short description of each. |
|
|
|
IDLE MENU show the menu tree, annotated with the module |
|
or module object that implements the corresponding function. |
|
|
|
This file is descriptive, not prescriptive, and may have errors |
|
and omissions and lag behind changes in idlelib. |
|
|
|
|
|
IDLELIB FILES |
|
============= |
|
|
|
Implementation files not in IDLE MENU are marked (nim). |
|
|
|
Startup |
|
------- |
|
__init__.py # import, does nothing |
|
__main__.py # -m, starts IDLE |
|
idle.bat |
|
idle.py |
|
idle.pyw |
|
|
|
Implementation |
|
-------------- |
|
autocomplete.py # Complete attribute names or filenames. |
|
autocomplete_w.py # Display completions. |
|
autoexpand.py # Expand word with previous word in file. |
|
browser.py # Create module browser window. |
|
calltip.py # Create calltip text. |
|
calltip_w.py # Display calltip. |
|
codecontext.py # Show compound statement headers otherwise not visible. |
|
colorizer.py # Colorize text (nim). |
|
config.py # Load, fetch, and save configuration (nim). |
|
configdialog.py # Display user configuration dialogs. |
|
config_key.py # Change keybindings. |
|
debugger.py # Debug code run from shell or editor; show window. |
|
debugger_r.py # Debug code run in remote process. |
|
debugobj.py # Define class used in stackviewer. |
|
debugobj_r.py # Communicate objects between processes with rpc (nim). |
|
delegator.py # Define base class for delegators (nim). |
|
dynoption.py # Define mutable OptionMenu widget (nim) |
|
editor.py # Define most of editor and utility functions. |
|
filelist.py # Open files and manage list of open windows (nim). |
|
format.py # Define format menu options. |
|
grep.py # Find all occurrences of pattern in multiple files. |
|
help.py # Display IDLE's html doc. |
|
help_about.py # Display About IDLE dialog. |
|
history.py # Get previous or next user input in shell (nim) |
|
hyperparser.py # Parse code around a given index. |
|
iomenu.py # Open, read, and write files |
|
macosx.py # Help IDLE run on Macs (nim). |
|
mainmenu.py # Define most of IDLE menu. |
|
multicall.py # Wrap tk widget to allow multiple calls per event (nim). |
|
outwin.py # Create window for grep output. |
|
parenmatch.py # Match fenceposts: (), [], and {}. |
|
pathbrowser.py # Create path browser window. |
|
percolator.py # Manage delegator stack (nim). |
|
pyparse.py # Give information on code indentation |
|
pyshell.py # Start IDLE, manage shell, complete editor window |
|
query.py # Query user for information |
|
redirector.py # Intercept widget subcommands (for percolator) (nim). |
|
replace.py # Search and replace pattern in text. |
|
rpc.py # Communicate between idle and user processes (nim). |
|
run.py # Manage user code execution subprocess. |
|
runscript.py # Check and run user code. |
|
scrolledlist.py # Define scrolledlist widget for IDLE (nim). |
|
search.py # Search for pattern in text. |
|
searchbase.py # Define base for search, replace, and grep dialogs. |
|
searchengine.py # Define engine for all 3 search dialogs. |
|
sidebar.py # Define line number and shell prompt sidebars. |
|
squeezer.py # Squeeze long shell output (nim). |
|
stackviewer.py # View stack after exception. |
|
statusbar.py # Define status bar for windows (nim). |
|
tabbedpages.py # Define tabbed pages widget (nim). |
|
textview.py # Define read-only text widget (nim). |
|
tooltip.py # Define popups for calltips, squeezer (nim). |
|
tree.py # Define tree widget, used in browsers (nim). |
|
undo.py # Manage undo stack. |
|
util.py # Define common objects imported elsewhere (nim). |
|
windows.py # Manage window list and define listed top level. |
|
zoomheight.py # Zoom window to full height of screen. |
|
zzdummy.py # Example extension. |
|
|
|
Configuration |
|
------------- |
|
config-extensions.def # Defaults for extensions |
|
config-highlight.def # Defaults for colorizing |
|
config-keys.def # Defaults for key bindings |
|
config-main.def # Defaults for font and general tabs |
|
|
|
Text |
|
---- |
|
CREDITS.txt # not maintained, displayed by About IDLE |
|
HISTORY.txt # NEWS up to July 2001 |
|
NEWS.txt # commits, displayed by About IDLE |
|
NEWS2.txt # commits to Python2 |
|
README.txt # this file, displayed by About IDLE |
|
TODO.txt # needs review |
|
extend.txt # about writing extensions |
|
help.html # copy of idle.html in docs, displayed by IDLE Help |
|
|
|
Subdirectories |
|
-------------- |
|
Icons # small image files |
|
idle_test # files for human test and automated unit tests |
|
|
|
|
|
IDLE MENUS |
|
========== |
|
|
|
Top level items and most submenu items are defined in mainmenu. |
|
Extensions add submenu items when active. The names given are |
|
found, quoted, in one of these modules, paired with a '<<pseudoevent>>'. |
|
Each pseudoevent is bound to an event handler. Some event handlers |
|
call another function that does the actual work. The annotations below |
|
are intended to at least give the module where the actual work is done. |
|
'eEW' = editor.EditorWindow |
|
|
|
File |
|
New File # eEW.new_callback |
|
Open... # iomenu.open |
|
Open Module # eEw.open_module |
|
Recent Files |
|
Class Browser # eEW.open_class_browser, browser.ClassBrowser |
|
Path Browser # eEW.open_path_browser, pathbrowser |
|
--- |
|
Save # iomenu.save |
|
Save As... # iomenu.save_as |
|
Save Copy As... # iomenu.save_a_copy |
|
--- |
|
Print Window # iomenu.print_window |
|
--- |
|
Close # eEW.close_event |
|
Exit # flist.close_all_callback (bound in eEW) |
|
|
|
Edit |
|
Undo # undodelegator |
|
Redo # undodelegator |
|
--- # eEW.right_menu_event |
|
Cut # eEW.cut |
|
Copy # eEW.copy |
|
Paste # eEW.past |
|
Select All # eEW.select_all (+ see eEW.remove_selection) |
|
--- # Next 5 items use searchengine; dialogs use searchbase |
|
Find # eEW.find_event, search.SearchDialog.find |
|
Find Again # eEW.find_again_event, sSD.find_again |
|
Find Selection # eEW.find_selection_event, sSD.find_selection |
|
Find in Files... # eEW.find_in_files_event, grep |
|
Replace... # eEW.replace_event, replace.ReplaceDialog.replace |
|
Go to Line # eEW.goto_line_event |
|
Show Completions # autocomplete extension and autocompleteWidow (&HP) |
|
Expand Word # autoexpand extension |
|
Show call tip # Calltips extension and CalltipWindow (& Hyperparser) |
|
Show surrounding parens # parenmatch (& Hyperparser) |
|
|
|
Format (Editor only) [fFR = format.FormatRegion] |
|
Format Paragraph # format.FormatParagraph.format_paragraph_event |
|
Indent Region # fFR.indent_region_event |
|
Dedent Region # fFR.dedent_region_event |
|
Comment Out Reg. # fFR.comment_region_event |
|
Uncomment Region # fFR.uncomment_region_event |
|
Tabify Region # fFR.tabify_region_event |
|
Untabify Region # fFR.untabify_region_event |
|
Toggle Tabs # format.Indents.toggle_tabs_event |
|
New Indent Width # format.Indents.change_indentwidth_event |
|
Strip tailing whitespace # format.rstrip |
|
Zin # zzdummy |
|
Zout # zzdummy |
|
|
|
Run (Editor only) |
|
Run Module # runscript.ScriptBinding.run_module_event |
|
Run... Customized # runscript.ScriptBinding.run_custom_event |
|
Check Module # runscript.ScriptBinding.check_module_event |
|
Python Shell # pyshell.Pyshell, pyshell.ModifiedInterpreter |
|
|
|
Shell # pyshell |
|
View Last Restart # pyshell.PyShell.view_restart_mark |
|
Restart Shell # pyshell.PyShell.restart_shell |
|
Previous History # history.History.history_prev |
|
Next History # history.History.history_next |
|
Interrupt Execution # pyshell.PyShell.cancel_callback |
|
|
|
Debug (Shell only) |
|
Go to File/Line # outwin.OutputWindow.goto_file_line |
|
debugger # debugger, debugger_r, PyShell.toggle_debugger |
|
Stack Viewer # stackviewer, PyShell.open_stack_viewer |
|
Auto-open Stack Viewer # stackviewer |
|
|
|
Options |
|
Configure IDLE # eEW.config_dialog, config, configdialog (cd) |
|
(Parts of the dialog) |
|
Buttons # cd.ConfigDialog |
|
Font tab # cd.FontPage, config-main.def |
|
Highlight tab # cd.HighPage, query, config-highlight.def |
|
Keys tab # cd.KeysPage, query, config_key, config_keys.def |
|
Windows tab # cd.WinPage, config_main.def |
|
Shell/Ed tab # cd.ShedPage, config-main.def |
|
Extensions tab # config-extensions.def, corresponding .py files |
|
--- |
|
... Code Context # codecontext |
|
... Line Numbers # sidebar |
|
Zoomheight # zoomheight |
|
|
|
Window |
|
<open windows> # windows |
|
|
|
Help |
|
About IDLE # eEW.about_dialog, help_about.AboutDialog |
|
--- |
|
IDLE Help # eEW.help_dialog, help.show_idlehelp |
|
Python Docs # eEW.python_docs |
|
Turtle Demo # eEW.open_turtle_demo |
|
--- |
|
<other help sources> |
|
|
|
<Context Menu> (right click) |
|
Defined in editor, PyShell.pyshell |
|
Cut |
|
Copy |
|
Paste |
|
--- |
|
Go to file/line (shell and output only) |
|
Set Breakpoint (editor only) |
|
Clear Breakpoint (editor only) |
|
Defined in debugger |
|
Go to source line |
|
Show stack frame |
|
|
|
<No menu> |
|
Center Insert # eEW.center_insert_event |
|
|
|
|
|
OTHER TOPICS |
|
============ |
|
|
|
Generally use PEP 8. |
|
|
|
import statements |
|
----------------- |
|
Put imports at the top, unless there is a good reason otherwise. |
|
PEP 8 says to group stdlib, 3rd-party dependencies, and package imports. |
|
For idlelib, the groups are general stdlib, tkinter, and idlelib. |
|
Sort modules within each group, except that tkinter.ttk follows tkinter. |
|
Sort 'from idlelib import mod1' and 'from idlelib.mod2 import object' |
|
together by module, ignoring within module objects. |
|
Put 'import __main__' after other idlelib imports. |
|
|
|
Imports only needed for testing are put not at the top but in an |
|
htest function def or "if __name__ == '__main__'" clause. |
|
|
|
Within module imports like "from idlelib.mod import class" may cause |
|
circular imports to deadlock. Even without this, circular imports may |
|
require at least one of the imports to be delayed until a function call. |
|
|
|
What's New entries |
|
------------------ |
|
|
|
Repository directory Doc/whatsnew/ has a file 3.n.rst for each 3.n |
|
Python version. For the first entry in each file, add subsection |
|
'IDLE and idlelib', in alphabetical position, to the 'Improved Modules' |
|
section. For the rest of cpython, entries to 3.(n+1).rst begin with |
|
the release of 3.n.0b1. For IDLE, entries for features backported from |
|
'main' to '3.n' during its beta period do not got in 3.(n+1).rst. The |
|
latter usually gets its first entry during the 3.n.0 candidate period |
|
or after the 3.n.0 release. |
|
|
|
When, as per PEP 434, feature changes are backported, entries are placed |
|
in the 3.n.rst file *in the main branch* for each Python version n that |
|
gets the backport. (Note: the format of entries have varied between |
|
versions.) Add a line "New in 3.n maintenance releases." before the |
|
first back-ported feature after 3.n.0 is released. Since each older |
|
version file gets a different number of backports, it is easiest to |
|
make a separate PR for each file and label it with the backports |
|
needed. |
|
|
|
Github repository and issues |
|
---------------------------- |
|
|
|
The CPython repository is https://github.com/python/cpython. The |
|
IDLE Issues listing is https://github.com/orgs/python/projects/31. |
|
The main classification is by Topic, based on the IDLE menu. View the |
|
topics list by clicking the [<]] button in the upper right. |
|
|