@@ -364,30 +364,31 @@ def convert_kwargs(name, kwargs):
364
364
kwargs = dict (kwargs )
365
365
366
366
signature = sig_of (name )
367
+ params = signature .parameters
367
368
368
369
bound = signature .bind (DUMMY_RANDOM , ** kwargs )
369
370
bound .apply_defaults ()
370
371
371
372
for k in list (kwargs ):
372
373
if (
373
- kwargs [k ] is signature . parameters [k ].default
374
- or signature . parameters [k ].kind != inspect .Parameter .KEYWORD_ONLY
374
+ kwargs [k ] is params [k ].default
375
+ or params [k ].kind != inspect .Parameter .KEYWORD_ONLY
375
376
):
376
377
kwargs .pop (k )
377
378
378
- arg_names = list (signature . parameters )[1 :]
379
+ arg_names = list (params )[1 :]
379
380
380
381
args = []
381
382
382
383
for a in arg_names :
383
- if signature . parameters [a ].kind == inspect .Parameter .KEYWORD_ONLY :
384
+ if params [a ].kind == inspect .Parameter .KEYWORD_ONLY :
384
385
break
385
386
args .append (bound .arguments [a ])
386
387
kwargs .pop (a , None )
387
388
388
389
while args :
389
390
name = arg_names [len (args ) - 1 ]
390
- if args [- 1 ] is signature . parameters [name ].default :
391
+ if args [- 1 ] is params [name ].default :
391
392
args .pop ()
392
393
else :
393
394
break
@@ -402,9 +403,13 @@ def __init__(self, seed, note_method_calls):
402
403
self .__random = Random (seed )
403
404
404
405
def _hypothesis_do_random (self , method , kwargs ):
406
+ fn = getattr (self .__random , method )
407
+ try :
408
+ return fn (** kwargs )
409
+ except TypeError :
410
+ pass
405
411
args , kwargs = convert_kwargs (method , kwargs )
406
-
407
- return getattr (self .__random , method )(* args , ** kwargs )
412
+ return fn (* args , ** kwargs )
408
413
409
414
def __copy__ (self ):
410
415
result = TrueRandom (
0 commit comments