# What changed in ty

> 413 changes in ty 0.0 from its official release notes, upgrade guides and advisories: 23 breaking, 5 deprecations, 3 security, 20 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/pypi/ty/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## ty 0.0

### Breaking changes

- Enables the invalid-mutable-override rule by default. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Type checking now checks attribute and property override types. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- The default Python version is updated to 3.15. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Treats bound methods without a receiver as not callable. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Limits wildcard exports using a literal __all__. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Notebook files are no longer read when discovering scripts. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Rejects class-scoped type variables in __init__ receivers. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Rejects unsafe TypedDict updates from hidden fields. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Instantiating an abstract class is rejected. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Imports are treated as bindings instead of declarations. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Reassignment of enum members is now rejected. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Type checking reports override conflicts introduced by new bases. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Requires a direct dependency for reveal_type backport fixes. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Rejects missing attributes on type[] aliases. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Rejects circular type alias definitions. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Rejects class access to generic instance attributes. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Invalidates member narrowing across loop iterations. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Fixed tuples are rejected for non-inferable TypeVarTuples. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Incompatible constructor context is rejected for variadic packs. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Generator-expression exceptions are treated as eagerly evaluated. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Invalid module-level __getattr__ calls are diagnosed. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Protocol members now require ClassVar declarations. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Object members are considered when comparing protocols. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)

### Security

- macOS and Windows executables in release archives and ty wheels are signed, enabling publisher and binary integrity verification and supporting publisher-based allowlisting. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Fixes a use-after-free vulnerability that could allow arbitrary code execution when analyzing a specially crafted Python project; users running ty on untrusted code should upgrade. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Embeds archive checksums in the shell installer. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)

### Deprecations

- Reports deprecated overloads in decorator applications. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Deprecation diagnostics are reported for property accessors on intersections. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Deprecation diagnostics are reported for implicit constructor calls. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Deprecation diagnostics are reported for overloads, operators, and properties. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Deprecated unary operations are reported. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)

### New APIs and options

- This setting enables return type inference; it is disabled by default. (0.0.89) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.89)
- Adds the mismatched-sentinel-name rule as an opt-in diagnostic. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Supports slots_default in dataclass_transform. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Adds the opt-in truthiness-test-of-none-union rule. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Introduces Recursive types and full support for recursive implicit type aliases. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Adds support for type[A & B]. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Adds rules to detect conditions that are always truthy or always falsy. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- A new diagnostic rule reports disjoint casts. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Adds a preview rule that detects missing direct dependencies. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- A dedicated diagnostic is available for missing slots. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Tagged unions support multiple tags per type. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Adds executable discovery to the server command. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Supports pull diagnostics for notebook cells. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Adds support for __slots__. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Adds an opt-in rule for variables that diagnoses unsound assignments. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Adds the untrustedWorkspace option to the LSP. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Adds an opt-in diagnostic rule for function decorators that transform a non-dynamic type into a dynamic type. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Implements intersection meta-type projection in the type checker. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Adds an opt-in lint for unsound return statements. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Adds an opt-in lint for unsound yields. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)

### Performance

- Speeds up generic class-pattern narrowing by skipping impossible intersection comparisons. (0.0.89) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.89)
- Avoids constructing nominal complements. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Optimizes system path equality. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Constraints are shared in retained sequent maps to improve memory usage. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Reuses cached type alias inference for diagnostics. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Fuel management in the constraint solver is optimized. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Strings in dependency metadata are shared to improve memory usage. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Rendered union elements are reused when displaying types. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Reduces retained AST memory by shrinking expressions. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Avoids redundant superclass member inference. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Distributes len inference over unions. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Adds a fast path for concrete literal intersections. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Avoids repeated subtyping checks for materialized recursive protocols. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84), [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Recursive protocol checks for nested type variables are optimized. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Repeated inference is avoided for literal union call results. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Rejects impossible eager protocol comparisons early. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Avoids cubic narrowing with repeated assignments and context managers. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Avoids repeated traversal of shared alias arguments. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Infers function parameter default types lazily. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Optimizes inherited recursive protocol comparisons. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Avoids exponential narrowing of gradual string-literal unions. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- ty avoids deriving sequents for type variables with concrete bounds. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)

### Behavior and default changes

