@@ -2427,26 +2427,33 @@ class TypeVarLikeExpr(SymbolNode, Expression):
24272427 Note that they are constructed by the semantic analyzer.
24282428 """
24292429
2430- __slots__ = ("_name" , "_fullname" , "upper_bound" , "variance" )
2430+ __slots__ = ("_name" , "_fullname" , "upper_bound" , "default" , " variance" )
24312431
24322432 _name : str
24332433 _fullname : str
24342434 # Upper bound: only subtypes of upper_bound are valid as values. By default
24352435 # this is 'object', meaning no restriction.
24362436 upper_bound : mypy .types .Type
2437+ default : mypy .types .Type
24372438 # Variance of the type variable. Invariant is the default.
24382439 # TypeVar(..., covariant=True) defines a covariant type variable.
24392440 # TypeVar(..., contravariant=True) defines a contravariant type
24402441 # variable.
24412442 variance : int
24422443
24432444 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 ,
24452451 ) -> None :
24462452 super ().__init__ ()
24472453 self ._name = name
24482454 self ._fullname = fullname
24492455 self .upper_bound = upper_bound
2456+ self .default = default
24502457 self .variance = variance
24512458
24522459 @property
@@ -2484,9 +2491,10 @@ def __init__(
24842491 fullname : str ,
24852492 values : list [mypy .types .Type ],
24862493 upper_bound : mypy .types .Type ,
2494+ default : mypy .types .Type ,
24872495 variance : int = INVARIANT ,
24882496 ) -> None :
2489- super ().__init__ (name , fullname , upper_bound , variance )
2497+ super ().__init__ (name , fullname , upper_bound , default , variance )
24902498 self .values = values
24912499
24922500 def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2499,6 +2507,7 @@ def serialize(self) -> JsonDict:
24992507 "fullname" : self ._fullname ,
25002508 "values" : [t .serialize () for t in self .values ],
25012509 "upper_bound" : self .upper_bound .serialize (),
2510+ "default" : self .default .serialize (),
25022511 "variance" : self .variance ,
25032512 }
25042513
@@ -2510,6 +2519,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarExpr:
25102519 data ["fullname" ],
25112520 [mypy .types .deserialize_type (v ) for v in data ["values" ]],
25122521 mypy .types .deserialize_type (data ["upper_bound" ]),
2522+ mypy .types .deserialize_type (data ["default" ]),
25132523 data ["variance" ],
25142524 )
25152525
@@ -2528,6 +2538,7 @@ def serialize(self) -> JsonDict:
25282538 "name" : self ._name ,
25292539 "fullname" : self ._fullname ,
25302540 "upper_bound" : self .upper_bound .serialize (),
2541+ "default" : self .default .serialize (),
25312542 "variance" : self .variance ,
25322543 }
25332544
@@ -2538,6 +2549,7 @@ def deserialize(cls, data: JsonDict) -> ParamSpecExpr:
25382549 data ["name" ],
25392550 data ["fullname" ],
25402551 mypy .types .deserialize_type (data ["upper_bound" ]),
2552+ mypy .types .deserialize_type (data ["default" ]),
25412553 data ["variance" ],
25422554 )
25432555
@@ -2557,9 +2569,10 @@ def __init__(
25572569 fullname : str ,
25582570 upper_bound : mypy .types .Type ,
25592571 tuple_fallback : mypy .types .Instance ,
2572+ default : mypy .types .Type ,
25602573 variance : int = INVARIANT ,
25612574 ) -> None :
2562- super ().__init__ (name , fullname , upper_bound , variance )
2575+ super ().__init__ (name , fullname , upper_bound , default , variance )
25632576 self .tuple_fallback = tuple_fallback
25642577
25652578 def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2572,6 +2585,7 @@ def serialize(self) -> JsonDict:
25722585 "fullname" : self ._fullname ,
25732586 "upper_bound" : self .upper_bound .serialize (),
25742587 "tuple_fallback" : self .tuple_fallback .serialize (),
2588+ "default" : self .default .serialize (),
25752589 "variance" : self .variance ,
25762590 }
25772591
@@ -2583,6 +2597,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarTupleExpr:
25832597 data ["fullname" ],
25842598 mypy .types .deserialize_type (data ["upper_bound" ]),
25852599 mypy .types .Instance .deserialize (data ["tuple_fallback" ]),
2600+ mypy .types .deserialize_type (data ["default" ]),
25862601 data ["variance" ],
25872602 )
25882603
0 commit comments