5
5
from pylint .checkers .variables import VariablesChecker
6
6
from astroid import InferenceError
7
7
from astroid .nodes import Class
8
- from astroid .scoped_nodes import Class as ScopedClass
8
+ from astroid .scoped_nodes import Class as ScopedClass , Module
9
9
from pylint .checkers .typecheck import TypeChecker
10
10
from pylint_django .utils import node_is_subclass
11
11
from pylint_plugin_utils import augment_visit , suppress_message
@@ -171,6 +171,21 @@ def is_model_media_valid_attributes(node):
171
171
return True
172
172
173
173
174
+ def is_urls_module_valid_constant (node ):
175
+ """Suppress warnings for valid constants in urls module."""
176
+ if node .name not in ('urlpatterns' , ):
177
+ return False
178
+
179
+ parent = node .parent
180
+ while not isinstance (parent , Module ):
181
+ parent = parent .parent
182
+
183
+ if not parent .name .endswith ('urls' ):
184
+ return False
185
+
186
+ return True
187
+
188
+
174
189
def is_class (class_name ):
175
190
return lambda node : node_is_subclass (node , class_name )
176
191
@@ -197,6 +212,9 @@ def apply_augmentations(linter):
197
212
suppress_message (linter , ClassChecker .visit_class , 'W0232' , is_model_meta_subclass )
198
213
suppress_message (linter , MisdesignChecker .leave_class , 'R0903' , is_model_meta_subclass )
199
214
215
+ # TODO: Temporary until commonconst_rgx will works.
216
+ suppress_message (linter , NameChecker .visit_assname , 'C0103' , is_urls_module_valid_constant ) # Invalid constant name "urlpatterns"
217
+
200
218
# Media
201
219
suppress_message (linter , NameChecker .visit_assname , 'C0103' , is_model_media_valid_attributes )
202
220
suppress_message (linter , DocStringChecker .visit_class , 'C0111' , is_model_media_subclass )
0 commit comments