|
1 | 1 | import sys
|
| 2 | +import typing_extensions |
2 | 3 | from typing import Any, ClassVar
|
3 |
| -from typing_extensions import Literal, TypeAlias |
| 4 | +from typing_extensions import Literal |
4 | 5 |
|
5 | 6 | PyCF_ONLY_AST: Literal[1024]
|
6 | 7 | if sys.version_info >= (3, 8):
|
7 | 8 | PyCF_TYPE_COMMENTS: Literal[4096]
|
8 | 9 | PyCF_ALLOW_TOP_LEVEL_AWAIT: Literal[8192]
|
9 | 10 |
|
10 |
| -_Identifier: TypeAlias = str |
| 11 | +_Identifier: typing_extensions.TypeAlias = str |
11 | 12 |
|
12 | 13 | class AST:
|
13 | 14 | if sys.version_info >= (3, 10):
|
@@ -59,31 +60,43 @@ class Expression(mod):
|
59 | 60 | class stmt(AST): ...
|
60 | 61 |
|
61 | 62 | class FunctionDef(stmt):
|
62 |
| - if sys.version_info >= (3, 10): |
| 63 | + if sys.version_info >= (3, 12): |
| 64 | + __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") |
| 65 | + elif sys.version_info >= (3, 10): |
63 | 66 | __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment")
|
64 | 67 | name: _Identifier
|
65 | 68 | args: arguments
|
66 | 69 | body: list[stmt]
|
67 | 70 | decorator_list: list[expr]
|
68 | 71 | returns: expr | None
|
| 72 | + if sys.version_info >= (3, 12): |
| 73 | + type_params: list[type_param] |
69 | 74 |
|
70 | 75 | class AsyncFunctionDef(stmt):
|
71 |
| - if sys.version_info >= (3, 10): |
| 76 | + if sys.version_info >= (3, 12): |
| 77 | + __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment", "type_params") |
| 78 | + elif sys.version_info >= (3, 10): |
72 | 79 | __match_args__ = ("name", "args", "body", "decorator_list", "returns", "type_comment")
|
73 | 80 | name: _Identifier
|
74 | 81 | args: arguments
|
75 | 82 | body: list[stmt]
|
76 | 83 | decorator_list: list[expr]
|
77 | 84 | returns: expr | None
|
| 85 | + if sys.version_info >= (3, 12): |
| 86 | + type_params: list[type_param] |
78 | 87 |
|
79 | 88 | class ClassDef(stmt):
|
80 |
| - if sys.version_info >= (3, 10): |
| 89 | + if sys.version_info >= (3, 12): |
| 90 | + __match_args__ = ("name", "bases", "keywords", "body", "decorator_list", "type_params") |
| 91 | + elif sys.version_info >= (3, 10): |
81 | 92 | __match_args__ = ("name", "bases", "keywords", "body", "decorator_list")
|
82 | 93 | name: _Identifier
|
83 | 94 | bases: list[expr]
|
84 | 95 | keywords: list[keyword]
|
85 | 96 | body: list[stmt]
|
86 | 97 | decorator_list: list[expr]
|
| 98 | + if sys.version_info >= (3, 12): |
| 99 | + type_params: list[type_param] |
87 | 100 |
|
88 | 101 | class Return(stmt):
|
89 | 102 | if sys.version_info >= (3, 10):
|
@@ -366,10 +379,10 @@ class Attribute(expr):
|
366 | 379 | ctx: expr_context
|
367 | 380 |
|
368 | 381 | if sys.version_info >= (3, 9):
|
369 |
| - _Slice: TypeAlias = expr |
| 382 | + _Slice: typing_extensions.TypeAlias = expr |
370 | 383 | else:
|
371 | 384 | class slice(AST): ...
|
372 |
| - _Slice: TypeAlias = slice |
| 385 | + _Slice: typing_extensions.TypeAlias = slice |
373 | 386 |
|
374 | 387 | class Slice(_Slice):
|
375 | 388 | if sys.version_info >= (3, 10):
|
@@ -526,7 +539,7 @@ if sys.version_info >= (3, 10):
|
526 | 539 |
|
527 | 540 | class pattern(AST): ...
|
528 | 541 | # Without the alias, Pyright complains variables named pattern are recursively defined
|
529 |
| - _Pattern: TypeAlias = pattern |
| 542 | + _Pattern: typing_extensions.TypeAlias = pattern |
530 | 543 |
|
531 | 544 | class match_case(AST):
|
532 | 545 | __match_args__ = ("pattern", "guard", "body")
|
@@ -571,3 +584,25 @@ if sys.version_info >= (3, 10):
|
571 | 584 | class MatchOr(pattern):
|
572 | 585 | __match_args__ = ("patterns",)
|
573 | 586 | patterns: list[pattern]
|
| 587 | + |
| 588 | +if sys.version_info >= (3, 12): |
| 589 | + class type_param(AST): ... |
| 590 | + |
| 591 | + class TypeVar(type_param): |
| 592 | + __match_args__ = ("name", "bound") |
| 593 | + name: _Identifier |
| 594 | + bound: expr | None |
| 595 | + |
| 596 | + class ParamSpec(type_param): |
| 597 | + __match_args__ = ("name",) |
| 598 | + name: _Identifier |
| 599 | + |
| 600 | + class TypeVarTuple(type_param): |
| 601 | + __match_args__ = ("name",) |
| 602 | + name: _Identifier |
| 603 | + |
| 604 | + class TypeAlias(stmt): |
| 605 | + __match_args__ = ("name", "typeparams", "value") |
| 606 | + name: Name |
| 607 | + type_params: list[type_param] |
| 608 | + value: expr |
0 commit comments