Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,28 @@ repos:
- id: requirements-txt-fixer
- id: double-quote-string-fixer
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.1
rev: 3.7.7
hooks:
- id: flake8
- repo: https://github.com/pre-commit/mirrors-autopep8
rev: v1.4.3
hooks:
- id: autopep8
- repo: https://github.com/pre-commit/pre-commit
rev: v1.14.2
rev: v1.14.4
hooks:
- id: validate_manifest
- repo: https://github.com/asottile/pyupgrade
rev: v1.11.1
rev: v1.12.0
hooks:
- id: pyupgrade
- repo: https://github.com/asottile/reorder_python_imports
rev: v1.3.5
rev: v1.4.0
hooks:
- id: reorder-python-imports
language_version: python3
- repo: https://github.com/asottile/add-trailing-comma
rev: v0.7.1
rev: v1.0.0
hooks:
- id: add-trailing-comma
- repo: meta
Expand Down
16 changes: 10 additions & 6 deletions pre_commit/commands/autoupdate.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,11 @@ def _write_new_config_file(path, output):
new_contents = ordered_dump(output, **C.YAML_DUMP_KWARGS)

lines = original_contents.splitlines(True)
rev_line_indices_reversed = list(reversed([
i for i, line in enumerate(lines) if REV_LINE_RE.match(line)
]))
rev_line_indices_reversed = list(
reversed([
i for i, line in enumerate(lines) if REV_LINE_RE.match(line)
]),
)

for line in new_contents.splitlines(True):
if REV_LINE_RE.match(line):
Expand Down Expand Up @@ -140,9 +142,11 @@ def autoupdate(config_file, store, tags_only, repos=()):

if new_repo_config['rev'] != repo_config['rev']:
changed = True
output.write_line('updating {} -> {}.'.format(
repo_config['rev'], new_repo_config['rev'],
))
output.write_line(
'updating {} -> {}.'.format(
repo_config['rev'], new_repo_config['rev'],
),
)
output_repos.append(new_repo_config)
else:
output.write_line('already up to date.')
Expand Down
4 changes: 1 addition & 3 deletions pre_commit/commands/install_uninstall.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@ def shebang():
# Homebrew/homebrew-core#35825: be more timid about appropriate `PATH`
path_choices = [p for p in os.defpath.split(os.pathsep) if p]
exe_choices = [
'python{}'.format('.'.join(
str(v) for v in sys.version_info[:i]
))
'python{}'.format('.'.join(str(v) for v in sys.version_info[:i]))
for i in range(3)
]
for path, exe in itertools.product(path_choices, exe_choices):
Expand Down
42 changes: 24 additions & 18 deletions pre_commit/commands/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,30 +85,36 @@ def _run_single_hook(classifier, hook, args, skips, cols):
)

if hook.id in skips or hook.alias in skips:
output.write(get_hook_message(
_hook_msg_start(hook, args.verbose),
end_msg=SKIPPED,
end_color=color.YELLOW,
use_color=args.color,
cols=cols,
))
output.write(
get_hook_message(
_hook_msg_start(hook, args.verbose),
end_msg=SKIPPED,
end_color=color.YELLOW,
use_color=args.color,
cols=cols,
),
)
return 0
elif not filenames and not hook.always_run:
output.write(get_hook_message(
_hook_msg_start(hook, args.verbose),
postfix=NO_FILES,
end_msg=SKIPPED,
end_color=color.TURQUOISE,
use_color=args.color,
cols=cols,
))
output.write(
get_hook_message(
_hook_msg_start(hook, args.verbose),
postfix=NO_FILES,
end_msg=SKIPPED,
end_color=color.TURQUOISE,
use_color=args.color,
cols=cols,
),
)
return 0

# Print the hook and the dots first in case the hook takes hella long to
# run.
output.write(get_hook_message(
_hook_msg_start(hook, args.verbose), end_len=6, cols=cols,
))
output.write(
get_hook_message(
_hook_msg_start(hook, args.verbose), end_len=6, cols=cols,
),
)
sys.stdout.flush()

