Index: Tools/i18n/msgfmt.py =================================================================== --- Tools/i18n/msgfmt.py (revision 85526) +++ Tools/i18n/msgfmt.py (working copy) @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -# -*- coding: iso-8859-1 -*- -# Written by Martin v. Lwis +# Written by Martin v. Löwis """Generate binary message catalog from textual translation description. Index: Tools/ccbench/ccbench.py =================================================================== --- Tools/ccbench/ccbench.py (revision 85526) +++ Tools/ccbench/ccbench.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # This file should be kept compatible with both Python 2.6 and Python >= 3.0. from __future__ import division Index: Doc/conf.py =================================================================== --- Doc/conf.py (revision 85526) +++ Doc/conf.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # # Python documentation build configuration file # Index: Lib/inspect.py =================================================================== --- Lib/inspect.py (revision 85526) +++ Lib/inspect.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: iso-8859-1 -*- """Get useful information from live Python objects. This module encapsulates the interface provided by the internal special Index: Lib/pydoc.py =================================================================== --- Lib/pydoc.py (revision 85526) +++ Lib/pydoc.py (working copy) @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -# -*- coding: latin-1 -*- """Generate Python documentation in HTML or text for interactive use. In the Python interpreter, do "from pydoc import help" to provide online Index: Lib/test/test_csv.py =================================================================== --- Lib/test/test_csv.py (revision 85526) +++ Lib/test/test_csv.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright (C) 2001,2002 Python Software Foundation # csv package unit tests Index: Lib/test/test_doctest2.py =================================================================== --- Lib/test/test_doctest2.py (revision 85526) +++ Lib/test/test_doctest2.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- """A module to test whether doctest recognizes some 2.2 features, like static and class methods. Index: Lib/test/test_pep3131.py =================================================================== --- Lib/test/test_pep3131.py (revision 85526) +++ Lib/test/test_pep3131.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- import unittest from test import support Index: Lib/test/test_imp.py =================================================================== --- Lib/test/test_imp.py (revision 85526) +++ Lib/test/test_imp.py (working copy) @@ -5,8 +5,8 @@ import sys import unittest from test import support +import importlib - class LockTests(unittest.TestCase): """Very basic test of import lock functions.""" @@ -42,18 +42,32 @@ "RuntimeError") class ImportTests(unittest.TestCase): + def setUp(self): + mod = importlib.import_module('test.encoded_modules') + self.test_strings = mod.test_strings + self.test_path = mod.__path__ + def test_import_encoded_module(self): + for modname, encoding, teststr in self.test_strings: + mod = importlib.import_module('test.encoded_modules.' + 'module_' + modname) + self.assertEqual(teststr, mod.test) + def test_find_module_encoding(self): - fd = imp.find_module("pydoc")[0] - self.assertEqual(fd.encoding, "iso-8859-1") + for mod, encoding, _ in self.test_strings: + fd = imp.find_module('module_' + mod, self.test_path)[0] + self.assertEqual(fd.encoding, encoding) def test_issue1267(self): - fp, filename, info = imp.find_module("pydoc") - self.assertNotEqual(fp, None) - self.assertEqual(fp.encoding, "iso-8859-1") - self.assertEqual(fp.tell(), 0) - self.assertEqual(fp.readline(), '#!/usr/bin/env python3\n') - fp.close() + for mod, encoding, _ in self.test_strings: + fp, filename, info = imp.find_module('module_' + mod, + self.test_path) + self.assertNotEqual(fp, None) + self.assertEqual(fp.encoding, encoding) + self.assertEqual(fp.tell(), 0) + self.assertEqual(fp.readline(), '# test %s encoding\n' + % encoding) + fp.close() fp, filename, info = imp.find_module("tokenize") self.assertNotEqual(fp, None) Index: Lib/test/test_winreg.py =================================================================== --- Lib/test/test_winreg.py (revision 85526) +++ Lib/test/test_winreg.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Test the windows specific win32reg module. # Only win32reg functions not hit here: FlushKey, LoadKey and SaveKey Index: Lib/test/encoded_modules/module_iso_8859_1.py =================================================================== --- Lib/test/encoded_modules/module_iso_8859_1.py (revision 0) +++ Lib/test/encoded_modules/module_iso_8859_1.py (revision 0) @@ -0,0 +1,5 @@ +# test iso-8859-1 encoding +# -*- encoding: iso-8859-1 -*- +test = ("Les hommes ont oubli cette vrit, " + "dit le renard. Mais tu ne dois pas l'oublier. Tu deviens " + "responsable pour toujours de ce que tu as apprivois.") Index: Lib/test/encoded_modules/__init__.py =================================================================== --- Lib/test/encoded_modules/__init__.py (revision 0) +++ Lib/test/encoded_modules/__init__.py (revision 0) @@ -0,0 +1,23 @@ +# -*- encoding: utf-8 -*- + +# This is a package that contains a number of modules that are used to +# test import from the source files that have different encodings. +# This file (the __init__ module of the package), is encoded in utf-8 +# and contains a list of strings from various unicode planes that are +# encoded differently to compare them to the same strings encoded +# differently in submodules. The following list, test_strings, +# contains a list of tuples. The first element of each tuple is the +# suffix that should be prepended with 'module_' to arrive at the +# encoded submodule name, the second item is the encoding and the last +# is the test string. The same string is assigned to the variable +# named 'test' inside the submodule. If the decoding of modules works +# correctly, from module_xyz import test should result in the same +# string as listed below in the 'xyz' entry. + +# module, encoding, test string +test_strings = ( + ('iso_8859_1', 'iso-8859-1', "Les hommes ont oublié cette vérité, " + "dit le renard. Mais tu ne dois pas l'oublier. Tu deviens " + "responsable pour toujours de ce que tu as apprivoisé."), + ('koi8_r', 'koi8-r', "Познание бесконечности требует бесконечного времени.") +) Index: Lib/test/encoded_modules/module_koi8_r.py =================================================================== --- Lib/test/encoded_modules/module_koi8_r.py (revision 0) +++ Lib/test/encoded_modules/module_koi8_r.py (revision 0) @@ -0,0 +1,3 @@ +# test koi8-r encoding +# -*- encoding: koi8-r -*- +test = " ." Index: Lib/test/test_sys.py =================================================================== --- Lib/test/test_sys.py (revision 85526) +++ Lib/test/test_sys.py (working copy) @@ -1,4 +1,3 @@ -# -*- coding: iso-8859-1 -*- import unittest, test.support import sys, io, os import struct Index: Makefile.pre.in =================================================================== --- Makefile.pre.in (revision 85526) +++ Makefile.pre.in (working copy) @@ -872,7 +872,7 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ tkinter/test/test_ttk site-packages test \ test/decimaltestdata test/xmltestdata \ - test/tracedmodules \ + test/tracedmodules test/encoded_modules \ concurrent encodings \ email email/mime email/test email/test/data \ html json json/tests http dbm xmlrpc \