From 674f479e8017a70512e8667204632fdbd9f161ed Mon Sep 17 00:00:00 2001 From: Konstantinos Koukopoulos Date: Tue, 17 Oct 2017 15:47:23 +0300 Subject: [PATCH] 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: https://github.com/landscapeio/pylint-django/pull/103 --- pylint_django/augmentations/__init__.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pylint_django/augmentations/__init__.py b/pylint_django/augmentations/__init__.py index 616d196c..2b54f263 100644 --- a/pylint_django/augmentations/__init__.py +++ b/pylint_django/augmentations/__init__.py @@ -407,6 +407,16 @@ def is_model_meta_subclass(node): return node_is_subclass(node.parent, *parents) +def is_model_factory_meta_subclass(node): + """Checks that node is derivative of DjangoModelFactory class.""" + if node.name != 'Meta' or not isinstance(node.parent, ClassDef): + return False + + parents = ('factory.django.DjangoModelFactory', + '.DjangoModelFactory',) + return node_is_subclass(node.parent, *parents) + + def is_model_mpttmeta_subclass(node): """Checks that node is derivative of MPTTMeta class.""" if node.name != 'MPTTMeta' or not isinstance(node.parent, ClassDef): @@ -765,6 +775,12 @@ def apply_augmentations(linter): suppress_message(linter, _visit_class(ClassChecker), 'W0232', is_model_mpttmeta_subclass) suppress_message(linter, _leave_class(MisdesignChecker), 'too-few-public-methods', is_model_mpttmeta_subclass) + # factory_boy's DjangoModelFactory + suppress_message(linter, _visit_class(DocStringChecker), 'missing-docstring', is_model_factory_meta_subclass) + suppress_message(linter, _visit_class(NewStyleConflictChecker), 'old-style-class', is_model_factory_meta_subclass) + suppress_message(linter, _visit_class(ClassChecker), 'W0232', is_model_factory_meta_subclass) + suppress_message(linter, _leave_class(MisdesignChecker), 'too-few-public-methods', is_model_factory_meta_subclass) + # ForeignKey and OneToOneField # Must update this in a thread safe way to support the parallel option on pylint (-j) current_leave_module = VariablesChecker.leave_module