Use 0.15.0 types
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index be99f71..2367f89 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -13,7 +13,7 @@
- id: requirements-txt-fixer
- id: flake8
- repo: https://github.com/pre-commit/pre-commit
- sha: v0.12.2
+ sha: v0.15.0
hooks:
- id: validate_config
- id: validate_manifest
diff --git a/.pre-commit-hooks.yaml b/.pre-commit-hooks.yaml
index 6cda2dd..dac48f0 100644
--- a/.pre-commit-hooks.yaml
+++ b/.pre-commit-hooks.yaml
@@ -3,109 +3,153 @@
description: "Runs autopep8 over python source. If you configure additional arguments you'll want to at least include -i."
entry: autopep8-wrapper
language: python
- files: \.py$
+ types: [python]
args: [-i]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-added-large-files
name: Check for added large files
description: Prevent giant files from being committed
entry: check-added-large-files
language: python
- # Match all files
+ # for backward compatibility
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-ast
name: Check python ast
description: Simply check whether the files parse as valid python.
entry: check-ast
language: python
- files: '\.py$'
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-byte-order-marker
name: Check for byte-order marker
description: Forbid files which have a UTF-8 byte-order marker
entry: check-byte-order-marker
language: python
- files: '\.py$'
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-case-conflict
name: Check for case conflicts
description: Check for files that would conflict in case-insensitive filesystems
entry: check-case-conflict
language: python
- # Match all files
+ # for backward compatibility
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-docstring-first
name: Check docstring is first
description: Checks a common error of defining a docstring after code.
entry: check-docstring-first
language: python
- files: \.py$
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-json
name: Check JSON
description: This hook checks json files for parseable syntax.
entry: check-json
language: python
- files: \.json$
+ types: [json]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: pretty-format-json
name: Pretty format JSON
description: This hook sets a standard for formatting JSON files.
entry: pretty-format-json
language: python
- files: \.json$
+ types: [json]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-merge-conflict
name: Check for merge conflicts
description: Check for files that contain merge conflict strings.
entry: check-merge-conflict
language: python
- # Match all files
+ types: [text]
+ # for backward compatibility
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-symlinks
name: Check for broken symlinks
description: Checks for symlinks which do not point to anything.
entry: check-symlinks
language: python
- # Match all files
- files: ''
types: [symlink]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-xml
name: Check Xml
description: This hook checks xml files for parseable syntax.
entry: check-xml
language: python
- files: \.xml$
+ types: [xml]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-yaml
name: Check Yaml
description: This hook checks yaml files for parseable syntax.
entry: check-yaml
language: python
- files: \.(yaml|yml|eyaml)$
+ types: [yaml]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: debug-statements
name: Debug Statements (Python)
description: This hook checks that debug statements (pdb, ipdb, pudb) are not imported on commit.
entry: debug-statement-hook
language: python
- files: \.py$
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: detect-aws-credentials
name: Detect AWS Credentials
description: Detects *your* aws credentials from the aws cli credentials file
entry: detect-aws-credentials
language: python
+ types: [text]
+ # for backward compatibility
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: detect-private-key
name: Detect Private Key
description: Detects the presence of private keys
entry: detect-private-key
language: python
+ types: [text]
+ # for backward compatibility
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: double-quote-string-fixer
name: Fix double quoted strings
description: This hook replaces double quoted strings with single quoted strings
entry: double-quote-string-fixer
language: python
- files: \.py$
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: end-of-file-fixer
name: Fix End of Files
description: Ensures that a file is either empty, or ends with one newline.
entry: end-of-file-fixer
language: python
- files: \.(asciidoc|adoc|coffee|cpp|css|c|ejs|erb|groovy|h|haml|hh|hpp|hxx|html|in|j2|jade|json|js|less|markdown|md|ml|mli|pp|py|rb|rs|R|scala|scss|sh|slim|tex|tmpl|ts|txt|yaml|yml)$
+ types: [text]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: file-contents-sorter
name: File Contents Sorter
description: Sort the lines in specified files (defaults to alphabetical). You must provide list of target files as input in your .pre-commit-config.yaml file.
@@ -117,19 +161,27 @@
language: python
entry: fix-encoding-pragma
description: 'Add # -*- coding: utf-8 -*- to the top of python files'
- files: \.py$
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: flake8
name: Flake8
description: This hook runs flake8.
entry: flake8
language: python
- files: \.py$
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: forbid-new-submodules
name: Forbid new submodules
language: python
entry: forbid-new-submodules
description: Prevent addition of new git submodules
+ # for backward compatibility
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: name-tests-test
name: Tests should end in _test.py
description: This verifies that test files are named correctly
@@ -140,14 +192,19 @@
name: "Don't commit to branch"
entry: no-commit-to-branch
language: python
- files: .*
always_run: true
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: pyflakes
name: Pyflakes (DEPRECATED, use flake8)
description: This hook runs pyflakes. (This is deprecated, use flake8).
entry: pyflakes
language: python
- files: \.py$
+ types: [python]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: requirements-txt-fixer
name: Fix requirements.txt
description: Sorts entries in requirements.txt
@@ -165,4 +222,7 @@
description: This hook trims trailing whitespace.
entry: trailing-whitespace-fixer
language: python
- files: \.(asciidoc|adoc|coffee|cpp|css|c|ejs|erb|groovy|h|haml|hh|hpp|hxx|html|in|j2|jade|json|js|less|markdown|md|ml|mli|pp|py|rb|rs|R|scala|scss|sh|slim|tex|tmpl|ts|txt|yaml|yml)$
+ types: [text]
+ # for backward compatibility
+ files: ''
+ minimum_pre_commit_version: 0.15.0
diff --git a/hooks.yaml b/hooks.yaml
index 6cda2dd..7a4f933 100644
--- a/hooks.yaml
+++ b/hooks.yaml
@@ -1,168 +1,162 @@
- id: autopep8-wrapper
- name: autopep8 wrapper
- description: "Runs autopep8 over python source. If you configure additional arguments you'll want to at least include -i."
- entry: autopep8-wrapper
- language: python
- files: \.py$
- args: [-i]
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-added-large-files
- name: Check for added large files
- description: Prevent giant files from being committed
- entry: check-added-large-files
- language: python
- # Match all files
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-ast
- name: Check python ast
- description: Simply check whether the files parse as valid python.
- entry: check-ast
- language: python
- files: '\.py$'
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-byte-order-marker
- name: Check for byte-order marker
- description: Forbid files which have a UTF-8 byte-order marker
- entry: check-byte-order-marker
- language: python
- files: '\.py$'
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-case-conflict
- name: Check for case conflicts
- description: Check for files that would conflict in case-insensitive filesystems
- entry: check-case-conflict
- language: python
- # Match all files
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-docstring-first
- name: Check docstring is first
- description: Checks a common error of defining a docstring after code.
- entry: check-docstring-first
- language: python
- files: \.py$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-json
- name: Check JSON
- description: This hook checks json files for parseable syntax.
- entry: check-json
- language: python
- files: \.json$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: pretty-format-json
- name: Pretty format JSON
- description: This hook sets a standard for formatting JSON files.
- entry: pretty-format-json
- language: python
- files: \.json$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-merge-conflict
- name: Check for merge conflicts
- description: Check for files that contain merge conflict strings.
- entry: check-merge-conflict
- language: python
- # Match all files
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-symlinks
- name: Check for broken symlinks
- description: Checks for symlinks which do not point to anything.
- entry: check-symlinks
- language: python
- # Match all files
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
files: ''
- types: [symlink]
+ minimum_pre_commit_version: 0.15.0
- id: check-xml
- name: Check Xml
- description: This hook checks xml files for parseable syntax.
- entry: check-xml
- language: python
- files: \.xml$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: check-yaml
- name: Check Yaml
- description: This hook checks yaml files for parseable syntax.
- entry: check-yaml
- language: python
- files: \.(yaml|yml|eyaml)$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: debug-statements
- name: Debug Statements (Python)
- description: This hook checks that debug statements (pdb, ipdb, pudb) are not imported on commit.
- entry: debug-statement-hook
- language: python
- files: \.py$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: detect-aws-credentials
- name: Detect AWS Credentials
- description: Detects *your* aws credentials from the aws cli credentials file
- entry: detect-aws-credentials
- language: python
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: detect-private-key
- name: Detect Private Key
- description: Detects the presence of private keys
- entry: detect-private-key
- language: python
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
files: ''
+ minimum_pre_commit_version: 0.15.0
- id: double-quote-string-fixer
- name: Fix double quoted strings
- description: This hook replaces double quoted strings with single quoted strings
- entry: double-quote-string-fixer
- language: python
- files: \.py$
-- id: end-of-file-fixer
- name: Fix End of Files
- description: Ensures that a file is either empty, or ends with one newline.
- entry: end-of-file-fixer
- language: python
- files: \.(asciidoc|adoc|coffee|cpp|css|c|ejs|erb|groovy|h|haml|hh|hpp|hxx|html|in|j2|jade|json|js|less|markdown|md|ml|mli|pp|py|rb|rs|R|scala|scss|sh|slim|tex|tmpl|ts|txt|yaml|yml)$
-- id: file-contents-sorter
- name: File Contents Sorter
- description: Sort the lines in specified files (defaults to alphabetical). You must provide list of target files as input in your .pre-commit-config.yaml file.
- entry: file-contents-sorter
- language: python
- files: '^$'
-- id: fix-encoding-pragma
- name: Fix python encoding pragma
- language: python
- entry: fix-encoding-pragma
- description: 'Add # -*- coding: utf-8 -*- to the top of python files'
- files: \.py$
-- id: flake8
- name: Flake8
- description: This hook runs flake8.
- entry: flake8
- language: python
- files: \.py$
-- id: forbid-new-submodules
- name: Forbid new submodules
- language: python
- entry: forbid-new-submodules
- description: Prevent addition of new git submodules
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
files: ''
+ minimum_pre_commit_version: 0.15.0
+- id: end-of-file-fixer
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
+- id: file-contents-sorter
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
+- id: fix-encoding-pragma
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
+- id: flake8
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
+- id: forbid-new-submodules
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: name-tests-test
- name: Tests should end in _test.py
- description: This verifies that test files are named correctly
- entry: name-tests-test
- language: python
- files: tests/.+\.py$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: no-commit-to-branch
- name: "Don't commit to branch"
- entry: no-commit-to-branch
- language: python
- files: .*
- always_run: true
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: pyflakes
- name: Pyflakes (DEPRECATED, use flake8)
- description: This hook runs pyflakes. (This is deprecated, use flake8).
- entry: pyflakes
- language: python
- files: \.py$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: requirements-txt-fixer
- name: Fix requirements.txt
- description: Sorts entries in requirements.txt
- entry: requirements-txt-fixer
- language: python
- files: requirements.*\.txt$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: sort-simple-yaml
- name: Sort simple YAML files
- language: python
- entry: sort-simple-yaml
- description: Sorts simple YAML files which consist only of top-level keys, preserving comments and blocks.
- files: '^$'
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
- id: trailing-whitespace
- name: Trim Trailing Whitespace
- description: This hook trims trailing whitespace.
- entry: trailing-whitespace-fixer
- language: python
- files: \.(asciidoc|adoc|coffee|cpp|css|c|ejs|erb|groovy|h|haml|hh|hpp|hxx|html|in|j2|jade|json|js|less|markdown|md|ml|mli|pp|py|rb|rs|R|scala|scss|sh|slim|tex|tmpl|ts|txt|yaml|yml)$
+ language: system
+ name: upgrade-your-pre-commit-version
+ entry: upgrade-your-pre-commit-version
+ files: ''
+ minimum_pre_commit_version: 0.15.0
diff --git a/tests/meta_test.py b/tests/meta_test.py
index 202b3d7..29e06a8 100644
--- a/tests/meta_test.py
+++ b/tests/meta_test.py
@@ -1,7 +1,43 @@
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
import io
+import yaml
-def test_hooks_yaml_same_contents():
- legacy_contents = io.open('hooks.yaml').read()
- contents = io.open('.pre-commit-hooks.yaml').read()
- assert legacy_contents == contents
+
+def _assert_parseable_in_old_pre_commit(hooks):
+ for hook in hooks:
+ assert {'id', 'name', 'entry', 'files', 'language'} <= set(hook)
+
+
+def test_legacy_hooks():
+ with io.open('hooks.yaml') as legacy_file:
+ legacy = yaml.load(legacy_file.read())
+ with io.open('.pre-commit-hooks.yaml') as hooks_file:
+ hooks = yaml.load(hooks_file.read())
+
+ # The same set of hooks should be defined in both files
+ new_hook_ids = {hook['id'] for hook in hooks}
+ legacy_hook_ids = {hook['id'] for hook in legacy}
+ assert new_hook_ids == legacy_hook_ids
+
+ # Both files should be parseable by pre-commit<0.15.0
+ _assert_parseable_in_old_pre_commit(legacy)
+ _assert_parseable_in_old_pre_commit(hooks)
+
+ # The legacy file should force upgrading
+ for hook in legacy:
+ del hook['id']
+ assert hook == {
+ 'language': 'system',
+ 'name': 'upgrade-your-pre-commit-version',
+ 'entry': 'upgrade-your-pre-commit-version',
+ 'files': '',
+ 'minimum_pre_commit_version': '0.15.0',
+ }
+
+ # Each hook should require a new version if it uses types
+ for hook in hooks:
+ if 'types' in hook:
+ assert hook['minimum_pre_commit_version'] == '0.15.0'