diff_before = cmd_output(
Expand Down
34 changes: 20 additions & 14 deletions pre_commit/git.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,20 +84,24 @@ def get_conflicted_files():
# If they resolved the merge conflict by choosing a mesh of both sides
# this will also include the conflicted files
tree_hash = cmd_output('git', 'write-tree')[1].strip()
merge_diff_filenames = zsplit(cmd_output(
'git', 'diff', '--name-only', '--no-ext-diff', '-z',
'-m', tree_hash, 'HEAD', 'MERGE_HEAD',
)[1])
merge_diff_filenames = zsplit(
cmd_output(
'git', 'diff', '--name-only', '--no-ext-diff', '-z',
'-m', tree_hash, 'HEAD', 'MERGE_HEAD',
)[1],
)
return set(merge_conflict_filenames) | set(merge_diff_filenames)


def get_staged_files(cwd=None):
return zsplit(cmd_output(
'git', 'diff', '--staged', '--name-only', '--no-ext-diff', '-z',
# Everything except for D
'--diff-filter=ACMRTUXB',
cwd=cwd,
)[1])
return zsplit(
cmd_output(
'git', 'diff', '--staged', '--name-only', '--no-ext-diff', '-z',
# Everything except for D
'--diff-filter=ACMRTUXB',
cwd=cwd,
)[1],
)


def intent_to_add_files():
Expand All @@ -119,10 +123,12 @@ def get_all_files():


def get_changed_files(new, old):
return zsplit(cmd_output(
'git', 'diff', '--name-only', '--no-ext-diff', '-z',
'{}...{}'.format(old, new),
)[1])
return zsplit(
cmd_output(
'git', 'diff', '--name-only', '--no-ext-diff', '-z',
'{}...{}'.format(old, new),
)[1],
)


def head_rev(remote):
Expand Down
6 changes: 3 additions & 3 deletions pre_commit/make_archives.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ def main(argv=None):
parser.add_argument('--dest', default='pre_commit/resources')
args = parser.parse_args(argv)
for archive_name, repo, ref in REPOS:
output.write_line('Making {}.tar.gz for {}@{}'.format(
archive_name, repo, ref,
))
output.write_line(
'Making {}.tar.gz for {}@{}'.format(archive_name, repo, ref),
)
make_archive(archive_name, repo, ref, args.dest)


Expand Down
64 changes: 35 additions & 29 deletions tests/clientlib_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,41 +33,47 @@ def test_check_type_tag_failures(value):
@pytest.mark.parametrize(
('config_obj', 'expected'), (
(
{'repos': [{
'repo': 'git@github.com:pre-commit/pre-commit-hooks',
'rev': 'cd74dc150c142c3be70b24eaf0b02cae9d235f37',
'hooks': [{'id': 'pyflakes', 'files': '\\.py$'}],
}]},
{
'repos': [{
'repo': 'git@github.com:pre-commit/pre-commit-hooks',
'rev': 'cd74dc150c142c3be70b24eaf0b02cae9d235f37',
'hooks': [{'id': 'pyflakes', 'files': '\\.py$'}],
}],
},
True,
),
(
{'repos': [{
'repo': 'git@github.com:pre-commit/pre-commit-hooks',
'rev': 'cd74dc150c142c3be70b24eaf0b02cae9d235f37',
'hooks': [
{
'id': 'pyflakes',
'files': '\\.py$',
'args': ['foo', 'bar', 'baz'],
},
],
}]},
{
'repos': [{
'repo': 'git@github.com:pre-commit/pre-commit-hooks',
'rev': 'cd74dc150c142c3be70b24eaf0b02cae9d235f37',
'hooks': [
{
'id': 'pyflakes',
'files': '\\.py$',
'args': ['foo', 'bar', 'baz'],
},
],
}],
},
True,
),
(
{'repos': [{
'repo': 'git@github.com:pre-commit/pre-commit-hooks',
'rev': 'cd74dc150c142c3be70b24eaf0b02cae9d235f37',
'hooks': [
{
'id': 'pyflakes',
'files': '\\.py$',
# Exclude pattern must be a string
'exclude': 0,
'args': ['foo', 'bar', 'baz'],
},
],
}]},
{
'repos': [{
'repo': 'git@github.com:pre-commit/pre-commit-hooks',
'rev': 'cd74dc150c142c3be70b24eaf0b02cae9d235f37',
'hooks': [
{
'id': 'pyflakes',
'files': '\\.py$',
# Exclude pattern must be a string
'exclude': 0,
'args': ['foo', 'bar', 'baz'],
},
],
}],
},
False,
),
),
Expand Down
8 changes: 3 additions & 5 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,9 @@ def no_warnings(recwarn):
message.startswith('Not importing directory ') and
' missing __init__' in message
):
warnings.append('{}:{} {}'.format(
warning.filename,
warning.lineno,
message,
))
warnings.append(
'{}:{} {}'.format(warning.filename, warning.lineno, message),
)
assert not warnings


Expand Down
12 changes: 6 additions & 6 deletions tests/languages/ruby_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ def test_install_rbenv(tempdir_factory):
# Should be able to activate using our script and access rbenv
cmd_output(
'bash', '-c',
'. {} && rbenv --help'.format(pipes.quote(prefix.path(
'rbenv-default', 'bin', 'activate',
))),
'. {} && rbenv --help'.format(
pipes.quote(prefix.path('rbenv-default', 'bin', 'activate')),
),
)


Expand All @@ -36,7 +36,7 @@ def test_install_rbenv_with_version(tempdir_factory):
# Should be able to activate and use rbenv install
cmd_output(
'bash', '-c',
'. {} && rbenv install --help'.format(pipes.quote(prefix.path(
'rbenv-1.9.3p547', 'bin', 'activate',
))),
'. {} && rbenv install --help'.format(
pipes.quote(prefix.path('rbenv-1.9.3p547', 'bin', 'activate')),
),
)
6 changes: 3 additions & 3 deletions tests/parse_shebang_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ def test_find_executable_path_ext(in_tmpdir):
"""Windows exports PATHEXT as a list of extensions to automatically add
to executables when doing PATH searching.
"""
exe_path = os.path.abspath(write_executable(
'/usr/bin/env sh', filename='run.myext',
))
exe_path = os.path.abspath(
write_executable('/usr/bin/env sh', filename='run.myext'),
)
env_path = {'PATH': os.path.dirname(exe_path)}
env_path_ext = dict(env_path, PATHEXT=os.pathsep.join(('.exe', '.myext')))
assert parse_shebang.find_executable('run') is None
Expand Down
24 changes: 15 additions & 9 deletions tests/repository_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,9 +291,11 @@ def test_additional_rust_cli_dependencies_installed(
# A small rust package with no dependencies.
config['hooks'][0]['additional_dependencies'] = [dep]
hook = _get_hook(config, store, 'rust-hook')
binaries = os.listdir(hook.prefix.path(
helpers.environment_dir(rust.ENVIRONMENT_DIR, C.DEFAULT), 'bin',
))
binaries = os.listdir(
hook.prefix.path(
helpers.environment_dir(rust.ENVIRONMENT_DIR, C.DEFAULT), 'bin',
),
)
# normalize for windows
binaries = [os.path.splitext(binary)[0] for binary in binaries]
assert 'shellharden' in binaries
Expand All @@ -308,9 +310,11 @@ def test_additional_rust_lib_dependencies_installed(
deps = ['shellharden:3.1.0']
config['hooks'][0]['additional_dependencies'] = deps
hook = _get_hook(config, store, 'rust-hook')
binaries = os.listdir(hook.prefix.path(
helpers.environment_dir(rust.ENVIRONMENT_DIR, C.DEFAULT), 'bin',
))
binaries = os.listdir(
hook.prefix.path(
helpers.environment_dir(rust.ENVIRONMENT_DIR, C.DEFAULT), 'bin',
),
)
# normalize for windows
binaries = [os.path.splitext(binary)[0] for binary in binaries]
assert 'rust-hello-world' in binaries
Expand Down Expand Up @@ -507,9 +511,11 @@ def test_additional_golang_dependencies_installed(
deps = ['github.com/golang/example/hello']
config['hooks'][0]['additional_dependencies'] = deps
hook = _get_hook(config, store, 'golang-hook')
binaries = os.listdir(hook.prefix.path(
helpers.environment_dir(golang.ENVIRONMENT_DIR, C.DEFAULT), 'bin',
))
binaries = os.listdir(
hook.prefix.path(
helpers.environment_dir(golang.ENVIRONMENT_DIR, C.DEFAULT), 'bin',
),
)
# normalize for windows
binaries = [os.path.splitext(binary)[0] for binary in binaries]
assert 'hello' in binaries
Expand Down