connect to the user GUI process. Added a timeout to the GUI's listening
socket. Added Tk error dialogs to PyShell.py to announce a failure to bind
the port or connect to the subprocess. Clean up error handling during
connection initiation phase. This is an update of Python Patch 778323.
M NEWS.txt
M PyShell.py
M ScriptBinding.py
M run.py
Backport candidate.
which use the Space key. Limit unmodified user keybindings to the
function keys.
Python Bug 775353, IDLEfork Bugs 755647, 761557
Improve error handling during startup if there's no Tkinter.
M NEWS.txt
M PyShell.py
M config-keys.def
M configHandler.py
M keybindingDialog.py
Backport candidate.
1. Remove "idle" script, it lives in Tools/scripts/ now.
2. Remove shebang from idle.py, should be called explicitly.
3. Remove obsolete test code from rpc.py; needs unit test.
Extensions must still be configured manually and there is currently one
set of extension key bindings for all platforms.
Bring NEWS.txt up to date.
Update CREDITS.txt and idlever.py for release.
M NEWS.txt
M config-extensions.def
M extend.txt
M help.txt
M idlever.py
1. Add additional buttons for Python Copyright and Credits
2. Use the Python LICENSE file instead of the old IDLE LICENSE.txt
3. Add additional buttons for IDLE's README and NEWS
4. Implement a method to read text from a _Printer object
5. Rename the Ok button to Close
6. Clean up to conform to Python code formatting standards
textView.py:
1. Change background to white on all platforms
2. Increase height of frame
3. Add an optional parameter to textViewer to allow inserting text into
the viewer instead of reading a file.
4. Rename the Ok button to Close
Modified Files:
aboutDialog.py textView.py
Window menu updates.
2. Display Python Shell window in Window menu
3. Remove some dead code in FileList.py
M EditorWindow.py
M FileList.py
M WindowList.py
abnormal exit situations cleanly, especially stuck user threads. Future
plan is to intercept the user's atexit functions and run them under
IDLE's control.
The default font is not highlighted in the Options dialog when
IDLEfork is first installed.
2. Reduce default font to 10 pt and increase default window height to give
a better initial impression on Windows.
M config-main.def
M configDialog.py
SF 661318
Adds autosave capability to IDLE and IDLE configuration dialog.
User can Run/F5 without explicit save dialog.
The default is to require the user to confirm the save.
M ScriptBinding.py
M config-main.def
M configDialog.py
e.g. further improve subprocess interrupt, exceptions, and termination.
2. Remove the workarounds in PyShell.py and ScriptBinding.py involving
interrupting the subprocess prior to killing it, not necessary anymore.
3. Fix a bug introduced at PyShell Rev 1.66: was getting extra shell menu
every time the shell window was recreated.
M PyShell.py
M ScriptBinding.py
M rpc.py
M run.py
[ 735527 ] Re Bug [ 678325 ] ParenMatching Missing AutoIndent
AutoIndent was merged with EditorWindow, this patch corrects
the references in ParenMatch.
SF Patch 686254 "Run IDLEfork from any directory without set-up"
Allows IDLE to run when not installed and cwd is not the IDLE directory.
I took the liberty of moving it to the startup scripts since once IDLEfork
is again a part of Python it will be superfluous and I don't want it to
be forgotten. But it is very useful for those using IDLEfork standalone!
M CREDITS.txt
M NEWS.txt
M idle
M idle.py
M idle.pyw
sys.path, prepend it. This allows the module to import other modules
in the same directory. Do the same for a script run from the command
line.
2. Tweak the IDLE usage message a bit more.
SF Bug 706860 (closed)
SF Patch 686254 (reject specific solution)
SF Patch 507327 (similar)
M PyShell.py
M ScriptBinding.py
2. Remove the shell menu and associated bindings when running
without the subprocess.
3. Update the IDLE Help and usage text.
4. Update display_port_binding_error to suggest using -n
M PyShell.py
M help.txt
2. Add an indicator to the shell startup notice when running w/o
subprocess.
3. Improve exception reporting when running a command or script from the
command line.
4. Clarify the fact that breakpoints set or cleared after a file is
saved will revert to the saved state if the file is closed without
re-saving.
5. If user tries to exit or restart when user code is running, interrupt
the user code. This helps to eliminate occasional hanging
subprocesses on Windows (except for Freddy :).
M NEWS.txt
M PyShell.py
M ScriptBinding.py
This bug, henceforth designated Freddy, was due to the mistaken
elimination of the KeyboardInterrupt exception at the previous revision.
PyShell's unix_terminate hammer was masking the problem on Linux. On W2K
the subprocess MainThread was trying to print the exception after the
SockThread had ceased to service the socket. The subprocess would then
detach and spin when the GUI created the new subprocess.
Modified Files: run.py
2. run.py: move exception printing to toplevel to allow access from main()
3. Clarification in PyShell.py: when the subprocess is restarted, the
debugger GUI is reused with a fresh instance of the subprocess
debugger.
M PyShell.py
M RemoteDebugger.py
M run.py
threading modules. Can debug user code which imports these modules,
though.
2. Re-enable debugger in PyShell.
3. Remove old code implementing previous approaches to this issue.
M Debugger.py
M PyShell.py
M rpc.py
is now interruptable on Windows.
2. Tweak signal.signal() wait parameters as called by various methods
to improve I/O response, especially on Windows.
3. Debugger is disabled at this check-in pending further development.
M NEWS.txt
M PyShell.py
M rpc.py
M run.py
M run.py
1. Move subprocess socket handling to a subthread - "SockThread".
2. In the subprocess, implement a queue and global completion and exit
flags. Execute code after it is passed through the queue. (Currently,
user code is executed in SockThread. The next phase of development will
move the tail of the queue to MainThread.)
3. Implement an RPC message used to shut down the execution server.
4. Improve normal and exception subprocess exits.
(At this checkin a "pass loop" interrupt doesn't work on any platform. It
will be restored for all platforms once user code execution is moved to
MainThread.)
M run.py
1. Clarify that rpc.SocketIO._getresponse() currently blocks on socket.
2. Improve exception handling in subprocess when GUI terminates abruptly.
Eliminate extra blank line in shell output. Caused by stdout not being
flushed
upon completion of subprocess' Executive.runcode() when user code ends by
outputting an unterminated line, e.g. print "test",
M run.py
Move exception formatting out of rpc.py. This allows each end of the
link to format and print exceptions how and where it sees fit and makes it
easier for threads to display their own exceptions.
M PyShell.py
M ScriptBinding.py
M rpc.py
M run.py
Clean up the way IDLEfork handles termination of the subprocess, restore
ability to interrupt user code in Windows (so long as it's doing terminal
I/O).
1. Handle subprocess interrupts in Windows with an RPC message.
2. Run/F5 will restart the subprocess even if user code is running.
3. Restart the subprocess if the link is dropped.
4. Exit IDLE cleanly even during I/O.
4. In rpc.py, remove explicit calls to statelock, let the condition
variable handle acquire() and release().
M rpc.py
SF Bug 676398 Doesn't handle non-built-in exceptions
1. Move exception formatting to the subprocess; allows subclassing of
exceptions, including subclasses created in the shell without
introducing excessive complexity in the RPC mechanism.
2. Provide access to linecache from subprocess to support this.