





import unittest
from pathlib import Path
from shutil import copyfile

from transformers import SPIECE_UNDERLINE, is_sentencepiece_available
from transformers.models.speech_to_text import SpeechaTextTokenizer
from transformers.models.speech_to_text.tokenization_speech_to_text import VOCAB_FILES_NAMES, save_json
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


_lowercase		:  List[str]			       =get_tests_dir("""fixtures/test_sentencepiece.model""")

if is_sentencepiece_available():
		import sentencepiece as sp


_lowercase		:  Any			       =5
_lowercase		:  int			       =10






@require_sentencepiece
@require_tokenizers
class 						UpperCamelCase_  (  snake_case__  ,     unittest.TestCase							):
					_a      :						Dict						    =					SpeechaTextTokenizer
					_a      :						Optional[Any]						    =					False
					_a      :						List[Any]						    =					True



					def   __a     (		self     :     Tuple						):
							super().setUp()

							lowerCamelCase_	:     str 						=      sp.SentencePieceProcessor()
							spm_model.Load(lowerCamelCase						)
							lowerCamelCase_	:     Any 						=      ['<s>', '<pad>', '</s>', '<unk>']

							vocab += [spm_model.IdToPiece(id_						) for id_ in range(len(lowerCamelCase						)						)]
							lowerCamelCase_	:     Optional[Any] 						=      dict(zip(lowerCamelCase       ,      range(len(lowerCamelCase						)						)						)						)

							lowerCamelCase_	:     Union[str, Any] 						=      Path(self.tmpdirname						)
							save_json(lowerCamelCase       ,      save_dir / VOCAB_FILES_NAMES['vocab_file']						)
							if not (save_dir / VOCAB_FILES_NAMES["spm_file"]).exists():
									copyfile(lowerCamelCase       ,      save_dir / VOCAB_FILES_NAMES['spm_file']						)

							lowerCamelCase_	:     Optional[Any] 						=      SpeechaTextTokenizer.from_pretrained(self.tmpdirname						)
							tokenizer.save_pretrained(self.tmpdirname						)



					def   __a     (		self     :     List[Any]						):
							lowerCamelCase_	:     List[Any] 						=      '<pad>'
							lowerCamelCase_	:     Tuple 						=      1

							self.assertEqual(self.get_tokenizer()._convert_token_to_id(lowerCamelCase						)       ,      lowerCamelCase						)
							self.assertEqual(self.get_tokenizer()._convert_id_to_token(lowerCamelCase						)       ,      lowerCamelCase						)



					def   __a     (		self     :     Any						):
							lowerCamelCase_	:     Any 						=      list(self.get_tokenizer().get_vocab().keys()						)

							self.assertEqual(vocab_keys[0]       ,      '<s>'						)
							self.assertEqual(vocab_keys[1]       ,      '<pad>'						)
							self.assertEqual(vocab_keys[-1]       ,      'j'						)
							self.assertEqual(len(lowerCamelCase						)       ,      10_01						)



					def   __a     (		self     :     List[Any]						):
							self.assertEqual(self.get_tokenizer().vocab_size       ,      10_01						)



					def   __a     (		self     :     List[str]						):
							lowerCamelCase_	:     str 						=      SpeechaTextTokenizer.from_pretrained(self.tmpdirname						)

							lowerCamelCase_	:     Tuple 						=      tokenizer.tokenize('This is a test'						)
							self.assertListEqual(lowerCamelCase       ,      ['▁This', '▁is', '▁a', '▁t', 'est']						)

							self.assertListEqual(
							    tokenizer.convert_tokens_to_ids(lowerCamelCase						)       ,      [2_89, 50, 14, 1_74, 3_86]       ,      )

							lowerCamelCase_	:     int 						=      tokenizer.tokenize('I was born in 92000, and this is falsé.'						)
							self.assertListEqual(
							    lowerCamelCase       ,      [SPIECE_UNDERLINE + 'I', SPIECE_UNDERLINE + 'was', SPIECE_UNDERLINE + 'b', 'or', 'n', SPIECE_UNDERLINE + 'in', SPIECE_UNDERLINE + '', '9', '2', '0', '0', '0', ',', SPIECE_UNDERLINE + 'and', SPIECE_UNDERLINE + 'this', SPIECE_UNDERLINE + 'is', SPIECE_UNDERLINE + 'f', 'al', 's', 'é', '.']       ,      )
							lowerCamelCase_	:     Union[str, Any] 						=      tokenizer.convert_tokens_to_ids(lowerCamelCase						)
							self.assertListEqual(lowerCamelCase       ,      [12, 25, 88, 59, 28, 23, 11, 4, 6_06, 3_51, 3_51, 3_51, 7, 16, 70, 50, 76, 84, 10, 4, 8]						)

							lowerCamelCase_	:     List[str] 						=      tokenizer.convert_ids_to_tokens(lowerCamelCase						)
							self.assertListEqual(
							    lowerCamelCase       ,      [SPIECE_UNDERLINE + 'I', SPIECE_UNDERLINE + 'was', SPIECE_UNDERLINE + 'b', 'or', 'n', SPIECE_UNDERLINE + 'in', SPIECE_UNDERLINE + '', '<unk>', '2', '0', '0', '0', ',', SPIECE_UNDERLINE + 'and', SPIECE_UNDERLINE + 'this', SPIECE_UNDERLINE + 'is', SPIECE_UNDERLINE + 'f', 'al', 's', '<unk>', '.']       ,      )





					@slow
					def   __a     (		self     :     Union[str, Any]						):
							# fmt: off
							lowerCamelCase_	:     Any 						=      {'input_ids': [[37_91, 7_97, 31, 11, 64, 7_97, 31, 24_29, 4_33, 12, 11_76, 12, 20, 7_86, 9_15, 1_42, 24_13, 2_40, 37, 32_38, 7_97, 31, 11, 35, 93, 9_15, 1_42, 24_13, 2_40, 37, 55_40, 5_67, 12_76, 93, 37, 6_10, 40, 62, 4_55, 6_57, 10_42, 1_23, 7_80, 1_77, 37, 3_09, 2_41, 12_98, 5_14, 20, 2_92, 27_37, 1_14, 24_69, 2_41, 85, 64, 3_02, 5_48, 5_28, 4_23, 4, 5_09, 4_06, 4_23, 37, 6_01, 4, 7_77, 3_02, 5_48, 5_28, 4_23, 2_84, 4, 33_88, 5_11, 4_59, 4, 35_55, 40, 3_21, 3_02, 7_05, 4, 33_88, 5_11, 5_83, 3_26, 5, 5, 5, 62, 33_10, 5_60, 1_77, 26_80, 2_17, 15_08, 32, 31, 8_53, 4_18, 64, 5_83, 5_11, 16_05, 62, 35, 93, 5_60, 1_77, 26_80, 2_17, 15_08, 15_21, 64, 5_83, 5_11, 5_19, 62, 20, 15_15, 7_64, 20, 1_49, 2_61, 56_25, 79_72, 20, 55_40, 5_67, 12_76, 93, 39_25, 16_75, 11, 15, 8_02, 79_72, 5_76, 2_17, 15_08, 11, 35, 93, 12_53, 24_41, 15, 2_89, 6_52, 31, 4_16, 3_21, 38_42, 1_15, 40, 9_11, 8, 4_76, 6_19, 4, 3_80, 1_42, 4_23, 3_35, 2_40, 35, 93, 2_64, 8, 11, 3_35, 5_69, 4_20, 1_63, 5, 2], [2_60, 5_48, 5_28, 4_23, 20, 4_51, 20, 26_81, 11_53, 34_34, 20, 55_40, 37, 5_67, 1_26, 12_53, 24_41, 33_76, 4_49, 2_10, 4_31, 15_63, 1_77, 7_67, 55_40, 11, 12_03, 4_72, 11, 29_53, 6_85, 2_85, 3_64, 7_06, 11_53, 20, 67_99, 20, 28_69, 20, 44_64, 1_26, 40, 24_29, 20, 10_40, 8_66, 26_64, 4_18, 20, 3_18, 20, 17_26, 1_86, 20, 2_65, 5_22, 35, 93, 21_91, 46_34, 20, 10_40, 12, 67_99, 15, 2_28, 23_56, 1_42, 31, 11, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [25_75, 26_66, 6_84, 15_82, 11_76, 12, 6_27, 1_49, 6_19, 20, 49_02, 5_63, 11, 20, 1_49, 2_61, 34_20, 23_56, 1_74, 1_42, 47_14, 1_31, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], 'attention_mask': [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
							# fmt: on

							self.tokenizer_integration_test_util(
							    expected_encoding=lowerCamelCase       ,      model_name='facebook/s2t-small-mustc-en-de-st'       ,      revision='a14f04cf0776c02f62a8cb800cf7909e15ea23ad'       ,      )






@require_sentencepiece
class 						UpperCamelCase_  (  unittest.TestCase							):
					_a      :						Optional[Any]						    =					'valhalla/s2t_mustc_multilinguial_medium'

					_a      :						Optional[Any]						    =					'C\'est trop cool'
					_a      :						List[Any]						    =					'Esto es genial'



					@classmethod
					def   __a     (		cls     :     List[Any]						):
							lowerCamelCase_	:     SpeechaTextTokenizer 						=      SpeechaTextTokenizer.from_pretrained(cls.checkpoint_name						)
							return cls



					def   __a     (		self     :     Union[str, Any]						):
							self.assertEqual(self.tokenizer.lang_code_to_id['pt']       ,      4						)
							self.assertEqual(self.tokenizer.lang_code_to_id['ru']       ,      6						)
							self.assertEqual(self.tokenizer.lang_code_to_id['it']       ,      9						)
							self.assertEqual(self.tokenizer.lang_code_to_id['de']       ,      11						)



					def   __a     (		self     :     Optional[int]						):
							self.assertEqual(self.tokenizer.vocab_size       ,      1_00_00						)



					def   __a     (		self     :     Dict						):
							self.assertIn(lowerCamelCase       ,      self.tokenizer.all_special_ids						)
							lowerCamelCase_	:     Optional[int] 						=      [ES_CODE, 4, 16_01, 47, 76_47, 2]
							lowerCamelCase_	:     int 						=      self.tokenizer.decode(lowerCamelCase       ,      skip_special_tokens=lowerCamelCase						)
							lowerCamelCase_	:     List[str] 						=      self.tokenizer.decode(generated_ids[1:]       ,      skip_special_tokens=lowerCamelCase						)
							self.assertEqual(lowerCamelCase       ,      lowerCamelCase						)
							self.assertNotIn(self.tokenizer.eos_token       ,      lowerCamelCase						)



					def   __a     (		self     :     Tuple						):
							lowerCamelCase_	:     Any 						=      'fr'
							lowerCamelCase_	:     Tuple 						=      self.tokenizer(self.french_text						).input_ids
							self.assertEqual(encoded[0]       ,      lowerCamelCase						)
							self.assertEqual(encoded[-1]       ,      self.tokenizer.eos_token_id						)





					def   __a     (		self     :     List[str]						):
							lowerCamelCase_	:     Tuple 						=      'fr'
							self.assertListEqual(self.tokenizer.prefix_tokens       ,      [FR_CODE]						)

							lowerCamelCase_	:     Any 						=      'es'
							self.assertListEqual(self.tokenizer.prefix_tokens       ,      [ES_CODE]						)







import torch

from diffusers import DPMSolverSDEScheduler
from diffusers.utils import torch_device
from diffusers.utils.testing_utils import require_torchsde

from .test_schedulers import SchedulerCommonTest






@require_torchsde
class 						UpperCamelCase_  (  snake_case__							):
					_a      :						Union[str, Any]						    =					(DPMSolverSDEScheduler,)
					_a      :						List[Any]						    =					1_0



					def   __a     (		self     :     Any       ,      **lowerCamelCase     :     str						):
							lowerCamelCase_	:     Any 						=      {
							    'num_train_timesteps': 11_00,
							    'beta_start': 0.0_001,
							    'beta_end': 0.02,
							    'beta_schedule': 'linear',
							    'noise_sampler_seed': 0,
							}

							config.update(**lowerCamelCase						)
							return config



					def   __a     (		self     :     Tuple						):
							for timesteps in [10, 50, 1_00, 10_00]:
									self.check_over_configs(num_train_timesteps=lowerCamelCase						)



					def   __a     (		self     :     int						):
							for beta_start, beta_end in zip([0.00_001, 0.0_001, 0.001]       ,      [0.0_002, 0.002, 0.02]						):
									self.check_over_configs(beta_start=lowerCamelCase       ,      beta_end=lowerCamelCase						)



					def   __a     (		self     :     Any						):
							for schedule in ["linear", "scaled_linear"]:
									self.check_over_configs(beta_schedule=lowerCamelCase						)



					def   __a     (		self     :     Optional[int]						):
							for prediction_type in ["epsilon", "v_prediction"]:
									self.check_over_configs(prediction_type=lowerCamelCase						)



					def   __a     (		self     :     Optional[int]						):
							lowerCamelCase_	:     int 						=      self.scheduler_classes[0]
							lowerCamelCase_	:     str 						=      self.get_scheduler_config()
							lowerCamelCase_	:     Optional[Any] 						=      scheduler_class(**lowerCamelCase						)

							scheduler.set_timesteps(self.num_inference_steps						)

							lowerCamelCase_	:     Optional[Any] 						=      self.dummy_model()
							lowerCamelCase_	:     Optional[Any] 						=      self.dummy_sample_deter * scheduler.init_noise_sigma
							lowerCamelCase_	:     Union[str, Any] 						=      sample.to(lowerCamelCase						)

							for i, t in enumerate(scheduler.timesteps						):
									lowerCamelCase_	:     str 						=      scheduler.scale_model_input(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     Tuple 						=      model(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     Optional[int] 						=      scheduler.step(lowerCamelCase       ,      lowerCamelCase       ,      lowerCamelCase						)
									lowerCamelCase_	:     Tuple 						=      output.prev_sample

							lowerCamelCase_	:     List[str] 						=      torch.sum(torch.abs(lowerCamelCase						)						)
							lowerCamelCase_	:     Optional[Any] 						=      torch.mean(torch.abs(lowerCamelCase						)						)

							if torch_device in ["mps"]:
									assert abs(result_sum.item() - 167.47_821_044_921_875						) < 1E-2
									assert abs(result_mean.item() - 0.2_178_705_964_565_277						) < 1E-3
							elif torch_device in ["cuda"]:
									assert abs(result_sum.item() - 171.59_352_111_816_406						) < 1E-2
									assert abs(result_mean.item() - 0.22_342_906_892_299_652						) < 1E-3
							else:
									assert abs(result_sum.item() - 162.52_383_422_851_562						) < 1E-2
									assert abs(result_mean.item() - 0.211_619_570_851_326						) < 1E-3



					def   __a     (		self     :     Tuple						):
							lowerCamelCase_	:     List[str] 						=      self.scheduler_classes[0]
							lowerCamelCase_	:     Any 						=      self.get_scheduler_config(prediction_type='v_prediction'						)
							lowerCamelCase_	:     Tuple 						=      scheduler_class(**lowerCamelCase						)

							scheduler.set_timesteps(self.num_inference_steps						)

							lowerCamelCase_	:     Any 						=      self.dummy_model()
							lowerCamelCase_	:     Tuple 						=      self.dummy_sample_deter * scheduler.init_noise_sigma
							lowerCamelCase_	:     List[Any] 						=      sample.to(lowerCamelCase						)

							for i, t in enumerate(scheduler.timesteps						):
									lowerCamelCase_	:     Dict 						=      scheduler.scale_model_input(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     Optional[int] 						=      model(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     Union[str, Any] 						=      scheduler.step(lowerCamelCase       ,      lowerCamelCase       ,      lowerCamelCase						)
									lowerCamelCase_	:     Dict 						=      output.prev_sample

							lowerCamelCase_	:     Optional[Any] 						=      torch.sum(torch.abs(lowerCamelCase						)						)
							lowerCamelCase_	:     List[Any] 						=      torch.mean(torch.abs(lowerCamelCase						)						)

							if torch_device in ["mps"]:
									assert abs(result_sum.item() - 124.77_149_200_439_453						) < 1E-2
									assert abs(result_mean.item() - 0.16_226_289_014_816_284						) < 1E-3
							elif torch_device in ["cuda"]:
									assert abs(result_sum.item() - 128.1_663_360_595_703						) < 1E-2
									assert abs(result_mean.item() - 0.16_688_326_001_167_297						) < 1E-3
							else:
									assert abs(result_sum.item() - 119.8_487_548_828_125						) < 1E-2
									assert abs(result_mean.item() - 0.1_560_530_662_536_621						) < 1E-3



					def   __a     (		self     :     Optional[Any]						):
							lowerCamelCase_	:     Union[str, Any] 						=      self.scheduler_classes[0]
							lowerCamelCase_	:     List[Any] 						=      self.get_scheduler_config()
							lowerCamelCase_	:     List[str] 						=      scheduler_class(**lowerCamelCase						)

							scheduler.set_timesteps(self.num_inference_steps       ,      device=lowerCamelCase						)

							lowerCamelCase_	:     Dict 						=      self.dummy_model()
							lowerCamelCase_	:     Dict 						=      self.dummy_sample_deter.to(lowerCamelCase						) * scheduler.init_noise_sigma

							for t in scheduler.timesteps:
									lowerCamelCase_	:     Tuple 						=      scheduler.scale_model_input(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     List[str] 						=      model(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     int 						=      scheduler.step(lowerCamelCase       ,      lowerCamelCase       ,      lowerCamelCase						)
									lowerCamelCase_	:     Optional[int] 						=      output.prev_sample

							lowerCamelCase_	:     List[Any] 						=      torch.sum(torch.abs(lowerCamelCase						)						)
							lowerCamelCase_	:     str 						=      torch.mean(torch.abs(lowerCamelCase						)						)

							if torch_device in ["mps"]:
									assert abs(result_sum.item() - 167.46_957_397_460_938						) < 1E-2
									assert abs(result_mean.item() - 0.21_805_934_607_982_635						) < 1E-3
							elif torch_device in ["cuda"]:
									assert abs(result_sum.item() - 171.59_353_637_695_312						) < 1E-2
									assert abs(result_mean.item() - 0.22_342_908_382_415_771						) < 1E-3
							else:
									assert abs(result_sum.item() - 162.52_383_422_851_562						) < 1E-2
									assert abs(result_mean.item() - 0.211_619_570_851_326						) < 1E-3





					def   __a     (		self     :     Any						):
							lowerCamelCase_	:     Dict 						=      self.scheduler_classes[0]
							lowerCamelCase_	:     List[Any] 						=      self.get_scheduler_config()
							lowerCamelCase_	:     Union[str, Any] 						=      scheduler_class(**lowerCamelCase       ,      use_karras_sigmas=lowerCamelCase						)

							scheduler.set_timesteps(self.num_inference_steps       ,      device=lowerCamelCase						)

							lowerCamelCase_	:     int 						=      self.dummy_model()
							lowerCamelCase_	:     str 						=      self.dummy_sample_deter.to(lowerCamelCase						) * scheduler.init_noise_sigma
							lowerCamelCase_	:     Dict 						=      sample.to(lowerCamelCase						)

							for t in scheduler.timesteps:
									lowerCamelCase_	:     Optional[Any] 						=      scheduler.scale_model_input(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     Dict 						=      model(lowerCamelCase       ,      lowerCamelCase						)

									lowerCamelCase_	:     Dict 						=      scheduler.step(lowerCamelCase       ,      lowerCamelCase       ,      lowerCamelCase						)
									lowerCamelCase_	:     Any 						=      output.prev_sample

							lowerCamelCase_	:     Optional[int] 						=      torch.sum(torch.abs(lowerCamelCase						)						)
							lowerCamelCase_	:     Union[str, Any] 						=      torch.mean(torch.abs(lowerCamelCase						)						)

							if torch_device in ["mps"]:
									assert abs(result_sum.item() - 176.66_974_135_742_188						) < 1E-2
									assert abs(result_mean.item() - 0.23_003_872_730_981_811						) < 1E-2
							elif torch_device in ["cuda"]:
									assert abs(result_sum.item() - 177.63_653_564_453_125						) < 1E-2
									assert abs(result_mean.item() - 0.23_003_872_730_981_811						) < 1E-2
							else:
									assert abs(result_sum.item() - 170.3_135_223_388_672						) < 1E-2
									assert abs(result_mean.item() - 0.23_003_872_730_981_811						) < 1E-2
