From 57b4491fda1f8754b281ef28a5b62ae12343de7c Mon Sep 17 00:00:00 2001 From: Morgan Bartholomew Date: Tue, 8 Apr 2025 12:15:16 +1000 Subject: [PATCH] [pycharm] PY-79331 render `type` as "type", not "Type" IJ-MR-159663 GitOrigin-RevId: e346f761a0c07e6f5897d02f6529ad78a073daa5 --- .../intentions/PyTypeHintGenerationUtil.java | 3 +- .../documentation/PyTypeModelBuilder.java | 22 +++++++++--- .../AgainstTypingProtocol.py | 2 +- .../ClassInstanceAgainstProtocolDunderCall.py | 2 +- .../ClassObjectType.py | 18 +++++----- .../ClassObjectTypeWithUnion.py | 8 ++--- ...edBuiltinTypeAndTypingTypeAreEquivalent.py | 8 ++--- .../TypeAndClassObjectTypesCompatibility.py | 4 +-- .../UnboundTypeVarsMatchClassObjectTypes.py | 4 +-- .../ancestorAndInheritorReturn/main.py | 4 +-- .../ancestorAndInheritorReturn/main_after.py | 4 +-- .../bitwiseOrUnionTypeImports/main.py | 4 +-- .../bitwiseOrUnionTypeImports/main_after.py | 4 +-- .../main.py | 4 +-- .../main_after.py | 4 +-- .../py39UnionTypeImports/main.py | 4 +-- .../py39UnionTypeImports/main_after.py | 4 +-- .../ExplicitlyAnnotatedClsParamType.html | 2 +- .../testData/quickdoc/TypeAliasStatement.html | 2 +- .../com/jetbrains/python/Py3TypeTest.java | 2 +- .../PyDecoratedFunctionTypeProviderTest.java | 2 +- .../jetbrains/python/PyParameterInfoTest.java | 10 +++--- .../com/jetbrains/python/PyTypeTest.java | 2 +- .../com/jetbrains/python/PyTypingTest.java | 36 +++++++++---------- .../Py3TypeCheckerInspectionTest.java | 6 ++-- .../PyTypeCheckerInspectionTest.java | 2 +- .../PyTypeHintsInspectionTest.java | 4 +-- .../PyMakeFunctionReturnTypeQuickFixTest.java | 8 ++--- 28 files changed, 93 insertions(+), 86 deletions(-) diff --git a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/intentions/PyTypeHintGenerationUtil.java b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/intentions/PyTypeHintGenerationUtil.java index 6117823d2e7f..4ccc73b8e277 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/intentions/PyTypeHintGenerationUtil.java +++ b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/intentions/PyTypeHintGenerationUtil.java @@ -391,8 +391,7 @@ public final class PyTypeHintGenerationUtil { } private void addTypingTypeIfNeeded(@NotNull PyType type) { - // TODO in Python 3.9+ use the builtin "type" instead of "typing.Type" - if (type instanceof PyInstantiableType instantiableType && instantiableType.isDefinition()) { + if (useGenericAliasFromTyping && type instanceof PyInstantiableType instantiableType && instantiableType.isDefinition()) { typingTypes.add("Type"); } } diff --git a/python/python-psi-impl/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java b/python/python-psi-impl/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java index b52b80edcee2..08057976576d 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java +++ b/python/python-psi-impl/src/com/jetbrains/python/documentation/PyTypeModelBuilder.java @@ -221,9 +221,11 @@ public class PyTypeModelBuilder { static class ClassObjectType extends TypeModel { private final TypeModel classType; + private final boolean useTypingAlias; - ClassObjectType(TypeModel classType) { + ClassObjectType(TypeModel classType, boolean useTypingAlias) { this.classType = classType; + this.useTypingAlias = useTypingAlias; } @Override @@ -300,7 +302,11 @@ public class PyTypeModelBuilder { result = NamedType.nameOrAny(type); } else { - result = new ClassObjectType(build(instanceType, allowUnions)); + boolean useTypingAlias = PythonLanguageLevelPusher + .getLanguageLevelForFile(myContext.getOrigin().getOriginalFile()) + .isOlderThan(LanguageLevel.PYTHON39); + + result = new ClassObjectType(build(instanceType, allowUnions), useTypingAlias); } } else if (type instanceof PyNamedTupleType) { @@ -357,7 +363,10 @@ public class PyTypeModelBuilder { } else if (ContainerUtil.all(unionMembers, t -> t instanceof PyClassType && ((PyClassType)t).isDefinition())) { final List instanceTypes = ContainerUtil.map(unionMembers, t -> build(((PyClassType)t).toInstance(), allowUnions)); - result = new ClassObjectType(new OneOf(instanceTypes, PyTypingTypeProvider.isBitwiseOrUnionAvailable(myContext))); + + final var useTypingAlias = LanguageLevel.forElement(myContext.getOrigin().getOriginalFile()).isOlderThan(LanguageLevel.PYTHON39); + + result = new ClassObjectType(new OneOf(instanceTypes, PyTypingTypeProvider.isBitwiseOrUnionAvailable(myContext)), useTypingAlias); } else { result = new OneOf(Collections2.transform(unionMembers, t -> build(t, false)), @@ -801,7 +810,12 @@ public class PyTypeModelBuilder { @Override public void classObject(ClassObjectType type) { - add(escaped("Type")); //NON-NLS + if (type.useTypingAlias) { + add(escaped("Type")); //NON-NLS + } + else { + add(styled("type", PyHighlighter.PY_BUILTIN_NAME)); //NON-NLS + } add(styled("[", PyHighlighter.PY_BRACKETS)); type.classType.accept(this); add(styled("]", PyHighlighter.PY_BRACKETS)); diff --git a/python/testData/inspections/PyTypeCheckerInspection/AgainstTypingProtocol.py b/python/testData/inspections/PyTypeCheckerInspection/AgainstTypingProtocol.py index f7e35079cbc5..1fdb08089c9d 100644 --- a/python/testData/inspections/PyTypeCheckerInspection/AgainstTypingProtocol.py +++ b/python/testData/inspections/PyTypeCheckerInspection/AgainstTypingProtocol.py @@ -21,7 +21,7 @@ close(f) r = Resource() close(r) -# There must be a warning "Expected type 'SupportsClose', got 'Type[Resource]' instead". +# There must be a warning "Expected type 'SupportsClose', got 'type[Resource]' instead". # To fix this in PyTypeChecker.match(PyCallableType, PyCallableType, MatchContext) should be added checking named, optional and star params, not only positional ones. # close(Resource) diff --git a/python/testData/inspections/PyTypeCheckerInspection/ClassInstanceAgainstProtocolDunderCall.py b/python/testData/inspections/PyTypeCheckerInspection/ClassInstanceAgainstProtocolDunderCall.py index 1bb15d940586..dfeff045e8a0 100644 --- a/python/testData/inspections/PyTypeCheckerInspection/ClassInstanceAgainstProtocolDunderCall.py +++ b/python/testData/inspections/PyTypeCheckerInspection/ClassInstanceAgainstProtocolDunderCall.py @@ -12,4 +12,4 @@ def foo(arg: P): pass foo(C()) -foo(C) \ No newline at end of file +foo(C) \ No newline at end of file diff --git a/python/testData/inspections/PyTypeCheckerInspection/ClassObjectType.py b/python/testData/inspections/PyTypeCheckerInspection/ClassObjectType.py index c461ecc1f8dc..003137f31f7d 100644 --- a/python/testData/inspections/PyTypeCheckerInspection/ClassObjectType.py +++ b/python/testData/inspections/PyTypeCheckerInspection/ClassObjectType.py @@ -6,7 +6,7 @@ class MyClass: def expects_myclass(x: Type[MyClass]): pass -expects_myclass(MyClass()) +expects_myclass(MyClass()) expects_class(MyClass) T1 = TypeVar('T1') @@ -14,23 +14,23 @@ def expects_any_class(x: Type[T1]): pass expects_any_class(MyClass) -expects_any_class(MyClass()) +expects_any_class(MyClass()) expects_any_class(object) -expects_any_class(object()) +expects_any_class(object()) T2 = TypeVar('T2', MyClass) def expects_myclass_descendant(x: Type[T2]): pass expects_myclass_descendant(MyClass) -expects_myclass_descendant(MyClass()) -expects_myclass_descendant(object) -expects_myclass_descendant(object()) +expects_myclass_descendant(MyClass()) +expects_myclass_descendant(object) +expects_myclass_descendant(object()) def expects_myclass_descendant_or_none(x: Optional[Type[T2]]): pass expects_myclass_descendant_or_none(MyClass) -expects_myclass_descendant_or_none(MyClass()) -expects_myclass_descendant_or_none(object) -expects_myclass_descendant_or_none(object()) \ No newline at end of file +expects_myclass_descendant_or_none(MyClass()) +expects_myclass_descendant_or_none(object) +expects_myclass_descendant_or_none(object()) \ No newline at end of file diff --git a/python/testData/inspections/PyTypeCheckerInspection/ClassObjectTypeWithUnion.py b/python/testData/inspections/PyTypeCheckerInspection/ClassObjectTypeWithUnion.py index ebc2c120bc28..d28193625f96 100644 --- a/python/testData/inspections/PyTypeCheckerInspection/ClassObjectTypeWithUnion.py +++ b/python/testData/inspections/PyTypeCheckerInspection/ClassObjectTypeWithUnion.py @@ -8,8 +8,8 @@ def expects_myclass_or_str1(x: Type[Union[MyClass, str]]): expects_myclass_or_str1(MyClass) expects_myclass_or_str1(str) -expects_myclass_or_str1(int) -expects_myclass_or_str1(42) +expects_myclass_or_str1(int) +expects_myclass_or_str1(42) def expects_myclass_or_str2(x: Union[Type[MyClass], Type[str]]): @@ -17,5 +17,5 @@ def expects_myclass_or_str2(x: Union[Type[MyClass], Type[str]]): expects_myclass_or_str2(MyClass) expects_myclass_or_str2(str) -expects_myclass_or_str2(int) -expects_myclass_or_str2(42) +expects_myclass_or_str2(int) +expects_myclass_or_str2(42) diff --git a/python/testData/inspections/PyTypeCheckerInspection/ParametrizedBuiltinTypeAndTypingTypeAreEquivalent.py b/python/testData/inspections/PyTypeCheckerInspection/ParametrizedBuiltinTypeAndTypingTypeAreEquivalent.py index ca5f867efce0..75adee489e5d 100644 --- a/python/testData/inspections/PyTypeCheckerInspection/ParametrizedBuiltinTypeAndTypingTypeAreEquivalent.py +++ b/python/testData/inspections/PyTypeCheckerInspection/ParametrizedBuiltinTypeAndTypingTypeAreEquivalent.py @@ -3,12 +3,12 @@ from typing import Type, TypeVar def expects_typing_Type(x: Type[str]): expects_builtin_type(x) - expects_builtin_type(int) + expects_builtin_type(int) def expects_builtin_type(x: type[str]): expects_typing_Type(x) - expects_typing_Type(int) + expects_typing_Type(int) T = TypeVar('T', bound=str) @@ -16,9 +16,9 @@ T = TypeVar('T', bound=str) def expects_generic_builtin_type(x: type[T]): expects_generic_typing_Type(x) - expects_generic_typing_Type(int) + expects_generic_typing_Type(int) def expects_generic_typing_Type(x: Type[T]): expects_generic_builtin_type(x) - expects_generic_builtin_type(int) + expects_generic_builtin_type(int) diff --git a/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py b/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py index fa9d6d508d40..57024c6e84e3 100644 --- a/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py +++ b/python/testData/inspections/PyTypeCheckerInspection/TypeAndClassObjectTypesCompatibility.py @@ -37,9 +37,9 @@ expects_type(object) expects_typing_type(type) expects_typing_type_any(type) expects_typing_type(object) -expects_str_class(type) +expects_str_class(type) expects_any_type_via_type_var(type) -expects_str_subclass(type) +expects_str_subclass(type) expects_object(type) diff --git a/python/testData/inspections/PyTypeCheckerInspection/UnboundTypeVarsMatchClassObjectTypes.py b/python/testData/inspections/PyTypeCheckerInspection/UnboundTypeVarsMatchClassObjectTypes.py index f32b8837fc48..4fa068789201 100644 --- a/python/testData/inspections/PyTypeCheckerInspection/UnboundTypeVarsMatchClassObjectTypes.py +++ b/python/testData/inspections/PyTypeCheckerInspection/UnboundTypeVarsMatchClassObjectTypes.py @@ -15,7 +15,7 @@ def f2(p: B): return p -f2(str) +f2(str) def g1(p): @@ -33,6 +33,6 @@ def g2(p): """ -g2(str) +g2(str) xs = list([str]) diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main.py index 58610cb6ea6e..96c8a376b962 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main.py @@ -3,6 +3,6 @@ import my def foo(a) -> my.X: if a: - return my.X + return my.X else: - return my.Y \ No newline at end of file + return my.Y \ No newline at end of file diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main_after.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main_after.py index f802da94d2e2..5d1c7a00c045 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main_after.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/ancestorAndInheritorReturn/main_after.py @@ -1,10 +1,8 @@ -from typing import Type - import my from my import X, Y -def foo(a) -> Type[X | Y]: +def foo(a) -> type[X | Y]: if a: return my.X else: diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main.py index 58610cb6ea6e..96c8a376b962 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main.py @@ -3,6 +3,6 @@ import my def foo(a) -> my.X: if a: - return my.X + return my.X else: - return my.Y \ No newline at end of file + return my.Y \ No newline at end of file diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main_after.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main_after.py index 39a4f6bd1da5..cdd507678cb3 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main_after.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/bitwiseOrUnionTypeImports/main_after.py @@ -1,10 +1,8 @@ -from typing import Type - import my from my import X, Y -def foo(a) -> Type[X | Y]: +def foo(a) -> type[X | Y]: if a: return my.X else: diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main.py index d062d18b84f1..09af234463c8 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main.py @@ -5,6 +5,6 @@ import my def foo(a) -> my.X: if a: - return my.X + return my.X else: - return my.Y \ No newline at end of file + return my.Y \ No newline at end of file diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main_after.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main_after.py index 7e1363a36f75..641225cbd224 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main_after.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports/main_after.py @@ -1,12 +1,10 @@ from __future__ import annotations -from typing import Type - import my from my import X, Y -def foo(a) -> Type[X | Y]: +def foo(a) -> type[X | Y]: if a: return my.X else: diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main.py index 58610cb6ea6e..96c8a376b962 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main.py @@ -3,6 +3,6 @@ import my def foo(a) -> my.X: if a: - return my.X + return my.X else: - return my.Y \ No newline at end of file + return my.Y \ No newline at end of file diff --git a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main_after.py b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main_after.py index b7fe400b844f..5487eb885b4e 100644 --- a/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main_after.py +++ b/python/testData/quickFixes/PyMakeFunctionReturnTypeQuickFixTest/py39UnionTypeImports/main_after.py @@ -1,10 +1,10 @@ -from typing import Union, Type +from typing import Union import my from my import X, Y -def foo(a) -> Type[Union[X, Y]]: +def foo(a) -> type[Union[X, Y]]: if a: return my.X else: diff --git a/python/testData/quickdoc/ExplicitlyAnnotatedClsParamType.html b/python/testData/quickdoc/ExplicitlyAnnotatedClsParamType.html index 7e7d70b5f4b6..ea47379ec4c5 100644 --- a/python/testData/quickdoc/ExplicitlyAnnotatedClsParamType.html +++ b/python/testData/quickdoc/ExplicitlyAnnotatedClsParamType.html @@ -1 +1 @@ -
@classmethod
def factory(cls: Type[T]) -> T
\ No newline at end of file +
@classmethod
def factory(cls: type[T]) -> T
\ No newline at end of file diff --git a/python/testData/quickdoc/TypeAliasStatement.html b/python/testData/quickdoc/TypeAliasStatement.html index fbeef078f0a5..c3a4f7d2ec52 100644 --- a/python/testData/quickdoc/TypeAliasStatement.html +++ b/python/testData/quickdoc/TypeAliasStatement.html @@ -1 +1 @@ -
Type alias statement my_dict of TypeAliasStatement
type my_dict[T, U] = Type[dict[T, U]]
\ No newline at end of file +
Type alias statement my_dict of TypeAliasStatement
type my_dict[T, U] = type[dict[T, U]]
\ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/Py3TypeTest.java b/python/testSrc/com/jetbrains/python/Py3TypeTest.java index 00d1f0415ac7..24e23913b05e 100644 --- a/python/testSrc/com/jetbrains/python/Py3TypeTest.java +++ b/python/testSrc/com/jetbrains/python/Py3TypeTest.java @@ -868,7 +868,7 @@ public class Py3TypeTest extends PyTestCase { // PY-24445 public void testIsSubclassInsideListComprehension() { - doTest("list[Type[A]]", + doTest("list[type[A]]", "class A: pass\n" + "expr = [e for e in [] if issubclass(e, A)]"); } diff --git a/python/testSrc/com/jetbrains/python/PyDecoratedFunctionTypeProviderTest.java b/python/testSrc/com/jetbrains/python/PyDecoratedFunctionTypeProviderTest.java index 08ca16439ebb..cd87c1e8cf70 100644 --- a/python/testSrc/com/jetbrains/python/PyDecoratedFunctionTypeProviderTest.java +++ b/python/testSrc/com/jetbrains/python/PyDecoratedFunctionTypeProviderTest.java @@ -244,7 +244,7 @@ public class PyDecoratedFunctionTypeProviderTest extends PyTestCase { // PY-60104 public void testNotAnnotatedClassDecoratorIsIgnored() { - doTest("C", "Type[C]", """ + doTest("C", "type[C]", """ from typing import reveal_type def changing_interface(cls): diff --git a/python/testSrc/com/jetbrains/python/PyParameterInfoTest.java b/python/testSrc/com/jetbrains/python/PyParameterInfoTest.java index b40c1b2713bb..ee4d4444392f 100644 --- a/python/testSrc/com/jetbrains/python/PyParameterInfoTest.java +++ b/python/testSrc/com/jetbrains/python/PyParameterInfoTest.java @@ -273,16 +273,16 @@ public class PyParameterInfoTest extends LightMarkedTestCase { public void testRedefinedNewConstructorCall() { Map marks = loadTest(2); - feignCtrlP(marks.get("").getTextOffset()).check("cls: Type[A], a, b", new String[]{"a, "}, new String[]{"cls: Type[A], "}); - feignCtrlP(marks.get("").getTextOffset()).check("cls: Type[A], a, b", new String[]{"b"}, new String[]{"cls: Type[A], "}); + feignCtrlP(marks.get("").getTextOffset()).check("cls: type[A], a, b", new String[]{"a, "}, new String[]{"cls: type[A], "}); + feignCtrlP(marks.get("").getTextOffset()).check("cls: type[A], a, b", new String[]{"b"}, new String[]{"cls: type[A], "}); } public void testRedefinedNewDirectCall() { Map marks = loadTest(3); - feignCtrlP(marks.get("").getTextOffset()).check("cls: Type[A], a, b", new String[]{"cls: Type[A], "}); - feignCtrlP(marks.get("").getTextOffset()).check("cls: Type[A], a, b", new String[]{"a, "}); - feignCtrlP(marks.get("").getTextOffset()).check("cls: Type[A], a, b", new String[]{"b"}); + feignCtrlP(marks.get("").getTextOffset()).check("cls: type[A], a, b", new String[]{"cls: type[A], "}); + feignCtrlP(marks.get("").getTextOffset()).check("cls: type[A], a, b", new String[]{"a, "}); + feignCtrlP(marks.get("").getTextOffset()).check("cls: type[A], a, b", new String[]{"b"}); } public void testIgnoreNewInOldStyleClass() { diff --git a/python/testSrc/com/jetbrains/python/PyTypeTest.java b/python/testSrc/com/jetbrains/python/PyTypeTest.java index 148f21b2e2a9..05cf56156b48 100644 --- a/python/testSrc/com/jetbrains/python/PyTypeTest.java +++ b/python/testSrc/com/jetbrains/python/PyTypeTest.java @@ -4014,7 +4014,7 @@ public class PyTypeTest extends PyTestCase { public void testParticularTypeAgainstTypeVarBoundedWithBuiltinType() { runWithLanguageLevel( LanguageLevel.getLatest(), - () -> doTest("Type[MyClass]", + () -> doTest("type[MyClass]", """ from typing import TypeVar, Type diff --git a/python/testSrc/com/jetbrains/python/PyTypingTest.java b/python/testSrc/com/jetbrains/python/PyTypingTest.java index a365cdcc30ef..ffbb9ff2dc66 100644 --- a/python/testSrc/com/jetbrains/python/PyTypingTest.java +++ b/python/testSrc/com/jetbrains/python/PyTypingTest.java @@ -1236,7 +1236,7 @@ public class PyTypingTest extends PyTestCase { // PY-20057 public void testClassObjectType() { - doTest("Type[MyClass]", + doTest("type[MyClass]", """ from typing import Type @@ -1249,7 +1249,7 @@ public class PyTypingTest extends PyTestCase { // PY-20057 public void testConstrainedClassObjectTypeOfParam() { - doTest("Type[T]", + doTest("type[T]", """ from typing import Type, TypeVar @@ -1275,7 +1275,7 @@ public class PyTypingTest extends PyTestCase { // PY-20057 public void testFunctionReturnsTypeOfInstance() { - doTest("Type[int]", + doTest("type[int]", """ from typing import Type, TypeVar @@ -1319,7 +1319,7 @@ public class PyTypingTest extends PyTestCase { // PY-20057 public void testUnionOfClassObjectTypes() { - doTest("Type[int | str]", + doTest("type[int | str]", """ from typing import Type, Union @@ -1329,7 +1329,7 @@ public class PyTypingTest extends PyTestCase { // PY-23053 public void testUnboundGenericMatchesClassObjectTypes() { - doTest("Type[str]", + doTest("type[str]", """ from typing import Generic, TypeVar @@ -1348,7 +1348,7 @@ public class PyTypingTest extends PyTestCase { // PY-23053 public void testListContainingClasses() { - doTest("Type[str]", + doTest("type[str]", "xs = [str]\n" + "expr = xs.pop()"); } @@ -1953,7 +1953,7 @@ public class PyTypingTest extends PyTestCase { // PY-44974 public void testBitwiseOrUnionIsSubclass() { - doTest("Type[str | dict | int]", + doTest("type[str | dict | int]", """ a = list if issubclass(a, str | dict | int): @@ -4593,7 +4593,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testTypeVarDefaultsClassReference() { - doTest("Type[slice[int, int, int | None]]", """ + doTest("type[slice[int, int, int | None]]", """ from typing import TypeVar, Generic StartT = TypeVar("StartT", default=int) StopT = TypeVar("StopT", default=StartT) @@ -4605,7 +4605,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testTypeVarDefaultsClassReferenceNewSyntax() { - doTest("Type[slice[int, int, int | None]]", """ + doTest("type[slice[int, int, int | None]]", """ class slice[StartT = int, StopT = StartT, StepT = int | None]: ... expr = slice """); @@ -4673,7 +4673,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testTypeVarDefaultsListDefault() { - doTest("Type[Bar[int, list[int]]]", """ + doTest("type[Bar[int, list[int]]]", """ from typing import TypeVar, Generic T = TypeVar("T") @@ -4688,7 +4688,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testTypeVarDefaultsClassWithInitMethodReference() { - doTest("Type[Bar[Any, list]]", """ + doTest("type[Bar[Any, list]]", """ from typing import TypeVar, Generic Z1 = TypeVar("Z1") ListDefaultT = TypeVar("ListDefaultT", default=list[Z1]) @@ -4700,7 +4700,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testTypeVarDefaultsClassWithInitMethodReferenceNewSyntax() { - doTest("Type[Bar[Any, list]]", """ + doTest("type[Bar[Any, list]]", """ from typing import TypeVar, Generic class Bar[Z1, ListDefaultT = list[Z1]]: def __init__(self, x: Z1, y: ListDefaultT): ... @@ -4710,7 +4710,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testTypeVarDefaultsClassWithInitMethodReferenceParameterizedWithOneType() { - doTest("Type[Bar[int, list[int]]]", """ + doTest("type[Bar[int, list[int]]]", """ from typing import TypeVar, Generic Z1 = TypeVar("Z1") ListDefaultT = TypeVar("ListDefaultT", default=list[Z1]) @@ -4758,7 +4758,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testTypeVarDefaultsSubclassedClassReference() { - doTest("Type[Bar[str]]", """ + doTest("type[Bar[str]]", """ from typing import TypeVar, Generic, TypeAlias T1 = TypeVar("T1") T2 = TypeVar("T2") @@ -4814,7 +4814,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testReferenceToTypeVarTupleWithDefaultIsParameterizedType() { - doTest("Type[Foo[str, int]]", """ + doTest("type[Foo[str, int]]", """ from typing import Generic, TypeVarTuple, Unpack DefaultTs = TypeVarTuple("DefaultTs", default=Unpack[tuple[str, int]]) class Foo(Generic[*DefaultTs]): ... @@ -4864,7 +4864,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testParamSpecWithDefaultsClassReference() { - doTest("Type[Foo[[str, int]]]", """ + doTest("type[Foo[[str, int]]]", """ from typing import ParamSpec, Generic DefaultP = ParamSpec("DefaultP", default=[str, int]) class Foo(Generic[DefaultP]): ... @@ -4874,7 +4874,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testParamSpecWithDefaultsClassReferencesNewSyntax() { - doTest("Type[Foo[[str, int]]]", """ + doTest("type[Foo[[str, int]]]", """ class Foo[**P = [str, int]]: ... expr = Foo """); @@ -5095,7 +5095,7 @@ public class PyTypingTest extends PyTestCase { // PY-71002 public void testMixedTypeVarsWithDefaultsAndNonDefaultsReferenceType() { - doTest("Type[AllTheDefaults[int, complex, str, int, bool]]", """ + doTest("type[AllTheDefaults[int, complex, str, int, bool]]", """ from typing import TypeVar, Generic T1 = TypeVar("T1") T2 = TypeVar("T2") diff --git a/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java index c609a77664c7..ba7c0f33f3cb 100644 --- a/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/Py3TypeCheckerInspectionTest.java @@ -858,7 +858,7 @@ public class Py3TypeCheckerInspectionTest extends PyInspectionTestCase { from typing import Type def foo(x: Type[int | str]): pass - foo(int | str)"""); + foo(int | str)"""); } // PY-44974 @@ -2479,7 +2479,7 @@ def foo(param: str | int) -> TypeGuard[str]: t = Test() t.member = "str" t.member = 123 - t.member = list + t.member = list """); } @@ -2497,7 +2497,7 @@ def foo(param: str | int) -> TypeGuard[str]: t = Test() t.member = "str" t.member = 123 - t.member = list + t.member = list """); } diff --git a/python/testSrc/com/jetbrains/python/inspections/PyTypeCheckerInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyTypeCheckerInspectionTest.java index 03dbce91dace..715840b636c6 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyTypeCheckerInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyTypeCheckerInspectionTest.java @@ -1219,7 +1219,7 @@ public class PyTypeCheckerInspectionTest extends PyInspectionTestCase { def some_fn(arg: B): pass - some_fn(B)""") + some_fn(B)""") ); } diff --git a/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java index 7c36799a2e7c..a602da24ac0d 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java @@ -1112,12 +1112,12 @@ public class PyTypeHintsInspectionTest extends PyInspectionTestCase { # cls is not specified\s @classmethod def spam3(cls): - # type: (int) -> None + # type: (int) -> None pass @classmethod def egg3(cls, a, b): - # type: (int, str, bool) -> None + # type: (int, str, bool) -> None pass \s # cls is specified \s diff --git a/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionReturnTypeQuickFixTest.java b/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionReturnTypeQuickFixTest.java index e03e625dbb06..3ea27213fd51 100644 --- a/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionReturnTypeQuickFixTest.java +++ b/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionReturnTypeQuickFixTest.java @@ -37,25 +37,25 @@ public class PyMakeFunctionReturnTypeQuickFixTest extends PyQuickFixTestCase { // PY-27128 public void testPy39UnionTypeImports() { runWithLanguageLevel(LanguageLevel.PYTHON39, () -> { - doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "Type[Union[X, Y]]")); + doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "type[Union[X, Y]]")); }); } // PY-27128 public void testPy39BitwiseOrUnionFromFutureAnnotationsUnionTypeImports() { runWithLanguageLevel(LanguageLevel.PYTHON39, () -> { - doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "Type[X | Y]")); + doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "type[X | Y]")); }); } // PY-27128 public void testBitwiseOrUnionTypeImports() { - doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "Type[X | Y]")); + doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "type[X | Y]")); } // PY-27128 public void testAncestorAndInheritorReturn() { - doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "Type[X | Y]")); + doMultiFileTest(PyTypeCheckerInspection.class, PyPsiBundle.message("QFIX.make.function.return.type", "foo", "type[X | Y]")); } // PY-27128 PY-48466