GitHub
04/21/2026, 3:46 PMty from 0.0.29 to 0.0.30
Release notes
Sourced from ty's releases.
0.0.30
Release Notes
Released on 2026-04-13.
As of v0.0.30, ty no longer unionsinto most inferred types of unannotated attributes. For example:Unknown
class Foo:
def __init__(self) -> None:
self.value = 1
reveal_type(Foo().value) # revealed: int
Foo().value = "x" # error: [invalid-assignment]
In previous versions,would have includedreveal_type(Foo().value), so the assignment toUnknownwould 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"x"and other non-literal singleton types remain exceptions. See #24531 for details.None
Bug fixes
• Disallow bareinParamSpecprefixes (#24474)Concatenate
• Ensure '/' parameter appears before '*' when renderingtypes (#24497)Callable
• Ensure nested conditional blocks inheritstate from outer blocks (#24470)TYPE_CHECKING
• Fix bad diagnostic range for incorrect implicitcalls (#24541)__init_subclass__
• Fix incorrect assignability ofto a metaclass (#24515)type[T]
• Fix stack overflows from recursive types (#24413)
• Server: fix signature help for-specialized class calls (#24399)ParamSpec
• Usefield types as type context to inform the inference of arguments passed toTypedDictconstructors (#24422)TypedDict
LSP server
• Adjust semantic tokens implementation to ensure that type alias values have "type form" syntax highlighting in IDEs (#24478)
• Completions: rank symbols fromandtypinghigher than third party re-exports (#23643)collections
• Ignore unsupported editor-selected Python versions (#24498)
• Improveconstructor support in the LSP by synthesizingTypedDict(#24476, #24522, #24535)__init__
• Return all attribute definitions for goto definition, rather than just the last definition in the given scope (#24332)
• Showsubdiagnostics in LSP diagnostic messages (#24328)info
• 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 functionalsyntax (#23602, #24570, #24571)Enum(...)
• Allowvariable assignments inFinal(#24529)__post_init__
• Allow partially stringified... (truncated) Changelog Sourced from ty's changelog.annotations, e.g.type[...](#24518)type["MyClass"]
0.0.30
Released on 2026-04-13.
As of v0.0.30, ty no longer unionsinto most inferred types of unannotated attributes. For example:Unknown
class Foo:
def __init__(self) -> None:
self.value = 1
reveal_type(Foo().value) # revealed: int
Foo().value = "x" # error: [invalid-assignment]
In previous versions,would have includedreveal_type(Foo().value), so the assignment toUnknownwould 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"x"and other non-literal singleton types remain exceptions. See #24531 for details.None
Bug fixes
• Disallow bareinParamSpecprefixes (#24474)Concatenate
• Ensure '/' parameter appears before '*' when renderingtypes (#24497)Callable
• Ensure nested conditional blocks inheritstate from outer blocks (#24470)TYPE_CHECKING
• Fix bad diagnostic range for incorrect implicitcalls (#24541)__init_subclass__
• Fix incorrect assignability ofto a metaclass (#24515)type[T]
• Fix stack overflows from recursive types (#24413)
• Server: fix signature help for-specialized class calls (#24399)ParamSpec
• Usefield types as type context to inform the inference of arguments passed toTypedDictconstructors (#24422)TypedDict
LSP server
• Adjust semantic tokens implementation to ensure that type alias values have "type form" syntax highlighting in IDEs (#24478)
• Completions: rank symbols fromandtypinghigher than third party re-exports (#23643)collections
• Ignore unsupported editor-selected Python versions (#24498)
• Improveconstructor support in the LSP by synthesizingTypedDict(#24476, #24522, #24535)__init__
• Return all attribute definitions for goto definition, rather than just the last definition in the given scope (#24332)
• Showsubdiagnostics in LSP diagnostic messages (#24328)info
• 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 en…meltano/meltano
GitHub
04/21/2026, 4:09 PM