Skip to content

Commit 8873151

Browse files
committed
Fix typing and 3.7 compat
1 parent 460ddcb commit 8873151

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

metadata_please/source_checkout_ast.py

+14-12
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"""
1212

1313
import ast
14+
from typing import Any, Dict, Optional
1415

1516

1617
# Copied from orig-index
@@ -21,14 +22,14 @@ class ShortCircuitingVisitor(ast.NodeVisitor):
2122
visiting of children is not the responsibility of the visit_ method.
2223
"""
2324

24-
def visit(self, node):
25+
def visit(self, node: ast.AST) -> None:
2526
method = "visit_" + node.__class__.__name__
2627
visitor = getattr(self, method, self.generic_visit)
2728
rv = visitor(node)
2829
if rv:
2930
self.visit_children(node)
3031

31-
def visit_children(self, node):
32+
def visit_children(self, node: ast.AST) -> None:
3233
for field, value in ast.iter_fields(node):
3334
if isinstance(value, list):
3435
for item in value:
@@ -37,36 +38,37 @@ def visit_children(self, node):
3738
elif isinstance(value, ast.AST):
3839
self.visit(value)
3940

40-
def generic_visit(self, node) -> bool:
41+
def generic_visit(self, node: ast.AST) -> bool:
4142
return True
4243

4344

4445
class QualifiedNameSaver(ShortCircuitingVisitor):
4546
"""Similar to LibCST's QualifiedNameProvider except simpler and wronger"""
4647

47-
def __init__(self):
48+
def __init__(self) -> None:
4849
super().__init__()
49-
self.qualified_name_prefixes = {}
50+
self.qualified_name_prefixes: Dict[str, str] = {}
5051

5152
def qualified_name(self, node: ast.AST) -> str:
5253
if isinstance(node, ast.Attribute):
5354
return self.qualified_name(node.value) + "." + node.attr
5455
elif isinstance(node, ast.Expr):
5556
return self.qualified_name(node.value)
5657
elif isinstance(node, ast.Name):
57-
if new := self.qualified_name_prefixes.get(node.id):
58+
new = self.qualified_name_prefixes.get(node.id)
59+
if new:
5860
return new
5961
return f"<locals>.{node.id}"
6062
else:
6163
raise ValueError(f"Complex expression: {type(node)}")
6264

63-
def visit_Import(self, node: ast.Import):
65+
def visit_Import(self, node: ast.Import) -> None:
6466
# .names
6567
# alias = (identifier name, identifier? asname)
6668
for a in node.names:
6769
self.qualified_name_prefixes[a.asname or a.name] = a.name
6870

69-
def visit_ImportFrom(self, node: ast.ImportFrom):
71+
def visit_ImportFrom(self, node: ast.ImportFrom) -> None:
7072
# .identifier / .level
7173
# .names
7274
# alias = (identifier name, identifier? asname)
@@ -87,12 +89,12 @@ class Unknown:
8789

8890

8991
class SetupFindingVisitor(QualifiedNameSaver):
90-
def __init__(self):
92+
def __init__(self) -> None:
9193
super().__init__()
92-
self.setup_call_args = None
93-
self.setup_call_kwargs = None
94+
self.setup_call_args: Optional[Dict[str, Any]] = None
95+
self.setup_call_kwargs: Optional[bool] = None
9496

95-
def visit_Call(self, node):
97+
def visit_Call(self, node: ast.Call) -> None:
9698
# .func (expr, can just be name)
9799
# .args
98100
# .keywords

0 commit comments

Comments
 (0)