TheAlgorithms / TheAlgorithms/Python

Tracking: complete the `ty` gradual-typing baseline (un-ignore rules; PEP 723 blocker astral-sh/ty#691)

Đang mở
#15,187 8 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

hacktoberfest help wanted tracking issue
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:

  1. Pick one ignored rule from the list above.
  2. Fix the files that trip it — add annotations / correct signatures — as bite-sized good-first-issues. unresolved-import is largely environment noise (third-party stubs) and should be handled by making sure uv sync installs the dep, not by editing code.
  3. 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.
  4. 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 + set continue-on-error: false to make ty a 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

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.