diff options
Diffstat (limited to 'poker')
| -rw-r--r-- | poker/models.py | 18 | 
1 files changed, 16 insertions, 2 deletions
| diff --git a/poker/models.py b/poker/models.py index e62df17..5ecda90 100644 --- a/poker/models.py +++ b/poker/models.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, Field +from pydantic import BaseModel, validator  from poker.constants import Suit, Value @@ -9,8 +9,22 @@ class Card(BaseModel):      suit: Suit      value: Value +    def __hash__(self) -> int: +        """Hash function.""" +        return hash(f"{self.value} {self.suit}") + + +HandType = tuple[Card, Card, Card, Card, Card] +  class Hand(BaseModel):      """Hand domain model class.""" -    cards: list[Card] = Field(..., min_length=5, max_length=5) +    cards: HandType + +    @validator("cards") +    def validate_unique(cls, cards: HandType) -> HandType: +        """Validate hand comprises unique cards.""" +        if len(cards) != len(set(cards)): +            raise ValueError("Hand contains duplicate cards.") +        return cards | 
