Commits

megies committed 12730df

remove encoding/decoding of staged files

Comments (0)

Files changed (1)

 # -*- coding: utf-8 -*-
 from __future__ import with_statement
-import re
 import os
 import sys
 import stat
     # Copy staged versions to temporary directory
     tmpdir = mkdtemp()
     files_to_check = []
-    coding_pattern = r'coding[=:]\s*([-\w.]+)'
     try:
         for file_ in files_modified:
-            # try to detect encoding of python file according to PEP 0263
-            with open(file_) as fh:
-                for i_ in xrange(2):
-                    line = fh.readline()
-                    match = re.search(coding_pattern, line)
-                    if match:
-                        coding = match.groups()[0]
-                        break
-                else:
-                    coding = None
             # get the staged version of the file
             gitcmd_getstaged = ["git", "show", ":%s" % file_]
-            _, out, _ = run(gitcmd_getstaged, raw_output=True, coding=coding)
+            _, out, _ = run(gitcmd_getstaged, raw_output=True, decode=False)
             # write the staged version to temp dir with its full path to
             # avoid overwriting files with the same name
             dirname, filename = os.path.split(os.path.abspath(file_))
             if not os.path.isdir(dirname):
                 os.makedirs(dirname)
             filename = os.path.join(dirname, filename)
-            # encode for output if we know the encoding
-            if coding:
-                out = out.encode(coding)
             # write staged version of file to temporary directory
             with open(filename, "wb") as fh:
                 fh.write(out)
     return 0
 
 
-def run(command, raw_output=False, coding=None):
+def run(command, raw_output=False, decode=True):
     if isinstance(command, basestring):
         command = command.split()
     p = Popen(command, stdout=PIPE, stderr=PIPE)
     # string objects. This is simply less mysterious than using b'.py' in the
     # endswith method. That should work but might still fail horribly.
     if hasattr(stdout, 'decode'):
-        if coding:
-            stdout = stdout.decode(coding)
-        else:
+        if decode:
             stdout = stdout.decode()
     if hasattr(stderr, 'decode'):
-        if coding:
-            stderr = stderr.decode(coding)
-        else:
+        if decode:
             stderr = stderr.decode()
     if not raw_output:
         stdout = [line.strip() for line in stdout.splitlines()]