code: def test_tuner_restore_classmethod():
      tuner = Tuner("PPO")
  
      # Calling `tuner.restore()` on an instance should raise an AttributeError
      with pytest.raises(AttributeError):
          tuner.restore("/", "PPO")
  
      # Calling `Tuner.restore()` on the class should work. This will throw a
      # FileNotFoundError because no checkpoint exists at that location. Since
      # this happens in the downstream restoration code, this means that the
      # classmethod check successfully passed.
      with pytest.raises(FileNotFoundError):
          tuner = Tuner.restore("/invalid", "PPO")
  
imports: import os
  from pathlib import Path
  from unittest.mock import patch
  import pytest
  import unittest
  from typing import Optional
  from sklearn.datasets import load_breast_cancer
  from sklearn.utils import shuffle
  import ray
  from ray import train, tune
  from ray.train import CheckpointConfig, RunConfig, ScalingConfig
  from ray.train.constants import RAY_CHDIR_TO_TRIAL_DIR
  from ray.train.examples.pytorch.torch_linear_example import train_func
  from ray.data import Dataset, Datasource, ReadTask, from_pandas, read_datasource
  from ray.data.block import BlockMetadata
  from ray.train.data_parallel_trainer import DataParallelTrainer
  from ray.train.torch import TorchTrainer
  from ray.train.trainer import BaseTrainer
  from ray.train.xgboost import XGBoostTrainer
  from ray.tune import Callback, CLIReporter
  from ray.tune.tune_config import TuneConfig
  from ray.tune.tuner import Tuner
label_desc: Use image node_id 17 for calling a global function with example usage: test_tuner_restore_classmethod() without return types