From b6b5a685e9a4c57fe2d630448cde9dadb3dd96c3 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 11 Mar 2014 13:34:35 +0400 Subject: [PATCH] fixed PY-11981 "PEP 8 naming convention violation" inspection treats class attributes as function variables --- .../python/inspections/PyPep8NamingInspection.java | 5 +---- .../PyPep8NamingInspection/classAttributes.py | 10 ++++++++++ .../python/inspections/PyPep8NamingInspectionTest.java | 4 ++++ 3 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 python/testData/inspections/PyPep8NamingInspection/classAttributes.py diff --git a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java index 1b3dfc63b61f..75f70cc33eb4 100644 --- a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java @@ -28,8 +28,6 @@ import com.jetbrains.python.codeInsight.controlflow.ControlFlowCache; import com.jetbrains.python.codeInsight.dataflow.scope.Scope; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.search.PySuperMethodsSearch; -import com.jetbrains.python.psi.types.PyModuleType; -import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.testing.pytest.PyTestUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -77,8 +75,7 @@ public class PyPep8NamingInspection extends PyInspection { if (expression instanceof PyTargetExpression) { final PyExpression qualifier = ((PyTargetExpression)expression).getQualifier(); if (qualifier != null) { - final PyType type = myTypeEvalContext.getType(qualifier); - if (type instanceof PyModuleType) return; + return; } } if (!LOWERCASE_REGEX.matcher(name).matches() && !name.startsWith("_")) { diff --git a/python/testData/inspections/PyPep8NamingInspection/classAttributes.py b/python/testData/inspections/PyPep8NamingInspection/classAttributes.py new file mode 100644 index 000000000000..d91453840c40 --- /dev/null +++ b/python/testData/inspections/PyPep8NamingInspection/classAttributes.py @@ -0,0 +1,10 @@ +class Spam(object): + CLASS_FIELD = 0 + + @classmethod + def eggs(cls): + cls.CLASS_FIELD = 1 + + @staticmethod + def ham(): + Spam.CLASS_FIELD = 2 \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/inspections/PyPep8NamingInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyPep8NamingInspectionTest.java index 0a32aa4c5dc9..348a343c1425 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyPep8NamingInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyPep8NamingInspectionTest.java @@ -58,6 +58,10 @@ public class PyPep8NamingInspectionTest extends PyTestCase { doTest(); } + public void testClassAttributes() { + doTest(); + } + public void testTest() { doTest(); }