如何让ty类型检查器仅检查Git版本控制下的文件?
让ty仅检查Git版本控制文件的解决方案
在Python项目中使用ty作为pre-commit的类型检查工具时,要避免它检查未加入Git的临时文件,可通过以下几种方法实现:
方法1:修改pre-commit钩子,仅传递Git跟踪文件
编辑项目根目录的.pre-commit-config.yaml,找到ty的钩子配置,调整为:
- repo: https://github.com/astral-sh/ty-pre-commit rev: v0.10.0 # 替换为你实际使用的版本号 hooks: - id: ty pass_filenames: false args: ["$(git ls-files '*.py' '*.ipynb')"]
该配置通过git ls-files命令获取所有Git已跟踪的.py和.ipynb文件,让ty仅对这些文件执行检查,完全跳过未纳入版本控制的临时文件。如果你的临时文件涉及其他后缀,只需扩展git ls-files后的匹配模式即可。
方法2:通过ty配置忽略特定临时文件
若临时文件命名有固定规律(比如你常用的x.py、x.ipynb),可在项目的pyproject.toml中添加ty的排除规则:
[tool.ty] exclude = [ "^x\\.py$", "^x\\.ipynb$", # 可按需添加更多临时文件的正则匹配规则 ]
这种方法无需修改pre-commit钩子,直接通过ty自身的配置过滤掉指定临时文件。
方法3:限制pre-commit的文件扫描范围
虽然pre-commit的files参数是基于文件名正则匹配,但结合pass_filenames: false和Git命令的方式(即方法1)是最可靠的,因为它直接基于Git的跟踪状态筛选文件,不会误判。
内容的提问来源于stack exchange,提问作者Daniel Darabos
相关产品推荐
相关产品推荐

