@@ -2433,26 +2433,33 @@ class TypeVarLikeExpr(SymbolNode, Expression):
24332433 Note that they are constructed by the semantic analyzer.
24342434 """
24352435
2436- __slots__ = ("_name" , "_fullname" , "upper_bound" , "variance" )
2436+ __slots__ = ("_name" , "_fullname" , "upper_bound" , "default" , " variance" )
24372437
24382438 _name : str
24392439 _fullname : str
24402440 # Upper bound: only subtypes of upper_bound are valid as values. By default
24412441 # this is 'object', meaning no restriction.
24422442 upper_bound : mypy .types .Type
2443+ default : mypy .types .Type
24432444 # Variance of the type variable. Invariant is the default.
24442445 # TypeVar(..., covariant=True) defines a covariant type variable.
24452446 # TypeVar(..., contravariant=True) defines a contravariant type
24462447 # variable.
24472448 variance : int
24482449
24492450 def __init__ (
2450- self , name : str , fullname : str , upper_bound : mypy .types .Type , variance : int = INVARIANT
2451+ self ,
2452+ name : str ,
2453+ fullname : str ,
2454+ upper_bound : mypy .types .Type ,
2455+ default : mypy .types .Type ,
2456+ variance : int = INVARIANT ,
24512457 ) -> None :
24522458 super ().__init__ ()
24532459 self ._name = name
24542460 self ._fullname = fullname
24552461 self .upper_bound = upper_bound
2462+ self .default = default
24562463 self .variance = variance
24572464
24582465 @property
@@ -2490,9 +2497,10 @@ def __init__(
24902497 fullname : str ,
24912498 values : list [mypy .types .Type ],
24922499 upper_bound : mypy .types .Type ,
2500+ default : mypy .types .Type ,
24932501 variance : int = INVARIANT ,
24942502 ) -> None :
2495- super ().__init__ (name , fullname , upper_bound , variance )
2503+ super ().__init__ (name , fullname , upper_bound , default , variance )
24962504 self .values = values
24972505
24982506 def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2505,6 +2513,7 @@ def serialize(self) -> JsonDict:
25052513 "fullname" : self ._fullname ,
25062514 "values" : [t .serialize () for t in self .values ],
25072515 "upper_bound" : self .upper_bound .serialize (),
2516+ "default" : self .default .serialize (),
25082517 "variance" : self .variance ,
25092518 }
25102519
@@ -2516,6 +2525,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarExpr:
25162525 data ["fullname" ],
25172526 [mypy .types .deserialize_type (v ) for v in data ["values" ]],
25182527 mypy .types .deserialize_type (data ["upper_bound" ]),
2528+ mypy .types .deserialize_type (data ["default" ]),
25192529 data ["variance" ],
25202530 )
25212531
@@ -2534,6 +2544,7 @@ def serialize(self) -> JsonDict:
25342544 "name" : self ._name ,
25352545 "fullname" : self ._fullname ,
25362546 "upper_bound" : self .upper_bound .serialize (),
2547+ "default" : self .default .serialize (),
25372548 "variance" : self .variance ,
25382549 }
25392550
@@ -2544,6 +2555,7 @@ def deserialize(cls, data: JsonDict) -> ParamSpecExpr:
25442555 data ["name" ],
25452556 data ["fullname" ],
25462557 mypy .types .deserialize_type (data ["upper_bound" ]),
2558+ mypy .types .deserialize_type (data ["default" ]),
25472559 data ["variance" ],
25482560 )
25492561
@@ -2563,9 +2575,10 @@ def __init__(
25632575 fullname : str ,
25642576 upper_bound : mypy .types .Type ,
25652577 tuple_fallback : mypy .types .Instance ,
2578+ default : mypy .types .Type ,
25662579 variance : int = INVARIANT ,
25672580 ) -> None :
2568- super ().__init__ (name , fullname , upper_bound , variance )
2581+ super ().__init__ (name , fullname , upper_bound , default , variance )
25692582 self .tuple_fallback = tuple_fallback
25702583
25712584 def accept (self , visitor : ExpressionVisitor [T ]) -> T :
@@ -2578,6 +2591,7 @@ def serialize(self) -> JsonDict:
25782591 "fullname" : self ._fullname ,
25792592 "upper_bound" : self .upper_bound .serialize (),
25802593 "tuple_fallback" : self .tuple_fallback .serialize (),
2594+ "default" : self .default .serialize (),
25812595 "variance" : self .variance ,
25822596 }
25832597
@@ -2589,6 +2603,7 @@ def deserialize(cls, data: JsonDict) -> TypeVarTupleExpr:
25892603 data ["fullname" ],
25902604 mypy .types .deserialize_type (data ["upper_bound" ]),
25912605 mypy .types .Instance .deserialize (data ["tuple_fallback" ]),
2606+ mypy .types .deserialize_type (data ["default" ]),
25922607 data ["variance" ],
25932608 )
25942609
0 commit comments