Source code for pythonwrench.random
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import string
from typing import Iterable, Optional, overload
@overload
def randstr(
size: int = 10,
high: None = None,
/,
*,
letters: Iterable[str] = string.ascii_letters,
seed: Optional[int] = None,
) -> str: ...
@overload
def randstr(
low: int,
high: int,
/,
*,
letters: Iterable[str] = string.ascii_letters,
seed: Optional[int] = None,
) -> str: ...
[docs]
def randstr(
low_or_size: int = 10,
high: Optional[int] = None,
/,
*,
letters: Iterable[str] = string.ascii_letters,
seed: Optional[int] = None,
) -> str:
"""Returns a randomly generated string of a random range length."""
assert low_or_size >= 0
initial_state = random.getstate()
if high is None:
size = low_or_size
random.seed(seed)
else:
assert low_or_size < high
random.seed(seed)
size = random.randint(low_or_size, high - 1)
letters = list(letters)
result = "".join(random.choice(letters) for _ in range(size))
if seed is not None:
random.setstate(initial_state)
return result