New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Print window" menu on IDLE aborts whole application #56483
Comments
On Windows, IDLE closes all open windows and exits completely, without any error message, when selecting the "Print window" menu command. Starting IDLE from inside a console, one can see the error message: Exception in Tkinter callback
Traceback (most recent call last):
File "D:\apps\python32\lib\tkinter\__init__.py", line 1399, in __call__
return self.func(*args)
File "D:\apps\python32\lib\idlelib\IOBinding.py", line 453, in print_window
command = idleConf.GetOption('main','General','print-command-win')
File "D:\apps\python32\lib\idlelib\configHandler.py", line 245, in GetOption
type=type, raw=raw)
File "D:\apps\python32\lib\idlelib\configHandler.py", line 54, in Get
return self.get(section, option, raw=raw)
File "D:\apps\python32\lib\configparser.py", line 789, in get
d)
File "D:\apps\python32\lib\configparser.py", line 391, in before_get
self._interpolate_some(parser, option, L, value, section, defaults, 1)
File "D:\apps\python32\lib\configparser.py", line 440, in _interpolate_some
"found: %r" % (rest,))
configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found
: '%s' It is trying to read this entry from the config-main.def file: [General] For a ConfigParser file, those %s should be %%s instead. Previous IDLE versions (2.7 and 3.1) read the same entry without problem; I suspect they were using a RawConfigParser or processing the entry in a different way. As a workaround, replacing %s with %%s in config-main.def is enough, until the code gets fixed. |
Note: There is a much bigger problem here: IDLE should not abort abruptly in such cases, without any error indication. |
New changeset 0aa3064d1cef by Łukasz Langa in branch '3.2': New changeset b410d013e7a8 by Łukasz Langa in branch 'default': |
In 3.2 configparser started validating syntax in interpolation-aware parsers by default. I fixed the configuration. It's unfortunate this configuration error hasn't been caught before in testing. We need a unit test for broken configuration and a change in IDLE so that it doesn't silently crash when configuration is invalid. |
Can this be closed as a patch has been committed and the unittest framework was created on bpo-15392 ? |
This issue needs a unittest test added within the framework. I opened bpo-21696 as a dependency. Since configx.def files can be edited, and, I believe, at least one is intended to be edited, configHandler should perhaps catch exceptions and display in a messagebox. But unless Idle could continue after that, that might wait for the general fix, which is another issue. |
Closing since the immediate problem has been fixed and there is a reference to this in bpo-21696 |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: