跳转到主要内容

为pre-commit提供的某些现成钩子。

项目描述

build status pre-commit.ci status

pre-commit-hooks

为pre-commit提供的某些现成钩子。

另请参阅: https://github.com/pre-commit/pre-commit

使用pre-commit-hooks与pre-commit配合使用

将其添加到您的 .pre-commit-config.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: ...

可用的钩子

check-added-large-files

防止提交大型文件。

  • 使用 args: ['--maxkb=123'] 指定“太大”的值(默认=500kB)。
  • 限制检查的文件为git标记为添加的文件。
  • 如果已安装 git-lfs,则跳过lfs文件(需要 git-lfs>=2.2.1
  • --enforce-all - 检查所有列出的文件,而不仅仅是标记为添加的文件。

check-ast

简单地检查文件是否解析为有效的Python。

check-builtin-literals

在初始化空的或零Python内置类型时,要求使用字面量语法。

  • 允许使用位置参数调用构造函数(例如,list('abc'))。
  • 允许从 builtins__builtin__) 命名空间调用构造函数(builtins.list())。
  • 使用 --ignore=type1,type2,… 忽略特定内置类型的此要求。
  • 使用 --no-allow-dict-kwargs 禁止 dict 关键字语法。

check-case-conflict

检查文件名是否会在不区分大小写的文件系统(如MacOS HFS+或Windows FAT)上冲突。

check-docstring-first

检查代码是否在文档字符串之前放置的常见错误。

check-executables-have-shebangs

检查非二进制可执行文件是否具有适当的shebang。

check-json

尝试加载所有json文件以验证语法。

check-merge-conflict

检查包含合并冲突字符串的文件。

  • --assume-in-merge - 允许在没有进行合并操作时运行钩子

check-shebang-scripts-are-executable

检查带有 shebang 的脚本是否可执行。

check-symlinks

检查指向空对象的符号链接。

check-toml

尝试加载所有 TOML 文件以验证语法。

check-vcs-permalinks

确保指向 vcs 网站的链接是永久链接。

  • --additional-github-domain DOMAIN - 添加对指定域的检查。可以重复多次。例如,如果您的公司使用 GitHub Enterprise,您可能可以使用 --additional-github-domain github.example.com

check-xml

尝试加载所有 xml 文件以验证语法。

check-yaml

尝试加载所有 yaml 文件以验证语法。

  • --allow-multiple-documents - 允许使用 多文档语法 的 yaml 文件
  • --unsafe - 不是加载文件,而是仅解析它们以进行语法检查。仅语法检查启用扩展和通常禁止的不安全构造。使用此选项将删除所有可移植性保证,适用于其他 yaml 实现。隐含 --allow-multiple-documents

debug-statements

检查 Python 源中的调试器导入和 py37+ breakpoint() 调用。

destroyed-symlinks

检测到符号链接被更改为包含指向该符号链接指向的路径内容的普通文件。这通常发生在用户在 Windows 上克隆包含符号链接但无权创建符号链接的存储库时。

detect-aws-credentials

检查是否存在您使用 AWS CLI 设置的 AWS 密钥。以下参数可用

  • --credentials-file CREDENTIALS_FILE - 在非标准位置获取配置凭据的额外 AWS CLI 风格配置文件。可以重复多次。
  • --allow-missing-credentials - 当未检测到凭据时允许钩子通过。

detect-private-key

检查是否存在私钥。

double-quote-string-fixer

此钩子将双引号字符串替换为单引号字符串。

end-of-file-fixer

确保文件以换行符结束,并且只以换行符结束。

file-contents-sorter

对指定文件中的行进行排序(默认为按字母顺序)。您必须提供目标 files 作为输入。请注意,此钩子将删除空白行,并且不尊重任何注释。所有换行符都将转换为换行符 (\n)。

以下参数可用

  • --ignore-case - 将小写字母折叠为大写字母字符。
  • --unique - 确保每行是唯一的。

fix-byte-order-marker

删除 UTF-8 字节顺序标记

fix-encoding-pragma

自 py2 过时以来已弃用 - 使用 pyupgrade 代替。

# -*- coding: utf-8 -*- 添加到 Python 文件的顶部。

  • 要删除编码说明符,请通过 --remove 传递(在仅使用 python3 的代码库中很有用)

forbid-new-submodules

防止添加新的 git 子模块。

这旨在作为迁移离开子模块的辅助工具。如果您想完全禁止它们,请使用 forbid-submodules

forbid-submodules

禁止存储库中的任何子模块。

mixed-line-ending

替换或检查混合行结束。

  • --fix={auto,crlf,lf,no}
    • auto - 自动替换最频繁的行结束。这是默认参数。
    • crlflf - 强制分别替换为 CRLF 和 LF。
      • 此选项与 git 设置检查不兼容,因为 LF 检查-out CRLF 在钩子调用之后由 git smudge。
    • no - 检查是否存在任何混合行结束,而不修改任何文件。

name-tests-test

验证测试文件是否命名正确。

  • --pytest(默认值):确保测试与 .*_test\.py 匹配
  • --pytest-test-first:确保测试与 test_.*\.py 匹配
  • --django / --unittest:确保测试与test.*\.py匹配

no-commit-to-branch

保护特定分支免受直接提交。

  • 使用args: [--branch, staging, --branch, main]来设置分支。如果没有设置分支参数,默认保护mainmaster
  • -b / --branch可以多次指定以保护多个分支。
  • -p / --pattern可用于保护与提供的正则表达式匹配的分支(例如--pattern, release/.*)。可以多次指定。

请注意,no-commit-to-branch默认设置为always_run。因此,它将忽略filesexcludetypesexclude_types的任何设置。设置always_run: false允许根据这些文件过滤器跳过此钩子。注意事项:在此配置中,空提交(git commit --allow-empty)始终会被此钩子允许。

pretty-format-json

检查所有JSON文件是否格式良好。这里的“格式良好”意味着键已排序并缩进。您可以使用以下命令行选项进行配置

  • --autofix - 自动格式化JSON文件
  • --indent ... - 控制缩进(可以是表示空格数的数字或空白字符串)。默认为2个空格。
  • --no-ensure-ascii 保留Unicode字符而不是将其转换为转义序列
  • --no-sort-keys - 在自动修复时,保留原始键顺序(而不是排序键)
  • --top-keys comma,separated,keys - 要保留在映射顶部键。

requirements-txt-fixer

对requirements.txt和constraints.txt中的条目进行排序,并删除pkg-resources==0.0.0的不正确条目

sort-simple-yaml

对只包含顶级键的简单YAML文件进行排序,同时保留注释和块。

请注意,sort-simple-yaml默认不匹配任何files,因为它强制执行一个非常具体的格式。您必须通过设置files来选择加入此功能,例如

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

trailing-whitespace

删除尾随空格。

  • 要保留Markdown 硬换行符,请使用args: [--markdown-linebreak-ext=md](或您的Markdown文件使用的其他扩展)(或使用--markdown-linebreak-ext=*将所有文件视为Markdown)。
  • 默认情况下,此钩子删除行尾的所有空白。要指定要删除的自定义字符集,请使用args: [--chars,"<chars to trim>"]

已弃用/已替换钩子

  • check-byte-order-marker:改用fix-byte-order-marker

作为独立包

如果您想使用这些钩子,它们也作为独立包提供。

只需pip install pre-commit-hooks

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

pre_commit_hooks-4.6.0.tar.gz (29.6 kB 查看散列值)

上传时间 源代码

构建分发

pre_commit_hooks-4.6.0-py2.py3-none-any.whl (41.2 kB 查看散列值)

上传时间 Python 2 Python 3

由以下组织支持