@@ -2416,6 +2416,9 @@ def __repr__(self) -> str:
2416
2416
INVALID, CALLABLE, STATIC_METHOD, CLASS_METHOD, METHOD_INIT, METHOD_NEW
2417
2417
""" .replace ("," , "" ).strip ().split ()
2418
2418
2419
+ ParamDict = dict [str , "Parameter" ]
2420
+ ReturnConverterType = Callable [..., "CReturnConverter" ]
2421
+
2419
2422
class Function :
2420
2423
"""
2421
2424
Mutable duck type for inspect.Function.
@@ -2428,12 +2431,22 @@ class Function:
2428
2431
(not docstring) or ((not docstring[0].isspace()) and (docstring.rstrip() == docstring))
2429
2432
"""
2430
2433
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 :
2437
2450
self .parameters = parameters or {}
2438
2451
self .return_annotation = return_annotation
2439
2452
self .name = name
@@ -2467,7 +2480,7 @@ def render_parameters(self):
2467
2480
return self .__render_parameters__
2468
2481
2469
2482
@property
2470
- def methoddef_flags (self ):
2483
+ def methoddef_flags (self ) -> str | None :
2471
2484
if self .kind in (METHOD_INIT , METHOD_NEW ):
2472
2485
return None
2473
2486
flags = []
@@ -2481,10 +2494,10 @@ def methoddef_flags(self):
2481
2494
flags .append ('METH_COEXIST' )
2482
2495
return '|' .join (flags )
2483
2496
2484
- def __repr__ (self ):
2497
+ def __repr__ (self ) -> str :
2485
2498
return '<clinic.Function ' + self .name + '>'
2486
2499
2487
- def copy (self , ** overrides ):
2500
+ def copy (self , ** overrides ) -> "Function" :
2488
2501
kwargs = {
2489
2502
'name' : self .name , 'module' : self .module , 'parameters' : self .parameters ,
2490
2503
'cls' : self .cls , 'c_basename' : self .c_basename ,
@@ -2507,9 +2520,18 @@ class Parameter:
2507
2520
Mutable duck type of inspect.Parameter.
2508
2521
"""
2509
2522
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 :
2513
2535
self .name = name
2514
2536
self .kind = kind
2515
2537
self .default = default
@@ -2519,22 +2541,22 @@ def __init__(self, name, kind, *, default=inspect.Parameter.empty,
2519
2541
self .docstring = docstring or ''
2520
2542
self .group = group
2521
2543
2522
- def __repr__ (self ):
2544
+ def __repr__ (self ) -> str :
2523
2545
return '<clinic.Parameter ' + self .name + '>'
2524
2546
2525
- def is_keyword_only (self ):
2547
+ def is_keyword_only (self ) -> bool :
2526
2548
return self .kind == inspect .Parameter .KEYWORD_ONLY
2527
2549
2528
- def is_positional_only (self ):
2550
+ def is_positional_only (self ) -> bool :
2529
2551
return self .kind == inspect .Parameter .POSITIONAL_ONLY
2530
2552
2531
- def is_vararg (self ):
2553
+ def is_vararg (self ) -> bool :
2532
2554
return self .kind == inspect .Parameter .VAR_POSITIONAL
2533
2555
2534
- def is_optional (self ):
2556
+ def is_optional (self ) -> bool :
2535
2557
return not self .is_vararg () and (self .default is not unspecified )
2536
2558
2537
- def copy (self , ** overrides ):
2559
+ def copy (self , ** overrides ) -> "Parameter" :
2538
2560
kwargs = {
2539
2561
'name' : self .name , 'kind' : self .kind , 'default' :self .default ,
2540
2562
'function' : self .function , 'converter' : self .converter , 'annotation' : self .annotation ,
@@ -2547,7 +2569,7 @@ def copy(self, **overrides):
2547
2569
kwargs ['converter' ] = converter
2548
2570
return Parameter (** kwargs )
2549
2571
2550
- def get_displayname (self , i ) :
2572
+ def get_displayname (self , i : int ) -> str :
2551
2573
if i == 0 :
2552
2574
return '"argument"'
2553
2575
if not self .is_positional_only ():
@@ -2558,13 +2580,13 @@ def get_displayname(self, i):
2558
2580
2559
2581
class LandMine :
2560
2582
# try to access any
2561
- def __init__ (self , message ) :
2583
+ def __init__ (self , message : str ) -> None :
2562
2584
self .__message__ = message
2563
2585
2564
- def __repr__ (self ):
2586
+ def __repr__ (self ) -> str :
2565
2587
return '<LandMine ' + repr (self .__message__ ) + ">"
2566
2588
2567
- def __getattribute__ (self , name ):
2589
+ def __getattribute__ (self , name : str ):
2568
2590
if name in ('__repr__' , '__message__' ):
2569
2591
return super ().__getattribute__ (name )
2570
2592
# raise RuntimeError(repr(name))
@@ -3023,7 +3045,6 @@ def parser_name(self):
3023
3045
# The callable may have any number of keyword-only parameters.
3024
3046
# The callable must return a CReturnConverter object.
3025
3047
# The callable should not call builtins.print.
3026
- ReturnConverterType = Callable [..., "CReturnConverter" ]
3027
3048
ReturnConverterDict = dict [str , ReturnConverterType ]
3028
3049
return_converters : ReturnConverterDict = {}
3029
3050
0 commit comments