Repository navigation
Immutable
release. Only release title and notes can be modified.
Release Notes
Released on 2026-10-06.
Preview features
- Refresh uv project metadata when uv files change (#28529)
Bug fixes
- Avoid recursive lambda class decorator panics (#28984)
- Compare observable notebook state for equality (#28874)
- Detect recursive alias cycles through intersections (#28916)
- Fix anchoring of include and exclude patterns after the project's root changed (#28995)
- Fix stack overflow when inferring dynamic class metaclasses (#28917)
- Normalize recursive dataclass transform metadata (#28920)
- Normalize recursive TypedDicts during cycle recovery (#28918)
- Preserve cycle markers in ParamSpec specialization (#29024)
CLI
- Prefer existing @ paths over response files in Ruff and ty (#28877)
LSP server
- Add namespace package support to import completions. (#28202)
- Avoid stale I/O diagnostics when closing deleted files (#28988)
- Contain rendered code within Markdown fences (#28869)
- Refresh Python settings when virtual environments change (#28650)
Diagnostic improvements
- Add opt-in
truthiness-test-of-none-unionrule (#28889) - Avoid
disjoint-castdiagnostics in situations where the value could have been inferred as being compatible with the casted type if it had only been inferred with the right type context (#28851) - Bound nested callable signature display (#29049)
- Explain outdated uv versions in metadata errors (#28959)
- Improve display of string literal types that include unicode characters or double quotes (#29089)
- Improve uv metadata diagnostics (#28990)
- Preserve constrained type-variable failure diagnostics (#28768)
- Preserve generic inference errors during diagnostic recovery (#28811)
- Report deprecated overloads in decorator applications (#28999)
Core type checking
- Bound methods without a receiver are not callable (#28981)
- Fix member lookup on union-bounded type variables (#29018)
- Fix type variable inference for final class objects (#29097)
- Freshen ParamSpec identities consistently (#28826)
- Honor generic property setters in protocol compatibility (#28562)
- Infer nominal generic specializations from bounded type variables (#28812)
- Inherit annotations for unannotated subclass defaults (#28575)
- Keep unresolved TypeIs targets provisional (#29066)
- Limit wildcard exports using literal
__all__(#28972) - Narrow later match cases after always-true guards (#28960)
- Pass generic context to call inference solver (#29065)
- Preserve captured variables in ParamSpec comparisons (#28827)
- Preserve intersection receivers in implicit dunder calls (#28833)
- Preserve literal unpacking during call analysis (#28821)
- Preserve recursive type context during constructor inference (#28903)
- Preserve tuple shapes when slicing NewTypes (#29091)
- Preserve tuple subclass identity during type expansion (#29090)
- Promote bounded type variables to declared constraints (#28814)
- Propagate outer type context through cast calls (#28855)
- Recognize bare
TypeVarTuples in materialization checks (#28815) - Retain individual overload argument expansion outcomes (#28825)
- Specialize instance members once (#29043)
- Specialize Self bounds through generic type aliases (#28890)
- Support slots_default in dataclass_transform (#28885)
- Sync vendored typeshed stubs (#29032). Typeshed diff
- Sync vendored typeshed stubs (#29042). Typeshed diff
- Validate call arguments once after inference (#28824)
- Validate union operands involving None (#28931)
Performance
- Avoid expanding recursive protocol materializations (#29026)
- Avoid repeated work in nested match patterns (#28926)
- Cache the flattened module list (#28932)
- Index nonlocal bindings when sweeping snapshots (#28935)
- Skip descendant searches for leaf modules (#28845)
- Skip independent constraint-pair derivation (#28950)
- Skip storing default definition states (#28934)
Memory usage improvements
- Avoid caching empty sequent maps (#28949)
- Avoid retaining docstring literal types (#28944)
- Compact bound-method receivers (#28969)
- Move ParamSpec signature metadata to extras (#28970)
- Release closed module ASTs synchronously during auto-import discovery (#28714)
- Skip caching trivially assignable types (#28936)
Contributors
- @dhruvmanila
- @carljm
- @sharkdp
- @gorewilliams
- @AlexWaygood
- @ibraheemdev
- @MichaReiser
- @charliermarsh
- @zsol
- @lerebear
Install ty 0.0.85
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.85/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.85/ty-installer.ps1 | iex"Download ty 0.0.85
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>