[Python-checkins] r79068 - in python/branches/py3k: Lib/py_compile.py Misc/NEWS

benjamin.peterson python-checkins at python.org
Thu Mar 18 23:37:39 CET 2010


Author: benjamin.peterson
Date: Thu Mar 18 23:37:38 2010
New Revision: 79068

Log:
kill py_compile's homemade encoding detection in favor of tokenize.detect_encoding() (see #8168)

Modified:
   python/branches/py3k/Lib/py_compile.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/py_compile.py
==============================================================================
--- python/branches/py3k/Lib/py_compile.py	(original)
+++ python/branches/py3k/Lib/py_compile.py	Thu Mar 18 23:37:38 2010
@@ -7,8 +7,8 @@
 import imp
 import marshal
 import os
-import re
 import sys
+import tokenize
 import traceback
 
 MAGIC = imp.get_magic()
@@ -69,21 +69,6 @@
                    (x >> 16) & 0xff,
                    (x >> 24) & 0xff]))
 
-def read_encoding(file, default):
-    """Read the first two lines of the file looking for coding: xyzzy."""
-    f = open(file, "rb")
-    try:
-        for i in range(2):
-            line = f.readline()
-            if not line:
-                break
-            m = re.match(br".*\bcoding:\s*(\S+)\b", line)
-            if m:
-                return m.group(1).decode("ascii")
-        return default
-    finally:
-        f.close()
-
 def compile(file, cfile=None, dfile=None, doraise=False):
     """Byte-compile one Python source file to Python bytecode.
 
@@ -119,7 +104,8 @@
     directories).
 
     """
-    encoding = read_encoding(file, "utf-8")
+    with open(file, "rb") as f:
+        encoding = tokenize.detect_encoding(f.readline)[0]
     with open(file, encoding=encoding) as f:
         try:
             timestamp = int(os.fstat(f.fileno()).st_mtime)

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Thu Mar 18 23:37:38 2010
@@ -283,6 +283,8 @@
 Library
 -------
 
+- Issue #8168: py_compile now handles files with utf-8 BOMS.
+
 - ``tokenize.detect_encoding`` now returns ``'utf-8-sig'`` when a UTF-8 BOM is
   detected.
 


More information about the Python-checkins mailing list