summaryrefslogtreecommitdiff
path: root/pylint/checkers/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'pylint/checkers/base.py')
-rw-r--r--pylint/checkers/base.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/pylint/checkers/base.py b/pylint/checkers/base.py
index 384abb471..33aa8a037 100644
--- a/pylint/checkers/base.py
+++ b/pylint/checkers/base.py
@@ -104,6 +104,7 @@ class NamingStyle:
"argument": cls.DEFAULT_NAME_RGX,
"variable": cls.DEFAULT_NAME_RGX,
"class_attribute": cls.CLASS_ATTRIBUTE_RGX,
+ "class_const": cls.CONST_NAME_RGX,
"inlinevar": cls.COMP_VAR_RGX,
}[name_type]
@@ -1654,6 +1655,7 @@ KNOWN_NAME_TYPES = {
"argument",
"variable",
"class_attribute",
+ "class_const",
"inlinevar",
}
@@ -1667,6 +1669,7 @@ HUMAN_READABLE_TYPES = {
"argument": "argument",
"variable": "variable",
"class_attribute": "class attribute",
+ "class_const": "class constant",
"inlinevar": "inline iteration",
}
@@ -1680,6 +1683,7 @@ DEFAULT_NAMING_STYLES = {
"argument": "snake_case",
"variable": "snake_case",
"class_attribute": "any",
+ "class_const": "UPPER_CASE",
"inlinevar": "any",
}
@@ -1846,6 +1850,7 @@ class NameChecker(_BasicChecker):
badname_inlinevar=0,
badname_argument=0,
badname_class_attribute=0,
+ badname_class_const=0,
)
for group in self.config.name_group:
for name_type in group.split(":"):
@@ -1983,8 +1988,18 @@ class NameChecker(_BasicChecker):
elif isinstance(frame, astroid.ClassDef):
if not list(frame.local_attr_ancestors(node.name)):
for ancestor in frame.ancestors():
- if ancestor.name == "Enum" and ancestor.root().name == "enum":
- self._check_name("const", node.name, node)
+ if ( # pylint: disable=too-many-boolean-expressions
+ ancestor.name == "Enum"
+ and ancestor.root().name == "enum"
+ or isinstance(node.parent, astroid.AnnAssign)
+ and (
+ isinstance(node.parent.annotation, astroid.Subscript)
+ and node.parent.annotation.value.name == "ClassVar"
+ or isinstance(node.parent.annotation, astroid.Name)
+ and node.parent.annotation.name == "ClassVar"
+ )
+ ):
+ self._check_name("class_const", node.name, node)
break
else:
self._check_name("class_attribute", node.name, node)