[pypy-svn] pypy fast-forward: Fix a "normalization" that transformed iso-8859-15 (latin9 = latin1+EURO SIGN) into iso-8859-1 (latin1)!

amauryfa commits-noreply at bitbucket.org
Wed Jan 12 01:23:26 CET 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: fast-forward
Changeset: r40613:2f57c8e31d80
Date: 2011-01-12 01:23 +0100
http://bitbucket.org/pypy/pypy/changeset/2f57c8e31d80/

Log:	Fix a "normalization" that transformed iso-8859-15 (latin9 =
	latin1+EURO SIGN) into iso-8859-1 (latin1)! Fixes last failure in
	test_tarfile

diff --git a/pypy/interpreter/pyparser/test/test_pyparse.py b/pypy/interpreter/pyparser/test/test_pyparse.py
--- a/pypy/interpreter/pyparser/test/test_pyparse.py
+++ b/pypy/interpreter/pyparser/test/test_pyparse.py
@@ -42,6 +42,9 @@
         input = (u"# coding: utf-7\nstuff = %s" % (sentence,)).encode("utf-7")
         tree = self.parse(input, info=info)
         assert info.encoding == "utf-7"
+        input = "# coding: iso-8859-15\nx"
+        self.parse(input, info=info)
+        assert info.encoding == "iso-8859-15"
         input = "\xEF\xBB\xBF# coding: utf-8\nx"
         self.parse(input, info=info)
         assert info.encoding == "utf-8"

diff --git a/pypy/interpreter/pyparser/pyparse.py b/pypy/interpreter/pyparser/pyparse.py
--- a/pypy/interpreter/pyparser/pyparse.py
+++ b/pypy/interpreter/pyparser/pyparse.py
@@ -25,10 +25,11 @@
         return None
     # lower() + '_' / '-' conversion
     encoding = encoding.replace('_', '-').lower()
-    if encoding.startswith('utf-8'):
+    if encoding == 'utf-8' or encoding.startswith('utf-8-'):
         return 'utf-8'
     for variant in ['latin-1', 'iso-latin-1', 'iso-8859-1']:
-        if encoding.startswith(variant):
+        if (encoding == variant or
+            encoding.startswith(variant + '-')):
             return 'iso-8859-1'
     return encoding
 


More information about the Pypy-commit mailing list