@@ -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+
19921997clinic = None
19931998class 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-
22802303class 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-
22992320class Class :
23002321 def __init__ (
23012322 self ,
0 commit comments