cpython: 1942f7c8f51c (original) (raw)
Mercurial > cpython
changeset 71091:1942f7c8f51c 3.2
Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, to read the Python script from the right encoding. [#12451]
Victor Stinner victor.stinner@haypocalc.com | |
---|---|
date | Thu, 30 Jun 2011 15:55:43 +0200 |
parents | bd73edea78dc |
children | 3e627877b5a9 bafc5c7d24b2 |
files | Lib/pydoc.py Lib/test/test_pydoc.py Misc/NEWS |
diffstat | 3 files changed, 20 insertions(+), 5 deletions(-)[+] [-] Lib/pydoc.py 9 Lib/test/test_pydoc.py 13 Misc/NEWS 3 |
line wrap: on
line diff
--- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -57,16 +57,17 @@ Richard Chamberlain, for the first imple
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 @@ def synopsis(filename, cache={}): if lastupdate < mtime: info = inspect.getmoduleinfo(filename) try:
file = open(filename)[](#l1.28)
file = tokenize.open(filename)[](#l1.29) except IOError:[](#l1.30) # module can't be opened, so skip it[](#l1.31) return None[](#l1.32)
--- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -16,7 +16,7 @@ from io import StringIO from collections import namedtuple from contextlib import contextmanager from test.support import TESTFN, forget, rmtree, EnvironmentVarGuard, [](#l2.6)
reap_children, captured_output, captured_stdout[](#l2.7)
reap_children, captured_output, captured_stdout, unlink[](#l2.8)
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)[](#l2.17)
for encoding in ('ISO-8859-1', 'UTF-8'):[](#l2.18)
with open(TESTFN, 'w', encoding=encoding) as script:[](#l2.19)
if encoding != 'UTF-8':[](#l2.20)
print('#coding: {}'.format(encoding), file=script)[](#l2.21)
print('"""line 1: h\xe9', file=script)[](#l2.22)
print('line 2: hi"""', file=script)[](#l2.23)
synopsis = pydoc.synopsis(TESTFN, {})[](#l2.24)
self.assertEqual(synopsis, 'line 1: h\xe9')[](#l2.25)
+ class TestDescriptions(unittest.TestCase):
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -25,6 +25,9 @@ Core and Builtins Library ------- +- Issue #12451: pydoc.synopsis() now reads the encoding cookie if available,