code: def push_san(self, san: str) -> Move:
          
          move = self.parse_san(san)
          self.push(move)
          return move
docs: 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.