From 556cb4fd3daba6204c0541d645a009882ec5dfe4 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Mon, 11 Dec 2017 20:44:41 +0300 Subject: [PATCH] Deprecate Python 2.4 language level. Remove its usages. --- .../jetbrains/python/psi/LanguageLevel.java | 14 +++- .../PyRaisingNewStyleClassInspection.html | 7 -- python/src/META-INF/python-core-common.xml | 1 - .../com/jetbrains/python/PyBundle.properties | 3 - .../PyRaisingNewStyleClassInspection.java | 75 ------------------- .../PyExtractSuperclassHelper.java | 2 +- .../python/testing/tox/PyToxTestLocator.java | 2 +- .../validation/CompatibilityVisitor.java | 74 +----------------- .../validation/UnsupportedFeaturesUtil.java | 2 +- .../inspections/DictComprehensionToCall.py | 2 +- .../assignmentStatement.py | 5 -- .../PyCompatibilityInspection/asyncAwait.py | 4 +- .../asyncComprehensions.py | 8 +- .../awaitInComprehensions.py | 16 ++-- .../callExpression.py | 3 +- .../conditionalExpression.py | 9 --- .../dictCompExpression.py | 2 +- .../fromImportStatement.py | 5 -- .../importStatement.py | 2 +- .../PyCompatibilityInspection/pyClass.py | 3 - .../PyCompatibilityInspection/raiseFrom.py | 2 +- .../relativeImport.py | 1 - .../setCompExpression.py | 2 +- .../setLiteralExpression.py | 2 +- .../stringLiteralExpression.py | 42 +++++------ .../tryExceptStatement.py | 8 -- .../tryFinallyEmptyRaisePy2.py | 2 +- .../tryFinallyEmptyRaisePy3.py | 2 +- .../underscoreBz2Module.py | 2 +- .../underscoresInNumericLiterals.py | 74 +++++++++--------- .../variableAnnotations.py | 10 +-- .../withStatement.py | 4 +- .../expected.xml | 8 -- .../src/test.py | 8 -- .../python/PythonInspectionsTest.java | 5 -- .../PyCompatibilityInspectionTest.java | 21 ------ 36 files changed, 103 insertions(+), 329 deletions(-) delete mode 100644 python/resources/inspectionDescriptions/PyRaisingNewStyleClassInspection.html delete mode 100644 python/src/com/jetbrains/python/inspections/PyRaisingNewStyleClassInspection.java delete mode 100644 python/testData/inspections/PyCompatibilityInspection/assignmentStatement.py delete mode 100644 python/testData/inspections/PyCompatibilityInspection/conditionalExpression.py delete mode 100644 python/testData/inspections/PyCompatibilityInspection/pyClass.py delete mode 100644 python/testData/inspections/PyCompatibilityInspection/relativeImport.py delete mode 100644 python/testData/inspections/PyCompatibilityInspection/tryExceptStatement.py delete mode 100644 python/testData/inspections/PyRaisingNewStyleClassInspection/expected.xml delete mode 100644 python/testData/inspections/PyRaisingNewStyleClassInspection/src/test.py diff --git a/python/psi-api/src/com/jetbrains/python/psi/LanguageLevel.java b/python/psi-api/src/com/jetbrains/python/psi/LanguageLevel.java index 15b0929337d2..05f06d070d03 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/LanguageLevel.java +++ b/python/psi-api/src/com/jetbrains/python/psi/LanguageLevel.java @@ -30,6 +30,11 @@ import java.util.stream.Stream; * @author yole */ public enum LanguageLevel { + + /** + * @deprecated This level will be removed in 2018.2. + */ + @Deprecated PYTHON24(24, false, true, false, false), PYTHON25(25, false, true, false, false), PYTHON26(26, true, true, false, false), @@ -42,9 +47,13 @@ public enum LanguageLevel { PYTHON35(35, true, false, true, true), PYTHON36(36, true, false, true, true); + /** + * @deprecated This field will be removed in 2018.2. + */ + @Deprecated public static final List ALL_LEVELS = ImmutableList.copyOf(values()); - public static final List SUPPORTED_LEVELS = ImmutableList.copyOf(Stream.of(values()).filter(v -> v.myVersion >= 26).collect( + public static final List SUPPORTED_LEVELS = ImmutableList.copyOf(Stream.of(values()).filter(v -> v.myVersion >= 25).collect( Collectors.toList())); // Python versions 2.4 and 2.5 aren't supported anymore private static final LanguageLevel DEFAULT2 = PYTHON27; @@ -109,9 +118,6 @@ public enum LanguageLevel { public static LanguageLevel fromPythonVersion(@NotNull String pythonVersion) { if (pythonVersion.startsWith("2")) { - if (pythonVersion.startsWith("2.4")) { - return PYTHON24; - } if (pythonVersion.startsWith("2.5")) { return PYTHON25; } diff --git a/python/resources/inspectionDescriptions/PyRaisingNewStyleClassInspection.html b/python/resources/inspectionDescriptions/PyRaisingNewStyleClassInspection.html deleted file mode 100644 index dbec4c1590e2..000000000000 --- a/python/resources/inspectionDescriptions/PyRaisingNewStyleClassInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - -This inspection detects attempts to raise a new-style class as an exception in projects with -language level less than 2.5. Raising new-style classes is only supported in Python 2.5 -or later. - - \ No newline at end of file diff --git a/python/src/META-INF/python-core-common.xml b/python/src/META-INF/python-core-common.xml index 7b221bf26862..80a446170011 100644 --- a/python/src/META-INF/python-core-common.xml +++ b/python/src/META-INF/python-core-common.xml @@ -365,7 +365,6 @@ - diff --git a/python/src/com/jetbrains/python/PyBundle.properties b/python/src/com/jetbrains/python/PyBundle.properties index 5201c6029fee..2d2e13c19008 100644 --- a/python/src/com/jetbrains/python/PyBundle.properties +++ b/python/src/com/jetbrains/python/PyBundle.properties @@ -447,9 +447,6 @@ INSP.NAME.exception.not.inherit=Exception doesn't inherit from standard ''Except # PyDefaultArgumentInspection INSP.NAME.default.argument=Default argument is mutable -# PyRaisingNewStyleClassInspection -INSP.NAME.raising.new.style.class=Raising a new style class - # PyIncorrectDocstringInspection INSP.NAME.incorrect.docstring=Incorrect docstring INSP.missing.parameter.in.docstring=Missing parameter {0} in docstring diff --git a/python/src/com/jetbrains/python/inspections/PyRaisingNewStyleClassInspection.java b/python/src/com/jetbrains/python/inspections/PyRaisingNewStyleClassInspection.java deleted file mode 100644 index 4c501c26e284..000000000000 --- a/python/src/com/jetbrains/python/inspections/PyRaisingNewStyleClassInspection.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2000-2014 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.jetbrains.python.inspections; - -import com.intellij.codeInspection.LocalInspectionToolSession; -import com.intellij.codeInspection.ProblemsHolder; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiElementVisitor; -import com.jetbrains.python.PyBundle; -import com.jetbrains.python.psi.*; -import org.jetbrains.annotations.Nls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** - * @author Alexey.Ivanov - */ -public class PyRaisingNewStyleClassInspection extends PyInspection { - @Nls - @NotNull - @Override - public String getDisplayName() { - return PyBundle.message("INSP.NAME.raising.new.style.class"); - } - - @NotNull - @Override - public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, - boolean isOnTheFly, - @NotNull LocalInspectionToolSession session) { - return new Visitor(holder, session); - } - - private static class Visitor extends PyInspectionVisitor { - public Visitor(@Nullable ProblemsHolder holder, @NotNull LocalInspectionToolSession session) { - super(holder, session); - } - - @Override - public void visitPyRaiseStatement(PyRaiseStatement node) { - if (LanguageLevel.forElement(node).isAtLeast(LanguageLevel.PYTHON25)) { - return; - } - final PyExpression[] expressions = node.getExpressions(); - if (expressions.length == 0) { - return; - } - final PyExpression expression = expressions[0]; - if (expression instanceof PyCallExpression) { - final PyExpression callee = ((PyCallExpression)expression).getCallee(); - if (callee instanceof PyReferenceExpression) { - final PsiElement psiElement = ((PyReferenceExpression)callee).getReference(getResolveContext()).resolve(); - if (psiElement instanceof PyClass) { - if (((PyClass)psiElement).isNewStyleClass(null)) { - registerProblem(expression, "Raising a new style class"); - } - } - } - } - } - } -} diff --git a/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java b/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java index 964c4ab7c3c4..e2fb45af7ed9 100644 --- a/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java +++ b/python/src/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassHelper.java @@ -158,7 +158,7 @@ public final class PyExtractSuperclassHelper { LOG.assertTrue(psiFile != null); if (psiFile.getLastChild() != null) { // TODO: make the number of newlines depend on style setting - psiFile.add(PyElementGenerator.getInstance(project).createFromText(LanguageLevel.PYTHON24, PsiWhiteSpace.class, "\n\n")); + psiFile.add(PyElementGenerator.getInstance(project).createFromText(LanguageLevel.PYTHON27, PsiWhiteSpace.class, "\n\n")); } newClass = (PyClass)psiFile.add(newClass); PyClassRefactoringUtil.insertImport(clazz, Collections.singleton(newClass)); diff --git a/python/src/com/jetbrains/python/testing/tox/PyToxTestLocator.java b/python/src/com/jetbrains/python/testing/tox/PyToxTestLocator.java index 852c16993bf4..93da07b06ff2 100644 --- a/python/src/com/jetbrains/python/testing/tox/PyToxTestLocator.java +++ b/python/src/com/jetbrains/python/testing/tox/PyToxTestLocator.java @@ -48,7 +48,7 @@ public final class PyToxTestLocator implements SMTestLocator { @NotNull final String path, @NotNull final Project project, @NotNull final GlobalSearchScope scope) { - final PsiFile file = PyElementGenerator.getInstance(project).createDummyFile(LanguageLevel.PYTHON24, DUMMY_FILE_PADDING); + final PsiFile file = PyElementGenerator.getInstance(project).createDummyFile(LanguageLevel.PYTHON27, DUMMY_FILE_PADDING); file.putUserData(ENV_NAME_KEY, path); @SuppressWarnings("unchecked") final List locations = Collections.singletonList(new PsiLocation(file)); diff --git a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java index 4441f7eca5a8..97a0e7b92900 100644 --- a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java +++ b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java @@ -48,7 +48,6 @@ public abstract class CompatibilityVisitor extends PyAnnotator { protected List myVersionsToProcess; static { - AVAILABLE_PREFIXES.put(LanguageLevel.PYTHON24, Sets.newHashSet("R", "U", "UR")); AVAILABLE_PREFIXES.put(LanguageLevel.PYTHON25, Sets.newHashSet("R", "U", "UR")); AVAILABLE_PREFIXES.put(LanguageLevel.PYTHON26, Sets.newHashSet("R", "U", "UR", "B", "BR")); AVAILABLE_PREFIXES.put(LanguageLevel.PYTHON27, Sets.newHashSet("R", "U", "UR", "B", "BR")); @@ -297,11 +296,9 @@ public abstract class CompatibilityVisitor extends PyAnnotator { public void visitPyWithStatement(PyWithStatement node) { super.visitPyWithStatement(node); - registerOnFirstMatchingVersion(LanguageLevel.PYTHON24::equals, "Python version 2.4 doesn't support this syntax.", node); - final PyWithItem[] items = node.getWithItems(); if (items.length > 1) { - registerForAllMatchingVersions(level -> !level.supportsSetLiterals() && !level.equals(LanguageLevel.PYTHON24), + registerForAllMatchingVersions(level -> !level.supportsSetLiterals(), " not support multiple context managers", Arrays.asList(items).subList(1, items.length), null); @@ -316,16 +313,6 @@ public abstract class CompatibilityVisitor extends PyAnnotator { checkAsyncKeyword(node); } - @Override - public void visitPyClass(PyClass node) { // PY-2719 - super.visitPyClass(node); - - final PyArgumentList list = node.getSuperClassExpressionList(); - if (list != null && list.getArguments().length == 0) { - registerOnFirstMatchingVersion(LanguageLevel.PYTHON24::equals, "Python version 2.4 does not support this syntax.", list); - } - } - @Override public void visitPyPrintStatement(PyPrintStatement node) { super.visitPyPrintStatement(node); @@ -343,65 +330,6 @@ public abstract class CompatibilityVisitor extends PyAnnotator { } } - @Override - public void visitPyFromImportStatement(PyFromImportStatement node) { - super.visitPyFromImportStatement(node); - - final PyReferenceExpression importSource = node.getImportSource(); - if (importSource != null) { - final PsiElement prev = importSource.getPrevSibling(); - if (prev != null && prev.getNode().getElementType() == PyTokenTypes.DOT) { // PY-2793 - registerOnFirstMatchingVersion(LanguageLevel.PYTHON24::equals, "Python version 2.4 doesn't support this syntax.", node); - } - } - else { - registerOnFirstMatchingVersion(LanguageLevel.PYTHON24::equals, "Python version 2.4 doesn't support this syntax.", node); - } - } - - @Override - public void visitPyAssignmentStatement(PyAssignmentStatement node) { - super.visitPyAssignmentStatement(node); - if (myVersionsToProcess.contains(LanguageLevel.PYTHON24)) { - PyExpression assignedValue = node.getAssignedValue(); - - Stack st = new Stack<>(); // PY-2796 - if (assignedValue != null) - st.push(assignedValue); - while (!st.isEmpty()) { - PsiElement el = st.pop(); - if (el instanceof PyYieldExpression) - registerProblem(node, "Python version 2.4 doesn't support this syntax. " + - "In Python <= 2.4, yield was a statement; it didn't return any value."); - else { - for (PsiElement e : el.getChildren()) - st.push(e); - } - } - } - } - - @Override - public void visitPyConditionalExpression(PyConditionalExpression node) { //PY-4293 - super.visitPyConditionalExpression(node); - - registerOnFirstMatchingVersion(LanguageLevel.PYTHON24::equals, "Python version 2.4 doesn't support this syntax.", node); - } - - @Override - public void visitPyTryExceptStatement(PyTryExceptStatement node) { // PY-2795 - super.visitPyTryExceptStatement(node); - - final PyExceptPart[] excepts = node.getExceptParts(); - final PyFinallyPart finallyPart = node.getFinallyPart(); - if (excepts.length != 0 && finallyPart != null) { - registerOnFirstMatchingVersion(LanguageLevel.PYTHON24::equals, - "Python version 2.4 doesn't support this syntax. You could use a finally block to ensure " + - "that code is always executed, or one or more except blocks to catch specific exceptions.", - node); - } - } - @Override public void visitPyCallExpression(PyCallExpression node) { super.visitPyCallExpression(node); diff --git a/python/src/com/jetbrains/python/validation/UnsupportedFeaturesUtil.java b/python/src/com/jetbrains/python/validation/UnsupportedFeaturesUtil.java index 928f2f2fa53d..ac39c176d327 100644 --- a/python/src/com/jetbrains/python/validation/UnsupportedFeaturesUtil.java +++ b/python/src/com/jetbrains/python/validation/UnsupportedFeaturesUtil.java @@ -36,7 +36,7 @@ public class UnsupportedFeaturesUtil { Logger log = Logger.getInstance(UnsupportedFeaturesUtil.class.getName()); log.error("Cannot find \"versions.xml\". " + e.getMessage()); } - for (LanguageLevel level : LanguageLevel.ALL_LEVELS) { + for (LanguageLevel level : LanguageLevel.SUPPORTED_LEVELS) { ALL_LANGUAGE_LEVELS.add(level.toString()); } } diff --git a/python/testData/inspections/DictComprehensionToCall.py b/python/testData/inspections/DictComprehensionToCall.py index b360be79e87d..06176bee477e 100644 --- a/python/testData/inspections/DictComprehensionToCall.py +++ b/python/testData/inspections/DictComprehensionToCall.py @@ -1 +1 @@ -var = {k: v for k, v in zip('abc', range(3)) if k % 2} \ No newline at end of file +var = {k: v for k, v in zip('abc', range(3)) if k % 2} \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/assignmentStatement.py b/python/testData/inspections/PyCompatibilityInspection/assignmentStatement.py deleted file mode 100644 index c015d246e1dc..000000000000 --- a/python/testData/inspections/PyCompatibilityInspection/assignmentStatement.py +++ /dev/null @@ -1,5 +0,0 @@ -# PY-2792 -x = True if condition else False - -def foo(): # PY-2796 - a = (yield 1) diff --git a/python/testData/inspections/PyCompatibilityInspection/asyncAwait.py b/python/testData/inspections/PyCompatibilityInspection/asyncAwait.py index 222cf799090f..fb26d141fc21 100644 --- a/python/testData/inspections/PyCompatibilityInspection/asyncAwait.py +++ b/python/testData/inspections/PyCompatibilityInspection/asyncAwait.py @@ -1,7 +1,7 @@ async def foo(x): - async with x: + async with x: y = await x if await y: - return await z + return await z async for y in x: pass diff --git a/python/testData/inspections/PyCompatibilityInspection/asyncComprehensions.py b/python/testData/inspections/PyCompatibilityInspection/asyncComprehensions.py index 02cb5761218a..6caea7af8c20 100644 --- a/python/testData/inspections/PyCompatibilityInspection/asyncComprehensions.py +++ b/python/testData/inspections/PyCompatibilityInspection/asyncComprehensions.py @@ -1,16 +1,16 @@ async def asyncgen(): yield 10 async def run(): - {i async for i in asyncgen()} + {i async for i in asyncgen()} [i async for i in asyncgen()] - {i: i ** 2 async for i in asyncgen()} + {i: i ** 2 async for i in asyncgen()} (i ** 2 async for i in asyncgen()) list(i async for i in asyncgen()) - dataset = {data for line in gen() + dataset = {data for line in gen() async for data in line if check(data)} - dataset = {data async for line in asyncgen() + dataset = {data async for line in asyncgen() async for data in line if check(data)} \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/awaitInComprehensions.py b/python/testData/inspections/PyCompatibilityInspection/awaitInComprehensions.py index 26c19071ede7..d4672d7c96af 100644 --- a/python/testData/inspections/PyCompatibilityInspection/awaitInComprehensions.py +++ b/python/testData/inspections/PyCompatibilityInspection/awaitInComprehensions.py @@ -1,16 +1,16 @@ async def async2(): [await fun() for fun in funcs] - {await fun() for fun in funcs} - {fun: await fun() for fun in funcs} + {await fun() for fun in funcs} + {fun: await fun() for fun in funcs} [await fun() for fun in funcs if await smth] - {await fun() for fun in funcs if await smth} - {fun: await fun() for fun in funcs if await smth} + {await fun() for fun in funcs if await smth} + {fun: await fun() for fun in funcs if await smth} [await fun() async for fun in funcs] - {await fun() async for fun in funcs} - {fun: await fun() async for fun in funcs} + {await fun() async for fun in funcs} + {fun: await fun() async for fun in funcs} [await fun() async for fun in funcs if await smth] - {await fun() async for fun in funcs if await smth} - {fun: await fun() async for fun in funcs if await smth} \ No newline at end of file + {await fun() async for fun in funcs if await smth} + {fun: await fun() async for fun in funcs if await smth} \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/callExpression.py b/python/testData/inspections/PyCompatibilityInspection/callExpression.py index 4b2c7fb1254a..4c7a3f7b60e5 100644 --- a/python/testData/inspections/PyCompatibilityInspection/callExpression.py +++ b/python/testData/inspections/PyCompatibilityInspection/callExpression.py @@ -1,10 +1,9 @@ class A(B): def __init__(self): - super() + super() cmp() reduce() -all() buffer() diff --git a/python/testData/inspections/PyCompatibilityInspection/conditionalExpression.py b/python/testData/inspections/PyCompatibilityInspection/conditionalExpression.py deleted file mode 100644 index 25936836e30b..000000000000 --- a/python/testData/inspections/PyCompatibilityInspection/conditionalExpression.py +++ /dev/null @@ -1,9 +0,0 @@ -# PY-4293 -def test_conditional_expression(val): - x = 'Yes' if val else 'No' - return 'Yes' if val else 'No' - -def f(arg): - pass - -f(1 if True else 2) \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/dictCompExpression.py b/python/testData/inspections/PyCompatibilityInspection/dictCompExpression.py index aa65718de495..d48265ffbb99 100644 --- a/python/testData/inspections/PyCompatibilityInspection/dictCompExpression.py +++ b/python/testData/inspections/PyCompatibilityInspection/dictCompExpression.py @@ -1 +1 @@ -var = {i : chr(65+i) for i in range(4)} +var = {i : chr(65+i) for i in range(4)} diff --git a/python/testData/inspections/PyCompatibilityInspection/fromImportStatement.py b/python/testData/inspections/PyCompatibilityInspection/fromImportStatement.py index 677a86725626..a522c204b251 100644 --- a/python/testData/inspections/PyCompatibilityInspection/fromImportStatement.py +++ b/python/testData/inspections/PyCompatibilityInspection/fromImportStatement.py @@ -1,8 +1,3 @@ -from . import smth -from .module import name1, name2 - from Bastion import BastionClass -from . import exceptions - from email.Utils import formatdate diff --git a/python/testData/inspections/PyCompatibilityInspection/importStatement.py b/python/testData/inspections/PyCompatibilityInspection/importStatement.py index 88a874bca260..c6313ffb66df 100644 --- a/python/testData/inspections/PyCompatibilityInspection/importStatement.py +++ b/python/testData/inspections/PyCompatibilityInspection/importStatement.py @@ -1,3 +1,3 @@ -import builtins +import builtins import __builtin__ \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/pyClass.py b/python/testData/inspections/PyCompatibilityInspection/pyClass.py deleted file mode 100644 index 5f0c2301410d..000000000000 --- a/python/testData/inspections/PyCompatibilityInspection/pyClass.py +++ /dev/null @@ -1,3 +0,0 @@ -#PY-2719 -class BaseC(): - pass \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/raiseFrom.py b/python/testData/inspections/PyCompatibilityInspection/raiseFrom.py index 1668f11b4fe7..2acd5642ceba 100644 --- a/python/testData/inspections/PyCompatibilityInspection/raiseFrom.py +++ b/python/testData/inspections/PyCompatibilityInspection/raiseFrom.py @@ -1,2 +1,2 @@ -raise exception from cause +raise exception from cause a = 1 \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/relativeImport.py b/python/testData/inspections/PyCompatibilityInspection/relativeImport.py deleted file mode 100644 index f4dbf193c0f1..000000000000 --- a/python/testData/inspections/PyCompatibilityInspection/relativeImport.py +++ /dev/null @@ -1 +0,0 @@ -from ..exceptions import ServiceDoesNotExists \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/setCompExpression.py b/python/testData/inspections/PyCompatibilityInspection/setCompExpression.py index 900a0a2f0586..35d047f9713f 100644 --- a/python/testData/inspections/PyCompatibilityInspection/setCompExpression.py +++ b/python/testData/inspections/PyCompatibilityInspection/setCompExpression.py @@ -1 +1 @@ -var = {i for i in range(2)} +var = {i for i in range(2)} diff --git a/python/testData/inspections/PyCompatibilityInspection/setLiteralExpression.py b/python/testData/inspections/PyCompatibilityInspection/setLiteralExpression.py index 1a0699f74d26..5876b8335bc7 100644 --- a/python/testData/inspections/PyCompatibilityInspection/setLiteralExpression.py +++ b/python/testData/inspections/PyCompatibilityInspection/setLiteralExpression.py @@ -1 +1 @@ -var = {1, 2} +var = {1, 2} diff --git a/python/testData/inspections/PyCompatibilityInspection/stringLiteralExpression.py b/python/testData/inspections/PyCompatibilityInspection/stringLiteralExpression.py index 93e7740bf809..15880597b7f4 100644 --- a/python/testData/inspections/PyCompatibilityInspection/stringLiteralExpression.py +++ b/python/testData/inspections/PyCompatibilityInspection/stringLiteralExpression.py @@ -2,42 +2,42 @@ a = u< # Python 3.6 -a = f"" -a = F"" -a = rf"" -a = fr"" -a = fu"" -a = uf"" -a = bf"" -a = fb"" -a = ufr"" +a = f"" +a = F"" +a = rf"" +a = fr"" +a = fu"" +a = uf"" +a = bf"" +a = fb"" +a = ufr"" # python 3.3 a = u"" a = r"" -a = b"" -a = rb"" -a = br"" +a = b"" +a = rb"" +a = br"" # python 3.2, 3.1 a = r"" -a = b"" -a = br"" +a = b"" +a = br"" # python 3.0 a = r"" -a = b"" +a = b"" # python 2.7, 2.6 a = u"" a = r"" a = ur"" -a = b"" -a = br"" +a = b"" +a = br"" # python 2.5 @@ -46,9 +46,9 @@ a = r"" a = ur"" # combined -b = u"" b"" +b = u"" b"" # never was available -a = rr"" -a = bb"" -a = uu"" \ No newline at end of file +a = rr"" +a = bb"" +a = uu"" \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/tryExceptStatement.py b/python/testData/inspections/PyCompatibilityInspection/tryExceptStatement.py deleted file mode 100644 index 786872043f71..000000000000 --- a/python/testData/inspections/PyCompatibilityInspection/tryExceptStatement.py +++ /dev/null @@ -1,8 +0,0 @@ -try: - do_smth() -except ImportError: - do() -except KeyError: - do_1() -finally: - quit() \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy2.py b/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy2.py index 447581d052a1..f8dd30cd7044 100644 --- a/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy2.py +++ b/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy2.py @@ -1,4 +1,4 @@ try: raise ValueError finally: - raise \ No newline at end of file + raise \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy3.py b/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy3.py index 1dea5f56e6b4..8e0cb99c89b5 100644 --- a/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy3.py +++ b/python/testData/inspections/PyCompatibilityInspection/tryFinallyEmptyRaisePy3.py @@ -1,4 +1,4 @@ try: raise ValueError finally: - raise \ No newline at end of file + raise \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/underscoreBz2Module.py b/python/testData/inspections/PyCompatibilityInspection/underscoreBz2Module.py index 8ae8a0c2ad87..33f23f7f371d 100644 --- a/python/testData/inspections/PyCompatibilityInspection/underscoreBz2Module.py +++ b/python/testData/inspections/PyCompatibilityInspection/underscoreBz2Module.py @@ -1 +1 @@ -import _bz2 \ No newline at end of file +import _bz2 \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/underscoresInNumericLiterals.py b/python/testData/inspections/PyCompatibilityInspection/underscoresInNumericLiterals.py index ac96de78d35e..b96f5b29b39e 100644 --- a/python/testData/inspections/PyCompatibilityInspection/underscoresInNumericLiterals.py +++ b/python/testData/inspections/PyCompatibilityInspection/underscoresInNumericLiterals.py @@ -1,58 +1,58 @@ # hex -0xCAFE_F00D +0xCAFE_F00D # oct -0o1_23 -01_23 +0o1_23 +01_23 # bin -0b_0011_1111_0100_1110 +0b_0011_1111_0100_1110 # dec -10_000_000 +10_000_000 # pointfloat -10_00.00_23 -10_00. +10_00.00_23 +10_00. # exponentfloat -10_00.00_23e1_2 -10_00.00_23E1_2 -10_00.e1_2 -10_00.E1_2 +10_00.00_23e1_2 +10_00.00_23E1_2 +10_00.e1_2 +10_00.E1_2 -10_00.00_23e+1_2 -10_00.00_23E+1_2 -10_00.e+1_2 -10_00.E+1_2 +10_00.00_23e+1_2 +10_00.00_23E+1_2 +10_00.e+1_2 +10_00.E+1_2 -10_00.00_23e-1_2 -10_00.00_23E-1_2 -10_00.e-1_2 -10_00.E-1_2 +10_00.00_23e-1_2 +10_00.00_23E-1_2 +10_00.e-1_2 +10_00.E-1_2 -10_0000_23e1_2 -10_0000_23E1_2 -10_00e1_2 -10_00E1_2 +10_0000_23e1_2 +10_0000_23E1_2 +10_00e1_2 +10_00E1_2 -10_0000_23e+1_2 -10_0000_23E+1_2 -10_00e+1_2 -10_00E+1_2 +10_0000_23e+1_2 +10_0000_23E+1_2 +10_00e+1_2 +10_00E+1_2 -10_0000_23e-1_2 -10_0000_23E-1_2 -10_00e-1_2 -10_00E-1_2 +10_0000_23e-1_2 +10_0000_23E-1_2 +10_00e-1_2 +10_00E-1_2 # imag -10_00.00_23j -10_00.00_23J +10_00.00_23j +10_00.00_23J -10_00.00_23e1_2j -10_00.00_23e1_2J +10_00.00_23e1_2j +10_00.00_23e1_2J -10_000_000j -10_000_000J \ No newline at end of file +10_000_000j +10_000_000J \ No newline at end of file diff --git a/python/testData/inspections/PyCompatibilityInspection/variableAnnotations.py b/python/testData/inspections/PyCompatibilityInspection/variableAnnotations.py index f6186a0e651c..42d3b92f95d1 100644 --- a/python/testData/inspections/PyCompatibilityInspection/variableAnnotations.py +++ b/python/testData/inspections/PyCompatibilityInspection/variableAnnotations.py @@ -1,8 +1,8 @@ class C: - x: int - y: None = 42 + x: int + y: None = 42 def m(self, d): - x: List[bool] - d['foo']: str - (d['bar']): float + x: List[bool] + d['foo']: str + (d['bar']): float diff --git a/python/testData/inspections/PyCompatibilityInspection/withStatement.py b/python/testData/inspections/PyCompatibilityInspection/withStatement.py index a5d7fb211bad..a5555a110e05 100644 --- a/python/testData/inspections/PyCompatibilityInspection/withStatement.py +++ b/python/testData/inspections/PyCompatibilityInspection/withStatement.py @@ -1,2 +1,2 @@ -with A() as a, B() as b: - suite +with A() as a, B() as b: + suite diff --git a/python/testData/inspections/PyRaisingNewStyleClassInspection/expected.xml b/python/testData/inspections/PyRaisingNewStyleClassInspection/expected.xml deleted file mode 100644 index b1063cebf4ae..000000000000 --- a/python/testData/inspections/PyRaisingNewStyleClassInspection/expected.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - test.py - 7 - Raising a new style class - - \ No newline at end of file diff --git a/python/testData/inspections/PyRaisingNewStyleClassInspection/src/test.py b/python/testData/inspections/PyRaisingNewStyleClassInspection/src/test.py deleted file mode 100644 index e9f31d8e1b7b..000000000000 --- a/python/testData/inspections/PyRaisingNewStyleClassInspection/src/test.py +++ /dev/null @@ -1,8 +0,0 @@ -class C(object): - pass - -class D: - pass - -raise C() -raise D() \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java b/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java index 166a1e88b0fb..2c615b9ddb22 100644 --- a/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java +++ b/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java @@ -85,11 +85,6 @@ public class PythonInspectionsTest extends PyTestCase { doTest(getTestName(false), inspection); } - public void testPyRaisingNewStyleClassInspection() { - LocalInspectionTool inspection = new PyRaisingNewStyleClassInspection(); - doTestWithLanguageLevel(getTestName(false), inspection, LanguageLevel.PYTHON24); - } - public void testPyDocstringInspection() { LocalInspectionTool inspection = new PyMissingOrEmptyDocstringInspection(); doTest(getTestName(false), inspection); diff --git a/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java index 7b80960f9550..99995ad9d185 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java @@ -70,10 +70,6 @@ public class PyCompatibilityInspectionTest extends PyInspectionTestCase { doTest(LanguageLevel.PYTHON27); } - public void testPyClass() { - doTest(); - } - public void testPrintStatement() { doTest(); } @@ -82,14 +78,6 @@ public class PyCompatibilityInspectionTest extends PyInspectionTestCase { doTest(); } - public void testAssignmentStatement() { - doTest(); - } - - public void testTryExceptStatement() { - doTest(); - } - public void testImportElement() { doTest(); } @@ -102,10 +90,6 @@ public class PyCompatibilityInspectionTest extends PyInspectionTestCase { doTest(); } - public void testConditionalExpression() { - doTest(); - } - public void testClassBaseList() { doTest(); } @@ -120,11 +104,6 @@ public class PyCompatibilityInspectionTest extends PyInspectionTestCase { doTest(LanguageLevel.PYTHON33); } - // PY-11047 - public void testRelativeImport() { - doTest(); - } - // PY-15390 public void testMatMul() { doTest(LanguageLevel.PYTHON35);