Skip to content

Commit ba5be13

Browse files
koukatodorov
authored andcommitted
Support factory_boy's DjangoModelFactory Meta class
Added suppressions for [DjangoModelFactory](http://factoryboy.readthedocs.io/en/2.9.2/orms.html#the-djangomodelfactory-subclass). Original PR: pylint-dev#103
1 parent 15a0da2 commit ba5be13

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

pylint_django/augmentations/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,16 @@ def is_model_meta_subclass(node):
407407
return node_is_subclass(node.parent, *parents)
408408

409409

410+
def is_model_factory_meta_subclass(node):
411+
"""Checks that node is derivative of DjangoModelFactory class."""
412+
if node.name != 'Meta' or not isinstance(node.parent, ClassDef):
413+
return False
414+
415+
parents = ('factory.django.DjangoModelFactory',
416+
'.DjangoModelFactory',)
417+
return node_is_subclass(node.parent, *parents)
418+
419+
410420
def is_model_mpttmeta_subclass(node):
411421
"""Checks that node is derivative of MPTTMeta class."""
412422
if node.name != 'MPTTMeta' or not isinstance(node.parent, ClassDef):
@@ -765,6 +775,12 @@ def apply_augmentations(linter):
765775
suppress_message(linter, _visit_class(ClassChecker), 'W0232', is_model_mpttmeta_subclass)
766776
suppress_message(linter, _leave_class(MisdesignChecker), 'too-few-public-methods', is_model_mpttmeta_subclass)
767777

778+
# factory_boy's DjangoModelFactory
779+
suppress_message(linter, _visit_class(DocStringChecker), 'missing-docstring', is_model_factory_meta_subclass)
780+
suppress_message(linter, _visit_class(NewStyleConflictChecker), 'old-style-class', is_model_factory_meta_subclass)
781+
suppress_message(linter, _visit_class(ClassChecker), 'W0232', is_model_factory_meta_subclass)
782+
suppress_message(linter, _leave_class(MisdesignChecker), 'too-few-public-methods', is_model_factory_meta_subclass)
783+
768784
# ForeignKey and OneToOneField
769785
# Must update this in a thread safe way to support the parallel option on pylint (-j)
770786
current_leave_module = VariablesChecker.leave_module

0 commit comments

Comments
 (0)