Skip to content

Commit 16821c4

Browse files
committed
Speed up use_true_random=True
1 parent bfc994e commit 16821c4

File tree

1 file changed

+12
-7
lines changed
  • hypothesis-python/src/hypothesis/strategies/_internal

1 file changed

+12
-7
lines changed

hypothesis-python/src/hypothesis/strategies/_internal/random.py

+12-7
Original file line numberDiff line numberDiff line change
@@ -364,30 +364,31 @@ def convert_kwargs(name, kwargs):
364364
kwargs = dict(kwargs)
365365

366366
signature = sig_of(name)
367+
params = signature.parameters
367368

368369
bound = signature.bind(DUMMY_RANDOM, **kwargs)
369370
bound.apply_defaults()
370371

371372
for k in list(kwargs):
372373
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
375376
):
376377
kwargs.pop(k)
377378

378-
arg_names = list(signature.parameters)[1:]
379+
arg_names = list(params)[1:]
379380

380381
args = []
381382

382383
for a in arg_names:
383-
if signature.parameters[a].kind == inspect.Parameter.KEYWORD_ONLY:
384+
if params[a].kind == inspect.Parameter.KEYWORD_ONLY:
384385
break
385386
args.append(bound.arguments[a])
386387
kwargs.pop(a, None)
387388

388389
while args:
389390
name = arg_names[len(args) - 1]
390-
if args[-1] is signature.parameters[name].default:
391+
if args[-1] is params[name].default:
391392
args.pop()
392393
else:
393394
break
@@ -402,9 +403,13 @@ def __init__(self, seed, note_method_calls):
402403
self.__random = Random(seed)
403404

404405
def _hypothesis_do_random(self, method, kwargs):
406+
fn = getattr(self.__random, method)
407+
try:
408+
return fn(**kwargs)
409+
except TypeError:
410+
pass
405411
args, kwargs = convert_kwargs(method, kwargs)
406-
407-
return getattr(self.__random, method)(*args, **kwargs)
412+
return fn(*args, **kwargs)
408413

409414
def __copy__(self):
410415
result = TrueRandom(

0 commit comments

Comments
 (0)