# Path: mau_mau/constants.py
# class DECK:
#     SEVEN = 7
#     EIGHT = 8
#     JACK = "Jack"
#     VALUES = [SEVEN, EIGHT, 9, 10, JACK, "Queen", "King", "Ace"]
#     SUITS = ["♦", "♥", "♠", "♣"]


import logging
from mau_mau.constants import DECK
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.find_antidotes = self._find_antidotes
        self.punishments = [self._punishment]

    @staticmethod
    def _find_antidotes(cards):
        return [c for c in cards if c.value == DECK.SEVEN]

    @staticmethod
    def _punishment(player, table):
        player.draw(table, amount=2)


class SkipNextPlayer(BasicRule):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.skipPlayer = True


class DemandWantedSuit(BasicRule):
    def find_playable_cards(self, cards):
        try:
            wantedSuit = self.strategy.wantedSuit
        except AttributeError:
            # No strategy attached -> First card in game
            wantedSuit = self.card.suit
        return [
            c
            for c in cards

# Path: mau_mau/constants.py
# class DECK:
#     SEVEN = 7
#     EIGHT = 8
#     JACK = "Jack"
#     VALUES = [SEVEN, EIGHT, 9, 10, JACK, "Queen", "King", "Ace"]
#     SUITS = ["♦", "♥", "♠", "♣"]


# Path: mau_mau/rules.py
import logging
from mau_mau.constants import DECK

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.find_antidotes = self._find_antidotes
        self.punishments = [self._punishment]

    @staticmethod
    def _find_antidotes(cards):
        return [c for c in cards if c.value == DECK.SEVEN]

    @staticmethod
    def _punishment(player, table):
        player.draw(table, amount=2)


class SkipNextPlayer(BasicRule):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.skipPlayer = True


class DemandWantedSuit(BasicRule):
    def find_playable_cards(self, cards):
        try:
            wantedSuit = self.strategy.wantedSuit
        except AttributeError:
            # No strategy attached -> First card in game
            wantedSuit = self.card.suit
        return [
            c
            for c in cards

            if c.suit == wantedSuit and not c.value == DECK.JACK