diff options
Diffstat (limited to 'Lib/idlelib/PyShell.py')
| -rw-r--r-- | Lib/idlelib/PyShell.py | 33 | 
1 files changed, 20 insertions, 13 deletions
| diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 0fa3d76..06c8bba 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/env python3  import os  import os.path @@ -55,20 +55,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) @@ -81,18 +82,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: -        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(): @@ -1417,6 +1417,13 @@ def main():              shell.interp.prepend_syspath(script)              shell.interp.execfile(script) +    # Check for problematic OS X Tk versions and print a warning message +    # in the IDLE shell window; this is less intrusive than always opening +    # a separate window. +    tkversionwarning = macosxSupport.tkVersionWarning(root) +    if tkversionwarning: +        shell.interp.runcommand(''.join(("print('", tkversionwarning, "')"))) +      root.mainloop()      root.destroy() | 
