@@ -2229,7 +2229,12 @@ def _module_and_class(self, fields):
22292229return module ,cls
22302230
22312231
2232- def parse_file (filename ,* ,verify = True ,output = None ):
2232+ def parse_file (
2233+ filename :str ,
2234+ * ,
2235+ verify :bool = True ,
2236+ output :str | None = None
2237+ )-> None :
22332238if not output :
22342239output = filename
22352240
@@ -2261,7 +2266,10 @@ def parse_file(filename, *, verify=True, output=None):
22612266write_file (fn ,data )
22622267
22632268
2264- def compute_checksum (input ,length = None ):
2269+ def compute_checksum (
2270+ input :str | None ,
2271+ length :int | None = None
2272+ )-> str :
22652273input = input or ''
22662274s = hashlib .sha1 (input .encode ('utf-8' )).hexdigest ()
22672275if length :
@@ -2272,44 +2280,61 @@ def compute_checksum(input, length=None):
22722280
22732281
22742282class PythonParser :
2275- def __init__ (self ,clinic ) :
2283+ def __init__ (self ,clinic : Clinic ) -> None :
22762284pass
22772285
2278- def parse (self ,block ) :
2286+ def parse (self ,block : Block ) -> None :
22792287s = io .StringIO ()
22802288with OverrideStdioWith (s ):
22812289exec (block .input )
22822290block .output = s .getvalue ()
22832291
22842292
2293+ ModuleDict = dict [str ,"Module" ]
2294+
22852295class Module :
2286- def __init__ (self ,name ,module = None ):
2296+ def __init__ (
2297+ self ,
2298+ name :str ,
2299+ module = None
2300+ )-> None :
22872301self .name = name
22882302self .module = self .parent = module
22892303
2290- self .modules = collections .OrderedDict ()
2291- self .classes = collections .OrderedDict ()
2292- self .functions = []
2304+ self .modules : ModuleDict = collections .OrderedDict ()
2305+ self .classes : ClassDict = collections .OrderedDict ()
2306+ self .functions : list [ Function ] = []
22932307
2294- def __repr__ (self ):
2308+ def __repr__ (self )-> str :
22952309return "<clinic.Module " + repr (self .name )+ " at " + str (id (self ))+ ">"
22962310
2311+
2312+ ClassDict = dict [str ,"Class" ]
2313+
22972314class Class :
2298- def __init__ (self ,name ,module = None ,cls = None ,typedef = None ,type_object = None ):
2315+ def __init__ (
2316+ self ,
2317+ name :str ,
2318+ module :Module | None = None ,
2319+ cls = None ,
2320+ typedef :str | None = None ,
2321+ type_object :str | None = None
2322+ )-> None :
22992323self .name = name
23002324self .module = module
23012325self .cls = cls
23022326self .typedef = typedef
23032327self .type_object = type_object
23042328self .parent = cls or module
23052329
2306- self .classes = collections .OrderedDict ()
2307- self .functions = []
2330+ self .classes : ClassDict = collections .OrderedDict ()
2331+ self .functions : list [ Function ] = []
23082332
2309- def __repr__ (self ):
2333+ def __repr__ (self )-> str :
23102334return "<clinic.Class " + repr (self .name )+ " at " + str (id (self ))+ ">"
23112335
2312- unsupported_special_methods = set ("""
2336+
2337+ unsupported_special_methods :set [str ]= set ("""
23132338
23142339__abs__
23152340__add__