File tree 2 files changed +36
-7
lines changed
2 files changed +36
-7
lines changed Original file line number Diff line number Diff line change
1
+ import functools
1
2
import io
2
3
import random
3
4
import string
@@ -68,6 +69,23 @@ def sample(self):
68
69
"""
69
70
return random .random ()
70
71
72
+ @functools .lru_cache (None )
73
+ def decorated_sample (self , max ):
74
+ """
75
+ Generate and return a random integer between 0 and max.
76
+
77
+ Parameters
78
+ ----------
79
+ max : int
80
+ The maximum value of the random number.
81
+
82
+ Returns
83
+ -------
84
+ int
85
+ Random number generated.
86
+ """
87
+ return random .randint (0 , max )
88
+
71
89
def random_letters (self ):
72
90
"""
73
91
Generate and return a sequence of random letters.
@@ -870,6 +888,7 @@ def test_good_class(self, capsys):
870
888
"plot" ,
871
889
"swap" ,
872
890
"sample" ,
891
+ "decorated_sample" ,
873
892
"random_letters" ,
874
893
"sample_values" ,
875
894
"head" ,
Original file line number Diff line number Diff line change @@ -430,24 +430,34 @@ def doc_parameters(self):
430
430
431
431
@property
432
432
def signature_parameters (self ):
433
+ def add_stars (param_name : str , info : inspect .Parameter ):
434
+ """
435
+ Add stars to *args and **kwargs parameters
436
+ """
437
+ if info .kind == inspect .Parameter .VAR_POSITIONAL :
438
+ return f"*{ param_name } "
439
+ elif info .kind == inspect .Parameter .VAR_KEYWORD :
440
+ return f"**{ param_name } "
441
+ else :
442
+ return param_name
443
+
433
444
if inspect .isclass (self .obj ):
434
445
if hasattr (self .obj , "_accessors" ) and (
435
446
self .name .split ("." )[- 1 ] in self .obj ._accessors
436
447
):
437
448
# accessor classes have a signature but don't want to show this
438
449
return tuple ()
439
450
try :
440
- sig = inspect .getfullargspec (self .obj )
451
+ sig = inspect .signature (self .obj )
441
452
except (TypeError , ValueError ):
442
453
# Some objects, mainly in C extensions do not support introspection
443
454
# of the signature
444
455
return tuple ()
445
- params = sig .args
446
- if sig .varargs :
447
- params .append ("*" + sig .varargs )
448
- if sig .varkw :
449
- params .append ("**" + sig .varkw )
450
- params = tuple (params )
456
+
457
+ params = tuple (
458
+ add_stars (parameter , sig .parameters [parameter ])
459
+ for parameter in sig .parameters
460
+ )
451
461
if params and params [0 ] in ("self" , "cls" ):
452
462
return params [1 :]
453
463
return params
You can’t perform that action at this time.
0 commit comments