mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 05:14:52 +00:00
[ty] Fall back to object
for attribute access on synthesized protocols (#20286)
This commit is contained in:
parent
982a0a2a7c
commit
deb3d3d150
4 changed files with 39 additions and 2 deletions
|
@ -392,8 +392,14 @@ from inspect import getattr_static
|
|||
|
||||
def f_okay(c: Callable[[], None]):
|
||||
if hasattr(c, "__qualname__"):
|
||||
c.__qualname__ # okay
|
||||
reveal_type(c.__qualname__) # revealed: object
|
||||
|
||||
# TODO: should be `property`
|
||||
# (or complain that we don't know that `type(c)` has the attribute at all!)
|
||||
reveal_type(type(c).__qualname__) # revealed: @Todo(Intersection meta-type)
|
||||
|
||||
# `hasattr` only guarantees that an attribute is readable.
|
||||
#
|
||||
# error: [invalid-assignment] "Object of type `Literal["my_callable"]` is not assignable to attribute `__qualname__` on type `(() -> None) & <Protocol with members '__qualname__'>`"
|
||||
c.__qualname__ = "my_callable"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue