|
27 | 27 | GetArgs, |
28 | 28 | GetAttr, |
29 | 29 | GetName, |
| 30 | + GetSpecialAttr, |
30 | 31 | GetType, |
31 | 32 | GetAnnotations, |
32 | 33 | IsSub, |
|
40 | 41 | Slice, |
41 | 42 | SpecialFormEllipsis, |
42 | 43 | StrConcat, |
43 | | - TypeName, |
44 | 44 | Uppercase, |
45 | 45 | _BoolLiteral, |
46 | 46 | ) |
@@ -975,23 +975,82 @@ class Container2[T]: ... |
975 | 975 | assert eval_typing(GetArg[t, Container, Literal[1]]) == Never |
976 | 976 |
|
977 | 977 |
|
| 978 | +class OuterType: |
| 979 | + class InnerType: |
| 980 | + pass |
| 981 | + |
| 982 | + |
978 | 983 | def test_eval_typename_01(): |
979 | | - d = eval_typing(TypeName[int]) |
| 984 | + d = eval_typing(GetSpecialAttr[int, Literal["__name__"]]) |
980 | 985 | assert d == Literal["int"] |
981 | | - d = eval_typing(TypeName[str]) |
| 986 | + d = eval_typing(GetSpecialAttr[str, Literal["__name__"]]) |
982 | 987 | assert d == Literal["str"] |
983 | | - d = eval_typing(TypeName[list[int]]) |
| 988 | + d = eval_typing(GetSpecialAttr[list[int], Literal["__name__"]]) |
984 | 989 | assert d == Literal["list"] |
985 | | - d = eval_typing(TypeName[list[str]]) |
| 990 | + d = eval_typing(GetSpecialAttr[list[str], Literal["__name__"]]) |
986 | 991 | assert d == Literal["list"] |
987 | 992 |
|
988 | 993 | class C: |
989 | 994 | pass |
990 | 995 |
|
991 | | - d = eval_typing(TypeName[C]) |
| 996 | + d = eval_typing(GetSpecialAttr[OuterType, Literal["__name__"]]) |
| 997 | + assert d == Literal["OuterType"] |
| 998 | + d = eval_typing(GetSpecialAttr[OuterType.InnerType, Literal["__name__"]]) |
| 999 | + assert d == Literal["InnerType"] |
| 1000 | + d = eval_typing(GetSpecialAttr[C, Literal["__name__"]]) |
992 | 1001 | assert d == Literal["C"] |
993 | 1002 |
|
994 | | - d = eval_typing(TypeName[GetA1[int, str]]) |
| 1003 | + d = eval_typing(GetSpecialAttr[GetA1[int, str], Literal["__name__"]]) |
| 1004 | + assert d == Literal["int"] |
| 1005 | + |
| 1006 | + |
| 1007 | +def test_eval_typename_02(): |
| 1008 | + d = eval_typing(GetSpecialAttr[int, Literal["__module__"]]) |
| 1009 | + assert d == Literal["builtins"] |
| 1010 | + d = eval_typing(GetSpecialAttr[str, Literal["__module__"]]) |
| 1011 | + assert d == Literal["builtins"] |
| 1012 | + d = eval_typing(GetSpecialAttr[list[int], Literal["__module__"]]) |
| 1013 | + assert d == Literal["builtins"] |
| 1014 | + d = eval_typing(GetSpecialAttr[list[str], Literal["__module__"]]) |
| 1015 | + assert d == Literal["builtins"] |
| 1016 | + |
| 1017 | + class C: |
| 1018 | + pass |
| 1019 | + |
| 1020 | + d = eval_typing(GetSpecialAttr[OuterType, Literal["__module__"]]) |
| 1021 | + assert d == Literal["tests.test_type_eval"] |
| 1022 | + d = eval_typing(GetSpecialAttr[OuterType.InnerType, Literal["__module__"]]) |
| 1023 | + assert d == Literal["tests.test_type_eval"] |
| 1024 | + d = eval_typing(GetSpecialAttr[C, Literal["__module__"]]) |
| 1025 | + assert d == Literal["tests.test_type_eval"] |
| 1026 | + |
| 1027 | + d = eval_typing(GetSpecialAttr[GetA1[int, str], Literal["__module__"]]) |
| 1028 | + assert d == Literal["builtins"] |
| 1029 | + |
| 1030 | + |
| 1031 | +def test_eval_typename_03(): |
| 1032 | + d = eval_typing(GetSpecialAttr[int, Literal["__qualname__"]]) |
| 1033 | + assert d == Literal["int"] |
| 1034 | + d = eval_typing(GetSpecialAttr[str, Literal["__qualname__"]]) |
| 1035 | + assert d == Literal["str"] |
| 1036 | + d = eval_typing(GetSpecialAttr[list[int], Literal["__qualname__"]]) |
| 1037 | + assert d == Literal["list"] |
| 1038 | + d = eval_typing(GetSpecialAttr[list[str], Literal["__qualname__"]]) |
| 1039 | + assert d == Literal["list"] |
| 1040 | + |
| 1041 | + class C: |
| 1042 | + pass |
| 1043 | + |
| 1044 | + d = eval_typing(GetSpecialAttr[OuterType, Literal["__qualname__"]]) |
| 1045 | + assert d == Literal["OuterType"] |
| 1046 | + d = eval_typing( |
| 1047 | + GetSpecialAttr[OuterType.InnerType, Literal["__qualname__"]] |
| 1048 | + ) |
| 1049 | + assert d == Literal["OuterType.InnerType"] |
| 1050 | + d = eval_typing(GetSpecialAttr[C, Literal["__qualname__"]]) |
| 1051 | + assert d == Literal["test_eval_typename_03.<locals>.C"] |
| 1052 | + |
| 1053 | + d = eval_typing(GetSpecialAttr[GetA1[int, str], Literal["__qualname__"]]) |
995 | 1054 | assert d == Literal["int"] |
996 | 1055 |
|
997 | 1056 |
|
|
0 commit comments