Release Notes
Released on 2026-03-24.
Breaking changes
- Support
type:ignore[ty:code]suppressions (#24096)
Bug fixes
- Avoid eager TypedDict diagnostics in
TypedDict | dictunions (#24151) - Fix Salsa panic propagation (#24141)
- Fix folding ranges of comments separated by statements (#24132)
- Fix loop-header reachability cycles in conditional unpacking (#24006)
- Fix subtyping of intersections containing
NewTypes of unions vs. unions (#24087) - Fix untracked reads in Salsa queries that can lead to backdating panics (#24051)
- Prevent tainted loop bindings in cycle normalization (#24143)
- Simplify an intersection of
N & ~TtoNeverifB & ~Twould simplify toNever, whereBis the concrete base type of aNewTypeN(#24086)
LSP
- Preserve blank lines between comments and imports in add-import action (#24066)
Type checking
- Add diagnostic hint for invalid assignments involving invariant generics (#24032)
- Add precisely-typed overloads for
TypedDictupdate (#24101) - Disallow read-only fields in
TypedDictupdates (#24128) - Expand bounded typevars to their upper bounds when evaluating truthiness comparisons between intersections and literal types (#24082)
- Emit
reveal_typediagnostics in unreachable code (#24070) - Improve
isinstance()reachability analysis (#24077) - Improve keyword argument narrowing for nested dictionaries (#24010)
- Infer
yieldexpression types (#23796) - Reduce diagnostic range for
invalid-metaclass(#24145) - Support narrowing for extended walrus targets (#24129)
- Unions/intersections of gradual types should be assignable to
Never(#24056)
Contributors
Install ty 0.0.25
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.25/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.25/ty-installer.ps1 | iex"Download ty 0.0.25
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>