diff options
author | Guilherme Polo <ggpolo@gmail.com> | 2009-08-14 14:03:07 (GMT) |
---|---|---|
committer | Guilherme Polo <ggpolo@gmail.com> | 2009-08-14 14:03:07 (GMT) |
commit | f198ac2db28109c0761395b80c7b482f9167f515 (patch) | |
tree | a226fb4695ccba5f4af02fcc3c5754f3f977e92b | |
parent | 86b882f3a6978cf359dfedcf1193bd930f024780 (diff) | |
download | cpython-f198ac2db28109c0761395b80c7b482f9167f515.zip cpython-f198ac2db28109c0761395b80c7b482f9167f515.tar.gz cpython-f198ac2db28109c0761395b80c7b482f9167f515.tar.bz2 |
Issue #3926: Fix the usage of the new showwarnings and formatwarning.
-rw-r--r-- | Lib/idlelib/PyShell.py | 24 | ||||
-rw-r--r-- | Lib/idlelib/run.py | 7 |
2 files changed, 16 insertions, 15 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index a936c17..f8f7eef 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -58,20 +58,21 @@ except ImportError: else: def idle_showwarning(message, category, filename, lineno, file=None, line=None): - file = warning_stream + if file is None: + file = warning_stream try: - file.write(warnings.formatwarning(message, category, filename,\ + file.write(warnings.formatwarning(message, category, filename, lineno, file=file, line=line)) except IOError: pass ## file (probably __stderr__) is invalid, warning dropped. warnings.showwarning = idle_showwarning - def idle_formatwarning(message, category, filename, lineno, - file=None, line=None): + def idle_formatwarning(message, category, filename, lineno, line=None): """Format warnings the IDLE way""" s = "\nWarning (from warnings module):\n" s += ' File \"%s\", line %s\n' % (filename, lineno) - line = linecache.getline(filename, lineno).strip() \ - if line is None else line + if line is None: + line = linecache.getline(filename, lineno) + line = line.strip() if line: s += " %s\n" % line s += "%s: %s\n>>> " % (category.__name__, message) @@ -84,18 +85,17 @@ def extended_linecache_checkcache(filename=None, Rather than repeating the linecache code, patch it to save the <pyshell#...> entries, call the original linecache.checkcache() - (which destroys them), and then restore the saved entries. + (skipping them), and then restore the saved entries. orig_checkcache is bound at definition time to the original method, allowing it to be patched. - """ cache = linecache.cache save = {} - for filename in cache.keys(): - if filename[:1] + filename[-1:] == '<>': - save[filename] = cache[filename] - orig_checkcache() + for key in list(cache): + if key[:1] + key[-1:] == '<>': + save[key] = cache.pop(key) + orig_checkcache(filename) cache.update(save) # Patch linecache.checkcache(): diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py index 2d5c5ed..b5a6af3 100644 --- a/Lib/idlelib/run.py +++ b/Lib/idlelib/run.py @@ -25,12 +25,13 @@ except ImportError: pass else: def idle_formatwarning_subproc(message, category, filename, lineno, - file=None, line=None): + line=None): """Format warnings the IDLE way""" s = "\nWarning (from warnings module):\n" s += ' File \"%s\", line %s\n' % (filename, lineno) - line = linecache.getline(filename, lineno).strip() \ - if line is None else line + if line is None: + line = linecache.getline(filename, lineno) + line = line.strip() if line: s += " %s\n" % line s += "%s: %s\n" % (category.__name__, message) |