Source code for maverick.enums

from enum import Enum, auto

__all__ = [
    "Suit",
    "Rank",
    "Street",
    "HandType",
    "PlayerStateType",
    "GameStateType",
    "ActionType",
    "GameStage",
    "GameEventType",
]


[docs] class Suit(Enum): """ Card suit enumeration. Represents the four suits in a standard deck of playing cards. Attributes ---------- HEARTS : str Hearts suit, represented by 'H'. SPADES : str Spades suit, represented by 'S'. CLUBS : str Clubs suit, represented by 'C'. DIAMONDS : str Diamonds suit, represented by 'D'. """ HEARTS = "H" SPADES = "S" CLUBS = "C" DIAMONDS = "D"
[docs] class Rank(Enum): """ Card rank enumeration. Represents the ranks of cards in a standard deck, with numeric values for comparison purposes. Ace is high (14). Attributes ---------- TWO : int Rank value 2. THREE : int Rank value 3. FOUR : int Rank value 4. FIVE : int Rank value 5. SIX : int Rank value 6. SEVEN : int Rank value 7. EIGHT : int Rank value 8. NINE : int Rank value 9. TEN : int Rank value 10. JACK : int Rank value 11. QUEEN : int Rank value 12. KING : int Rank value 13. ACE : int Rank value 14 (high ace). """ TWO = 2 THREE = 3 FOUR = 4 FIVE = 5 SIX = 6 SEVEN = 7 EIGHT = 8 NINE = 9 TEN = 10 JACK = 11 QUEEN = 12 KING = 13 ACE = 14
[docs] class Street(Enum): """ Betting round enumeration for Texas Hold'em. Represents the different stages of a poker hand, ordered by when they occur. Attributes ---------- PRE_FLOP : int First betting round, before any community cards are dealt (value 0). FLOP : int Second betting round, after three community cards are dealt (value 1). TURN : int Third betting round, after the fourth community card is dealt (value 2). RIVER : int Fourth betting round, after the fifth community card is dealt (value 3). """ PRE_FLOP = 0 FLOP = 1 TURN = 2 RIVER = 3
[docs] class HandType(Enum): """ Poker hand type enumeration. Represents the different types of poker hands, from weakest to strongest. Attributes ---------- HIGH_CARD : str Highest card wins, no pairs or better. PAIR : str Two cards of the same rank. TWO_PAIR : str Two different pairs. THREE_OF_A_KIND : str Three cards of the same rank. STRAIGHT : str Five cards in sequence, not all the same suit. FLUSH : str Five cards of the same suit, not in sequence. FULL_HOUSE : str Three of a kind plus a pair. FOUR_OF_A_KIND : str Four cards of the same rank. STRAIGHT_FLUSH : str Five cards in sequence, all of the same suit. ROYAL_FLUSH : str Ace, King, Queen, Jack, Ten, all of the same suit (best hand). """ HIGH_CARD = 0 PAIR = 1 TWO_PAIR = 2 THREE_OF_A_KIND = 3 STRAIGHT = 4 FLUSH = 5 FULL_HOUSE = 6 FOUR_OF_A_KIND = 7 STRAIGHT_FLUSH = 8 ROYAL_FLUSH = 9 def __lt__(self, other): if self.__class__ is other.__class__: return self.value < other.value return NotImplemented def __le__(self, other): if self.__class__ is other.__class__: return self.value <= other.value return NotImplemented def __gt__(self, other): if self.__class__ is other.__class__: return self.value > other.value return NotImplemented def __ge__(self, other): if self.__class__ is other.__class__: return self.value >= other.value return NotImplemented
[docs] class PlayerStateType(Enum): """ Player state enumeration. Represents the current state of a player during a poker hand. Attributes ---------- ACTIVE : str Player is actively participating in the current hand and can take actions. FOLDED : str Player has folded and is no longer competing for the pot. ALL_IN : str Player has bet all their chips and cannot take further actions, but remains in the hand competing for pots they contributed to. ELIMINATED : str Player has lost all their chips and is out of the game. """ ACTIVE = auto() FOLDED = auto() ALL_IN = auto() ELIMINATED = auto()
[docs] class GameStage(Enum): """ Game stage enumeration. Represents the different states of the game from waiting for players to game completion. Attributes ---------- WAITING_FOR_PLAYERS : str Game is waiting for enough players to join. READY : str Enough players have joined; game is ready to start. STARTED : str Game has started; hands will begin dealing. DEALING : str Dealing hole cards to players and posting blinds. PRE_FLOP : str First betting round after hole cards are dealt. FLOP : str Second betting round after three community cards are dealt. TURN : str Third betting round after the fourth community card is dealt. RIVER : str Final betting round after the fifth community card is dealt. SHOWDOWN : str Players reveal hands and the winner is determined. HAND_COMPLETE : str Hand has ended; preparing for the next hand. GAME_OVER : str Game has ended (not enough players with chips). """ WAITING_FOR_PLAYERS = auto() READY = auto() STARTED = auto() DEALING = auto() PRE_FLOP = auto() FLOP = auto() TURN = auto() RIVER = auto() SHOWDOWN = auto() HAND_COMPLETE = auto() GAME_OVER = auto()
GameStateType = GameStage
[docs] class ActionType(Enum): """ Player action enumeration. Represents the different types of actions a player can take during a betting round. Attributes ---------- FOLD : str Discard hand and forfeit any chance of winning the pot. CHECK : str Pass the action without betting (only valid when there's no bet to call). CALL : str Match the current bet to stay in the hand. BET : str Be the first to put chips into the pot in a betting round. RAISE : str Increase the current bet. ALL_IN : str Bet all remaining chips. """ FOLD = auto() CHECK = auto() CALL = auto() BET = auto() RAISE = auto() ALL_IN = auto()
[docs] class GameEventType(Enum): """ Game event enumeration. Represents the different types of events that can occur during a poker game. Attributes ---------- GAME_STARTED : str Game has started. HAND_STARTED : str New hand has started. HAND_ENDED : str Hand has ended. GAME_ENDED : str Game has ended. HOLE_CARDS_DEALT : str Hole cards dealt to players. FLOP_DEALT : str First three community cards dealt. TURN_DEALT : str Fourth community card dealt. RIVER_DEALT : str Fifth community card dealt. PLAYER_ACTION_TAKEN : str Player takes an action. BETTING_ROUND_STARTED : str Betting round started. .. versionadded:: 0.2.0 BETTING_ROUND_COMPLETED : str Betting round completed. BLINDS_POSTED : str Blind bets posted. ANTES_POSTED : str Ante bets posted. SHOWDOWN_STARTED : str Showdown has started. .. versionadded:: 0.2.0 SHOWDOWN_COMPLETED : str Showdown has completed. PLAYER_JOINED : str Player joined the game. PLAYER_LEFT : str Player left the game. POT_WON : str Pot has been won by a player. .. versionadded:: 0.2.0 PLAYER_CARDS_REVEALED : str Player's cards have been revealed at showdown. This only happens if there are multiple winners. If there is a single winner, their cards are not revealed. .. versionadded:: 0.2.0 PLAYER_ELIMINATED : str Player has been eliminated from the game. .. versionadded:: 0.2.0 """ # Game lifecycle events GAME_STARTED = auto() GAME_ENDED = auto() HAND_STARTED = auto() HAND_ENDED = auto() SHOWDOWN_STARTED = auto() SHOWDOWN_COMPLETED = auto() # Dealing events HOLE_CARDS_DEALT = auto() FLOP_DEALT = auto() TURN_DEALT = auto() RIVER_DEALT = auto() # Player related events PLAYER_ACTION_TAKEN = auto() POT_WON = auto() PLAYER_CARDS_REVEALED = auto() PLAYER_JOINED = auto() PLAYER_LEFT = auto() PLAYER_ELIMINATED = auto() # Betting events BLINDS_POSTED = auto() ANTES_POSTED = auto() BETTING_ROUND_STARTED = auto() BETTING_ROUND_COMPLETED = auto()