@@ -3376,7 +3376,7 @@ def __init__(
33763376 end_col_offset : int | None = None ,
33773377 ) -> None :
33783378 self .name : AssignName | None
3379- self .type_params : list [TypeVar , ParamSpec ]
3379+ self .type_params : list [TypeVar , ParamSpec , TypeVarTuple ]
33803380 self .value : NodeNG
33813381 super ().__init__ (
33823382 lineno = lineno ,
@@ -3390,7 +3390,7 @@ def postinit(
33903390 self ,
33913391 * ,
33923392 name : AssignName | None ,
3393- type_params : list [TypeVar , ParamSpec ],
3393+ type_params : list [TypeVar , ParamSpec , TypeVarTuple ],
33943394 value : NodeNG ,
33953395 ) -> None :
33963396 self .name = name
@@ -3448,6 +3448,37 @@ def postinit(self, *, name: AssignName | None, bound: NodeNG | None) -> None:
34483448 self .bound = bound
34493449
34503450
3451+ class TypeVarTuple (_base_nodes .AssignTypeNode ):
3452+ """Class representing a :class:`ast.TypeVarTuple` node.
3453+
3454+ >>> import astroid
3455+ >>> node = astroid.extract_node('type Alias[*Ts] = tuple[*Ts]')
3456+ >>> node.type_params[0]
3457+ <TypeVarTuple l.1 at 0x7f23b2e4e198>
3458+ """
3459+
3460+ def __init__ (
3461+ self ,
3462+ lineno : int | None = None ,
3463+ col_offset : int | None = None ,
3464+ parent : NodeNG | None = None ,
3465+ * ,
3466+ end_lineno : int | None = None ,
3467+ end_col_offset : int | None = None ,
3468+ ) -> None :
3469+ self .name : AssignName | None
3470+ super ().__init__ (
3471+ lineno = lineno ,
3472+ col_offset = col_offset ,
3473+ end_lineno = end_lineno ,
3474+ end_col_offset = end_col_offset ,
3475+ parent = parent ,
3476+ )
3477+
3478+ def postinit (self , * , name : AssignName | None ) -> None :
3479+ self .name = name
3480+
3481+
34513482class UnaryOp (NodeNG ):
34523483 """Class representing an :class:`ast.UnaryOp` node.
34533484
0 commit comments