pre-commit-hooks


Namepre-commit-hooks JSON
Version 4.6.0 PyPI version JSON
download
home_pagehttps://github.com/pre-commit/pre-commit-hooks
SummarySome out-of-the-box hooks for pre-commit.
upload_time2024-04-06 18:25:03
maintainerNone
docs_urlNone
authorAnthony Sottile
requires_python>=3.8
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![build status](https://github.com/pre-commit/pre-commit-hooks/actions/workflows/main.yml/badge.svg)](https://github.com/pre-commit/pre-commit-hooks/actions/workflows/main.yml)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/pre-commit/pre-commit-hooks/main.svg)](https://results.pre-commit.ci/latest/github/pre-commit/pre-commit-hooks/main)

pre-commit-hooks
================

Some out-of-the-box hooks for pre-commit.

See also: https://github.com/pre-commit/pre-commit


### Using pre-commit-hooks with pre-commit

Add this to your `.pre-commit-config.yaml`

```yaml
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.6.0  # Use the ref you want to point at
    hooks:
    -   id: trailing-whitespace
    # -   id: ...
```

### Hooks available

#### `check-added-large-files`
Prevent giant files from being committed.
  - Specify what is "too large" with `args: ['--maxkb=123']` (default=500kB).
  - Limits checked files to those indicated as staged for addition by git.
  - If `git-lfs` is installed, lfs files will be skipped
    (requires `git-lfs>=2.2.1`)
  - `--enforce-all` - Check all listed files not just those staged for
    addition.

#### `check-ast`
Simply check whether files parse as valid python.

#### `check-builtin-literals`
Require literal syntax when initializing empty or zero Python builtin types.
  - Allows calling constructors with positional arguments (e.g., `list('abc')`).
  - Allows calling constructors from the `builtins` (`__builtin__`) namespace (`builtins.list()`).
  - Ignore this requirement for specific builtin types with `--ignore=type1,type2,…`.
  - Forbid `dict` keyword syntax with `--no-allow-dict-kwargs`.

#### `check-case-conflict`
Check for files with names that would conflict on a case-insensitive filesystem like MacOS HFS+ or Windows FAT.

#### `check-docstring-first`
Checks for a common error of placing code before the docstring.

#### `check-executables-have-shebangs`
Checks that non-binary executables have a proper shebang.

#### `check-json`
Attempts to load all json files to verify syntax.

#### `check-merge-conflict`
Check for files that contain merge conflict strings.
  - `--assume-in-merge` - Allows running the hook when there is no ongoing merge operation

#### `check-shebang-scripts-are-executable`
Checks that scripts with shebangs are executable.

#### `check-symlinks`
Checks for symlinks which do not point to anything.

#### `check-toml`
Attempts to load all TOML files to verify syntax.

#### `check-vcs-permalinks`
Ensures that links to vcs websites are permalinks.
  - `--additional-github-domain DOMAIN` - Add check for specified domain.
    Can be repeated multiple times.  for example, if your company uses
    GitHub Enterprise you may use something like
    `--additional-github-domain github.example.com`

#### `check-xml`
Attempts to load all xml files to verify syntax.

#### `check-yaml`
Attempts to load all yaml files to verify syntax.
  - `--allow-multiple-documents` - allow yaml files which use the
    [multi-document syntax](http://www.yaml.org/spec/1.2/spec.html#YAML)
  - `--unsafe` - Instead of loading the files, simply parse them for syntax.
    A syntax-only check enables extensions and unsafe constructs which would
    otherwise be forbidden.  Using this option removes all guarantees of
    portability to other yaml implementations.
    Implies `--allow-multiple-documents`.

#### `debug-statements`
Check for debugger imports and py37+ `breakpoint()` calls in python source.

#### `destroyed-symlinks`
Detects symlinks which are changed to regular files with a content of a path
which that symlink was pointing to.
This usually happens on Windows when a user clones a repository that has
symlinks but they do not have the permission to create symlinks.

#### `detect-aws-credentials`
Checks for the existence of AWS secrets that you have set up with the AWS CLI.
The following arguments are available:
- `--credentials-file CREDENTIALS_FILE` - additional AWS CLI style
  configuration file in a non-standard location to fetch configured
  credentials from. Can be repeated multiple times.
- `--allow-missing-credentials` - Allow hook to pass when no credentials are detected.

#### `detect-private-key`
Checks for the existence of private keys.

#### `double-quote-string-fixer`
This hook replaces double quoted strings with single quoted strings.

#### `end-of-file-fixer`
Makes sure files end in a newline and only a newline.

#### `file-contents-sorter`
Sort the lines in specified files (defaults to alphabetical).
You must provide the target [`files`](https://pre-commit.com/#config-files) as input.
Note that this hook WILL remove blank lines and does NOT respect any comments.
All newlines will be converted to line feeds (`\n`).

The following arguments are available:
- `--ignore-case` - fold lower case to upper case characters.
- `--unique` - ensure each line is unique.

#### `fix-byte-order-marker`
removes UTF-8 byte order marker

#### `fix-encoding-pragma`

_Deprecated since py2 is EOL - use [pyupgrade](https://github.com/asottile/pyupgrade) instead._

Add `# -*- coding: utf-8 -*-` to the top of python files.
  - To remove the coding pragma pass `--remove` (useful in a python3-only codebase)

#### `forbid-new-submodules`
Prevent addition of new git submodules.

This is intended as a helper to migrate away from submodules.  If you want to
ban them entirely use `forbid-submodules`

#### `forbid-submodules`
forbids any submodules in the repository.

#### `mixed-line-ending`
Replaces or checks mixed line ending.
  - `--fix={auto,crlf,lf,no}`
      - `auto` - Replaces automatically the most frequent line ending. This is the default argument.
      - `crlf`, `lf` - Forces to replace line ending by respectively CRLF and LF.
          - This option isn't compatible with git setup check-in LF check-out CRLF as git smudge this later than the hook is invoked.
      - `no` - Checks if there is any mixed line ending without modifying any file.

#### `name-tests-test`
verifies that test files are named correctly.
- `--pytest` (the default): ensure tests match `.*_test\.py`
- `--pytest-test-first`: ensure tests match `test_.*\.py`
- `--django` / `--unittest`: ensure tests match `test.*\.py`

#### `no-commit-to-branch`
Protect specific branches from direct checkins.
  - Use `args: [--branch, staging, --branch, main]` to set the branch.
    Both `main` and `master` are protected by default if no branch argument is set.
  - `-b` / `--branch` may be specified multiple times to protect multiple
    branches.
  - `-p` / `--pattern` can be used to protect branches that match a supplied regex
    (e.g. `--pattern, release/.*`). May be specified multiple times.

Note that `no-commit-to-branch` is configured by default to [`always_run`](https://pre-commit.com/#config-always_run).
As a result, it will ignore any setting of [`files`](https://pre-commit.com/#config-files),
[`exclude`](https://pre-commit.com/#config-exclude), [`types`](https://pre-commit.com/#config-types)
or [`exclude_types`](https://pre-commit.com/#config-exclude_types).
Set [`always_run: false`](https://pre-commit.com/#config-always_run) to allow this hook to be skipped according to these
file filters. Caveat: In this configuration, empty commits (`git commit --allow-empty`) would always be allowed by this hook.

#### `pretty-format-json`
Checks that all your JSON files are pretty.  "Pretty"
here means that keys are sorted and indented.  You can configure this with
the following commandline options:
  - `--autofix` - automatically format json files
  - `--indent ...` - Control the indentation (either a number for a number of spaces or a string of whitespace).  Defaults to 2 spaces.
  - `--no-ensure-ascii` preserve unicode characters instead of converting to escape sequences
  - `--no-sort-keys` - when autofixing, retain the original key ordering (instead of sorting the keys)
  - `--top-keys comma,separated,keys` - Keys to keep at the top of mappings.

#### `requirements-txt-fixer`
Sorts entries in requirements.txt and constraints.txt and removes incorrect entry for `pkg-resources==0.0.0`

#### `sort-simple-yaml`
Sorts simple YAML files which consist only of top-level
keys, preserving comments and blocks.

Note that `sort-simple-yaml` by default matches no `files` as it enforces a
very specific format.  You must opt in to this by setting [`files`](https://pre-commit.com/#config-files), for example:

```yaml
    -   id: sort-simple-yaml
        files: ^config/simple/
```


#### `trailing-whitespace`
Trims trailing whitespace.
  - To preserve Markdown [hard linebreaks](https://github.github.com/gfm/#hard-line-break)
    use `args: [--markdown-linebreak-ext=md]` (or other extensions used
    by your markdownfiles).  If for some reason you want to treat all files
    as markdown, use `--markdown-linebreak-ext=*`.
  - By default, this hook trims all whitespace from the ends of lines.
    To specify a custom set of characters to trim instead, use `args: [--chars,"<chars to trim>"]`.

### Deprecated / replaced hooks

- `check-byte-order-marker`: instead use fix-byte-order-marker

### As a standalone package

If you'd like to use these hooks, they're also available as a standalone package.

Simply `pip install pre-commit-hooks`

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pre-commit/pre-commit-hooks",
    "name": "pre-commit-hooks",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Anthony Sottile",
    "author_email": "asottile@umich.edu",
    "download_url": "https://files.pythonhosted.org/packages/83/0d/b4e97cd99b26c0cd8265c9f19ee7e55248142f0c9955e4d119de96fa4a13/pre_commit_hooks-4.6.0.tar.gz",
    "platform": null,
    "description": "[![build status](https://github.com/pre-commit/pre-commit-hooks/actions/workflows/main.yml/badge.svg)](https://github.com/pre-commit/pre-commit-hooks/actions/workflows/main.yml)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/pre-commit/pre-commit-hooks/main.svg)](https://results.pre-commit.ci/latest/github/pre-commit/pre-commit-hooks/main)\n\npre-commit-hooks\n================\n\nSome out-of-the-box hooks for pre-commit.\n\nSee also: https://github.com/pre-commit/pre-commit\n\n\n### Using pre-commit-hooks with pre-commit\n\nAdd this to your `.pre-commit-config.yaml`\n\n```yaml\n-   repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v4.6.0  # Use the ref you want to point at\n    hooks:\n    -   id: trailing-whitespace\n    # -   id: ...\n```\n\n### Hooks available\n\n#### `check-added-large-files`\nPrevent giant files from being committed.\n  - Specify what is \"too large\" with `args: ['--maxkb=123']` (default=500kB).\n  - Limits checked files to those indicated as staged for addition by git.\n  - If `git-lfs` is installed, lfs files will be skipped\n    (requires `git-lfs>=2.2.1`)\n  - `--enforce-all` - Check all listed files not just those staged for\n    addition.\n\n#### `check-ast`\nSimply check whether files parse as valid python.\n\n#### `check-builtin-literals`\nRequire literal syntax when initializing empty or zero Python builtin types.\n  - Allows calling constructors with positional arguments (e.g., `list('abc')`).\n  - Allows calling constructors from the `builtins` (`__builtin__`) namespace (`builtins.list()`).\n  - Ignore this requirement for specific builtin types with `--ignore=type1,type2,\u2026`.\n  - Forbid `dict` keyword syntax with `--no-allow-dict-kwargs`.\n\n#### `check-case-conflict`\nCheck for files with names that would conflict on a case-insensitive filesystem like MacOS HFS+ or Windows FAT.\n\n#### `check-docstring-first`\nChecks for a common error of placing code before the docstring.\n\n#### `check-executables-have-shebangs`\nChecks that non-binary executables have a proper shebang.\n\n#### `check-json`\nAttempts to load all json files to verify syntax.\n\n#### `check-merge-conflict`\nCheck for files that contain merge conflict strings.\n  - `--assume-in-merge` - Allows running the hook when there is no ongoing merge operation\n\n#### `check-shebang-scripts-are-executable`\nChecks that scripts with shebangs are executable.\n\n#### `check-symlinks`\nChecks for symlinks which do not point to anything.\n\n#### `check-toml`\nAttempts to load all TOML files to verify syntax.\n\n#### `check-vcs-permalinks`\nEnsures that links to vcs websites are permalinks.\n  - `--additional-github-domain DOMAIN` - Add check for specified domain.\n    Can be repeated multiple times.  for example, if your company uses\n    GitHub Enterprise you may use something like\n    `--additional-github-domain github.example.com`\n\n#### `check-xml`\nAttempts to load all xml files to verify syntax.\n\n#### `check-yaml`\nAttempts to load all yaml files to verify syntax.\n  - `--allow-multiple-documents` - allow yaml files which use the\n    [multi-document syntax](http://www.yaml.org/spec/1.2/spec.html#YAML)\n  - `--unsafe` - Instead of loading the files, simply parse them for syntax.\n    A syntax-only check enables extensions and unsafe constructs which would\n    otherwise be forbidden.  Using this option removes all guarantees of\n    portability to other yaml implementations.\n    Implies `--allow-multiple-documents`.\n\n#### `debug-statements`\nCheck for debugger imports and py37+ `breakpoint()` calls in python source.\n\n#### `destroyed-symlinks`\nDetects symlinks which are changed to regular files with a content of a path\nwhich that symlink was pointing to.\nThis usually happens on Windows when a user clones a repository that has\nsymlinks but they do not have the permission to create symlinks.\n\n#### `detect-aws-credentials`\nChecks for the existence of AWS secrets that you have set up with the AWS CLI.\nThe following arguments are available:\n- `--credentials-file CREDENTIALS_FILE` - additional AWS CLI style\n  configuration file in a non-standard location to fetch configured\n  credentials from. Can be repeated multiple times.\n- `--allow-missing-credentials` - Allow hook to pass when no credentials are detected.\n\n#### `detect-private-key`\nChecks for the existence of private keys.\n\n#### `double-quote-string-fixer`\nThis hook replaces double quoted strings with single quoted strings.\n\n#### `end-of-file-fixer`\nMakes sure files end in a newline and only a newline.\n\n#### `file-contents-sorter`\nSort the lines in specified files (defaults to alphabetical).\nYou must provide the target [`files`](https://pre-commit.com/#config-files) as input.\nNote that this hook WILL remove blank lines and does NOT respect any comments.\nAll newlines will be converted to line feeds (`\\n`).\n\nThe following arguments are available:\n- `--ignore-case` - fold lower case to upper case characters.\n- `--unique` - ensure each line is unique.\n\n#### `fix-byte-order-marker`\nremoves UTF-8 byte order marker\n\n#### `fix-encoding-pragma`\n\n_Deprecated since py2 is EOL - use [pyupgrade](https://github.com/asottile/pyupgrade) instead._\n\nAdd `# -*- coding: utf-8 -*-` to the top of python files.\n  - To remove the coding pragma pass `--remove` (useful in a python3-only codebase)\n\n#### `forbid-new-submodules`\nPrevent addition of new git submodules.\n\nThis is intended as a helper to migrate away from submodules.  If you want to\nban them entirely use `forbid-submodules`\n\n#### `forbid-submodules`\nforbids any submodules in the repository.\n\n#### `mixed-line-ending`\nReplaces or checks mixed line ending.\n  - `--fix={auto,crlf,lf,no}`\n      - `auto` - Replaces automatically the most frequent line ending. This is the default argument.\n      - `crlf`, `lf` - Forces to replace line ending by respectively CRLF and LF.\n          - This option isn't compatible with git setup check-in LF check-out CRLF as git smudge this later than the hook is invoked.\n      - `no` - Checks if there is any mixed line ending without modifying any file.\n\n#### `name-tests-test`\nverifies that test files are named correctly.\n- `--pytest` (the default): ensure tests match `.*_test\\.py`\n- `--pytest-test-first`: ensure tests match `test_.*\\.py`\n- `--django` / `--unittest`: ensure tests match `test.*\\.py`\n\n#### `no-commit-to-branch`\nProtect specific branches from direct checkins.\n  - Use `args: [--branch, staging, --branch, main]` to set the branch.\n    Both `main` and `master` are protected by default if no branch argument is set.\n  - `-b` / `--branch` may be specified multiple times to protect multiple\n    branches.\n  - `-p` / `--pattern` can be used to protect branches that match a supplied regex\n    (e.g. `--pattern, release/.*`). May be specified multiple times.\n\nNote that `no-commit-to-branch` is configured by default to [`always_run`](https://pre-commit.com/#config-always_run).\nAs a result, it will ignore any setting of [`files`](https://pre-commit.com/#config-files),\n[`exclude`](https://pre-commit.com/#config-exclude), [`types`](https://pre-commit.com/#config-types)\nor [`exclude_types`](https://pre-commit.com/#config-exclude_types).\nSet [`always_run: false`](https://pre-commit.com/#config-always_run) to allow this hook to be skipped according to these\nfile filters. Caveat: In this configuration, empty commits (`git commit --allow-empty`) would always be allowed by this hook.\n\n#### `pretty-format-json`\nChecks that all your JSON files are pretty.  \"Pretty\"\nhere means that keys are sorted and indented.  You can configure this with\nthe following commandline options:\n  - `--autofix` - automatically format json files\n  - `--indent ...` - Control the indentation (either a number for a number of spaces or a string of whitespace).  Defaults to 2 spaces.\n  - `--no-ensure-ascii` preserve unicode characters instead of converting to escape sequences\n  - `--no-sort-keys` - when autofixing, retain the original key ordering (instead of sorting the keys)\n  - `--top-keys comma,separated,keys` - Keys to keep at the top of mappings.\n\n#### `requirements-txt-fixer`\nSorts entries in requirements.txt and constraints.txt and removes incorrect entry for `pkg-resources==0.0.0`\n\n#### `sort-simple-yaml`\nSorts simple YAML files which consist only of top-level\nkeys, preserving comments and blocks.\n\nNote that `sort-simple-yaml` by default matches no `files` as it enforces a\nvery specific format.  You must opt in to this by setting [`files`](https://pre-commit.com/#config-files), for example:\n\n```yaml\n    -   id: sort-simple-yaml\n        files: ^config/simple/\n```\n\n\n#### `trailing-whitespace`\nTrims trailing whitespace.\n  - To preserve Markdown [hard linebreaks](https://github.github.com/gfm/#hard-line-break)\n    use `args: [--markdown-linebreak-ext=md]` (or other extensions used\n    by your markdownfiles).  If for some reason you want to treat all files\n    as markdown, use `--markdown-linebreak-ext=*`.\n  - By default, this hook trims all whitespace from the ends of lines.\n    To specify a custom set of characters to trim instead, use `args: [--chars,\"<chars to trim>\"]`.\n\n### Deprecated / replaced hooks\n\n- `check-byte-order-marker`: instead use fix-byte-order-marker\n\n### As a standalone package\n\nIf you'd like to use these hooks, they're also available as a standalone package.\n\nSimply `pip install pre-commit-hooks`\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Some out-of-the-box hooks for pre-commit.",
    "version": "4.6.0",
    "project_urls": {
        "Homepage": "https://github.com/pre-commit/pre-commit-hooks"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "95d8d09b270248bc2441f966dd094a3de8ae813112d2687036f621202bdef80b",
                "md5": "d99a65dd3930c2a57eee093ec6d75310",
                "sha256": "a69199e6a2d45ec59c1020a81ca1549abddc2afb798276d9a0d951752d6abbfe"
            },
            "downloads": -1,
            "filename": "pre_commit_hooks-4.6.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d99a65dd3930c2a57eee093ec6d75310",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.8",
            "size": 41193,
            "upload_time": "2024-04-06T18:25:00",
            "upload_time_iso_8601": "2024-04-06T18:25:00.547578Z",
            "url": "https://files.pythonhosted.org/packages/95/d8/d09b270248bc2441f966dd094a3de8ae813112d2687036f621202bdef80b/pre_commit_hooks-4.6.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "830db4e97cd99b26c0cd8265c9f19ee7e55248142f0c9955e4d119de96fa4a13",
                "md5": "63e0e2945d061012f38c218706ca5885",
                "sha256": "eb1f43ee67869cd41b4c59017fad4a0f9d4d61201d163f2135535aaf65035a2b"
            },
            "downloads": -1,
            "filename": "pre_commit_hooks-4.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "63e0e2945d061012f38c218706ca5885",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 29579,
            "upload_time": "2024-04-06T18:25:03",
            "upload_time_iso_8601": "2024-04-06T18:25:03.093856Z",
            "url": "https://files.pythonhosted.org/packages/83/0d/b4e97cd99b26c0cd8265c9f19ee7e55248142f0c9955e4d119de96fa4a13/pre_commit_hooks-4.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-06 18:25:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pre-commit",
    "github_project": "pre-commit-hooks",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "pre-commit-hooks"
}
        
Elapsed time: 0.21681s