- ty supports inferring return types for unannotated functions and methods. (0.0.89) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.89)
- A bare generic class name is specialized when used in a type[...] type context. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Inherited dataclass field converters are specialized. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Empty collection branches are inferred from nonempty literals. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Recursion guards are avoided for non-generic nominal targets. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Promotes bounded type variables to declared constraints. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Import completions in the LSP server now support namespace packages. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Infers nominal generic specializations from bounded type variables. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Ruff and ty now prefer existing @ paths over response files when resolving command-line arguments. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- The LSP server refreshes Python settings when virtual environments change. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Rendered code is contained within Markdown fences in LSP output. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Specializes Self bounds through generic type aliases. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Inherits annotations for unannotated subclass defaults. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Refreshes uv project metadata when uv files change, so ty can use up-to-date project information. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Callable signatures are now inferred from bounded type variables. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Membership expressions with constant values in inline list and set literals can now be inferred as literal booleans. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Uses subtyping when determining constraint-set implication. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- External files use workspace editor settings. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Projects for external files are selected using import search paths. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- This diagnostic is disabled by default. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- The LSP server now supports requests against closed documents. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Inference now works through optional generic containers in the legacy solver. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Includes required imports in every inlay hint. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Eagerly binds unused Self receivers. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Allows slots to override abstract properties. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Generalizes receiver binding for wrapped callables. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Conditional literals are inferred from peers in unspecialized contexts. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Dependency lints are supported when using this CLI option. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Generic elements are inferred from gradual tuples. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Experimental intersection syntax is allowed in PEP 695 aliases. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- LSP string literal completions are filtered by the text already typed. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Preview behavior ignores the Python version from uv metadata. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Default exclude patterns are anchored at the project root. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Class objects are default-specialized during meta-protocol checks. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Existing autofixes receive descriptive titles in the LSP server. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Tuple variance is inferred from the full tuple specification and more precisely. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Narrows types with ordered length comparisons. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Infers variance through recursive protocols. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Lambda functions are always considered truthy. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- In preview, workspace metadata is refreshed when dependencies change. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Recursive receiver inference is stabilized. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Simplifies intersections with subtype-related generic specializations. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Infers lambda parameters through callable type aliases. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Superseded queued uv requests are now canceled. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Treats recursive types as fallback cycles only when they have unbounded specializations. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Warns when uv metadata cannot support dependency checks. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Refreshes uv project metadata in the background. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Signatures inferred from bound receivers are expanded. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Tuple type parameters are inferred from union arguments. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Mixed gradual tuple assignability is supported with TypeVarTuple. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- On Python 3.14 and newer, typing.Union is treated as a class. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Variance is inferred through nonrecursive protocol references. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Specializes type variables determined by bound receivers. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Infers generic protocols from class objects. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Supports unpacking tuple type aliases. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- The language server no longer prefers unsafe fixes. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- PEP 723 scripts can now be checked in isolation. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Pydantic accepts enum members for lax string and integer fields. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- TypeVarTuple is supported in call binding. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- ty models exception flow with operation checkpoints. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty infers type variables through nominal type[...] parameters. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- Supports Annotated inside type[...]. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- The LSP server enables and downranks auto-import completions from stub-only modules. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Recursive gradual type alias materialization is stabilized. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Variance is inferred through type[T]. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Generic-class narrowing with isinstance is more gradual by default; for example, list narrows to list[Unknown] instead of Top[list[Unknown]]. (0.0.69) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.69)
- Numeric tower displays are simplified, such as displaying float instead of int | float. (0.0.68) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.68)

### Tooling

- Reports assignments to individually frozen Pydantic fields. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Improves the display of distinct string literal types. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- The LSP server shows documentation for annotation operators on hover. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- The LSP server completes string keys from dictionary initializers. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Improves diagnostics for async generator stubs. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Improves primary diagnostic annotations for redundant-condition and redundant-condition-strict diagnostics. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Adds rules detecting suspicious uses of Callable, Iterable, Iterator, or Generator types in a boolean context. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Expands unreachable-code annotations for redundant conditions. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Preview CLI watch mode watches script dependencies. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- The language server watches script dependencies. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- LSP can find member references across files. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- LSP can find parameter references across files. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Rules add subdiagnostics warning about reachability implications. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Diagnostics for unimplemented abstract members are clarified. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Diagnostics annotate unreachable code caused by boolean operands, and annotations extend to while, assert, and match statements. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- An autofix is added for unused awaitables. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Suggests variable-length tuple annotations for redundant conditions. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Adds Find references support for pytest fixtures. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Checks direct dependencies in PEP 723 scripts. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Synchronizes PEP 723 script environments in the language server. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Highlights PEP 723 script metadata as TOML in the LSP server. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Moves script environment initialization to the CLI and LSP. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- More diagnostics have autofixes available. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- The CLI can initialize environments for PEP 723 scripts. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- The LSP server supports Go to Definition for pytest fixtures. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- The type checker resolves fixtures through conftest. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Highlights declarations in invalid-assignment diagnostics. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Improves LiteralString suggestions in string annotations. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- The type checker now models context managers that suppress exceptions. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- ty diagnoses invalid __getattribute__ calls. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty diagnoses invalid descriptor __get__ calls. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- ty diagnoses invalid __getattr__ calls. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- The checker suggests closing open TypedDict types to make them compatible with Mapping. (0.0.68) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.68)

