code: def test_scheduler_public_api(self):
      for scheduler_class in self.scheduler_classes:
          scheduler_config = self.get_scheduler_config()
          scheduler = scheduler_class(**scheduler_config)
  
          if scheduler_class != VQDiffusionScheduler:
              self.assertTrue(
                  hasattr(scheduler, "init_noise_sigma"),
                  f"{scheduler_class} does not implement a required attribute `init_noise_sigma`",
              )
              self.assertTrue(
                  hasattr(scheduler, "scale_model_input"),
                  (
                      f"{scheduler_class} does not implement a required class method `scale_model_input(sample,"
                      " timestep)`"
                  ),
              )
          self.assertTrue(
              hasattr(scheduler, "step"),
              f"{scheduler_class} does not implement a required class method `step(...)`",
          )
  
          if scheduler_class != VQDiffusionScheduler:
              sample = self.dummy_sample
              if scheduler_class == CMStochasticIterativeScheduler:
                  # Get valid timestep based on sigma_max, which should always be in timestep schedule.
                  scaled_sigma_max = scheduler.sigma_to_t(
                      scheduler.config.sigma_max
                  )
                  scaled_sample = scheduler.scale_model_input(
                      sample, scaled_sigma_max
                  )
              else:
                  scaled_sample = scheduler.scale_model_input(
                      sample, 0.0
                  )
              self.assertEqual(sample.shape, scaled_sample.shape)
  
imports: import inspect
  import json
  import os
  import tempfile
  import unittest
  import uuid
  from typing import Dict, List, Tuple
  import numpy
  import torch
  from huggingface_hub import delete_repo
  import diffusers
  from diffusers import CMStochasticIterativeScheduler, DDIMScheduler, DEISMultistepScheduler, DiffusionPipeline, EulerAncestralDiscreteScheduler, EulerDiscreteScheduler, IPNDMScheduler, LMSDiscreteScheduler, UniPCMultistepScheduler, VQDiffusionScheduler, logging
  from diffusers.configuration_utils import ConfigMixin, register_to_config
  from diffusers.schedulers.scheduling_utils import SchedulerMixin
  from diffusers.utils.testing_utils import CaptureLogger, torch_device
  from ..others.test_utils import TOKEN, USER, is_staging_test
label_desc: Use image node_id 13 for calling the SchedulerCommonTest obj's underlying member method code with example usage: obj.test_scheduler_public_api() without return types