TheAlgorithms / TheAlgorithms/Python
Tracking: complete the `ty` gradual-typing baseline (un-ignore rules; PEP 723 blocker astral-sh/ty#691)
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 225k
- Fork
- 51.1k
- Merge trung bình
- 1 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 156
Mô tả
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.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với pyproject.toml để chọn một quy tắc ty đang bị bỏ qua, sau đó chạy check hiện có của .github/workflows/ty.yml sau uv sync trên Python 3.14. Sửa các tệp được báo cáo cho quy tắc đó và xác nhận số lượng chẩn đoán của quy tắc đạt đến 0 trước khi xóa mục ignore của nó. Hãy lưu ý đến các script PEP 723 vì astral-sh/ty#691 ngăn việc coi chúng là một phần của baseline của repository.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- ci-cd, tooling
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 42/100