def nominate(self, owner_id, player_idx, bid):
owner = self.owners[owner_id]<EOL>nominated_player = self.players[player_idx]<EOL>if self.state != AuctionState.NOMINATE:<EOL><INDENT>raise InvalidActionError("<STR_LIT>" + str(owner_id) +<EOL>"<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>elif self.turn_index != owner_id:<EOL><INDENT>raise InvalidActionError("<STR_LIT>" + str(owner_id) + "<STR_LIT>" +<EOL>str(self.turn_index) + "<STR_LIT>")<EOL><DEDENT>elif nominated_player not in self.undrafted_players:<EOL><INDENT>raise InvalidActionError("<STR_LIT>" + str(owner_id) + "<STR_LIT>" + str(player_idx) + "<STR_LIT>" +<EOL>nominated_player.name +<EOL>"<STR_LIT>")<EOL><DEDENT>elif bid > owner.max_bid():<EOL><INDENT>raise InvalidActionError("<STR_LIT>" + str(bid) + "<STR_LIT>" + str(owner_id) +<EOL>"<STR_LIT>" +<EOL>str(owner.max_bid()))<EOL><DEDENT>elif bid < <NUM_LIT:1>:<EOL><INDENT>raise InvalidActionError("<STR_LIT>" + str(owner_id) + "<STR_LIT>" + str(bid) +<EOL>"<STR_LIT>")<EOL><DEDENT>elif not owner.can_buy(nominated_player, bid):<EOL><INDENT>raise InvalidActionError("<STR_LIT>" + str(owner_id) + "<STR_LIT>"<EOL>+ str(player_idx) + "<STR_LIT>" +<EOL>nominated_player.name + "<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>self.nominee = nominated_player<EOL>self._nominee_index = player_idx<EOL>self.bid = bid<EOL>self.tickbids[owner_id] = bid<EOL>
Nominates the player for auctioning.

:param int owner_id: index of the owner who is nominating
:param int player_idx: index of the player to nominate in the players list
:param int bid: starting bid

:raise InvalidActionError: if the action is not allowed according to the rules. See the error message
    for details.