File tree Expand file tree Collapse file tree 2 files changed +36
-7
lines changed Expand file tree Collapse file tree 2 files changed +36
-7
lines changed Original file line number Diff line number Diff line change 1+ import functools
12import io
23import random
34import string
@@ -68,6 +69,23 @@ def sample(self):
6869 """
6970 return random .random ()
7071
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+
7189 def random_letters (self ):
7290 """
7391 Generate and return a sequence of random letters.
@@ -870,6 +888,7 @@ def test_good_class(self, capsys):
870888 "plot" ,
871889 "swap" ,
872890 "sample" ,
891+ "decorated_sample" ,
873892 "random_letters" ,
874893 "sample_values" ,
875894 "head" ,
Original file line number Diff line number Diff line change @@ -430,24 +430,34 @@ def doc_parameters(self):
430430
431431 @property
432432 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+
433444 if inspect .isclass (self .obj ):
434445 if hasattr (self .obj , "_accessors" ) and (
435446 self .name .split ("." )[- 1 ] in self .obj ._accessors
436447 ):
437448 # accessor classes have a signature but don't want to show this
438449 return tuple ()
439450 try :
440- sig = inspect .getfullargspec (self .obj )
451+ sig = inspect .signature (self .obj )
441452 except (TypeError , ValueError ):
442453 # Some objects, mainly in C extensions do not support introspection
443454 # of the signature
444455 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+ )
451461 if params and params [0 ] in ("self" , "cls" ):
452462 return params [1 :]
453463 return params
You can’t perform that action at this time.
0 commit comments