mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-25 22:29:02 +00:00
[ty] Remove use of ClassBase::try_from_type from super() machinery (#19902)
This commit is contained in:
parent
ce938fe205
commit
82350a398e
2 changed files with 41 additions and 16 deletions
|
|
@ -331,6 +331,9 @@ instance or a subclass of the first. If either condition is violated, a `TypeErr
|
|||
runtime.
|
||||
|
||||
```py
|
||||
import typing
|
||||
import collections
|
||||
|
||||
def f(x: int):
|
||||
# error: [invalid-super-argument] "`int` is not a valid class"
|
||||
super(x, x)
|
||||
|
|
@ -367,6 +370,19 @@ reveal_type(super(B, A))
|
|||
reveal_type(super(B, object))
|
||||
|
||||
super(object, object()).__class__
|
||||
|
||||
# Not all objects valid in a class's bases list are valid as the first argument to `super()`.
|
||||
# For example, it's valid to inherit from `typing.ChainMap`, but it's not valid as the first argument to `super()`.
|
||||
#
|
||||
# error: [invalid-super-argument] "`typing.ChainMap` is not a valid class"
|
||||
reveal_type(super(typing.ChainMap, collections.ChainMap())) # revealed: Unknown
|
||||
|
||||
# Meanwhile, it's not valid to inherit from unsubscripted `typing.Generic`,
|
||||
# but it *is* valid as the first argument to `super()`.
|
||||
reveal_type(super(typing.Generic, typing.SupportsInt)) # revealed: <super: typing.Generic, <class 'SupportsInt'>>
|
||||
|
||||
def _(x: type[typing.Any], y: typing.Any):
|
||||
reveal_type(super(x, y)) # revealed: <super: Any, Any>
|
||||
```
|
||||
|
||||
### Instance Member Access via `super`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue