@@ -2422,26 +2422,33 @@ class TypeVarLikeExpr(SymbolNode, Expression):
24222422 Note that they are constructed by the semantic analyzer.
24232423 """
24242424
2425- __slots__ = ("_name" , "_fullname" , "upper_bound" , "variance" )
2425+ __slots__ = ("_name" , "_fullname" , "upper_bound" , "default" , " variance" )
24262426
24272427 _name : str
24282428 _fullname : str
24292429 # Upper bound: only subtypes of upper_bound are valid as values. By default
24302430 # this is 'object', meaning no restriction.
24312431 upper_bound : mypy .types .Type
2432+ default : mypy .types .Type
24322433 # Variance of the type variable. Invariant is the default.
24332434 # TypeVar(..., covariant=True) defines a covariant type variable.
24342435 # TypeVar(..., contravariant=True) defines a contravariant type
24352436 # variable.
24362437 variance : int
24372438
24382439 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 ,
24402446 ) -> None :
24412447 super ().__init__ ()
24422448 self ._name = name
24432449 self ._fullname = fullname
24442450 self .upper_bound = upper_bound
2451+ self .default = default
24452452 self .variance = variance
24462453
24472454 @property
@@ -2479,9 +2486,10 @@ def __init__(
24792486 fullname : str ,
24802487 values : list [mypy .types .Type ],
24812488 upper_bound : mypy .types .Type ,
2489+ default : mypy .types .Type ,
24822490 variance : int = INVARIANT ,
24832491 ) -> None :
2484- super ().__init__ (name , fullname , upper_bound , variance )
2492+ super ().__init__ (name , fullname , upper_bound , default , variance )
24852493 self .values = values
24862494
24872495 def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2494,6 +2502,7 @@ def serialize(self) -> JsonDict:
24942502 "fullname" : self ._fullname ,
24952503 "values" : [t .serialize () for t in self .values ],
24962504 "upper_bound" : self .upper_bound .serialize (),
2505+ "default" : self .default .serialize (),
24972506 "variance" : self .variance ,
24982507 }
24992508
@@ -2505,6 +2514,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarExpr:
25052514 data ["fullname" ],
25062515 [mypy .types .deserialize_type (v ) for v in data ["values" ]],
25072516 mypy .types .deserialize_type (data ["upper_bound" ]),
2517+ mypy .types .deserialize_type (data ["default" ]),
25082518 data ["variance" ],
25092519 )
25102520
@@ -2523,6 +2533,7 @@ def serialize(self) -> JsonDict:
25232533 "name" : self ._name ,
25242534 "fullname" : self ._fullname ,
25252535 "upper_bound" : self .upper_bound .serialize (),
2536+ "default" : self .default .serialize (),
25262537 "variance" : self .variance ,
25272538 }
25282539
@@ -2533,6 +2544,7 @@ def deserialize(cls, data: JsonDict) -> ParamSpecExpr:
25332544 data ["name" ],
25342545 data ["fullname" ],
25352546 mypy .types .deserialize_type (data ["upper_bound" ]),
2547+ mypy .types .deserialize_type (data ["default" ]),
25362548 data ["variance" ],
25372549 )
25382550
@@ -2552,9 +2564,10 @@ def __init__(
25522564 fullname : str ,
25532565 upper_bound : mypy .types .Type ,
25542566 tuple_fallback : mypy .types .Instance ,
2567+ default : mypy .types .Type ,
25552568 variance : int = INVARIANT ,
25562569 ) -> None :
2557- super ().__init__ (name , fullname , upper_bound , variance )
2570+ super ().__init__ (name , fullname , upper_bound , default , variance )
25582571 self .tuple_fallback = tuple_fallback
25592572
25602573 def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2567,6 +2580,7 @@ def serialize(self) -> JsonDict:
25672580 "fullname" : self ._fullname ,
25682581 "upper_bound" : self .upper_bound .serialize (),
25692582 "tuple_fallback" : self .tuple_fallback .serialize (),
2583+ "default" : self .default .serialize (),
25702584 "variance" : self .variance ,
25712585 }
25722586
@@ -2578,6 +2592,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarTupleExpr:
25782592 data ["fullname" ],
25792593 mypy .types .deserialize_type (data ["upper_bound" ]),
25802594 mypy .types .Instance .deserialize (data ["tuple_fallback" ]),
2595+ mypy .types .deserialize_type (data ["default" ]),
25812596 data ["variance" ],
25822597 )
25832598
0 commit comments