@@ -407,6 +407,16 @@ def is_model_meta_subclass(node):
407
407
return node_is_subclass (node .parent , * parents )
408
408
409
409
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
+
410
420
def is_model_mpttmeta_subclass (node ):
411
421
"""Checks that node is derivative of MPTTMeta class."""
412
422
if node .name != 'MPTTMeta' or not isinstance (node .parent , ClassDef ):
@@ -765,6 +775,12 @@ def apply_augmentations(linter):
765
775
suppress_message (linter , _visit_class (ClassChecker ), 'W0232' , is_model_mpttmeta_subclass )
766
776
suppress_message (linter , _leave_class (MisdesignChecker ), 'too-few-public-methods' , is_model_mpttmeta_subclass )
767
777
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
+
768
784
# ForeignKey and OneToOneField
769
785
# Must update this in a thread safe way to support the parallel option on pylint (-j)
770
786
current_leave_module = VariablesChecker .leave_module
0 commit comments