pypi ty 0.0.96

3 hours ago

Release Notes

Released on 2026-11-03.

Bug fixes

  • Fix a panic when checking protocols involving runtime type aliases (#29840)
  • Preserve Pydantic field metadata in quoted annotations (#29851)
  • Resolve class-local names in generic type aliases (#29915)

LSP server

  • Keep argument name hints display-only before later positional arguments or *args (#29801)
  • Keep argument name hints display-only when they would insert duplicate or invalid keywords (#29806)
  • Show field docstrings on hover for constructor keyword arguments (#29907)

CLI

  • Give NO_COLOR precedence over FORCE_COLOR and CLICOLOR_FORCE in diagnostics (#29898)
  • Honor color overrides in progress bars (#29891)
  • Respect FORCE_COLOR in ty check even when output is piped (#29830)

Diagnostic improvements

  • Avoid false redundant-cast diagnostics when casting the result of a generic call (#29835)

Core type checking

  • Infer type arguments for union parameters using constraints from the whole call (#29236)
  • Infer type arguments from generic TypedDict values passed to functions (#29903)
  • Sync vendored typeshed stubs (#29869). Typeshed diff

Performance

  • Avoid constraint solving when checking overlap between type variables in invariant positions (#29878)
  • Cache subscript method resolution (#29824)
  • Cache substitutions for generic type aliases (#29861)
  • Defer member lookup when checking overrides (#29866)
  • Find existing imports without scanning nested scopes (#29882)
  • Reuse class metadata during member lookup (#29864)
  • Reuse constructor bindings and defer looking up enclosing type variables (#29897)
  • Reuse generic argument contexts across calls (#29877)
  • Reuse inferred annotations when checking function returns (#29879)
  • Reuse inherited override checks across subclasses (#29867)
  • Reuse parameter unions when filtering overloads (#29823)
  • Short-circuit equivalence checks against Never (#29862)
  • Skip generic call inference when only a concrete receiver's Self needs binding (#29747)
  • Skip unrelated statement calls when checking a single condition (#29826)
  • Stop scanning package initializers once a legacy namespace declaration is found (#29885)

Memory usage improvements

  • Prevent exponential memory growth when narrowing unions of intersections by equality (#29904)

Contributors

Install ty 0.0.96

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.96/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.96/ty-installer.ps1 | iex"

Download ty 0.0.96

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