@@ -2427,26 +2427,33 @@ class TypeVarLikeExpr(SymbolNode, Expression):
2427
2427
Note that they are constructed by the semantic analyzer.
2428
2428
"""
2429
2429
2430
- __slots__ = ("_name" , "_fullname" , "upper_bound" , "variance" )
2430
+ __slots__ = ("_name" , "_fullname" , "upper_bound" , "default" , " variance" )
2431
2431
2432
2432
_name : str
2433
2433
_fullname : str
2434
2434
# Upper bound: only subtypes of upper_bound are valid as values. By default
2435
2435
# this is 'object', meaning no restriction.
2436
2436
upper_bound : mypy .types .Type
2437
+ default : mypy .types .Type
2437
2438
# Variance of the type variable. Invariant is the default.
2438
2439
# TypeVar(..., covariant=True) defines a covariant type variable.
2439
2440
# TypeVar(..., contravariant=True) defines a contravariant type
2440
2441
# variable.
2441
2442
variance : int
2442
2443
2443
2444
def __init__ (
2444
- self , name : str , fullname : str , upper_bound : mypy .types .Type , variance : int = INVARIANT
2445
+ self ,
2446
+ name : str ,
2447
+ fullname : str ,
2448
+ upper_bound : mypy .types .Type ,
2449
+ default : mypy .types .Type ,
2450
+ variance : int = INVARIANT ,
2445
2451
) -> None :
2446
2452
super ().__init__ ()
2447
2453
self ._name = name
2448
2454
self ._fullname = fullname
2449
2455
self .upper_bound = upper_bound
2456
+ self .default = default
2450
2457
self .variance = variance
2451
2458
2452
2459
@property
@@ -2484,9 +2491,10 @@ def __init__(
2484
2491
fullname : str ,
2485
2492
values : list [mypy .types .Type ],
2486
2493
upper_bound : mypy .types .Type ,
2494
+ default : mypy .types .Type ,
2487
2495
variance : int = INVARIANT ,
2488
2496
) -> None :
2489
- super ().__init__ (name , fullname , upper_bound , variance )
2497
+ super ().__init__ (name , fullname , upper_bound , default , variance )
2490
2498
self .values = values
2491
2499
2492
2500
def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2499,6 +2507,7 @@ def serialize(self) -> JsonDict:
2499
2507
"fullname" : self ._fullname ,
2500
2508
"values" : [t .serialize () for t in self .values ],
2501
2509
"upper_bound" : self .upper_bound .serialize (),
2510
+ "default" : self .default .serialize (),
2502
2511
"variance" : self .variance ,
2503
2512
}
2504
2513
@@ -2510,6 +2519,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarExpr:
2510
2519
data ["fullname" ],
2511
2520
[mypy .types .deserialize_type (v ) for v in data ["values" ]],
2512
2521
mypy .types .deserialize_type (data ["upper_bound" ]),
2522
+ mypy .types .deserialize_type (data ["default" ]),
2513
2523
data ["variance" ],
2514
2524
)
2515
2525
@@ -2528,6 +2538,7 @@ def serialize(self) -> JsonDict:
2528
2538
"name" : self ._name ,
2529
2539
"fullname" : self ._fullname ,
2530
2540
"upper_bound" : self .upper_bound .serialize (),
2541
+ "default" : self .default .serialize (),
2531
2542
"variance" : self .variance ,
2532
2543
}
2533
2544
@@ -2538,6 +2549,7 @@ def deserialize(cls, data: JsonDict) -> ParamSpecExpr:
2538
2549
data ["name" ],
2539
2550
data ["fullname" ],
2540
2551
mypy .types .deserialize_type (data ["upper_bound" ]),
2552
+ mypy .types .deserialize_type (data ["default" ]),
2541
2553
data ["variance" ],
2542
2554
)
2543
2555
@@ -2557,9 +2569,10 @@ def __init__(
2557
2569
fullname : str ,
2558
2570
upper_bound : mypy .types .Type ,
2559
2571
tuple_fallback : mypy .types .Instance ,
2572
+ default : mypy .types .Type ,
2560
2573
variance : int = INVARIANT ,
2561
2574
) -> None :
2562
- super ().__init__ (name , fullname , upper_bound , variance )
2575
+ super ().__init__ (name , fullname , upper_bound , default , variance )
2563
2576
self .tuple_fallback = tuple_fallback
2564
2577
2565
2578
def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2572,6 +2585,7 @@ def serialize(self) -> JsonDict:
2572
2585
"fullname" : self ._fullname ,
2573
2586
"upper_bound" : self .upper_bound .serialize (),
2574
2587
"tuple_fallback" : self .tuple_fallback .serialize (),
2588
+ "default" : self .default .serialize (),
2575
2589
"variance" : self .variance ,
2576
2590
}
2577
2591
@@ -2583,6 +2597,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarTupleExpr:
2583
2597
data ["fullname" ],
2584
2598
mypy .types .deserialize_type (data ["upper_bound" ]),
2585
2599
mypy .types .Instance .deserialize (data ["tuple_fallback" ]),
2600
+ mypy .types .deserialize_type (data ["default" ]),
2586
2601
data ["variance" ],
2587
2602
)
2588
2603
0 commit comments