cpython (3.2): Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, to
![](https://secure.gravatar.com/avatar/8ac615df352a970211b0e3d94a307c6d.jpg?s=120&d=mm&r=g)
http://hg.python.org/cpython/rev/1942f7c8f51c changeset: 71091:1942f7c8f51c branch: 3.2 parent: 71089:bd73edea78dc user: Victor Stinner <victor.stinner@haypocalc.com> date: Thu Jun 30 15:55:43 2011 +0200 summary: Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, to read the Python script from the right encoding. files: Lib/pydoc.py | 9 +++++---- Lib/test/test_pydoc.py | 13 ++++++++++++- Misc/NEWS | 3 +++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Lib/pydoc.py b/Lib/pydoc.py --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -57,16 +57,17 @@ # the current directory is changed with os.chdir(), an incorrect # path will be displayed. -import os -import sys import builtins import imp +import inspect import io -import inspect +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 @@ 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 diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py --- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -16,7 +16,7 @@ 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 @@ 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): diff --git a/Misc/NEWS b/Misc/NEWS --- a/Misc/NEWS +++ b/Misc/NEWS @@ -25,6 +25,9 @@ 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. -- Repository URL: http://hg.python.org/cpython
participants (1)
-
victor.stinner