Gawain 先检查 Python 代码里的变量、参数、返回值和类属性有没有写类型注解,缺了就报错,补齐之后才交给 ty 或 pyrefly 检查类型对不对。作者在 Show HN 展示了这个开源工具。
普通类型检查器遇到没写注解的变量,会自己推断类型。ruff 的 ANN 规则查的是函数注解。Gawain 把变量和类属性也算进来,像 README 里的 total = compute(),没写类型就会被报缺少注解。
默认模式留了余地:retries = 3 这种一眼能看出类型、之后也不再重新赋值的变量,第一次赋值可以不写注解,之后用 += 累加不算重新赋值。赋值为 None、空容器或 load() 的返回值时,就没有这个豁免,还是要写注解。
显示更多