diff --git a/flake8/hooks.py b/flake8/hooks.py index 098d999..edccc7f 100644 --- a/flake8/hooks.py +++ b/flake8/hooks.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- from __future__ import with_statement -import re import os import sys import stat @@ -53,22 +52,11 @@ def git_hook(complexity=-1, strict=False, ignore=None, lazy=False): # 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_)) @@ -78,9 +66,6 @@ def git_hook(complexity=-1, strict=False, ignore=None, lazy=False): 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) @@ -121,7 +106,7 @@ def hg_hook(ui, repo, **kwargs): 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) @@ -131,14 +116,10 @@ def run(command, raw_output=False, coding=None): # 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()]