2021-02-15 00:58:46 +01:00
|
|
|
import random
|
|
|
|
from typing import Any, Iterable, TYPE_CHECKING
|
|
|
|
|
|
|
|
from randompick import RandomPicker # <1>
|
|
|
|
|
2021-05-21 23:56:12 +02:00
|
|
|
class SimplePicker: # <2>
|
2021-02-15 00:58:46 +01:00
|
|
|
def __init__(self, items: Iterable) -> None:
|
|
|
|
self._items = list(items)
|
|
|
|
random.shuffle(self._items)
|
|
|
|
|
|
|
|
def pick(self) -> Any: # <3>
|
|
|
|
return self._items.pop()
|
|
|
|
|
|
|
|
def test_isinstance() -> None: # <4>
|
2021-08-07 05:44:01 +02:00
|
|
|
popper: RandomPicker = SimplePicker([1]) # <5>
|
|
|
|
assert isinstance(popper, RandomPicker) # <6>
|
2021-02-15 00:58:46 +01:00
|
|
|
|
2021-08-07 05:44:01 +02:00
|
|
|
def test_item_type() -> None: # <7>
|
2021-02-15 00:58:46 +01:00
|
|
|
items = [1, 2]
|
|
|
|
popper = SimplePicker(items)
|
|
|
|
item = popper.pick()
|
|
|
|
assert item in items
|
|
|
|
if TYPE_CHECKING:
|
2021-08-07 05:44:01 +02:00
|
|
|
reveal_type(item) # <8>
|
2021-02-15 00:58:46 +01:00
|
|
|
assert isinstance(item, int)
|