TheAlgorithms / TheAlgorithms/Python
Tracking: complete the `ty` gradual-typing baseline (un-ignore rules; PEP 723 blocker astral-sh/ty#691)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 225k
- Forks
- 51.1k
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 156
Description
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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with pyproject.toml to select one ignored ty rule, then run the existing .github/workflows/ty.yml check after uv sync on Python 3.14. Fix the files reported for that rule and confirm its diagnostic count reaches zero before removing its ignore entry. Keep PEP 723 scripts in mind because astral-sh/ty#691 blocks treating them as part of the repository baseline.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- ci-cd, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100