[ty] Simplify and fix CallableTypeOf[..] implementation (#20797)

## Summary

Simplify and fix the implementation of
`ty_extensions.CallableTypeOf[..]`.

closes https://github.com/astral-sh/ty/issues/1331

## Test Plan

Added regression test.
This commit is contained in:
David Peter 2025-10-10 12:04:37 +02:00 committed by GitHub
parent a82833a998
commit 949a4f1c42
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 8 additions and 39 deletions

View file

@ -689,7 +689,7 @@ def _(
# revealed: (obj: type) -> None
reveal_type(e)
# revealed: (fget: ((Any, /) -> Any) | None = None, fset: ((Any, Any, /) -> None) | None = None, fdel: ((Any, /) -> Any) | None = None, doc: str | None = None) -> Unknown
# revealed: (fget: ((Any, /) -> Any) | None = EllipsisType, fset: ((Any, Any, /) -> None) | None = EllipsisType, fdel: ((Any, /) -> None) | None = EllipsisType, doc: str | None = EllipsisType) -> property
reveal_type(f)
# revealed: Overload[(self: property, instance: None, owner: type, /) -> Unknown, (self: property, instance: object, owner: type | None = None, /) -> Unknown]

View file

@ -493,16 +493,14 @@ def _(
c5: CallableTypeOf[Foo(42).__call__],
c6: CallableTypeOf[Foo(42).returns_self],
c7: CallableTypeOf[Foo.class_method],
c8: CallableTypeOf[Foo(42)],
) -> None:
reveal_type(c1) # revealed: () -> Unknown
reveal_type(c2) # revealed: () -> int
reveal_type(c3) # revealed: (x: int, y: str) -> None
# TODO: should be `(x: int) -> Foo`
reveal_type(c4) # revealed: (...) -> Foo
reveal_type(c4) # revealed: (x: int) -> Foo
reveal_type(c5) # revealed: (x: int) -> str
reveal_type(c6) # revealed: (x: int) -> Foo
reveal_type(c7) # revealed: (x: int) -> Foo
reveal_type(c8) # revealed: (x: int) -> str
```