def step(self, state):
        ''' Human agent will display the state and make decisions through interfaces

        Args:
            state (dict): A dictionary that represents the current state

        Returns:
            action (int): The action decided by human
        '''
        if self.is_choosing_action_id:
            raise GinRummyProgramError("self.is_choosing_action_id must be False.")
        if self.state is not None:
            raise GinRummyProgramError("self.state must be None.")
        if self.chosen_action_id is not None:
            raise GinRummyProgramError("self.chosen_action_id={} must be None.".format(self.chosen_action_id))
        self.state = state
        self.is_choosing_action_id = True
        while not self.chosen_action_id:
            time.sleep(0.001)
        if self.chosen_action_id is None:
            raise GinRummyProgramError("self.chosen_action_id cannot be None.")
        chosen_action_event = ActionEvent.decode_action(action_id=self.chosen_action_id)
        self.state = None
        self.is_choosing_action_id = False
        self.chosen_action_id = None
        return chosen_action_event
 Human agent will display the state and make decisions through interfaces

        Args:
            state (dict): A dictionary that represents the current state

        Returns:
            action (int): The action decided by human
        
rlcard/agents/human_agents/gin_rummy_human_agent/gin_rummy_human_agent.py