Skip to content

Commit d59304e

Browse files
authored
Merge pull request #46 from jenstroeger/migrate-to-pylint3
Migrate to pylint v3
2 parents c07391c + 2ee0a12 commit d59304e

File tree

5 files changed

+16
-26
lines changed

5 files changed

+16
-26
lines changed

.github/workflows/python-app.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
fail-fast: false
1919
matrix:
2020
os: ["macos-11", ubuntu-20.04, "windows-latest"]
21-
python_version: ["3.7", "3.8", "3.9", "3.10", "3.11-dev"]
21+
python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
2222
steps:
2323
- uses: actions/checkout@v2
2424
- name: Setup python

perflint/comprehension_checker.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from astroid import nodes
22
from pylint.checkers import BaseChecker
33
from pylint.checkers import utils as checker_utils
4-
from pylint.interfaces import IAstroidChecker
54
from astroid.helpers import safe_infer
65

76

@@ -10,8 +9,6 @@ class ComprehensionChecker(BaseChecker):
109
Check for comprehension usage
1110
"""
1211

13-
__implements__ = IAstroidChecker
14-
1512
name = "comprehension-checker"
1613
priority = -1
1714
msgs = {
@@ -35,7 +32,7 @@ class ComprehensionChecker(BaseChecker):
3532
def visit_for(self, node: nodes.For):
3633
pass
3734

38-
@checker_utils.check_messages(
35+
@checker_utils.only_required_for_messages(
3936
"use-list-comprehension", "use-dict-comprehension", "use-list-copy"
4037
)
4138
def leave_for(self, node: nodes.For):

perflint/for_loop_checker.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from astroid.helpers import safe_infer
44
from pylint.checkers import BaseChecker
55
from pylint.checkers import utils as checker_utils
6-
from pylint.interfaces import IAstroidChecker
76

87
iterable_types = (
98
nodes.Tuple,
@@ -52,8 +51,6 @@ class ForLoopChecker(BaseChecker):
5251
Check for poor for-loop usage.
5352
"""
5453

55-
__implements__ = IAstroidChecker
56-
5754
name = "for-loop-checker"
5855
priority = -1
5956
msgs = {
@@ -69,7 +66,7 @@ class ForLoopChecker(BaseChecker):
6966
),
7067
}
7168

