Commit e6c910e9 authored by Victor Stinner's avatar Victor Stinner

Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, to

read the Python script from the right encoding.
parent dc9b1ea0
......@@ -57,16 +57,17 @@ Richard Chamberlain, for the first implementation of textdoc.
# the current directory is changed with os.chdir(), an incorrect
# path will be displayed.
import os
import sys
import builtins
import imp
import io
import inspect
import io
import os
import pkgutil
import platform
import re
import sys
import time
import tokenize
import warnings
from collections import deque
from reprlib import Repr
......@@ -227,7 +228,7 @@ def synopsis(filename, cache={}):
if lastupdate < mtime:
info = inspect.getmoduleinfo(filename)
try:
file = open(filename)
file = tokenize.open(filename)
except IOError:
# module can't be opened, so skip it
return None
......
......@@ -16,7 +16,7 @@ from io import StringIO
from collections import namedtuple
from contextlib import contextmanager
from test.support import TESTFN, forget, rmtree, EnvironmentVarGuard, \
reap_children, captured_output, captured_stdout
reap_children, captured_output, captured_stdout, unlink
from test import pydoc_mod
......@@ -389,6 +389,17 @@ class PydocDocTest(unittest.TestCase):
self.assertIn('_replace', helptext)
self.assertIn('_asdict', helptext)
def test_synopsis(self):
self.addCleanup(unlink, TESTFN)
for encoding in ('ISO-8859-1', 'UTF-8'):
with open(TESTFN, 'w', encoding=encoding) as script:
if encoding != 'UTF-8':
print('#coding: {}'.format(encoding), file=script)
print('"""line 1: h\xe9', file=script)
print('line 2: hi"""', file=script)
synopsis = pydoc.synopsis(TESTFN, {})
self.assertEqual(synopsis, 'line 1: h\xe9')
class TestDescriptions(unittest.TestCase):
......
......@@ -25,6 +25,9 @@ Core and Builtins
Library
-------
- Issue #12451: pydoc.synopsis() now reads the encoding cookie if available,
to read the Python script from the right encoding.
- Issue #12451: distutils now opens the setup script in binary mode to read the
encoding cookie, instead of opening it in UTF-8.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment