]> granicus.if.org Git - python/commitdiff
unparse.py: respect coding cookie in input files
authorMark Dickinson <dickinsm@gmail.com>
Tue, 29 Jun 2010 07:48:23 +0000 (07:48 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Tue, 29 Jun 2010 07:48:23 +0000 (07:48 +0000)
Demo/parser/unparse.py

index 1c034bab9606f31157219d0e9406367675bfe71a..56728734c76befa95b1c7357c5bbb6b401898d64 100644 (file)
@@ -1,6 +1,7 @@
 "Usage: unparse.py <path to source file>"
 import sys
 import ast
+import tokenize
 import io
 import os
 
@@ -548,7 +549,10 @@ class Unparser:
             self.write(" as "+t.asname)
 
 def roundtrip(filename, output=sys.stdout):
-    source = open(filename).read()
+    with open(filename, "rb") as pyfile:
+        encoding = tokenize.detect_encoding(pyfile.readline)[0]
+    with open(filename, "r", encoding=encoding) as pyfile:
+        source = pyfile.read()
     tree = compile(source, filename, "exec", ast.PyCF_ONLY_AST)
     Unparser(tree, output)