@@ -2422,26 +2422,33 @@ class TypeVarLikeExpr(SymbolNode, Expression):
2422
2422
Note that they are constructed by the semantic analyzer.
2423
2423
"""
2424
2424
2425
- __slots__ = ("_name" , "_fullname" , "upper_bound" , "variance" )
2425
+ __slots__ = ("_name" , "_fullname" , "upper_bound" , "default" , " variance" )
2426
2426
2427
2427
_name : str
2428
2428
_fullname : str
2429
2429
# Upper bound: only subtypes of upper_bound are valid as values. By default
2430
2430
# this is 'object', meaning no restriction.
2431
2431
upper_bound : mypy .types .Type
2432
+ default : mypy .types .Type
2432
2433
# Variance of the type variable. Invariant is the default.
2433
2434
# TypeVar(..., covariant=True) defines a covariant type variable.
2434
2435
# TypeVar(..., contravariant=True) defines a contravariant type
2435
2436
# variable.
2436
2437
variance : int
2437
2438
2438
2439
def __init__ (
2439
- self , name : str , fullname : str , upper_bound : mypy .types .Type , variance : int = INVARIANT
2440
+ self ,
2441
+ name : str ,
2442
+ fullname : str ,
2443
+ upper_bound : mypy .types .Type ,
2444
+ default : mypy .types .Type ,
2445
+ variance : int = INVARIANT ,
2440
2446
) -> None :
2441
2447
super ().__init__ ()
2442
2448
self ._name = name
2443
2449
self ._fullname = fullname
2444
2450
self .upper_bound = upper_bound
2451
+ self .default = default
2445
2452
self .variance = variance
2446
2453
2447
2454
@property
@@ -2479,9 +2486,10 @@ def __init__(
2479
2486
fullname : str ,
2480
2487
values : list [mypy .types .Type ],
2481
2488
upper_bound : mypy .types .Type ,
2489
+ default : mypy .types .Type ,
2482
2490
variance : int = INVARIANT ,
2483
2491
) -> None :
2484
- super ().__init__ (name , fullname , upper_bound , variance )
2492
+ super ().__init__ (name , fullname , upper_bound , default , variance )
2485
2493
self .values = values
2486
2494
2487
2495
def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2494,6 +2502,7 @@ def serialize(self) -> JsonDict:
2494
2502
"fullname" : self ._fullname ,
2495
2503
"values" : [t .serialize () for t in self .values ],
2496
2504
"upper_bound" : self .upper_bound .serialize (),
2505
+ "default" : self .default .serialize (),
2497
2506
"variance" : self .variance ,
2498
2507
}
2499
2508
@@ -2505,6 +2514,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarExpr:
2505
2514
data ["fullname" ],
2506
2515
[mypy .types .deserialize_type (v ) for v in data ["values" ]],
2507
2516
mypy .types .deserialize_type (data ["upper_bound" ]),
2517
+ mypy .types .deserialize_type (data ["default" ]),
2508
2518
data ["variance" ],
2509
2519
)
2510
2520
@@ -2523,6 +2533,7 @@ def serialize(self) -> JsonDict:
2523
2533
"name" : self ._name ,
2524
2534
"fullname" : self ._fullname ,
2525
2535
"upper_bound" : self .upper_bound .serialize (),
2536
+ "default" : self .default .serialize (),
2526
2537
"variance" : self .variance ,
2527
2538
}
2528
2539
@@ -2533,6 +2544,7 @@ def deserialize(cls, data: JsonDict) -> ParamSpecExpr:
2533
2544
data ["name" ],
2534
2545
data ["fullname" ],
2535
2546
mypy .types .deserialize_type (data ["upper_bound" ]),
2547
+ mypy .types .deserialize_type (data ["default" ]),
2536
2548
data ["variance" ],
2537
2549
)
2538
2550
@@ -2552,9 +2564,10 @@ def __init__(
2552
2564
fullname : str ,
2553
2565
upper_bound : mypy .types .Type ,
2554
2566
tuple_fallback : mypy .types .Instance ,
2567
+ default : mypy .types .Type ,
2555
2568
variance : int = INVARIANT ,
2556
2569
) -> None :
2557
- super ().__init__ (name , fullname , upper_bound , variance )
2570
+ super ().__init__ (name , fullname , upper_bound , default , variance )
2558
2571
self .tuple_fallback = tuple_fallback
2559
2572
2560
2573
def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2567,6 +2580,7 @@ def serialize(self) -> JsonDict:
2567
2580
"fullname" : self ._fullname ,
2568
2581
"upper_bound" : self .upper_bound .serialize (),
2569
2582
"tuple_fallback" : self .tuple_fallback .serialize (),
2583
+ "default" : self .default .serialize (),
2570
2584
"variance" : self .variance ,
2571
2585
}
2572
2586
@@ -2578,6 +2592,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarTupleExpr:
2578
2592
data ["fullname" ],
2579
2593
mypy .types .deserialize_type (data ["upper_bound" ]),
2580
2594
mypy .types .Instance .deserialize (data ["tuple_fallback" ]),
2595
+ mypy .types .deserialize_type (data ["default" ]),
2581
2596
data ["variance" ],
2582
2597
)
2583
2598
0 commit comments