diff --git a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java index 51c329f73693..6fc7ddb172c7 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java +++ b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java @@ -267,7 +267,9 @@ public class PyTypeCheckerInspection extends PyInspection { } private static boolean requiresTypeSpecialization(@Nullable PyType type) { - if (type instanceof PyTypeParameterType && !(type instanceof PySelfType)) return true; + if (type instanceof PyTypeParameterType typeParameterType && + typeParameterType.getDefaultType() == null && + !(type instanceof PySelfType)) return true; return type instanceof PyCollectionType collectionType && exists(collectionType.getElementTypes(), Visitor::requiresTypeSpecialization); } diff --git a/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java index c352d3bc5543..c7015d498348 100644 --- a/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java @@ -2994,4 +2994,17 @@ def foo(param: str | int) -> TypeGuard[str]: v5: Hashable = DC5(0) """); } + + // PY-76855 + public void testAccessToAttributeOfGenericClassWithDefaultIsNotAmbiguous() { + doTestByText(""" + class Test1[T = int](): + attr: T + class Test2[T](): + attr: T + + Test1.attr #OK + Test2.attr + """); + } }