def play(self): last_action = None self.end_seat = self.filtered_seats[-1] self.align_seat_deques() while True: seat = self.filtered_seats[0] turn = Turn( self.seats, self.filtered_seats, self.cards, self.current_bet, last_action, ) action = turn.play() if action: last_action = action self.resolve_action(seat, action) if len(self.filtered_seats) == 1: self.LOGGER.debug("Player {} wins".format( self.filtered_seats[0].index)) self.move_all_bets_to_pots() return list(self.filtered_seats) if seat is self.end_seat: # bets have been called self.move_all_bets_to_pots() return [ seat for seat in self.remaining_seats if seat in self.filtered_seats ] self.filtered_seats.rotate(-1) self.align_seat_deques()