<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def push_san(self, san: str) -> Move: """ Parses a move in standard algebraic notation, makes the move and puts it on the the move stack. Returns the move. :raises: :exc:`ValueError` if neither legal nor a null move. """

        move = self.parse_san(san)
        self.push(move)
        return move