pypi ty 0.0.15

6 hours ago

Release Notes

Released on 2026-02-04.

Bug fixes

  • Add support for resolving imports of packages installed into Debian/Ubuntu dist-packages directories (#22466)
  • Avoid not-iterable false positives when iterating over an instance of an intersection type with only negated elements (#22089)
  • Fix support for stringized annotations in very large files (#22913)
  • Don't emit Liskov diagnostics for methods with mangled names (#23062)
  • Enforce that a Final symbol cannot be reassigned even after a conditional binding (#22986)
  • Fix TypedDict construction from existing TypedDict values (#22904)
  • Fix Self resolution for classes nested within methods (#22964)
  • Fix bidirectional inference with PEP 695 union type aliases (#22988)
  • Fix edge-case bugs when narrowing tagged unions in match statements (#22870)
  • Fix false-positive diagnostics when iterating over an instance of an intersection that includes a TypeVar of which the upper bound is a union where the union includes a non-iterable type (#22117)
  • Fix lookup of __contains__ to respect descriptors (#23056)
  • Fix narrowing of nonlocal variables with conditional assignments (#22966)
  • Fix several bugs that could affect NewTypes of NewTypes of float (#22997)
  • Fix several type narrowing bugs involving PEP-695 type aliases (#22894)
  • Fix spurious query cycles in decorated functions with parameter defaults, for improved performance and improved determinism (#23014)
  • Fix unary and comparison operators for TypeVars with union bounds (#22925)
  • Understand functions as method descriptors even if they are decorated with a decorator annotated as returning a PEP-695 alias to a Callable type (#22902)
  • dataclass_transform: Fix visibility of field specifiers when models are nested inside methods (#23069)

LSP server

  • Fix hover showing Unknown for bare Final instance attributes (#23003)
  • Improve support for goto-type, goto-declaration, hover, and highlighting of string annotations (#22878)
  • Include setters and deleters when renaming properties (#22999)
  • Show type qualifiers like Final in on-hover hints (#23005)

Configuration

  • Add new unused-type-ignore-comment rule (#22790)
  • Add a mechanism to ignore/warn/select all rules (#22832)
  • Support multiple workspace folders in a single ty LSP server instance (#22953)
  • Only add ./src as a search path if ./src/__init__.py(i) does not exist (#22851)

Type checking

  • Add a diagnostic detecting if a variable is declared as Final but never has any bindings (#23001)
  • Add a diagnostic detecting overridden comparison dunder methods on order=True dataclasses (#22689)
  • Add a hint to invalid-argument-type and invalid-assignment diagnostics if a variable is annotated with a type from the numbers module (#22931, #22938)
  • Add diagnostic hint on unresolved-reference to suggest using "list" instead of "List" (#22827)
  • Add new diagnostic for invalid dataclass field orders (#19825)
  • Allow a subclass method with a positional-only parameter to override a superclass method without that parameter if the parameter in the subclass method has a default value (#23037)
  • Allow self-referential imports outside the global scope (#22963)
  • Ban ... in odd places inside tuple specializations (#22889)
  • Ban Required, NotRequired and ReadOnly in parameter annotations (#22888)
  • Ban legacy TypeVar bounds or constraints from containing type variables (#22949)
  • Ban multiple unpacked variadic tuples in a tuple specialization (#22884)
  • Detect generic Callables in the return type of function signatures (#22954)
  • Detect invalid isinstance() and issubclass() calls against TypedDict classes (#22887)
  • Detect invalid issubclass() calls against Protocol classes with non-method members (#22896)
  • Detect invalid attempts to subclass Protocol[] and Generic[] simultaneously (#22948)
  • Emit a diagnostic on incorrect applications of the legacy convention for specifying positional-only parameters (#22943)
  • Emit an error if a TypeVarTuple is used to subscript Generic or Protocol without being unpacked (#22952)
  • Fallback to metaclass __getattr__ or __getattribute__ when looking up attributes on class objects (#22985)
  • Fix a bug where an overridden type in a dataclass subclass would not be respected if the dataclass subclass field had a default value but the superclass field did not (#22965)
  • Improve bidirectional type inference involving PEP-695 type aliases (#22989)
  • Improve detection of invalid NewTypes with generic bases (#22961)
  • Improve reachability analysis when evaluating the truthiness of expressions that involve variables that may not be bound in all code paths (#22971)
  • Improve the error message if ** is used with a non-mapping in the context of a call to an overloaded function (#22921)
  • Infer ParamSpec from class constructors for callable protocols (#22853)
  • Move the location of some invalid-overload diagnostics (#22933)
  • Point to an overload with an invalid @final decorator when emitting invalid-overload errors for invalid @final decorators (#22893)
  • Avoid false positives when iterating over an instance of an intersection with only negated elements by preserving "pure negation" types in descriptor lookups (#22907)
  • Promote Literal types when inferring elements for very large unannotated tuples, for improved performance (#22841)
  • Recognize functions with stub bodies in Protocol classes as implicitly abstract (#22838)
  • Reduce false positives involving heterogeneous dicts by tracking dictionary literal keys as individual places (#22882)
  • Reduce false positives when subscripting classes generic over TypeVarTuples (#22950)
  • Remove special handling for Any() in match class patterns (#23011)
  • Support type[None] in type expressions (#22892)
  • Support legacy namespace packages declared using pkg_resources.declare_namespace (#22987)
  • Sync vendored typeshed stubs (#23006), Typeshed diff
  • Validate signatures of dataclass __post_init__ methods (#22730)

Contributors

Install ty 0.0.15

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ty/releases/download/0.0.15/ty-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ty/releases/download/0.0.15/ty-installer.ps1 | iex"

Download ty 0.0.15

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

Don't miss a new ty release

NewReleases is sending notifications on new releases.