github astral-sh/ty 0.0.85

4 hours ago

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-union rule (#28889)
  • Avoid disjoint-cast diagnostics 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

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 | sh

Install 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

File Platform Checksum
ty-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
ty-x86_64-apple-darwin.tar.gz Intel macOS checksum
ty-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
ty-i686-pc-windows-msvc.zip x86 Windows checksum
ty-x86_64-pc-windows-msvc.zip x64 Windows checksum
ty-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
ty-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
ty-powerpc64-unknown-linux-gnu.tar.gz PPC64 Linux checksum
ty-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
ty-riscv64gc-unknown-linux-gnu.tar.gz RISCV Linux checksum
ty-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
ty-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
ty-armv7-unknown-linux-gnueabihf.tar.gz ARMv7 Linux checksum
ty-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
ty-i686-unknown-linux-musl.tar.gz x86 MUSL Linux checksum
ty-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum
ty-arm-unknown-linux-musleabihf.tar.gz ARMv6 MUSL Linux (Hardfloat) checksum
ty-armv7-unknown-linux-musleabihf.tar.gz ARMv7 MUSL Linux checksum

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/ty

You 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>

Don't miss a new ty release

NewReleases is sending notifications on new releases.