Add support for PEP 696 syntax (#11120)

This commit is contained in:
Jelle Zijlstra 2024-04-26 00:47:29 -07:00 committed by GitHub
parent 45725d3275
commit cd3e319538
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 4338 additions and 669 deletions

View file

@ -7,7 +7,7 @@ input_file: crates/ruff_python_parser/resources/valid/statement/class.py
```
Module(
ModModule {
range: 0..681,
range: 0..1023,
body: [
ClassDef(
StmtClassDef {
@ -409,6 +409,7 @@ Module(
range: 342..343,
},
bound: None,
default: None,
},
),
],
@ -437,27 +438,28 @@ Module(
),
ClassDef(
StmtClassDef {
range: 374..399,
range: 376..402,
decorator_list: [],
name: Identifier {
id: "Test",
range: 380..384,
range: 382..386,
},
type_params: Some(
TypeParams {
range: 384..392,
range: 386..395,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 385..391,
range: 387..394,
name: Identifier {
id: "T",
range: 385..386,
range: 387..388,
},
bound: Some(
bound: None,
default: Some(
Name(
ExprName {
range: 388..391,
range: 391..394,
id: "str",
ctx: Load,
},
@ -470,7 +472,7 @@ Module(
),
arguments: Some(
Arguments {
range: 392..394,
range: 395..397,
args: [],
keywords: [],
},
@ -478,10 +480,10 @@ Module(
body: [
Expr(
StmtExpr {
range: 396..399,
range: 399..402,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 396..399,
range: 399..402,
},
),
},
@ -491,38 +493,169 @@ Module(
),
ClassDef(
StmtClassDef {
range: 428..462,
range: 425..450,
decorator_list: [],
name: Identifier {
id: "Test",
range: 434..438,
range: 431..435,
},
type_params: Some(
TypeParams {
range: 438..455,
range: 435..443,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 439..454,
range: 436..442,
name: Identifier {
id: "T",
range: 439..440,
range: 436..437,
},
bound: Some(
Name(
ExprName {
range: 439..442,
id: "str",
ctx: Load,
},
),
),
default: None,
},
),
],
},
),
arguments: Some(
Arguments {
range: 443..445,
args: [],
keywords: [],
},
),
body: [
Expr(
StmtExpr {
range: 447..450,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 447..450,
},
),
},
),
],
},
),
ClassDef(
StmtClassDef {
range: 485..522,
decorator_list: [],
name: Identifier {
id: "Test",
range: 491..495,
},
type_params: Some(
TypeParams {
range: 495..515,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 496..514,
name: Identifier {
id: "T",
range: 496..497,
},
bound: Some(
BinOp(
ExprBinOp {
range: 499..508,
left: Name(
ExprName {
range: 499..502,
id: "int",
ctx: Load,
},
),
op: BitOr,
right: Name(
ExprName {
range: 505..508,
id: "str",
ctx: Load,
},
),
},
),
),
default: Some(
Name(
ExprName {
range: 511..514,
id: "int",
ctx: Load,
},
),
),
},
),
],
},
),
arguments: Some(
Arguments {
range: 515..517,
args: [],
keywords: [],
},
),
body: [
Expr(
StmtExpr {
range: 519..522,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 519..522,
},
),
},
),
],
},
),
ClassDef(
StmtClassDef {
range: 551..585,
decorator_list: [],
name: Identifier {
id: "Test",
range: 557..561,
},
type_params: Some(
TypeParams {
range: 561..578,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 562..577,
name: Identifier {
id: "T",
range: 562..563,
},
bound: Some(
Tuple(
ExprTuple {
range: 442..454,
range: 565..577,
elts: [
Name(
ExprName {
range: 443..446,
range: 566..569,
id: "str",
ctx: Load,
},
),
Name(
ExprName {
range: 448..453,
range: 571..576,
id: "bytes",
ctx: Load,
},
@ -533,6 +666,7 @@ Module(
},
),
),
default: None,
},
),
],
@ -540,7 +674,7 @@ Module(
),
arguments: Some(
Arguments {
range: 455..457,
range: 578..580,
args: [],
keywords: [],
},
@ -548,10 +682,10 @@ Module(
body: [
Expr(
StmtExpr {
range: 459..462,
range: 582..585,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 459..462,
range: 582..585,
},
),
},
@ -561,34 +695,36 @@ Module(
),
ClassDef(
StmtClassDef {
range: 483..506,
range: 606..629,
decorator_list: [],
name: Identifier {
id: "Test",
range: 489..493,
range: 612..616,
},
type_params: Some(
TypeParams {
range: 493..499,
range: 616..622,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 494..495,
range: 617..618,
name: Identifier {
id: "T",
range: 494..495,
range: 617..618,
},
bound: None,
default: None,
},
),
TypeVar(
TypeParamTypeVar {
range: 497..498,
range: 620..621,
name: Identifier {
id: "U",
range: 497..498,
range: 620..621,
},
bound: None,
default: None,
},
),
],
@ -596,7 +732,7 @@ Module(
),
arguments: Some(
Arguments {
range: 499..501,
range: 622..624,
args: [],
keywords: [],
},
@ -604,10 +740,10 @@ Module(
body: [
Expr(
StmtExpr {
range: 503..506,
range: 626..629,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 503..506,
range: 626..629,
},
),
},
@ -617,34 +753,36 @@ Module(
),
ClassDef(
StmtClassDef {
range: 525..549,
range: 648..672,
decorator_list: [],
name: Identifier {
id: "Test",
range: 531..535,
range: 654..658,
},
type_params: Some(
TypeParams {
range: 535..542,
range: 658..665,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 536..537,
range: 659..660,
name: Identifier {
id: "T",
range: 536..537,
range: 659..660,
},
bound: None,
default: None,
},
),
TypeVar(
TypeParamTypeVar {
range: 539..540,
range: 662..663,
name: Identifier {
id: "U",
range: 539..540,
range: 662..663,
},
bound: None,
default: None,
},
),
],
@ -652,7 +790,7 @@ Module(
),
arguments: Some(
Arguments {
range: 542..544,
range: 665..667,
args: [],
keywords: [],
},
@ -660,10 +798,10 @@ Module(
body: [
Expr(
StmtExpr {
range: 546..549,
range: 669..672,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 546..549,
range: 669..672,
},
),
},
@ -673,23 +811,24 @@ Module(
),
ClassDef(
StmtClassDef {
range: 566..588,
range: 689..711,
decorator_list: [],
name: Identifier {
id: "Test",
range: 572..576,
range: 695..699,
},
type_params: Some(
TypeParams {
range: 576..581,
range: 699..704,
type_params: [
TypeVarTuple(
TypeParamTypeVarTuple {
range: 577..580,
range: 700..703,
name: Identifier {
id: "Ts",
range: 578..580,
range: 701..703,
},
default: None,
},
),
],
@ -697,7 +836,7 @@ Module(
),
arguments: Some(
Arguments {
range: 581..583,
range: 704..706,
args: [],
keywords: [],
},
@ -705,10 +844,10 @@ Module(
body: [
Expr(
StmtExpr {
range: 585..588,
range: 708..711,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 585..588,
range: 708..711,
},
),
},
@ -718,105 +857,163 @@ Module(
),
ClassDef(
StmtClassDef {
range: 602..624,
range: 741..789,
decorator_list: [],
name: Identifier {
id: "Test",
range: 608..612,
range: 747..751,
},
type_params: Some(
TypeParams {
range: 612..617,
range: 751..782,
type_params: [
ParamSpec(
TypeParamParamSpec {
range: 613..616,
TypeVarTuple(
TypeParamTypeVarTuple {
range: 752..781,
name: Identifier {
id: "P",
range: 615..616,
id: "Ts",
range: 753..755,
},
},
),
],
},
),
arguments: Some(
Arguments {
range: 617..619,
args: [],
keywords: [],
},
),
body: [
Expr(
StmtExpr {
range: 621..624,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 621..624,
},
),
},
),
],
},
),
ClassDef(
StmtClassDef {
range: 640..680,
decorator_list: [],
name: Identifier {
id: "Test",
range: 646..650,
},
type_params: Some(
TypeParams {
range: 650..670,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 651..652,
name: Identifier {
id: "X",
range: 651..652,
},
bound: None,
},
),
TypeVar(
TypeParamTypeVar {
range: 654..660,
name: Identifier {
id: "Y",
range: 654..655,
},
bound: Some(
Name(
ExprName {
range: 657..660,
id: "str",
default: Some(
Subscript(
ExprSubscript {
range: 758..781,
value: Name(
ExprName {
range: 758..764,
id: "Unpack",
ctx: Load,
},
),
slice: Subscript(
ExprSubscript {
range: 765..780,
value: Name(
ExprName {
range: 765..770,
id: "tuple",
ctx: Load,
},
),
slice: Tuple(
ExprTuple {
range: 771..779,
elts: [
Name(
ExprName {
range: 771..774,
id: "int",
ctx: Load,
},
),
Name(
ExprName {
range: 776..779,
id: "str",
ctx: Load,
},
),
],
ctx: Load,
parenthesized: false,
},
),
ctx: Load,
},
),
ctx: Load,
},
),
),
},
),
TypeVarTuple(
TypeParamTypeVarTuple {
range: 662..664,
name: Identifier {
id: "U",
range: 663..664,
},
],
},
),
arguments: Some(
Arguments {
range: 782..784,
args: [],
keywords: [],
},
),
body: [
Expr(
StmtExpr {
range: 786..789,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 786..789,
},
),
ParamSpec(
TypeParamParamSpec {
range: 666..669,
},
),
],
},
),
ClassDef(
StmtClassDef {
range: 827..868,
decorator_list: [],
name: Identifier {
id: "Test",
range: 833..837,
},
type_params: Some(
TypeParams {
range: 837..861,
type_params: [
TypeVarTuple(
TypeParamTypeVarTuple {
range: 838..860,
name: Identifier {
id: "P",
range: 668..669,
id: "Ts",
range: 839..841,
},
default: Some(
Starred(
ExprStarred {
range: 844..860,
value: Subscript(
ExprSubscript {
range: 845..860,
value: Name(
ExprName {
range: 845..850,
id: "tuple",
ctx: Load,
},
),
slice: Tuple(
ExprTuple {
range: 851..859,
elts: [
Name(
ExprName {
range: 851..854,
id: "int",
ctx: Load,
},
),
Name(
ExprName {
range: 856..859,
id: "str",
ctx: Load,
},
),
],
ctx: Load,
parenthesized: false,
},
),
ctx: Load,
},
),
ctx: Load,
},
),
),
},
),
],
@ -824,7 +1021,208 @@ Module(
),
arguments: Some(
Arguments {
range: 670..672,
range: 861..863,
args: [],
keywords: [],
},
),
body: [
Expr(
StmtExpr {
range: 865..868,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 865..868,
},
),
},
),
],
},
),
ClassDef(
StmtClassDef {
range: 882..904,
decorator_list: [],
name: Identifier {
id: "Test",
range: 888..892,
},
type_params: Some(
TypeParams {
range: 892..897,
type_params: [
ParamSpec(
TypeParamParamSpec {
range: 893..896,
name: Identifier {
id: "P",
range: 895..896,
},
default: None,
},
),
],
},
),
arguments: Some(
Arguments {
range: 897..899,
args: [],
keywords: [],
},
),
body: [
Expr(
StmtExpr {
range: 901..904,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 901..904,
},
),
},
),
],
},
),
ClassDef(
StmtClassDef {
range: 931..966,
decorator_list: [],
name: Identifier {
id: "Test",
range: 937..941,
},
type_params: Some(
TypeParams {
range: 941..959,
type_params: [
ParamSpec(
TypeParamParamSpec {
range: 942..958,
name: Identifier {
id: "P",
range: 944..945,
},
default: Some(
List(
ExprList {
range: 948..958,
elts: [
Name(
ExprName {
range: 949..952,
id: "int",
ctx: Load,
},
),
Name(
ExprName {
range: 954..957,
id: "str",
ctx: Load,
},
),
],
ctx: Load,
},
),
),
},
),
],
},
),
arguments: Some(
Arguments {
range: 959..961,
args: [],
keywords: [],
},
),
body: [
Expr(
StmtExpr {
range: 963..966,
value: EllipsisLiteral(
ExprEllipsisLiteral {
range: 963..966,
},
),
},
),
],
},
),
ClassDef(
StmtClassDef {
range: 982..1022,
decorator_list: [],
name: Identifier {
id: "Test",
range: 988..992,
},
type_params: Some(
TypeParams {
range: 992..1012,
type_params: [
TypeVar(
TypeParamTypeVar {
range: 993..994,
name: Identifier {
id: "X",
range: 993..994,
},
bound: None,
default: None,
},
),
TypeVar(
TypeParamTypeVar {
range: 996..1002,
name: Identifier {
id: "Y",
range: 996..997,
},
bound: Some(
Name(
ExprName {
range: 999..1002,
id: "str",
ctx: Load,
},
),
),
default: None,
},
),
TypeVarTuple(
TypeParamTypeVarTuple {
range: 1004..1006,
name: Identifier {
id: "U",
range: 1005..1006,
},
default: None,
},
),
ParamSpec(
TypeParamParamSpec {
range: 1008..1011,
name: Identifier {
id: "P",
range: 1010..1011,
},
default: None,
},
),
],
},
),
arguments: Some(
Arguments {
range: 1012..1014,
args: [],
keywords: [],
},
@ -832,7 +1230,7 @@ Module(
body: [
Pass(
StmtPass {
range: 676..680,
range: 1018..1022,
},
),
],