# Path: bot/card.py
# class Card:
#     def __init__(self,
#                  gameObj: 'game.Game',
#                  playerObj: int,
#                  deckPosition: int,
#                  suit: Optional[Color],
#                  rank: Optional[Value]) -> None:
#     def __str__(self) -> str:
#     def got_positive_color(self, color: Color) -> None:
#     def got_negative_color(self, color: Color) -> None:
#     def got_positive_value(self, value: Value) -> None:
#     def got_negative_value(self, value: Value) -> None:
# 
# Path: enums.py
# class Value(IntEnum):
#     '''
#     Only for internal usage
#     '''
#     V1 = 1
#     V2 = 2
#     V3 = 3
#     V4 = 4
#     V5 = 5
# 
#     @property
#     def num_copies(self):
#         if self is Value.V1:
#             return 3
#         if self is Value.V2:
#             return 2
#         if self is Value.V3:
#             return 2
#         if self is Value.V4:
#             return 2
#         if self is Value.V5:
#             return 1
#         raise ValueError
# 
#     def rank(self):
#         if self is Value.V1:
#             return Rank.R1
#         if self is Value.V2:
#             return Rank.R2
#         if self is Value.V3:
#             return Rank.R3
#         if self is Value.V4:
#             return Rank.R4
#         if self is Value.V5:
#             return Rank.R5
#         raise ValueError


from bot import card
from enums import Value
                        self.playColors.remove(c)
                        continue
                    if self.bot.isCluedSomewhere(c, self.value, self.player):
                        self.playColors.remove(c)
                        continue
                    if len(self.game.playedCards[c]) >= self.value:
                        self.playColors.remove(c)
                        continue
        if self.playable is None and self.canBePlayable():
            self.setIsPlayable(True, strict=False)
            self.setIsWorthless(None)

        self.valuable = None

        if self.worthless is True:
            self.valuable = False
            self.playable = False

        assert not self.playColors or not self.discardColors
        assert not self.playValue or not self.discardValues
        assert not self.playWorthless or not self.discardWorthless
        assert not self.playHold or not self.discardHold
        assert not self.playColors or not self.playValue
        assert not self.discardColors or not self.discardValues
        assert not self.playWorthless or not self.playHold

    def canBePlayable(self):
        if self.worthless or self.playWorthless:
            return False
        if self.value is not None:

# Path: bot/card.py
# class Card:
#     def __init__(self,
#                  gameObj: 'game.Game',
#                  playerObj: int,
#                  deckPosition: int,
#                  suit: Optional[Color],
#                  rank: Optional[Value]) -> None:
#     def __str__(self) -> str:
#     def got_positive_color(self, color: Color) -> None:
#     def got_negative_color(self, color: Color) -> None:
#     def got_positive_value(self, value: Value) -> None:
#     def got_negative_value(self, value: Value) -> None:
# 
# Path: enums.py
# class Value(IntEnum):
#     '''
#     Only for internal usage
#     '''
#     V1 = 1
#     V2 = 2
#     V3 = 3
#     V4 = 4
#     V5 = 5
# 
#     @property
#     def num_copies(self):
#         if self is Value.V1:
#             return 3
#         if self is Value.V2:
#             return 2
#         if self is Value.V3:
#             return 2
#         if self is Value.V4:
#             return 2
#         if self is Value.V5:
#             return 1
#         raise ValueError
# 
#     def rank(self):
#         if self is Value.V1:
#             return Rank.R1
#         if self is Value.V2:
#             return Rank.R2
#         if self is Value.V3:
#             return Rank.R3
#         if self is Value.V4:
#             return Rank.R4
#         if self is Value.V5:
#             return Rank.R5
#         raise ValueError


# Path: multitagbot_v1_0/card_knowledge.py
from bot import card
from enums import Value

                        self.playColors.remove(c)
                        continue
                    if self.bot.isCluedSomewhere(c, self.value, self.player):
                        self.playColors.remove(c)
                        continue
                    if len(self.game.playedCards[c]) >= self.value:
                        self.playColors.remove(c)
                        continue
        if self.playable is None and self.canBePlayable():
            self.setIsPlayable(True, strict=False)
            self.setIsWorthless(None)

        self.valuable = None

        if self.worthless is True:
            self.valuable = False
            self.playable = False

        assert not self.playColors or not self.discardColors
        assert not self.playValue or not self.discardValues
        assert not self.playWorthless or not self.discardWorthless
        assert not self.playHold or not self.discardHold
        assert not self.playColors or not self.playValue
        assert not self.discardColors or not self.discardValues
        assert not self.playWorthless or not self.playHold

    def canBePlayable(self):
        if self.worthless or self.playWorthless:
            return False
        if self.value is not None:

            if self.value == Value.V5: