pyiter.shuffling

 1from typing import Iterable, Iterator, Union
 2from random import Random
 3from .transform import Transform, T
 4
 5
 6class ShufflingTransform(Transform[T, T]):
 7    """
 8    A transform that shuffles the elements of an iterable.
 9    """
10
11    def __init__(
12        self,
13        iter: Iterable[T],
14        random: Union["Random", int, float, str, bytes, bytearray, None] = None,
15    ):
16        super().__init__(iter)
17        if isinstance(random, Random):
18            self.random = random
19        elif random is None:
20            self.random = Random()
21        else:
22            self.random = Random(random)
23
24    def __do_iter__(self) -> Iterator[T]:
25        lst = list(self.iter)
26        self.random.shuffle(lst)
27        yield from lst
class ShufflingTransform(pyiter.transform.Transform[~T, ~T]):
 7class ShufflingTransform(Transform[T, T]):
 8    """
 9    A transform that shuffles the elements of an iterable.
10    """
11
12    def __init__(
13        self,
14        iter: Iterable[T],
15        random: Union["Random", int, float, str, bytes, bytearray, None] = None,
16    ):
17        super().__init__(iter)
18        if isinstance(random, Random):
19            self.random = random
20        elif random is None:
21            self.random = Random()
22        else:
23            self.random = Random(random)
24
25    def __do_iter__(self) -> Iterator[T]:
26        lst = list(self.iter)
27        self.random.shuffle(lst)
28        yield from lst

A transform that shuffles the elements of an iterable.