Release Notes
Released on 2026-09-17.
Preview features
- Ignore Python version from uv metadata (#28646)
- Watch script dependencies in CLI watch mode (#28125)
CLI
- Only skip uv workspace metadata for a single script (#28581)
- Support dependency lints with
--config-file(#28573)
LSP server
- Filter string literal completions by typed text (#28612)
- Find member references across files (#28669)
- Find parameter references across files (#28670)
- Preserve valid LSP settings when configuration resolution fails (#28653)
- Reuse identifier matcher in LSP operations (#28663)
- Watch script dependencies in the language server (#28522)
Diagnostic improvements
- Add an autofix for unused awaitables (#28668)
- Add annotations for unreachable code caused by boolean operands (#28521)
- Add subdiagnostics to
redundant-conditionrules warning about reachability implications (#28263) - Clarify diagnostics for unimplemented abstract members (#28538)
- Extend unreachable-code annotations to
while,assert, andmatchstatements (#28290)
Core type checking
- Allow experimental intersection syntax in PEP 695 aliases (#28513)
- Bound aliased intersection expansion during inference (#28546)
- Check declared variance against final method bindings (#28155)
- Fix recursive protocol checks for decorated methods (#28293)
- Freshen constructor-owned Self with class type variables (#28592)
- Improve disjointness of
functools.partialtypes (#28660) - Include constraint-set assignability in more checks (#28642)
- Infer conditional literals from peers in unspecialized contexts (#28633)
- Infer generic elements from gradual tuples (#28637)
- Introduce
Recursivetypes and fully support recursive implicit type aliases (#28425) - Narrow type context during tuple inference (#28658)
- Preserve field metadata after overload resolution (#28635)
- Preserve gradual class assignability in constraint-set checks (#28638)
- Preserve gradual tuple lengths during callable inference (#28588)
- Preserve tuple shapes during concatenation (#28617)
- Reject abstract class instantiation (#28167)
- Respect
frozen=Falseoverrides on Pydantic subclasses (#28515) - Support
type[A & B](#27124) - Sync vendored typeshed stubs (#28597). Typeshed diff
- Treat imports as bindings instead of declarations (#27325)
Performance
- Compact reachable binding and declaration histories (#28349)
- Compare bound-method receivers before signatures (#28384)
- Deduplicate intermediate intersection branches (#28649)
- Optimize fuel management in the constraint solver (#28568)
- Skip inferring concrete methods during abstract-method discovery (#28613)
- Skip legacy namespace parsing for
__init__files withoutpkg(#28665)
Memory usage improvements
- Avoid storing constraint nodes twice (#28375)
Contributors
Install ty 0.0.82
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.82/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.82/ty-installer.ps1 | iex"Download ty 0.0.82
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/tyYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>