|
29 | 29 | util, |
30 | 30 | ) |
31 | 31 | from astroid.bases import BoundMethod, Generator, Instance, UnboundMethod |
32 | | -from astroid.const import WIN32 |
| 32 | +from astroid.const import PY312_PLUS, WIN32 |
33 | 33 | from astroid.exceptions import ( |
34 | 34 | AstroidBuildingError, |
35 | 35 | AttributeInferenceError, |
@@ -1967,6 +1967,34 @@ class E(C[str], D): ... |
1967 | 1967 | cls, [".E", ".C", ".A", ".B", "typing.Generic", ".D", "builtins.object"] |
1968 | 1968 | ) |
1969 | 1969 |
|
| 1970 | + @pytest.mark.skipif(not PY312_PLUS, reason="PEP 695 syntax requires Python 3.12") |
| 1971 | + def test_mro_generic_8(self): |
| 1972 | + cls = builder.extract_node( |
| 1973 | + """ |
| 1974 | + class A: ... |
| 1975 | + class B[T]: ... |
| 1976 | + class C[T](A, B[T]): ... |
| 1977 | + """ |
| 1978 | + ) |
| 1979 | + assert isinstance(cls, nodes.ClassDef) |
| 1980 | + self.assertEqualMroQName(cls, [".C", ".A", ".B", "builtins.object"]) |
| 1981 | + |
| 1982 | + @pytest.mark.skipif(not PY312_PLUS, reason="PEP 695 syntax requires Python 3.12") |
| 1983 | + def test_mro_generic_9(self): |
| 1984 | + cls = builder.extract_node( |
| 1985 | + """ |
| 1986 | + from dataclasses import dataclass |
| 1987 | + @dataclass |
| 1988 | + class A: ... |
| 1989 | + @dataclass |
| 1990 | + class B[T]: ... |
| 1991 | + @dataclass |
| 1992 | + class C[T](A, B[T]): ... |
| 1993 | + """ |
| 1994 | + ) |
| 1995 | + assert isinstance(cls, nodes.ClassDef) |
| 1996 | + self.assertEqualMroQName(cls, [".C", ".A", ".B", "builtins.object"]) |
| 1997 | + |
1970 | 1998 | def test_mro_generic_error_1(self): |
1971 | 1999 | cls = builder.extract_node( |
1972 | 2000 | """ |
|
0 commit comments