(merge 3.2) Issue #12451: runpy: run_path() now opens the Python script in
binary mode, instead of text mode using the locale encoding, to support other encodings than UTF-8 (scripts using the coding cookie).
This commit is contained in:
commit
7d8c8a095a
|
@ -226,7 +226,7 @@ def _get_code_from_file(fname):
|
|||
code = read_code(f)
|
||||
if code is None:
|
||||
# That didn't work, so try it as normal source code
|
||||
with open(fname, "r") as f:
|
||||
with open(fname, "rb") as f:
|
||||
code = compile(f.read(), fname, 'exec')
|
||||
return code
|
||||
|
||||
|
|
|
@ -405,6 +405,16 @@ argv0 = sys.argv[0]
|
|||
msg = "recursion depth exceeded"
|
||||
self.assertRaisesRegex(RuntimeError, msg, run_path, zip_name)
|
||||
|
||||
def test_encoding(self):
|
||||
with temp_dir() as script_dir:
|
||||
filename = os.path.join(script_dir, 'script.py')
|
||||
with open(filename, 'w', encoding='latin1') as f:
|
||||
f.write("""
|
||||
#coding:latin1
|
||||
"non-ASCII: h\xe9"
|
||||
""")
|
||||
result = run_path(filename)
|
||||
self.assertEqual(result['__doc__'], "non-ASCII: h\xe9")
|
||||
|
||||
|
||||
def test_main():
|
||||
|
|
|
@ -209,6 +209,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #12451: runpy: run_path() now opens the Python script in binary mode,
|
||||
instead of text mode using the locale encoding, to support other encodings
|
||||
than UTF-8 (scripts using the coding cookie).
|
||||
|
||||
- Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead
|
||||
of the text mode (using the locale encoding) to avoid encoding issues.
|
||||
|
||||
|
|
Loading…
Reference in New Issue