TheAlgorithms / TheAlgorithms/Python
Tracking: complete the `ty` gradual-typing baseline (un-ignore rules; PEP 723 blocker astral-sh/ty#691)
还没有人认领这个 Issue。
- 主要语言
- Python
- 星标
- 225k
- 派生
- 51.1k
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 156
描述
Summary
Follow-up to #15180, which added an informational ty type-check job (.github/workflows/ty.yml, continue-on-error: true, ty check --exit-zero). This issue tracks what it takes to turn that advisory job into a required gate as type hints are added to the algorithms gradually, and records the current blockers.
How the gradual baseline works today
pyproject.toml [tool.ty] pins the interpreter and currently ignores 15 rules so the informational job starts from a green-ish baseline instead of drowning in noise:
call-non-callable, deprecated, invalid-argument-type, invalid-assignment,
invalid-parameter-default, invalid-return-type, invalid-type-arguments,
invalid-type-form, no-matching-overload, not-iterable, not-subscriptable,
parameter-already-assigned, unresolved-attribute, unresolved-import,
unsupported-operator
Requirements to "complete" the work
The work is done rule-by-rule, matching how typing is added to the algorithms incrementally:
- Pick one ignored rule from the list above.
- Fix the files that trip it — add annotations / correct signatures — as bite-sized good-first-issues.
unresolved-importis largely environment noise (third-party stubs) and should be handled by making sureuv syncinstalls the dep, not by editing code. - Un-ignore the rule: delete its
rules.<name> = "ignore"line in[tool.ty]once its diagnostic count is zero on a synced 3.14 env. - When all rules are un-ignored and the baseline is clean, follow the promotion path documented inline in
ty.yml:--exit-zero→--exit-zero-on-warning→ drop the flag + setcontinue-on-error: falseto maketya required check.
Blocker: PEP 723 single-file scripts (astral-sh/ty#691)
ty treats a # /// script inline-metadata file as its own project, so it does not inherit the repo's [tool.ty] rule severities. Those files therefore surface the "ignored" diagnostics regardless of config, which will produce false failures the moment any rule is promoted to error. Until astral-sh/ty#691 lands, the options are:
- run the gate with
ty check --exclude-scripts(skips PEP 723 files), or - keep the job informational for script files specifically.
Un-ignoring rules for the non-script bulk of the repo can proceed in parallel and does not need to wait on #691.
Note on ty check --fix
For the record (asked on #15180): on the current tree, ty check --fix reports 0 fixed, 36 remaining — i.e. no changes, as expected. ty 0.0.74 ships no autofixes for any of these diagnostic categories yet, and it has no --unsafe-changes flag (the safe/unsafe fix split is a ruff feature ty hasn't implemented). So there is nothing for a "--fix results" PR to contain right now; this is worth revisiting once ty grows fix support.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 pyproject.toml 开始,选择一条被忽略的 ty 规则,然后在 Python 3.14 上执行 uv sync 后运行现有的 .github/workflows/ty.yml 检查。修复该规则报告的文件,并在移除其 ignore 条目之前确认其诊断计数达到零。请注意 PEP 723 脚本,因为 astral-sh/ty#691 阻止将它们视为仓库基线的一部分。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- ci-cd, tooling
- Issue 类型
- 功能
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 活跃
- 描述清晰度
- 基本清楚
- 新手友好度
- 42/100