Releases: astral-sh/ty
0.0.32
Release Notes
Released on 2026-04-20.
Bug fixes
- Fix panic when
__get__usesConcatenateself-type and wraps a__call__(#24692) - Avoid panicking on overloaded
Callabletype context (#24661) - Expand class bases in per-base lint checks (#24695, #24699)
- Fix stack overflow for binary operator inference involving recursive types (#24551)
LSP server
- Dim out unreachable code in IDEs (#24580)
- Do not suggest argument completion when typing the value of a keyword argument (#24669)
- Retrieve the docstring from the overload implementation if an
@overload-decorated function has no docstring (#23920)
Core type checking
- Allow
ifstatements in TypedDict bodies (#24702) - Disallow
@disjoint_baseon TypedDicts and Protocols (#24671) - Do not consider a subclass of a
@dataclass_transform-decorated class to have dataclass-like semantics if it hastypein its MRO (#24679) - Reject using properties with
Neversetters or deleters (#24510) - Sync vendored typeshed stubs (#24646). Typeshed diff
Diagnostics
- Show error context for assignability diagnostics (#24309)
- Use partially qualified names when reporting diagnostics regarding bad calls to methods (#24560)
- Reduce source code context window to zero (#24689)
- Merge same-file annotations if there is only a single line separating them (#24694)
Performance
Contributors
- @JelleZijlstra
- @kc0506
- @denyszhak
- @carljm
- @dcreager
- @AlexWaygood
- @dylwil3
- @charliermarsh
- @sharkdp
- @ibraheemdev
Install ty 0.0.32
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.32/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.32/ty-installer.ps1 | iex"Download ty 0.0.32
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>0.0.31
Release Notes
Released on 2026-04-15.
Bug fixes
- Avoid panic from double inference for
namedtuple(typename=T, field_names=x, **{})(#24641) - Avoid panic from double inference with missing functional
Enum(...)names (#24638) - Avoid panic from double inference with functional
Enum(value=...)(#24639) - Fix cases where
invalid-keyfix doesn't converge, andoverride-of-final-methodproduces invalid syntax (#24649) - Fix unnecessary
ty:ignorecomments inserted by--add-ignorefor diagnostics starting on the same line (#24651)
CLI
- Add
--fixmode to enable auto-fix for diagnostics (#24097)
Performance
- Avoid excessive memory usage for dataclasses with many fields (#24620)
Core type checking
- Check inherited
NamedTuplefield conflicts (#24542) - Error when duplicate keywords are provided to TypedDict constructors (#24449)
- Respect mixed positional and keyword arguments in TypedDict constructor (#24448)
- Respect subclass shadowing for inherited NamedTuple fields (#24640)
- Skip
EnumMeta.__call__for enum constructor signatures (#24513)
Contributors
Install ty 0.0.31
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.31/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.31/ty-installer.ps1 | iex"Download ty 0.0.31
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>0.0.30
Release Notes
Released on 2026-04-13.
As of v0.0.30, ty no longer unions Unknown into most inferred types of unannotated attributes. For example:
class Foo:
def __init__(self) -> None:
self.value = 1
reveal_type(Foo().value) # revealed: int
Foo().value = "x" # error: [invalid-assignment]In previous versions, reveal_type(Foo().value) would have included Unknown, so the assignment to "x" would not have been flagged. Since this can affect inferred attribute types throughout a codebase, upgrading may lead to both new and resolved diagnostics. Initializers of None and other non-literal singleton types remain exceptions. See #24531 for details.
Bug fixes
- Disallow bare
ParamSpecinConcatenateprefixes (#24474) - Ensure '/' parameter appears before '*' when rendering
Callabletypes (#24497) - Ensure nested conditional blocks inherit
TYPE_CHECKINGstate from outer blocks (#24470) - Fix bad diagnostic range for incorrect implicit
__init_subclass__calls (#24541) - Fix incorrect assignability of
type[T]to a metaclass (#24515) - Fix stack overflows from recursive types (#24413)
- Server: fix signature help for
ParamSpec-specialized class calls (#24399) - Use
TypedDictfield types as type context to inform the inference of arguments passed toTypedDictconstructors (#24422)
LSP server
- Adjust semantic tokens implementation to ensure that type alias values have "type form" syntax highlighting in IDEs (#24478)
- Completions: rank symbols from
typingandcollectionshigher than third party re-exports (#23643) - Ignore unsupported editor-selected Python versions (#24498)
- Improve
TypedDictconstructor support in the LSP by synthesizing__init__(#24476, #24522, #24535) - Return all attribute definitions for goto definition, rather than just the last definition in the given scope (#24332)
- Show
infosubdiagnostics in LSP diagnostic messages (#24328) - Use the context of the kind of object a parameter is expected to receive to inform syntax highlighting of arguments passed to call expressions (#23949)
Diagnostics
- Hide "Rule xyz is enabled"-style hints unless verbose mode was specified (#24469)
- Improve consistency of pedantic lints complaining about badly named types (#24575)
- Point to the first reachable declaration, rather than the first declaration, in declaration-based diagnostics (#24564)
Core type checking
- Add support for functional
Enum(...)syntax (#23602, #24570, #24571) - Allow
Finalvariable assignments in__post_init__(#24529) - Allow partially stringified
type[...]annotations, e.g.type["MyClass"](#24518) - Emit a diagnostic when attempting to inherit from a class with
__init_subclass__ = None(#24543) - Fix
TypeGuardandTypeIsnarrowing for unbound method calls (#24612) - Fix assignability of intersections with bounded TypeVars (#24502)
- Fix excess subscript argument inference for non-generic types so that
list[int][0]leads to 1 diagnostic, rather than 2 (#24354) - Inherit
dataclass_transformmetadata from metaclass bases (#24615) - Lazily evaluate declaration reachability in field and enum filters (#24451)
- Normalize explicit
Noneaccessors in manual property construction (#24492) - Reject deleting
Finalattributes (#24508) - Respect non-required keys in
TypedDictunpacking (#24446) - Respect property deleters in attribute deletion checks (#24500)
- Stop special-casing
strconstructor (#24514) - Stop unioning
Unknowninto types of un-annotated attributes (#24531) - Support
super()in metaclass methods (#24483) - Tighten up a few edge cases in
Concatenatetype-expression parsing (#24172) - Use basic blocks for determining if a node is in an
if TYPE_CHECKINGblock (#24394)
Contributors
- @charliermarsh
- @Glyphack
- @MichaReiser
- @sharkdp
- @carljm
- @YilunAllenChen
- @zanieb
- @AlexWaygood
- @thejchap
Install ty 0.0.30
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.30/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.30/ty-installer.ps1 | iex"Download ty 0.0.30
| 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-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](https://releases.astral.sh/github/ty/releases/download/0.0.30/t... |
0.0.29
Release Notes
Released on 2026-04-05.
Bug fixes
- Avoid special-casing for
dataclasses.fieldif it's not infield_specifiers(#24397) - Reject unsupported
environment.python-versionvalues in configuration files (#24402) - Respect supported lower bounds from
requires-python(#24401)
Core type checking
- Add support for
types.new_class(#23144) - Fix PEP 695 type aliases in
withstatement (#24395) - Respect
__new__and metaclass__call__return types (#24357) - Treat enum attributes with type annotations as members (#23776)
Contributors
Install ty 0.0.29
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.29/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.29/ty-installer.ps1 | iex"Download ty 0.0.29
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>0.0.28
Release Notes
Released on 2026-04-02.
Bug fixes
- Mark loop header assignments as used to avoid false positives in "unused variable" diagnostics (#24336)
LSP server
- Show constructor signature of classes when hovering over them (#24257)
Core type checking
- Avoid emitting cascading diagnostics when parsing invalid type expressions (#24326)
- Handle most "deep" mutual TypeVar constraints (#24079)
- Improve consistency and quality of diagnostics relating to invalid type forms (#24325)
- Improve robustness of various type-qualifier-related checks (#24251)
- Infer the
extra_itemskeyword argument to class-based TypedDicts as an annotation expression (#24362) - Use bidirectional inference to fix false positives on operations such as
x: list[int | None] = [None] * 2(#24197) - Sync vendored typeshed stubs (#24340). Typeshed diff
- Tighten up validation of subscripts and attributes in type expressions (#24329)
- Use
infer_type_expressionfor parsing parameter annotations and return-type annotations (#24353) - Use
infer_type_expressionfor validating PEP-613 type aliases (#24370) - Validate TypedDict fields when subclassing (#24338)
- Validate type qualifiers in functional TypedDict fields and the
extra_itemskeyword to functional TypedDicts (#24360) - Improve diagnostics for invalid functional
TypedDicts (#24345)
Contributors
Install ty 0.0.28
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.28/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.28/ty-installer.ps1 | iex"Download ty 0.0.28
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>0.0.27
Release Notes
Released on 2026-03-31.
Bug fixes
- Fix panic on debug builds when attempting to provide autocomplete suggestions for
list[int]<CURSOR>()(#24167) - Fix instance-attribute lookup in methods of protocol classes (#24213)
- Fix nested global and nonlocal lookups through forwarding scopes (#24279)
- Fix panic on
list[Annotated[()]](#24303) - Fix stack overflow on
type A = TypeIs[Callable[[], A]](#24245) - Use
_clsas the name of the first argument for synthesizedcollections.namedtupleconstructor methods (#24333)
LSP server
- Fix semantic token classification for properties accessed on instances (#24065)
- Grey out unused bindings in the editor (#23305)
Core type checking
- Add bidirectional type context for TypedDict
get()defaults (#24231) - Add bidirectional type context for TypedDict
pop()defaults (#24229) - Add support for functional TypedDict (#24174, #24331, #24295)
- Ban type qualifiers in PEP-695 type aliases (#24242)
- Enforce
Finalattribute assignment rules for annotated and augmented writes (#23880) - Improve support for
Callabletype context (#23888) - Infer lambda expressions with
Callabletype context (#22633) - Don't incorrectly infer the type of a method as being a singleton type when it's accessed off an instance (#24039)
- Propagate type context through
awaitexpressions (#24256) - Resolve union-likes in emitting union attribute errors (#24263)
- Show the user where the variable was declared as
Finalwhen emitting a diagnostic about aFinalvariable being reassigned (#24194)
Contributors
Install ty 0.0.27
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.27/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.27/ty-installer.ps1 | iex"Download ty 0.0.27
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>0.0.26
Release Notes
Released on 2026-03-26.
Bug fixes
- Prevent "too many cycle iteration" panics in more situations (#24061)
- Fix false positives and false negatives when unpacking a union of tuples into a function call (#23298)
Core type checking
- Add support for
typing.Concatenate(#23689) - Validate the return type of generator functions (#24026)
- Support dataclass field
converters (#23088) - Disallow
Selfin metaclass and static methods (#23231) - Improve call inference for keyword-only
dict()(#24103) - Respect non-explicitly defined
dataclass_transformparams (#24170) - Unconditionally silence diagnostics in unreachable code (#24179)
- Respect terminal-function-call narrowing in global scope (#23245)
Performance
- Fix performance regression for narrowing on a larger
Literaltype(#24185)
Contributors
Install ty 0.0.26
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.26/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.26/ty-installer.ps1 | iex"Download ty 0.0.26
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>0.0.25
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>0.0.24
Release Notes
Released on 2026-03-19.
Bug fixes
- Ensure
TypedDictsubscripts for unknown keys returnUnknown(#23926) - Fix overflow with recursive
TypeIs(#23784) - Fix variance of frozen dataclass-transform models (#23931)
LSP server
- Improve semantic token classification for attribute access on union types (#23841)
Core type checking
- Improve performance and correctness by avoiding inferring intersection types for call arguments as a result of bidirectional inference (#23933)
- Narrow keyword arguments when unpacking dictionary instances (#23436)
- Discover
/usr/local/libdist-packages on Debian/Ubuntu (#23797) - Sync vendored typeshed stubs (#23963). Typeshed diff
Install ty 0.0.24
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-installer.ps1 | iex"Download ty 0.0.24
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>0.0.23
Release Notes
Released on 2026-03-13.
Bug fixes
- Fix false-positive diagnostics for PEP-604 union annotations on attribute targets on Python 3.9 when
from __future__ import annotationsis active (#23915) dataclass_transform: Respectkw_onlyoverwrites in dataclasses (#23930)- Fix too-many-cycle panics when inferring loop variables with
Literaltypes (#23875)
Server
- Fix folding range classification of lines starting with
#(#23831) - Fix folding ranges for notebooks (#23830)
Core type checking
- Split errors for possibly missing submodules into a new
possibly-missing-submoduleerror code (enabled by default), and makepossibly-missing-attributeignored by default (#23918) - Improve handling of bidirectional inference when (#23844)
- Fix inference of conditionally defined properties (#23925)
Improvements to diagnostics
- Clarify in diagnostics that
from __future__ import annotationsonly stringifies type annotations (#23928)
Performance improvements
- Avoid duplicated work during multi-inference (#23923)
Contributors
Install ty 0.0.23
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.23/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.23/ty-installer.ps1 | iex"