Skip to content

Commit bc47274

Browse files
authored
Remove dynamic attribute lookups in fastparse (#20422)
1 parent d06d3d9 commit bc47274

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

mypy/fastparse.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,8 @@ def visit(self, node: AST | None) -> Any:
426426
def set_line(self, node: N, n: AstNode) -> N:
427427
node.line = n.lineno
428428
node.column = n.col_offset
429-
node.end_line = getattr(n, "end_lineno", None)
430-
node.end_column = getattr(n, "end_col_offset", None)
429+
node.end_line = n.end_lineno
430+
node.end_column = n.end_col_offset
431431

432432
return node
433433

@@ -586,8 +586,8 @@ def set_block_lines(self, b: Block, stmts: Sequence[ast3.stmt]) -> None:
586586
first, last = stmts[0], stmts[-1]
587587
b.line = first.lineno
588588
b.column = first.col_offset
589-
b.end_line = getattr(last, "end_lineno", None)
590-
b.end_column = getattr(last, "end_col_offset", None)
589+
b.end_line = last.end_lineno
590+
b.end_column = last.end_col_offset
591591
if not b.body:
592592
return
593593
new_first = b.body[0]
@@ -1030,8 +1030,8 @@ def do_func_def(
10301030
)
10311031

10321032
# End position is always the same.
1033-
end_line = getattr(n, "end_lineno", None)
1034-
end_column = getattr(n, "end_col_offset", None)
1033+
end_line = n.end_lineno
1034+
end_column = n.end_col_offset
10351035

10361036
self.class_and_function_stack.pop()
10371037
self.class_and_function_stack.append("F")
@@ -1079,7 +1079,7 @@ def transform_args(
10791079
) -> list[Argument]:
10801080
new_args = []
10811081
names: list[ast3.arg] = []
1082-
posonlyargs = getattr(args, "posonlyargs", cast(list[ast3.arg], []))
1082+
posonlyargs = args.posonlyargs
10831083
args_args = posonlyargs + args.args
10841084
args_defaults = args.defaults
10851085
num_no_defaults = len(args_args) - len(args_defaults)
@@ -1149,12 +1149,7 @@ def make_argument(
11491149
var = Var(arg.arg, arg_type)
11501150
var.is_inferred = False
11511151
argument = Argument(var, arg_type, self.visit(default), kind, pos_only)
1152-
argument.set_line(
1153-
arg.lineno,
1154-
arg.col_offset,
1155-
getattr(arg, "end_lineno", None),
1156-
getattr(arg, "end_col_offset", None),
1157-
)
1152+
argument.set_line(arg.lineno, arg.col_offset, arg.end_lineno, arg.end_col_offset)
11581153
return argument
11591154

11601155
def fail_arg(self, msg: str, arg: ast3.arg) -> None:
@@ -1190,8 +1185,8 @@ def visit_ClassDef(self, n: ast3.ClassDef) -> ClassDef:
11901185
if self.options.include_docstrings:
11911186
cdef.docstring = ast3.get_docstring(n, clean=False)
11921187
cdef.column = n.col_offset
1193-
cdef.end_line = getattr(n, "end_lineno", None)
1194-
cdef.end_column = getattr(n, "end_col_offset", None)
1188+
cdef.end_line = n.end_lineno
1189+
cdef.end_column = n.end_col_offset
11951190
self.class_and_function_stack.pop()
11961191
return cdef
11971192

@@ -2113,8 +2108,8 @@ def visit_Subscript(self, n: ast3.Subscript) -> Type:
21132108
column=value.column,
21142109
empty_tuple_index=empty_tuple_index,
21152110
)
2116-
result.end_column = getattr(n, "end_col_offset", None)
2117-
result.end_line = getattr(n, "end_lineno", None)
2111+
result.end_column = n.end_col_offset
2112+
result.end_line = n.end_lineno
21182113
return result
21192114
else:
21202115
return self.invalid_type(n)

0 commit comments

Comments
 (0)