bpo-43224: Draft implementation of PEP 646 by mrahtz · Pull Request #30398 · python/cpython (original) (raw)
Formatted, generated AST is as follows.
def f() -> tuple[*Ts]: pass
:
(
"Module",
[
(
"FunctionDef",
(1, 0, 1, 27),
"f",
("arguments", [], [], None, [], [], None, []),
[("Pass", (1, 23, 1, 27))],
[],
(
"Subscript",
(1, 11, 1, 21),
("Name", (1, 11, 1, 16), "tuple", ("Load",)),
(
"Tuple",
(1, 17, 1, 20),
[
(
"Starred",
(1, 17, 1, 20),
("Name", (1, 18, 1, 20), "Ts", ("Load",)),
("Load",),
)
],
("Load",),
),
("Load",),
),
None,
)
],
[],
)
def f() -> tuple[int, *Ts]: pass
:
(
"Module",
[
(
"FunctionDef",
(1, 0, 1, 32),
"f",
("arguments", [], [], None, [], [], None, []),
[("Pass", (1, 28, 1, 32))],
[],
(
"Subscript",
(1, 11, 1, 26),
("Name", (1, 11, 1, 16), "tuple", ("Load",)),
(
"Tuple",
(1, 17, 1, 25),
[
("Name", (1, 17, 1, 20), "int", ("Load",)),
(
"Starred",
(1, 22, 1, 25),
("Name", (1, 23, 1, 25), "Ts", ("Load",)),
("Load",),
),
],
("Load",),
),
("Load",),
),
None,
)
],
[],
)
def f() -> tuple[int, *tuple[int, ...]]: pass
:
(
"Module",
[
(
"FunctionDef",
(1, 0, 1, 45),
"f",
("arguments", [], [], None, [], [], None, []),
[("Pass", (1, 41, 1, 45))],
[],
(
"Subscript",
(1, 11, 1, 39),
("Name", (1, 11, 1, 16), "tuple", ("Load",)),
(
"Tuple",
(1, 17, 1, 38),
[
("Name", (1, 17, 1, 20), "int", ("Load",)),
(
"Starred",
(1, 22, 1, 38),
(
"Subscript",
(1, 23, 1, 38),
("Name", (1, 23, 1, 28), "tuple", ("Load",)),
(
"Tuple",
(1, 29, 1, 37),
[
("Name", (1, 29, 1, 32), "int", ("Load",)),
("Constant", (1, 34, 1, 37), Ellipsis, None),
],
("Load",),
),
("Load",),
),
("Load",),
),
],
("Load",),
),
("Load",),
),
None,
)
],
[],
)