mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-02 18:02:58 +00:00
Add support for PEP 696 syntax (#11120)
This commit is contained in:
parent
45725d3275
commit
cd3e319538
49 changed files with 4338 additions and 669 deletions
|
@ -0,0 +1,5 @@
|
|||
type X[**P = *int] = int
|
||||
type X[**P = yield x] = int
|
||||
type X[**P = yield from x] = int
|
||||
type X[**P = x := int] = int
|
||||
type X[**P = *int] = int
|
|
@ -0,0 +1,2 @@
|
|||
type X[**P =] = int
|
||||
type X[**P =, T2] = int
|
|
@ -0,0 +1,6 @@
|
|||
type X[T = *int] = int
|
||||
type X[T = yield x] = int
|
||||
type X[T = (yield x)] = int
|
||||
type X[T = yield from x] = int
|
||||
type X[T = x := int] = int
|
||||
type X[T: int = *int] = int
|
|
@ -0,0 +1,3 @@
|
|||
type X[T =] = int
|
||||
type X[T: int =] = int
|
||||
type X[T1 =, T2] = int
|
|
@ -0,0 +1,5 @@
|
|||
type X[*Ts = *int] = int
|
||||
type X[*Ts = *int or str] = int
|
||||
type X[*Ts = yield x] = int
|
||||
type X[*Ts = yield from x] = int
|
||||
type X[*Ts = x := int] = int
|
|
@ -0,0 +1,2 @@
|
|||
type X[*Ts =] = int
|
||||
type X[*Ts =, T2] = int
|
|
@ -0,0 +1,4 @@
|
|||
type X[**P] = int
|
||||
type X[**P = int] = int
|
||||
type X[T, **P] = int
|
||||
type X[T, **P = int] = int
|
|
@ -0,0 +1,5 @@
|
|||
type X[T] = int
|
||||
type X[T = int] = int
|
||||
type X[T: int = int] = int
|
||||
type X[T: (int, int) = int] = int
|
||||
type X[T: int = int, U: (int, int) = int] = int
|
|
@ -0,0 +1,5 @@
|
|||
type X[*Ts] = int
|
||||
type X[*Ts = int] = int
|
||||
type X[*Ts = *int] = int
|
||||
type X[T, *Ts] = int
|
||||
type X[T, *Ts = int] = int
|
|
@ -29,9 +29,15 @@ class Test(A, B):
|
|||
# TypeVar
|
||||
class Test[T](): ...
|
||||
|
||||
# TypeVar with default
|
||||
class Test[T = str](): ...
|
||||
|
||||
# TypeVar with bound
|
||||
class Test[T: str](): ...
|
||||
|
||||
# TypeVar with bound and default
|
||||
class Test[T: int | str = int](): ...
|
||||
|
||||
# TypeVar with tuple bound
|
||||
class Test[T: (str, bytes)](): ...
|
||||
|
||||
|
@ -44,9 +50,18 @@ class Test[T, U,](): ...
|
|||
# TypeVarTuple
|
||||
class Test[*Ts](): ...
|
||||
|
||||
# TypeVarTuple with default
|
||||
class Test[*Ts = Unpack[tuple[int, str]]](): ...
|
||||
|
||||
# TypeVarTuple with starred default
|
||||
class Test[*Ts = *tuple[int, str]](): ...
|
||||
|
||||
# ParamSpec
|
||||
class Test[**P](): ...
|
||||
|
||||
# ParamSpec with default
|
||||
class Test[**P = [int, str]](): ...
|
||||
|
||||
# Mixed types
|
||||
class Test[X, Y: str, *U, **P]():
|
||||
pass
|
||||
|
|
|
@ -7,6 +7,10 @@ type X[T] = list[T] | set[T]
|
|||
type X[T, *Ts, **P] = (T, Ts, P)
|
||||
type X[T: int, *Ts, **P] = (T, Ts, P)
|
||||
type X[T: (int, str), *Ts, **P] = (T, Ts, P)
|
||||
type X[T = int] = T | str
|
||||
type X[T: int | str = int] = T | int | str
|
||||
type X[*Ts = *tuple[int, str]] = tuple[int, *Ts, str]
|
||||
type X[**P = [int, str]] = Callable[P, str]
|
||||
|
||||
# Soft keyword as alias name
|
||||
type type = int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue