Skip to content

Commit 256f774

Browse files
committed
Refactor find_procedures to satisfy MyPy.
1 parent e57a4a8 commit 256f774

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

mkdocstrings_handlers/vba/_util.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import re
2-
from typing import List, Generator
2+
from typing import List, Generator, Tuple
33

44
from griffe import Docstring, Function, Parameters, Parameter, Parser
55

@@ -132,29 +132,30 @@ def parse_signature(line: str) -> VbaSignatureInfo:
132132

133133
def find_procedures(code: str) -> Generator[VbaProcedureInfo, None, None]:
134134
lines = code.splitlines()
135-
procedure = None
135+
136+
procedure: Tuple[VbaSignatureInfo, int] | None = None
137+
"""
138+
The signature and first line number of the procedure currently being parsed,
139+
or None when scanning for the start of the next procedure.
140+
"""
136141

137142
for i, line in enumerate(lines):
138143
if procedure is None:
139144
# Looking for signature. Ignore everything until we find one.
140145
if not is_signature(line):
141146
continue
142147

143-
procedure = {
144-
"signature": parse_signature(line),
145-
"first_line": i + 1,
146-
}
148+
procedure = parse_signature(line), i + 1
147149
continue
148150

149151
if is_end(line):
150152
# Found the end of a procedure.
151-
procedure["last_line"] = i + 1
153+
signature, first_line = procedure
154+
last_line = i + 1
152155

153156
# The docstring consists of the comment lines directly after the signature.
154157
docstring_lines = []
155-
procedure_source = lines[
156-
procedure["first_line"] - 1 : procedure["last_line"] - 1
157-
]
158+
procedure_source = lines[first_line - 1 : last_line - 1]
158159
for source_line in procedure_source[1:]:
159160
if not is_comment(source_line):
160161
break
@@ -167,29 +168,29 @@ def find_procedures(code: str) -> Generator[VbaProcedureInfo, None, None]:
167168
value=docstring_value,
168169
parser=Parser.google,
169170
parser_options={},
170-
lineno=procedure["first_line"] + 1,
171+
lineno=first_line + 1,
171172
parent=Function(
172-
name=procedure["signature"].name,
173+
name=signature.name,
173174
parameters=Parameters(
174175
*(
175176
Parameter(
176177
name=arg.name,
177178
annotation=arg.arg_type,
178179
default=arg.default,
179180
)
180-
for arg in procedure["signature"].args
181+
for arg in signature.args
181182
)
182183
),
183-
returns=procedure["signature"].return_type,
184+
returns=signature.return_type,
184185
),
185186
)
186187

187188
# Yield it and start over.
188189
yield VbaProcedureInfo(
189-
signature=procedure["signature"],
190+
signature=signature,
190191
docstring=docstring,
191-
first_line=procedure["first_line"],
192-
last_line=procedure["last_line"],
192+
first_line=first_line,
193+
last_line=last_line,
193194
source=procedure_source,
194195
)
195196
procedure = None

0 commit comments

Comments
 (0)