### Fixes and other changes

- Avoids a panic when negating dynamic type aliases. (0.0.89) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.89)
- Reports invalid Generic and Protocol arguments containing nested variadic type variables. (0.0.89) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.89)
- Tuple literal lengths are widened when other collection elements contain nested tuple types. (0.0.89) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.89)
- Fixes checks through bounded or constrained type variables. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Preserves inherited annotations for unannotated subclass attributes when a base has type Any or Unknown. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Detects conflicts hidden by additional base classes. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Improves type inference for intersection arguments to generic functions. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Fixes false errors when overriding object attributes. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Preserves known module owners when uv reports owners outside the resolution. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Preserves common return-type structure when gradual arguments match multiple overloads. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Fixes false missing-argument errors when Pydantic models override inherited attributes with ClassVar. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Avoids panics and hangs involving recursive type aliases and intersections. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Checks upper bounds when inferring type variables from caller type variables. (0.0.88) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.88)
- Identical argument type diagnostics are deduplicated. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Suppression of attribute override diagnostics is respected. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Notebook cell lookups work correctly after cells with cell magics. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Notebook cell positions are clamped to the end of the cell. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Fixes a panic when requesting completions past the end of a notebook's last cell. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Type checking now checks overrides of receiver attribute declarations. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Infers the default for definitely absent keys in closed TypedDict.get calls. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Preserves minimum lengths when unpacking tuple unions. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Unpacking a variable-length argument leaves room for later positional arguments. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Fixes a deadlock when LSP requests arrive before workspace configuration. (0.0.87) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.87)
- Recursive structure in `Annotated` values is preserved. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- The CLI always shows fixes. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Dependency metadata is invalidated when environments change. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Literal types are preserved when dictionary literals are consumed. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Exact exclusions are checked before intersection positives. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Final attribute restrictions are preserved on composite types. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Non-boolean comparison results are preserved for intersections. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Tuple unions are narrowed through truthiness and type checks. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Unicode support is updated to Unicode 17. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Uninhabited truthiness is represented explicitly. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Receiver specializations are preserved when calling unions of bound methods. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Validity type context is solved through constraint sets. (0.0.86) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.86)
- Preserves constrained type-variable failure diagnostics. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- The LSP server avoids stale I/O diagnostics when a deleted file is closed. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Avoids reporting disjoint-cast diagnostics when the value could have been inferred as compatible with the cast type using the right type context. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Fixes a stack overflow when inferring dynamic class metaclasses. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Fixes type variable inference for final class objects. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Passes generic context to the call inference solver. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Preserves generic inference errors during diagnostic recovery. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Honors generic property setters when checking protocol compatibility. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Fixes include and exclude pattern anchoring after the project root changes. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Narrows later match cases after guards that are always true. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Bounds how nested callable signatures are displayed in diagnostics. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Validates union operands involving None. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Compares observable notebook state for equality. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Detects recursive alias cycles through intersections. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Avoids panics involving recursive lambda class decorators. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Improves display of string literal types containing Unicode characters or double quotes. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Preserves tuple shapes when slicing NewTypes. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Preserves tuple subclass identity during type expansion. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Recognizes bare TypeVarTuples in materialization checks. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Fixes member lookup on union-bounded type variables. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Metadata errors explain when the uv version is outdated, and uv metadata diagnostics are improved. (0.0.85) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.85)
- Preserves call narrowing during cyclic inference. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Fixes disjointness checking for generic class types. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Only reachable definitions are considered when deciding whether conditions defined relative to version, platform, OS, or type-checking state should be exempted. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Fixes stale LSP diagnostics after toggling this setting. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Fixes staticmethod shadowing through generic receivers and unions. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Preserves intersections of type guard return types. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Avoids incorrect simplification of TypeIs materializations. (0.0.84) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.84)
- Preserves inferred bindings during annotation cycles. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Represents bound methods more faithfully. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Respects fixed caller type variables when selecting constraints. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Classifies evidence bounds only for constrained type variables. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Points each misplaced tuple ellipsis diagnostic at the corresponding ellipsis. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Preserves fast name filtering for normalized Unicode source. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Preserves PEP 695 bindings across nested classes. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Preserves quoted aliases during cycle recovery. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Fixes hangs caused by repeated partial application. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Avoids leaking Unknown from unconstrained collection use-sites. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Diagnoses unguarded cycles in implicit and PEP 613 aliases. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Simplifies unions of disjoint exclusions. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Refreshes diagnostics after workspace configuration changes. (0.0.83) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.83)
- Declared variance is checked against final method bindings. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Field metadata is preserved after overload resolution. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Overrides of frozen=False on Pydantic subclasses are respected. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- The disjointness of functools.partial types is improved. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Valid LSP settings are preserved when configuration resolution fails. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Recursive protocol checks work for decorated methods. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Gradual tuple lengths are preserved during callable inference. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Tuple shapes are preserved during concatenation. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- The CLI skips uv workspace metadata only for a single script. (0.0.82) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.82)
- Fixes assignability of bounded typevars to intersection types. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Dependencies are resolved within correlated inference alternatives. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Descriptor detection now ignores divergent markers. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Type checking avoids rebinding extracted method calls. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Fixes MRO ordering for generic bases. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Glob characters in anchored directory paths are now escaped, preventing them from being interpreted as pattern syntax. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Type checking now handles gradual metaclass ancestry and conflicts. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Nominal descriptor checks preserve wrapped signatures. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Explicitly overridden constructor signatures are validated. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Union transformations preserve recursive metadata. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Type checking respects instance dictionary storage for slotted classes. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Narrowing tagged unions preserves runtime comparison semantics. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Fixes reduction of variadic partial signatures. (0.0.81) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.81)
- Fixes cached classmethods on generic classes. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Preserves callable identity across specialized types. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Fixes exclusion of directories when an ancestor is excluded. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Preserves wrapped functions in precise functools.partial relations. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Prevents the LSP server from hanging during bursts of inlay hints. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Preserves metaclass candidates after conflicts. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Unwraps union alternatives in overload implementations. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Preserves callback type context through ParamSpec forwarding. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Preserves redundant-condition diagnostics when operands are unreachable. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Respects the descriptor protocol for __set__ itself. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Fixes disjointness between type guards and boolean literals. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Respects type-variable bounds in argument context. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Checks captured receivers when calling wrapped classmethods. (0.0.80) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.80)
- Adds assert_never fixes for redundant final elif branches. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Adds await fixes for diagnostics about redundant conditions. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Preserves deprecations on decorated callables. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Avoids panics when typing is shadowed in dict keyword calls. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Solves formal unions using constraint-sets. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Preserves gradual type context during generic call inference. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Ensures f is identity(f) evaluates to Literal[True]. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Recovers cycles when constructing known class instances. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Discovers configs in models derived from legacy generic classes. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Adds Literal fixes for diagnostics that flag invalid type annotations. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Promotes literals in nested, non-covariant positions. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Fixes callable specialization with union-valued ParamSpec. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Preserves outer type variables during ParamSpec inference. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Preserves protocol intersections when narrowing gradual types. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Declares support for Python 3.15. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Normalizes recursive collection-use constraints. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Preserves nominal subtyping for top-materialized protocols. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Avoids falling back to Unknown when collecting type context constraints. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Aligns TypeIs narrowing with isinstance narrowing. (0.0.79) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.79)
- Captured bound-method receivers are treated covariantly. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Cyclic intersection simplification is deterministic. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Terminal-call reachability in cyclic cases is stabilized. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Diagnostics are deferred to avoid recursive-default cycles. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Deprecation diagnostics respect overload selection. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Generic protocol materialization relations are preserved. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Unsound intersection simplification for generic iterables is fixed. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Type variables are respected in top/bottom materializations. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Negative narrowing is fixed for protocols with gradual members. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Bindings inferred against type context are preserved. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Uncertain branches are preserved during quantification. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Type variable scopes are validated in constructors and aliases. (0.0.78) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.78)
- Condition truthiness is stabilized during cyclic inference. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Recursive protocol traversal in generic intersections is now bounded. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Generic receivers are preserved in implicit __init_subclass__ calls. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Deletions are propagated through nested loop headers. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Recursion guards are preserved across nested type operations. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Removing redundant casts now preserves syntax and comments. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Specialization is preserved for inherited TypedDict methods. (0.0.77) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.77)
- Fixes a panic in auto-completion involving bare declarations. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Preserves type variables in bounded generic defaults. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Preserves inferred types for unknown class-decorator results. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Validates declared variance in method signatures. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Preserves Final variance in stubs. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Narrows functional enum members in equality comparisons and match statements. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Fixes Goto definition behavior in script dependencies. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Uses the subclass receiver when checking method overrides. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Applies mixin specialization when validating enum members. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Avoids panics on incomplete protocol type parameter lists. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Guards recursive meta-type expansion. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Preserves parentheses when removing redundant casts. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Synchronizes saved script metadata on open. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Binds Self through generic type aliases. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Preserves short-circuit reachability for direct conditions. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Preserves list literal positions in starred unpacking. (0.0.76) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.76)
- Narrowing through branch-assigned conditions is made sound. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- collections.abc.Callable is recognized as an instance of type. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Equality inference accounts for known subclasses. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Correlated generic-call inference is preserved. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Generic protocol variance is validated. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Invariant materialization constraints are preserved. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Bounds of non-literal metaclasses are preserved. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Inconsistent binding decorators on overloads are ignored. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- PEP 723 script environments are refreshed in watch mode. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- The type checker resolves imported pytest fixture exposures. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- The type checker resolves fixture providers installed by core pytest. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Bounds of Self are specialized for inherited methods. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Self binding in ParamSpec protocols is corrected. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Diagnostics explain missing storage for declared slotted attributes. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Variance inference for TypedDict is corrected. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Bare TypeVarTuples are recovered in tuple annotations. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Diagnostic spans are improved for unpacked variable assignments. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Send and return types are inferred from the iterator returned by __iter__. (0.0.75) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.75)
- Recognizes ABC metaclass methods on protocols. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Uses invalid-type-form for annotations of non-generic classes. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Preserves string annotation context in lambda defaults. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Avoids duplicate bindings in multi-target assignments. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Skips scripts whose PEP 723 configuration is invalid. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Fixes stack overflow during recursive TypedDict dictionary compatibility checks. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Propagates narrowing through statically known branches. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Prevents panics on unpacked kwargs and handles assignment expressions and dynamic classes in string annotations; also skips invalid subscript arguments and operands. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Prevents stack overflow when checking recursive TypedDict dictionary compatibility and preserves string annotation context in TypedDict types. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Preserves keyword safety when checking unpacked callables. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Fixes how variadic signatures are displayed. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Handles file-valued workspace folders sent by Zed. (0.0.74) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.74)
- Several diagnostics now disambiguate types that share the same name. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Preserves declared types in exception handlers. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Preserves variadic generics when checking functools.partial. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Generated constructors now preserve required fields from stubs. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Preserves explicit globals after conditional rebinding. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Preserves static upper bounds of gradual solutions. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Specializes inherited members of unspecialized generic classes. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Preserves class objects during lazy protocol checks. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Expands nested union aliases when looking for a TypedDict or callable. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Preserves property subclass types and accessors during type checking. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Errors originating in script metadata now show error spans. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Fixes signature help when the cursor is in trailing whitespace. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Preserves the runtime origin of TypeAliasType. (0.0.73) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.73)
- Assignability hints are improved for protocols and TypedDict types. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Augmented assignments are no longer treated as attribute definitions. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Overload argument expansion works correctly with unpacked positional arguments. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Pydantic accepts documented boolean and fractional inputs. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Generic declaration metadata is ignored in staticness checks. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Tuple types containing Never are preserved. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Generic TypedDict aliases are specialized correctly. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- Variance is respected when inferring structural and callable types. (0.0.72) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.72)
- ty validates boolean conversion in comprehension filters. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty preserves constrained TypeVar types when slicing. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty handles class objects that may be descriptors. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty preserves enum attributes on Self and bounded type variables. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty preserves enum exhaustiveness when enums define custom _missing_ methods. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty restricts equality-impossibility conclusions to static bounds. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty resolves generic type aliases subscripted inside type[]. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- Type narrowing no longer introduces boolean literals when narrowing integers. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty respects third-party keyword-only fields when running on Python versions before 3.10. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty preserves literal-string origin during comparison narrowing. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty fixes truthiness inference for subclassable known classes. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- ty validates the shapes of unpacked callable arguments. (0.0.71) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.71)
- Validates stores made by augmented assignments. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Contextual inference is preserved for declarations in loops. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Generator aliases are expanded when evaluating return, send, and yield types. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Recognizes overlapping NewType types and their underlying values. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Quantified constraints are excluded from semantic type walks. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Fixes signature help when the cursor is at the end of a file. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Type labels in structured docstrings are normalized. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Typing-only completion ranking is preserved in TYPE_CHECKING blocks. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Infers precise truthiness for TypedDict key-membership checks. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Avoids a deadlock when scheduling watch checks. (0.0.70) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.70)
- Fixes a panic caused by mismatched OR-pattern bindings. (0.0.68) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.68)
- Property getter call errors are preserved in diagnostics. (0.0.68) — [release notes](https://github.com/astral-sh/ty/releases/tag/0.0.68)
