Skip to content

Commit bf6dd8f

Browse files
gh-104050: Add basic type hints to Argument Clinic clinic class (#104705)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
1 parent c482e9a commit bf6dd8f

File tree

1 file changed

+38
-17
lines changed

1 file changed

+38
-17
lines changed

Diff for: Tools/clinic/clinic.py

+38-17
Original file line numberDiff line numberDiff line change
@@ -1989,6 +1989,11 @@ def write_file(filename: str, new_contents: str):
19891989
raise
19901990

19911991

1992+
ClassDict = dict[str, "Class"]
1993+
DestinationDict = dict[str, Destination]
1994+
ModuleDict = dict[str, "Module"]
1995+
ParserDict = dict[str, "DSLParser"]
1996+
19921997
clinic = None
19931998
class Clinic:
19941999

@@ -2035,23 +2040,30 @@ class Clinic:
20352040
20362041
"""
20372042

2038-
def __init__(self, language, printer=None, *, verify=True, filename=None):
2043+
def __init__(
2044+
self,
2045+
language: CLanguage,
2046+
printer: BlockPrinter | None = None,
2047+
*,
2048+
verify: bool = True,
2049+
filename: str | None = None
2050+
) -> None:
20392051
# maps strings to Parser objects.
20402052
# (instantiated from the "parsers" global.)
2041-
self.parsers = {}
2042-
self.language = language
2053+
self.parsers: ParserDict = {}
2054+
self.language: CLanguage = language
20432055
if printer:
20442056
fail("Custom printers are broken right now")
20452057
self.printer = printer or BlockPrinter(language)
20462058
self.verify = verify
20472059
self.filename = filename
2048-
self.modules = {}
2049-
self.classes = {}
2050-
self.functions = []
2060+
self.modules: ModuleDict = {}
2061+
self.classes: ClassDict = {}
2062+
self.functions: list[Function] = []
20512063

20522064
self.line_prefix = self.line_suffix = ''
20532065

2054-
self.destinations = {}
2066+
self.destinations: DestinationDict = {}
20552067
self.add_destination("block", "buffer")
20562068
self.add_destination("suppress", "suppress")
20572069
self.add_destination("buffer", "buffer")
@@ -2072,10 +2084,13 @@ def __init__(self, language, printer=None, *, verify=True, filename=None):
20722084
'impl_definition': d('block'),
20732085
}
20742086

2075-
self.destination_buffers_stack = []
2076-
self.ifndef_symbols = set()
2087+
DestBufferType = dict[str, Callable[..., Any]]
2088+
DestBufferList = list[DestBufferType]
2089+
2090+
self.destination_buffers_stack: DestBufferList = []
2091+
self.ifndef_symbols: set[str] = set()
20772092

2078-
self.presets = {}
2093+
self.presets: dict[str, dict[Any, Any]] = {}
20792094
preset = None
20802095
for line in self.presets_text.strip().split('\n'):
20812096
line = line.strip()
@@ -2103,18 +2118,27 @@ def __init__(self, language, printer=None, *, verify=True, filename=None):
21032118
global clinic
21042119
clinic = self
21052120

2106-
def add_destination(self, name, type, *args):
2121+
def add_destination(
2122+
self,
2123+
name: str,
2124+
type: str,
2125+
*args
2126+
) -> None:
21072127
if name in self.destinations:
21082128
fail("Destination already exists: " + repr(name))
21092129
self.destinations[name] = Destination(name, type, self, *args)
21102130

2111-
def get_destination(self, name):
2131+
def get_destination(self, name: str) -> Destination:
21122132
d = self.destinations.get(name)
21132133
if not d:
21142134
fail("Destination does not exist: " + repr(name))
21152135
return d
21162136

2117-
def get_destination_buffer(self, name, item=0):
2137+
def get_destination_buffer(
2138+
self,
2139+
name: str,
2140+
item: int = 0
2141+
):
21182142
d = self.get_destination(name)
21192143
return d.buffers[item]
21202144

@@ -2240,6 +2264,7 @@ def parse_file(
22402264
if not find_start_re.search(raw):
22412265
return
22422266

2267+
assert isinstance(language, CLanguage)
22432268
clinic = Clinic(language, verify=verify, filename=filename)
22442269
src_out, clinic_out = clinic.parse(raw)
22452270

@@ -2275,8 +2300,6 @@ def parse(self, block: Block) -> None:
22752300
block.output = s.getvalue()
22762301

22772302

2278-
ModuleDict = dict[str, "Module"]
2279-
22802303
class Module:
22812304
def __init__(
22822305
self,
@@ -2294,8 +2317,6 @@ def __repr__(self) -> str:
22942317
return "<clinic.Module " + repr(self.name) + " at " + str(id(self)) + ">"
22952318

22962319

2297-
ClassDict = dict[str, "Class"]
2298-
22992320
class Class:
23002321
def __init__(
23012322
self,

0 commit comments

Comments
 (0)