summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-05-17 10:53:54 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-05-17 10:53:54 (GMT)
commit4b2c468e7464dc29700b50afcfc0bf101bea7fb8 (patch)
treec9e93aee511c3acccaf8b91ab19d13bd19fab579 /Lib/idlelib
parentc8059e48f2963acfcc3682bc9ee91b80ee3e501b (diff)
downloadcpython-4b2c468e7464dc29700b50afcfc0bf101bea7fb8.zip
cpython-4b2c468e7464dc29700b50afcfc0bf101bea7fb8.tar.gz
cpython-4b2c468e7464dc29700b50afcfc0bf101bea7fb8.tar.bz2
Issue #15809: IDLE shell now uses locale encoding instead of Latin1 for
decoding unicode literals.
Diffstat (limited to 'Lib/idlelib')
-rwxr-xr-xLib/idlelib/PyShell.py8
-rw-r--r--Lib/idlelib/run.py2
2 files changed, 7 insertions, 3 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 17ca0ef..8ee0c0e 100755
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -34,6 +34,7 @@ from idlelib import rpc
from idlelib import Debugger
from idlelib import RemoteDebugger
from idlelib import macosxSupport
+from idlelib import IOBinding
IDENTCHARS = string.ascii_letters + string.digits + "_"
HOST = '127.0.0.1' # python execution server on localhost loopback
@@ -668,10 +669,11 @@ class ModifiedInterpreter(InteractiveInterpreter):
self.more = 0
self.save_warnings_filters = warnings.filters[:]
warnings.filterwarnings(action="error", category=SyntaxWarning)
- if isinstance(source, unicode):
- from idlelib import IOBinding
+ if isinstance(source, unicode) and IOBinding.encoding != 'utf-8':
try:
- source = source.encode(IOBinding.encoding)
+ source = '# -*- coding: %s -*-\n%s' % (
+ IOBinding.encoding,
+ source.encode(IOBinding.encoding))
except UnicodeError:
self.tkconsole.resetoutput()
self.write("Unsupported characters in input\n")
diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py
index 6ffc1b9..d023e28 100644
--- a/Lib/idlelib/run.py
+++ b/Lib/idlelib/run.py
@@ -210,6 +210,8 @@ def cleanup_traceback(tb, exclude):
fn, ln, nm, line = tb[i]
if nm == '?':
nm = "-toplevel-"
+ if fn.startswith("<pyshell#") and IOBinding.encoding != 'utf-8':
+ ln -= 1 # correction for coding cookie
if not line and fn.startswith("<pyshell#"):
line = rpchandler.remotecall('linecache', 'getline',
(fn, ln), {})