Skip to content

Commit 93dee19

Browse files
authored
Type 'parents' as Sequence (#242)
This allows it to be used with reversed(). We could also have used Reversible, but Sequence is the more natural base of deque.
1 parent 95db1bc commit 93dee19

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

src/pep8ext_naming.py

+16-16
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import ast
33
from ast import iter_child_nodes
44
from collections import deque
5-
from collections.abc import Iterable
5+
from collections.abc import Iterable, Sequence
66
from fnmatch import fnmatchcase
77
from functools import partial
88
from itertools import chain
@@ -170,7 +170,7 @@ def visit_tree(self, node, parents: deque):
170170
yield from self.visit_tree(child, parents)
171171
parents.pop()
172172

173-
def visit_node(self, node, parents: Iterable):
173+
def visit_node(self, node, parents: Sequence):
174174
if isinstance(node, ast.ClassDef):
175175
self.tag_class_functions(node)
176176
elif isinstance(node, FUNC_NODES):
@@ -266,14 +266,14 @@ class ClassNameCheck(BaseASTCheck):
266266
N818 = "exception name '{name}' should be named with an Error suffix"
267267

268268
@classmethod
269-
def get_classdef(cls, name, parents: Iterable):
269+
def get_classdef(cls, name, parents: Sequence):
270270
for parent in parents:
271271
for node in parent.body:
272272
if isinstance(node, ast.ClassDef) and node.name == name:
273273
return node
274274

275275
@classmethod
276-
def superclass_names(cls, name, parents: Iterable, _names=None):
276+
def superclass_names(cls, name, parents: Sequence, _names=None):
277277
names = _names or set()
278278
classdef = cls.get_classdef(name, parents)
279279
if not classdef:
@@ -284,7 +284,7 @@ def superclass_names(cls, name, parents: Iterable, _names=None):
284284
names.update(cls.superclass_names(base.id, parents, names))
285285
return names
286286

287-
def visit_classdef(self, node, parents: Iterable, ignored: NameSet):
287+
def visit_classdef(self, node, parents: Sequence, ignored: NameSet):
288288
name = node.name
289289
if name in ignored:
290290
return
@@ -319,7 +319,7 @@ def has_override_decorator(node):
319319
return True
320320
return False
321321

322-
def visit_functiondef(self, node, parents: Iterable, ignored: NameSet):
322+
def visit_functiondef(self, node, parents: Sequence, ignored: NameSet):
323323
function_type = getattr(node, 'function_type', _FunctionType.FUNCTION)
324324
name = node.name
325325
if name in ignored:
@@ -350,7 +350,7 @@ class FunctionArgNamesCheck(BaseASTCheck):
350350
N804 = "first argument of a classmethod should be named 'cls'"
351351
N805 = "first argument of a method should be named 'self'"
352352

353-
def visit_functiondef(self, node, parents: Iterable, ignored: NameSet):
353+
def visit_functiondef(self, node, parents: Sequence, ignored: NameSet):
354354
args = node.args.posonlyargs + node.args.args + node.args.kwonlyargs
355355

356356
# Start by applying checks that are specific to the first argument.
@@ -395,7 +395,7 @@ class ImportAsCheck(BaseASTCheck):
395395
N814 = "camelcase '{name}' imported as constant '{asname}'"
396396
N817 = "camelcase '{name}' imported as acronym '{asname}'"
397397

398-
def visit_importfrom(self, node, parents: Iterable, ignored: NameSet):
398+
def visit_importfrom(self, node, parents: Sequence, ignored: NameSet):
399399
for name in node.names:
400400
asname = name.asname
401401
if not asname:
@@ -427,7 +427,7 @@ class VariablesCheck(BaseASTCheck):
427427
N815 = "variable '{name}' in class scope should not be mixedCase"
428428
N816 = "variable '{name}' in global scope should not be mixedCase"
429429

430-
def _find_errors(self, assignment_target, parents: Iterable, ignored: NameSet):
430+
def _find_errors(self, assignment_target, parents: Sequence, ignored: NameSet):
431431
for parent_func in reversed(parents):
432432
if isinstance(parent_func, ast.ClassDef):
433433
checker = self.class_variable_check
@@ -455,36 +455,36 @@ def is_namedtupe(node_value):
455455
return True
456456
return False
457457

458-
def visit_assign(self, node, parents: Iterable, ignored: NameSet):
458+
def visit_assign(self, node, parents: Sequence, ignored: NameSet):
459459
if self.is_namedtupe(node.value):
460460
return
461461
for target in node.targets:
462462
yield from self._find_errors(target, parents, ignored)
463463

464-
def visit_namedexpr(self, node, parents: Iterable, ignored: NameSet):
464+
def visit_namedexpr(self, node, parents: Sequence, ignored: NameSet):
465465
if self.is_namedtupe(node.value):
466466
return
467467
yield from self._find_errors(node.target, parents, ignored)
468468

469469
visit_annassign = visit_namedexpr
470470

471-
def visit_with(self, node, parents: Iterable, ignored: NameSet):
471+
def visit_with(self, node, parents: Sequence, ignored: NameSet):
472472
for item in node.items:
473473
yield from self._find_errors(
474474
item.optional_vars, parents, ignored)
475475

476476
visit_asyncwith = visit_with
477477

478-
def visit_for(self, node, parents: Iterable, ignored: NameSet):
478+
def visit_for(self, node, parents: Sequence, ignored: NameSet):
479479
yield from self._find_errors(node.target, parents, ignored)
480480

481481
visit_asyncfor = visit_for
482482

483-
def visit_excepthandler(self, node, parents: Iterable, ignored: NameSet):
483+
def visit_excepthandler(self, node, parents: Sequence, ignored: NameSet):
484484
if node.name:
485485
yield from self._find_errors(node, parents, ignored)
486486

487-
def visit_generatorexp(self, node, parents: Iterable, ignored: NameSet):
487+
def visit_generatorexp(self, node, parents: Sequence, ignored: NameSet):
488488
for gen in node.generators:
489489
yield from self._find_errors(gen.target, parents, ignored)
490490

@@ -513,7 +513,7 @@ class TypeVarNameCheck(BaseASTCheck):
513513
N808 = "type variable name '{name}' should use CapWords convention " \
514514
"and an optional '_co' or '_contra' suffix"
515515

516-
def visit_module(self, node, parents: Iterable, ignored: NameSet):
516+
def visit_module(self, node, parents: Sequence, ignored: NameSet):
517517
for body in node.body:
518518
try:
519519
if len(body.targets) != 1:

0 commit comments

Comments
 (0)