@@ -2416,6 +2416,9 @@ def __repr__(self) -> str:
24162416INVALID, CALLABLE, STATIC_METHOD, CLASS_METHOD, METHOD_INIT, METHOD_NEW
24172417""" .replace ("," , "" ).strip ().split ()
24182418
2419+ ParamDict = dict [str , "Parameter" ]
2420+ ReturnConverterType = Callable [..., "CReturnConverter" ]
2421+
24192422class Function :
24202423 """
24212424 Mutable duck type for inspect.Function.
@@ -2428,12 +2431,22 @@ class Function:
24282431 (not docstring) or ((not docstring[0].isspace()) and (docstring.rstrip() == docstring))
24292432 """
24302433
2431- def __init__ (self , parameters = None , * , name ,
2432- module , cls = None , c_basename = None ,
2433- full_name = None ,
2434- return_converter , return_annotation = inspect .Signature .empty ,
2435- docstring = None , kind = CALLABLE , coexist = False ,
2436- docstring_only = False ):
2434+ def __init__ (
2435+ self ,
2436+ parameters : ParamDict | None = None ,
2437+ * ,
2438+ name : str ,
2439+ module : Module ,
2440+ cls : Class | None = None ,
2441+ c_basename : str | None = None ,
2442+ full_name : str | None = None ,
2443+ return_converter : ReturnConverterType ,
2444+ return_annotation = inspect .Signature .empty ,
2445+ docstring : str | None = None ,
2446+ kind : str = CALLABLE ,
2447+ coexist : bool = False ,
2448+ docstring_only : bool = False
2449+ ) -> None :
24372450 self .parameters = parameters or {}
24382451 self .return_annotation = return_annotation
24392452 self .name = name
@@ -2467,7 +2480,7 @@ def render_parameters(self):
24672480 return self .__render_parameters__
24682481
24692482 @property
2470- def methoddef_flags (self ):
2483+ def methoddef_flags (self ) -> str | None :
24712484 if self .kind in (METHOD_INIT , METHOD_NEW ):
24722485 return None
24732486 flags = []
@@ -2481,10 +2494,10 @@ def methoddef_flags(self):
24812494 flags .append ('METH_COEXIST' )
24822495 return '|' .join (flags )
24832496
2484- def __repr__ (self ):
2497+ def __repr__ (self ) -> str :
24852498 return '<clinic.Function ' + self .name + '>'
24862499
2487- def copy (self , ** overrides ):
2500+ def copy (self , ** overrides ) -> "Function" :
24882501 kwargs = {
24892502 'name' : self .name , 'module' : self .module , 'parameters' : self .parameters ,
24902503 'cls' : self .cls , 'c_basename' : self .c_basename ,
@@ -2507,9 +2520,18 @@ class Parameter:
25072520 Mutable duck type of inspect.Parameter.
25082521 """
25092522
2510- def __init__ (self , name , kind , * , default = inspect .Parameter .empty ,
2511- function , converter , annotation = inspect .Parameter .empty ,
2512- docstring = None , group = 0 ):
2523+ def __init__ (
2524+ self ,
2525+ name : str ,
2526+ kind : str ,
2527+ * ,
2528+ default = inspect .Parameter .empty ,
2529+ function : Function ,
2530+ converter : "CConverter" ,
2531+ annotation = inspect .Parameter .empty ,
2532+ docstring : str | None = None ,
2533+ group : int = 0
2534+ ) -> None :
25132535 self .name = name
25142536 self .kind = kind
25152537 self .default = default
@@ -2519,22 +2541,22 @@ def __init__(self, name, kind, *, default=inspect.Parameter.empty,
25192541 self .docstring = docstring or ''
25202542 self .group = group
25212543
2522- def __repr__ (self ):
2544+ def __repr__ (self ) -> str :
25232545 return '<clinic.Parameter ' + self .name + '>'
25242546
2525- def is_keyword_only (self ):
2547+ def is_keyword_only (self ) -> bool :
25262548 return self .kind == inspect .Parameter .KEYWORD_ONLY
25272549
2528- def is_positional_only (self ):
2550+ def is_positional_only (self ) -> bool :
25292551 return self .kind == inspect .Parameter .POSITIONAL_ONLY
25302552
2531- def is_vararg (self ):
2553+ def is_vararg (self ) -> bool :
25322554 return self .kind == inspect .Parameter .VAR_POSITIONAL
25332555
2534- def is_optional (self ):
2556+ def is_optional (self ) -> bool :
25352557 return not self .is_vararg () and (self .default is not unspecified )
25362558
2537- def copy (self , ** overrides ):
2559+ def copy (self , ** overrides ) -> "Parameter" :
25382560 kwargs = {
25392561 'name' : self .name , 'kind' : self .kind , 'default' :self .default ,
25402562 'function' : self .function , 'converter' : self .converter , 'annotation' : self .annotation ,
@@ -2547,7 +2569,7 @@ def copy(self, **overrides):
25472569 kwargs ['converter' ] = converter
25482570 return Parameter (** kwargs )
25492571
2550- def get_displayname (self , i ) :
2572+ def get_displayname (self , i : int ) -> str :
25512573 if i == 0 :
25522574 return '"argument"'
25532575 if not self .is_positional_only ():
@@ -2558,13 +2580,13 @@ def get_displayname(self, i):
25582580
25592581class LandMine :
25602582 # try to access any
2561- def __init__ (self , message ) :
2583+ def __init__ (self , message : str ) -> None :
25622584 self .__message__ = message
25632585
2564- def __repr__ (self ):
2586+ def __repr__ (self ) -> str :
25652587 return '<LandMine ' + repr (self .__message__ ) + ">"
25662588
2567- def __getattribute__ (self , name ):
2589+ def __getattribute__ (self , name : str ):
25682590 if name in ('__repr__' , '__message__' ):
25692591 return super ().__getattribute__ (name )
25702592 # raise RuntimeError(repr(name))
@@ -3023,7 +3045,6 @@ def parser_name(self):
30233045# The callable may have any number of keyword-only parameters.
30243046# The callable must return a CReturnConverter object.
30253047# The callable should not call builtins.print.
3026- ReturnConverterType = Callable [..., "CReturnConverter" ]
30273048ReturnConverterDict = dict [str , ReturnConverterType ]
30283049return_converters : ReturnConverterDict = {}
30293050
0 commit comments