72-
@checker_utils.check_messages(
69+
@checker_utils.only_required_for_messages(
7370
"unnecessary-list-cast", "incorrect-dictionary-iterator"
7471
)
7572
def visit_for(self, node: nodes.For) -> None:
@@ -130,8 +127,6 @@ class LoopInvariantChecker(BaseChecker):
130127
Check for poor for-loop usage.
131128
"""
132129

133-
__implements__ = IAstroidChecker
134-
135130
name = "loop-invariant-checker"
136131
priority = -1
137132
msgs = {
@@ -170,7 +165,7 @@ def __init__(self, linter=None):
170165
self._loop_consts: List[List[nodes.Const]] = []
171166
self._ignore: List[nodes.NodeNG] = []
172167

173-
@checker_utils.check_messages("loop-invariant-statement")
168+
@checker_utils.only_required_for_messages("loop-invariant-statement")
174169
def visit_for(self, node: nodes.For) -> None:
175170
"""Visit for loop bodies."""
176171
self._loop_level += 1
@@ -184,7 +179,7 @@ def visit_for(self, node: nodes.For) -> None:
184179
self._loop_consts.append([])
185180
self._ignore.append(node.iter)
186181

187-
@checker_utils.check_messages("loop-invariant-statement")
182+
@checker_utils.only_required_for_messages("loop-invariant-statement")
188183
def visit_while(self, node: nodes.While) -> None:
189184
"""Visit while loop bodies."""
190185
self._loop_level += 1
@@ -214,11 +209,11 @@ def visit_dict(self, node: nodes.Dict) -> None:
214209
):
215210
self._ignore.append(node)
216211

217-
@checker_utils.check_messages("loop-invariant-statement")
212+
@checker_utils.only_required_for_messages("loop-invariant-statement")
218213
def leave_for(self, node: nodes.For) -> None:
219214
self._leave_loop(node)
220215

221-
@checker_utils.check_messages("loop-invariant-statement")
216+
@checker_utils.only_required_for_messages("loop-invariant-statement")
222217
def leave_while(self, node: nodes.While) -> None:
223218
self._leave_loop(node)
224219

@@ -303,7 +298,7 @@ def visit_augassign(self, node: nodes.AugAssign) -> None:
303298
if isinstance(node.target, nodes.AssignName):
304299
self._loop_assignments[-1].add(node.target.name)
305300

306-
@checker_utils.check_messages("loop-global-usage")
301+
@checker_utils.only_required_for_messages("loop-global-usage")
307302
def visit_name(self, node: nodes.Name) -> None:
308303
"""Look for global names"""
309304
if self._loop_names:
@@ -338,12 +333,12 @@ def visit_call(self, node: nodes.Call) -> None:
338333
if isinstance(node.func.expr, nodes.Name):
339334
self._loop_assignments[-1].add(node.func.expr.name)
340335

341-
@checker_utils.check_messages("loop-try-except-usage")
342-
def visit_tryexcept(self, node: nodes.TryExcept) -> None:
336+
@checker_utils.only_required_for_messages("loop-try-except-usage")
337+
def visit_tryexcept(self, node: nodes.Try) -> None:
343338
if self._loop_level > 0:
344339
self.add_message("loop-try-except-usage", node=node)
345340

346-
@checker_utils.check_messages("memoryview-over-bytes")
341+
@checker_utils.only_required_for_messages("memoryview-over-bytes")
347342
def visit_subscript(self, node: nodes.Subscript) -> None:
348343
if self._loop_level == 0:
349344
return
@@ -360,7 +355,7 @@ def visit_subscript(self, node: nodes.Subscript) -> None:
360355
):
361356
self.add_message("memoryview-over-bytes", node=node)
362357

363-
@checker_utils.check_messages("dotted-import-in-loop")
358+
@checker_utils.only_required_for_messages("dotted-import-in-loop")
364359
def visit_attribute(self, node: nodes.Attribute) -> None:
365360
if self._loop_level == 0:
366361
return

perflint/list_checker.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@
22
from astroid import nodes
33
from pylint.checkers import BaseChecker
44
from pylint.checkers import utils as checker_utils
5-
from pylint.interfaces import IAstroidChecker
65

76

87
class ListChecker(BaseChecker):
98
"""
109
Check for inefficient list usage
1110
"""
1211

13-
__implements__ = IAstroidChecker
14-
1512
name = 'list-checker'
1613
priority = -1
1714
msgs = {
@@ -42,14 +39,14 @@ def _raise_for_scope(self):
4239
for _assignment in _lists.values():
4340
self.add_message("use-tuple-over-list", node=_assignment.parent.value)
4441

45-
@checker_utils.check_messages("use-tuple-over-list")
42+
@checker_utils.only_required_for_messages("use-tuple-over-list")
4643
def leave_module(self, node: nodes.Module):
4744
self._raise_for_scope()
4845

4946
def visit_functiondef(self, node: nodes.FunctionDef):
5047
self._lists_to_watch.append({})
5148

52-
@checker_utils.check_messages("use-tuple-over-list")
49+
@checker_utils.only_required_for_messages("use-tuple-over-list")
5350
def leave_functiondef(self, node: nodes.FunctionDef):
5451
self._raise_for_scope()
5552

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ authors = [{name = "Anthony Shaw"}]
88
readme = "README.md"
99
classifiers = ["License :: OSI Approved :: MIT License"]
1010
dynamic = ["version", "description"]
11-
dependencies = ["pylint >= 2.12.0, < 3.0"]
11+
dependencies = ["pylint >=3.0.0,<4.0.0"]
12+
requires-python = ">=3.8"
1213

1314
[project.urls]
1415
Home = "https://github.com/tonybaloney/perflint"

0 commit comments

Comments
 (0)