Skip to content

Commit 502125c

Browse files
committed
Suppress unused-argument for functions in migration modules
usually these are functions used in migrations.RunPython() but the suppression code is not that smart and will suppress any unused-argument which is triggered by functions defined inside a migrations module.
1 parent ec4f005 commit 502125c

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

pylint_django/checkers/migrations.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
from pylint import interfaces
1414
from pylint import checkers
1515
from pylint.checkers import utils
16+
17+
from pylint_plugin_utils import suppress_message
18+
1619
from pylint_django.__pkginfo__ import BASE_ID
1720
from pylint_django import compat
1821
from pylint_django.utils import is_migrations_module
@@ -141,6 +144,18 @@ def visit_call(self, node):
141144
args=module.name, node=node)
142145

143146

147+
def is_in_migrations(node):
148+
"""
149+
RunPython() migrations receive forward/backwards functions with signature:
150+
151+
def func(apps, schema_editor):
152+
153+
which could be unused. This augmentation will suppress all 'unused-argument'
154+
messages coming from functions in migration modules.
155+
"""
156+
return is_migrations_module(node.parent)
157+
158+
144159
def load_configuration(linter):
145160
# don't blacklist migrations for this checker
146161
new_black_list = list(linter.config.black_list)
@@ -155,3 +170,8 @@ def register(linter):
155170
linter.register_checker(MissingBackwardsMigrationChecker(linter))
156171
if not compat.LOAD_CONFIGURATION_SUPPORTED:
157172
load_configuration(linter)
173+
174+
# apply augmentations for migration checkers
175+
# Unused arguments for migrations
176+
suppress_message(linter, checkers.variables.VariablesChecker.leave_functiondef,
177+
'unused-argument', is_in_migrations)

pylint_django/tests/input/migrations/0003_without_backwards.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from django.db import migrations
33

44

5-
# pylint: disable=unused-argument
65
def forwards_test(apps, schema_editor):
76
pass
87

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1+
missing-backwards-migration-callable:12:Migration:pylint_django.tests.input.migrations.0003_without_backwards Always include backwards migration callable
12
missing-backwards-migration-callable:13:Migration:pylint_django.tests.input.migrations.0003_without_backwards Always include backwards migration callable
2-
missing-backwards-migration-callable:14:Migration:pylint_django.tests.input.migrations.0003_without_backwards Always include backwards migration callable
3-
missing-backwards-migration-callable:16:Migration:pylint_django.tests.input.migrations.0003_without_backwards Always include backwards migration callable
4-
missing-backwards-migration-callable:18:Migration:pylint_django.tests.input.migrations.0003_without_backwards Always include backwards migration callable
3+
missing-backwards-migration-callable:15:Migration:pylint_django.tests.input.migrations.0003_without_backwards Always include backwards migration callable
4+
missing-backwards-migration-callable:17:Migration:pylint_django.tests.input.migrations.0003_without_backwards Always include backwards migration callable

pylint_django/tests/input/migrations/0004_noerror_with_backwards.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22
from django.db import migrations
33

44

5-
# pylint: disable=unused-argument
65
def forwards_test(apps, schema_editor):
76
pass
87

98

10-
# pylint: disable=unused-argument
119
def backwards_test(apps, schema_editor):
1210
pass
1311

0 commit comments

Comments
 (0)