|
28 | 28 | expr,
|
29 | 29 | keyword,
|
30 | 30 | )
|
31 |
| -from ast import walk as iter_nodes |
32 | 31 | from contextlib import suppress
|
33 | 32 | from difflib import SequenceMatcher
|
34 | 33 | from typing import TYPE_CHECKING, Any, Union
|
@@ -605,19 +604,36 @@ def check_import_statement(self, node: Import | ImportFrom) -> None:
|
605 | 604 |
|
606 | 605 | def check_all_nodes_issues(self, node: Module) -> None:
|
607 | 606 | processor = SettingsModuleSettingsProcessor(self.context, self.setting_checker)
|
608 |
| - for child in iter_nodes(node): |
609 |
| - if isinstance(child, Assign): |
610 |
| - issue_generator = processor.process_assignment(child) |
611 |
| - self.issues.extend(issue_generator) |
612 |
| - elif isinstance(child, (ClassDef, FunctionDef)): |
613 |
| - if not child.name.isupper(): |
614 |
| - continue |
615 |
| - pos = Pos.from_node(child, definition_column(child)) |
616 |
| - self.issues.append(Issue(IMPROPER_SETTING_DEFINITION, pos)) |
617 |
| - issue_generator = self.setting_checker.check_name(child) |
618 |
| - self.issues.extend(issue_generator) |
619 |
| - elif isinstance(child, (Import, ImportFrom)): |
620 |
| - processor.process_import(child) |
| 607 | + |
| 608 | + def visit_nested_body(child) -> None: |
| 609 | + visit_body(child.body) |
| 610 | + for attr in ("orelse", "finalbody", "handlers"): |
| 611 | + sub = getattr(child, attr, None) |
| 612 | + if sub: |
| 613 | + if attr == "handlers": |
| 614 | + for handler in sub: |
| 615 | + visit_body(getattr(handler, "body", [])) |
| 616 | + else: |
| 617 | + visit_body(sub) |
| 618 | + |
| 619 | + def visit_body(body): |
| 620 | + for child in body: |
| 621 | + if isinstance(child, (ClassDef, FunctionDef)): |
| 622 | + if not child.name.isupper(): |
| 623 | + continue |
| 624 | + pos = Pos.from_node(child, definition_column(child)) |
| 625 | + self.issues.append(Issue(IMPROPER_SETTING_DEFINITION, pos)) |
| 626 | + issue_generator = self.setting_checker.check_name(child) |
| 627 | + self.issues.extend(issue_generator) |
| 628 | + elif isinstance(child, (Import, ImportFrom)): |
| 629 | + processor.process_import(child) |
| 630 | + elif isinstance(child, Assign): |
| 631 | + issue_generator = processor.process_assignment(child) |
| 632 | + self.issues.extend(issue_generator) |
| 633 | + elif hasattr(child, "body"): |
| 634 | + visit_nested_body(child) |
| 635 | + |
| 636 | + visit_body(node.body) |
621 | 637 | self.issues.extend(processor.iter_issues())
|
622 | 638 |
|
623 | 639 |
|
|
0 commit comments