PKz4MFXdeck.py'''Implementation of the deck collection type.''' __version__ = '2.1' import collections import enum import itertools import random class Suit(enum.Enum): Hearts = '♥' Spades = '♠' Clubs = '♣' Diamonds = '♦' class Value(enum.IntEnum): Ace = 1 Two = 2 Three = 3 Four = 4 Five = 5 Six = 6 Seven = 7 Eight = 8 Nine = 9 Ten = 10 Jack = 11 Queen = 12 King = 13 class Card: def __init__(self, suit=None, value=None, joker=False): self.joker = joker if self.joker: self.suit, self.value = None, None else: if value is None: self.suit, self.value = suit else: self.suit = suit self.value = value def __repr__(self): return "Card(joker=True)" if self.joker else f"Card({self.suit!r}, {self.value!r})" def __str__(self): return "Joker" if self.joker else f"{self.value.value}{self.suit.value}" class Deck(collections.deque): def __init__(self, include_jokers=True): super().__init__(map(Card, itertools.product( Suit.__members__.values(), Value.__members__.values() ))) if include_jokers: self.append(Card(joker=True)) self.append(Card(joker=True)) def shuffle(self, rng=random): rng.shuffle(self) deal = collections.deque.pop deal_from_bottom = collections.deque.popleft collections.deck = Deck if __name__ == '__main__': # Basic tests d = Deck() assert len(d) == 54 d = Deck(include_jokers=False) assert len(d) == 52 PK!HSmPOdeck-2.1.dist-info/WHEEL HM K-*ϳR03rOK-J,/RH,rzd&Y)r$[)T&UrPK!Hאx deck-2.1.dist-info/METADATASn@)FVmJV"7^uk 7.`< &!Qv~of>e,Bmj3xGS&1 ˛h?sR2gp*;[,A-6P*! nwD'Jbܱ*6vY6nJ_4t:%M_O߼FG6Jg0x0QK+_q]O6Q'5"2ɳhԼcZ_ ,~)MvCX0c#P:?*`2C GkFjp悗ęxnЪLJpb"P ʼn"G4 kP_x!jEOv VS>$m;Y$OǩsM2IQV$QJB"J[sH4nۮ 2vfdS F?{ppńrHCFRdH$%?~H)o ҲV51P6Hm=̎ 4j rd[Z@ozUrάcdyo;2L^kʒr  *ej/9/%Z+mUNon_ HΚĶMa_PK!H[deck-2.1.dist-info/RECORDmr0@ϒP ,2IA\1W@C5Lo_7|i\m(JܲB<'ʷTe '\.GOÜV~'.x`捻զ5ke_1 Hf_*C*11 Y: LM'eX>{eeyLPKz4MFXdeck.pyPK!HSmPOdeck-2.1.dist-info/WHEELPK!Hאx jdeck-2.1.dist-info/METADATAPK!H[ deck-2.1.dist-info/RECORDPK