






import unittest
from unittest import skip

from transformers import is_torch_available
from transformers.testing_utils import require_torch, slow
from transformers.trainer_utils import set_seed


if is_torch_available():
					import torch

					from transformers import JukeboxModel, JukeboxPrior, JukeboxTokenizer





@require_torch
class        a__      (	unittest.TestCase		):
		UpperCAmelCase_							:       Union[str, Any] 					= (JukeboxModel,) if is_torch_available() else ()
		UpperCAmelCase_							:       str 					= 'openai/jukebox-1b-lyrics'
		UpperCAmelCase_							:       Union[str, Any] 					= {
		    'artist': 'Zac Brown Band',
		    'genres': 'Country',
		    'lyrics': 'I met a traveller from an antique land,\n    Who said "Two vast and trunkless legs of stone\n    Stand in the desert. . . . Near them, on the sand,\n    Half sunk a shattered visage lies, whose frown,\n    And wrinkled lip, and sneer of cold command,\n    Tell that its sculptor well those passions read\n    Which yet survive, stamped on these lifeless things,\n    The hand that mocked them, and the heart that fed;\n    And on the pedestal, these words appear:\n    My name is Ozymandias, King of Kings;\n    Look on my Works, ye Mighty, and despair!\n    Nothing beside remains. Round the decay\n    Of that colossal Wreck, boundless and bare\n    The lone and level sands stretch far away\n    ',
		}
		# fmt: off
		UpperCAmelCase_							:       Any 					= [
		    18_64, 15_36, 12_13, 18_70, 13_57, 15_36, 5_19, 8_80, 13_23, 7_89, 10_82, 5_34,
		    10_00, 14_45, 11_05, 11_30, 9_67, 5_15, 14_34, 16_20, 5_34, 14_95, 2_83, 14_45,
		    3_33, 13_07, 5_39, 16_31, 15_28, 3_75, 14_34, 6_73, 6_27, 7_10, 7_78, 18_83,
		    14_05, 12_76, 14_55, 12_28
		]

		UpperCAmelCase_							:       List[str] 					= [
		    14_89, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53
		]

		UpperCAmelCase_							:       int 					= [
		    11_25, 17_51, 6_97, 17_76, 11_41, 14_76, 3_91, 6_97, 11_25, 6_84, 8_67, 4_16,
		    8_44, 13_72, 12_74, 7_17, 12_74, 8_44, 12_99, 14_19, 6_97, 13_70, 3_17, 11_25,
		    1_91, 14_40, 13_70, 14_40, 13_70, 2_82, 16_21, 13_70, 3_68, 3_49, 8_67, 18_72,
		    12_62, 8_69, 17_28, 7_47
		]
		UpperCAmelCase_							:       Optional[int] 					= [
		    4_16, 4_16, 11_25, 11_25, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16
		]

		UpperCAmelCase_							:       Optional[Any] 					= [
		    17_55, 8_42, 3_07, 18_43, 10_22, 13_95, 2_34, 15_54, 8_06, 7_39, 10_22, 4_42,
		    6_16, 5_56, 2_68, 14_99, 9_33, 4_57, 14_40, 18_37, 7_55, 9_85, 3_08, 9_02,
		    2_93, 14_43, 16_71, 11_41, 15_33, 5_55, 15_62, 10_61, 2_87, 4_17, 10_22, 20_08,
		    11_86, 10_15, 17_77, 2_68
		]
		UpperCAmelCase_							:       Tuple 					= [
		    8_54, 8_42, 13_53, 1_14, 13_53, 8_42, 1_85, 8_42, 1_85, 1_14, 5_91, 8_42,
		    1_85, 4_17, 1_85, 8_42, 3_07, 8_42, 5_91, 8_42, 1_85, 8_42, 3_07, 8_42,
		    5_91, 8_42, 13_53, 8_42, 1_85, 8_42, 5_91, 8_42, 5_91, 1_14, 5_91, 8_42,
		    1_85, 8_42, 5_91, 89
		]

		UpperCAmelCase_							:       int 					= [1_05_83_04, 0, 78_64_32, 71_69, 5_07, 76, 27, 40, 30, 76]

		UpperCAmelCase_							:       Dict 					= [
		    3_90, 11_60, 10_02, 19_07, 17_88, 17_88, 17_88, 19_07, 10_02, 10_02, 18_54, 10_02,
		    10_02, 10_02, 10_02, 10_02, 10_02, 11_60, 11_60, 16_06, 5_96, 5_96, 11_60, 10_02,
		    15_16, 5_96, 10_02, 10_02, 10_02, 19_07, 17_88, 17_88, 17_88, 18_54, 17_88, 19_07,
		    19_07, 17_88, 5_96, 16_26
		]
		UpperCAmelCase_							:       Optional[Any] 					= [
		    12_36, 16_68, 14_84, 19_20, 18_48, 14_09, 1_39, 8_64, 18_28, 12_72, 15_99, 8_24,
		    16_72, 1_39, 5_55, 14_84, 8_24, 19_20, 5_55, 5_96, 15_79, 15_99, 12_31, 15_99,
		    16_37, 14_07, 2_12, 8_24, 15_99, 1_16, 14_33, 8_24, 2_58, 15_99, 14_33, 18_95,
		    10_63, 14_33, 14_33, 15_99
		]
		UpperCAmelCase_							:       List[str] 					= [
		    16_84, 18_73, 11_19, 11_89, 3_95, 6_11, 19_01, 9_72, 8_90, 13_37, 13_92, 19_27,
		    96, 9_72, 6_72, 7_80, 11_19, 8_90, 1_58, 7_71, 10_73, 19_27, 3_53, 13_31,
		    12_69, 14_59, 13_33, 16_45, 8_12, 15_77, 13_37, 6_06, 3_53, 9_81, 14_66, 6_19,
		    1_97, 3_91, 3_02, 19_30
		]
		UpperCAmelCase_							:       Optional[Any] 					= [
		    3_90, 11_60, 10_02, 19_07, 17_88, 17_88, 17_88, 19_07, 10_02, 10_02, 18_54, 10_02,
		    10_02, 10_02, 10_02, 10_02, 10_02, 11_60, 11_60, 16_06, 5_96, 5_96, 11_60, 10_02,
		    15_16, 5_96, 10_02, 10_02, 10_02, 19_07, 17_88, 17_88, 17_88, 18_54, 17_88, 19_07,
		    19_07, 17_88, 5_96, 16_26
		]
		UpperCAmelCase_							:       Any 					= [
		    -0.0_4_9_2, -0.0_5_2_4, -0.0_5_6_5, -0.0_6_4_0, -0.0_6_8_6, -0.0_6_8_4, -0.0_6_7_7, -0.0_6_6_4,
		    -0.0_6_0_5, -0.0_4_9_0, -0.0_3_3_0, -0.0_1_6_8, -0.0_0_8_3, -0.0_0_7_5, -0.0_0_5_1, 0.0_0_2_5,
		    0.0_1_3_6, 0.0_2_6_1, 0.0_3_8_6, 0.0_4_9_7, 0.0_5_8_0, 0.0_5_9_9, 0.0_5_8_3, 0.0_6_1_4,
		    0.0_7_4_0, 0.0_8_8_9, 0.1_0_2_3, 0.1_1_6_2, 0.1_2_1_1, 0.1_2_1_2, 0.1_2_5_1, 0.1_3_3_6,
		    0.1_5_0_2, 0.1_6_8_6, 0.1_8_8_3, 0.2_1_4_8, 0.2_3_6_3, 0.2_4_5_8, 0.2_5_0_7, 0.2_5_3_1
		]
		UpperCAmelCase_							:       Any 					= [
		    0.0_2_5_6, -0.0_5_4_4, 0.1_6_0_0, -0.0_0_3_2, 0.1_0_6_6, 0.0_8_2_5, -0.0_0_1_3, 0.3_4_4_0,
		    0.0_2_1_0, 0.0_4_1_2, -0.1_7_7_7, -0.0_8_9_2, -0.0_1_6_4, 0.0_2_8_5, -0.0_6_1_3, -0.0_6_1_7,
		    -0.0_1_3_7, -0.0_2_0_1, -0.0_1_7_5, 0.0_2_1_5, -0.0_6_2_7, 0.0_5_2_0, -0.0_7_3_0, 0.0_9_7_0,
		    -0.0_1_0_0, 0.0_4_4_2, -0.0_5_8_6, 0.0_2_0_7, -0.0_0_1_5, -0.0_0_8_2
		]
		UpperCAmelCase_							:       Union[str, Any] 					= [
		    0.0_4_1_5, 0.0_8_7_7, 0.0_0_2_2, -0.0_0_5_5, 0.0_7_5_1, 0.0_3_3_4, 0.0_3_2_4, -0.0_0_6_8,
		    0.0_0_1_1, 0.0_0_1_7, -0.0_6_7_6, 0.0_6_5_5, -0.0_1_4_3, 0.0_3_9_9, 0.0_3_0_3, 0.0_7_4_3,
		    -0.0_1_6_8, -0.0_3_9_4, -0.1_1_1_3, 0.0_1_2_4, 0.0_4_4_2, 0.0_2_6_7, -0.0_0_0_3, -0.1_5_3_6,
		    -0.0_1_1_6, -0.1_8_3_7, -0.0_1_8_0, -0.1_0_2_6, -0.0_7_7_7, -0.0_4_5_6
		]
		UpperCAmelCase_							:       List[Any] 					= [
		    76, 27, 40, 30, 76, 46, 44, 47, 40, 37, 38, 31, 45, 45, 76, 38, 31, 33,
		    45, 76, 41, 32, 76, 45, 46, 41, 40, 31, 78, 76
		]






		def 					_lowerCamelCase					(      self						)				->				Dict:
				__A    =							JukeboxTokenizer.from_pretrained(self.model_id						)
				__A    =							tokenizer(**self.metas						)["input_ids"]
				return tokens






		@slow
		def 					_lowerCamelCase					(      self						)				->				int:
				__A    =							JukeboxModel.from_pretrained(self.model_id							, min_duration=0						).eval()
				__A    =							self.prepare_inputs()

				set_seed(0						)
				__A    =							[torch.zeros(1							, 0							, dtype=torch.long						).cpu() for _ in range(3						)]
				__A    =							model._sample(lowercase__							, lowercase__							, [0]							, sample_length=40 * model.priors[0].raw_to_tokens							, save_results=lowercase__						)
				self.assertIn(zs[0][0].detach().cpu().tolist()							, [self.EXPECTED_OUTPUT_2, self.EXPECTED_OUTPUT_2_PT_2]						)

				set_seed(0						)
				__A    =							model._sample(lowercase__							, lowercase__							, [1]							, sample_length=40 * model.priors[1].raw_to_tokens							, save_results=lowercase__						)
				self.assertIn(zs[1][0].detach().cpu().tolist()							, [self.EXPECTED_OUTPUT_1, self.EXPECTED_OUTPUT_1_PT_2]						)

				set_seed(0						)
				__A    =							model._sample(lowercase__							, lowercase__							, [2]							, sample_length=40 * model.priors[2].raw_to_tokens							, save_results=lowercase__						)
				self.assertIn(zs[2][0].detach().cpu().tolist()							, [self.EXPECTED_OUTPUT_0, self.EXPECTED_OUTPUT_0_PT_2]						)






		@slow
		def 					_lowerCamelCase					(      self						)				->				Tuple:
				__A    =							False
				__A    =							JukeboxModel.from_pretrained(self.model_id							, min_duration=0						).eval()

				__A    =							self.prepare_inputs()
				set_seed(0						)
				__A    =							[torch.zeros(1							, 0							, dtype=torch.long						) for _ in range(3						)]

				__A    =							model.priors[0]
				__A    =							0
				__A    =							top_prior.get_music_tokens_conds(lowercase__							, start=lowercase__							, end=start + top_prior.n_ctx						)
				__A    =							top_prior.get_metadata(labels[0].clone()							, lowercase__							, 1058304							, 0						)

				self.assertIsNone(lowercase__						)
				self.assertListEqual(metadata.numpy()[0][:10].tolist()							, self.EXPECTED_Y_COND						)

				__A ,   __A ,   __A    =							top_prior.get_cond(lowercase__							, lowercase__						)
				torch.testing.assert_allclose(
				    audio_conditioning[0][0][:30].detach()							, torch.tensor(self.EXPECTED_AUDIO_COND						)							, atol=1e-4							, rtol=1e-4						)
				torch.testing.assert_allclose(
				    metadata_conditioning[0][0][:30].detach()							, torch.tensor(self.EXPECTED_META_COND						)							, atol=1e-4							, rtol=1e-4						)
				torch.testing.assert_allclose(
				    lyric_tokens[0, :30].detach()							, torch.tensor(self.EXPECTED_LYRIC_COND						)							, atol=1e-4							, rtol=1e-4						)






		@slow
		def 					_lowerCamelCase					(      self						)				->				Union[str, Any]:
				__A    =							False

				__A    =							JukeboxModel.from_pretrained(self.model_id							, min_duration=0						).eval()
				set_seed(0						)
				__A    =							torch.rand((1, 5120, 1)						)
				__A    =							list(self.prepare_inputs()						)

				__A    =							[model.vqvae.encode(lowercase__							, start_level=2							, bs_chunks=waveform.shape[0]						)[0], None, None]
				__A    =							model._sample(
				    lowercase__							, lowercase__							, sample_levels=[0]							, save_results=lowercase__							, sample_length=40 * model.priors[0].raw_to_tokens						)
				torch.testing.assert_allclose(zs[0][0][:40]							, torch.tensor(self.EXPECTED_PRIMED_0						)						)

				__A    =							torch.cat((zs[0], torch.zeros(1							, 2048 - zs[0].shape[-1]						))							, dim=-1						).long()
				__A    =							[upper_a, model.vqvae.encode(lowercase__							, start_level=1							, bs_chunks=waveform.shape[0]						)[0], None]
				__A    =							model._sample(
				    lowercase__							, lowercase__							, sample_levels=[1]							, save_results=lowercase__							, sample_length=40 * model.priors[1].raw_to_tokens						)
				torch.testing.assert_allclose(zs[1][0][:40]							, torch.tensor(self.EXPECTED_PRIMED_1						)						)

				__A    =							torch.cat((zs[1], torch.zeros(1							, 2048 - zs[1].shape[-1]						))							, dim=-1						).long()
				__A    =							[upper_a, upper_a, model.vqvae.encode(lowercase__							, start_level=0							, bs_chunks=waveform.shape[0]						)[0]]
				__A    =							model._sample(
				    lowercase__							, lowercase__							, sample_levels=[2]							, save_results=lowercase__							, sample_length=40 * model.priors[2].raw_to_tokens						)
				torch.testing.assert_allclose(zs[2][0][:40].cpu()							, torch.tensor(self.EXPECTED_PRIMED_2						)						)






		@slow
		def 					_lowerCamelCase					(      self						)				->				Any:
				__A    =							JukeboxModel.from_pretrained(self.model_id							, min_duration=0						).eval()
				set_seed(0						)
				__A    =							torch.rand((1, 5120, 1)						)
				with torch.no_grad():
						__A    =							model.vqvae.encode(lowercase__							, start_level=2							, bs_chunks=x.shape[0]						)
				torch.testing.assert_allclose(zs[0][0]							, torch.tensor(self.EXPECTED_VQVAE_ENCODE						)						)

				with torch.no_grad():
						__A    =							model.vqvae.decode(lowercase__							, start_level=2							, bs_chunks=x.shape[0]						)
				torch.testing.assert_allclose(x[0, :40, 0]							, torch.tensor(self.EXPECTED_VQVAE_DECODE						)							, atol=1e-4							, rtol=1e-4						)





@require_torch
class        a__      (	unittest.TestCase		):
		UpperCAmelCase_							:       List[Any] 					= (JukeboxModel,) if is_torch_available() else ()
		UpperCAmelCase_							:       List[Any] 					= 'openai/jukebox-5b-lyrics'
		UpperCAmelCase_							:       List[Any] 					= {
		    'artist': 'Zac Brown Band',
		    'genres': 'Country',
		    'lyrics': 'I met a traveller from an antique land,\n    Who said "Two vast and trunkless legs of stone\n    Stand in the desert. . . . Near them, on the sand,\n    Half sunk a shattered visage lies, whose frown,\n    And wrinkled lip, and sneer of cold command,\n    Tell that its sculptor well those passions read\n    Which yet survive, stamped on these lifeless things,\n    The hand that mocked them, and the heart that fed;\n    And on the pedestal, these words appear:\n    My name is Ozymandias, King of Kings;\n    Look on my Works, ye Mighty, and despair!\n    Nothing beside remains. Round the decay\n    Of that colossal Wreck, boundless and bare\n    The lone and level sands stretch far away\n    ',
		}

		# fmt: off
		UpperCAmelCase_							:       List[Any] 					= [
		    14_89, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    14_89, 14_89, 14_89, 14_89, 11_50, 18_53, 15_09, 11_50, 13_57, 15_09, 6, 12_72
		]
		UpperCAmelCase_							:       List[Any] 					= [
		    14_89, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53
		]

		UpperCAmelCase_							:       Dict 					= [
		    11_25, 4_16, 11_25, 11_25, 11_25, 11_25, 11_25, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16
		]
		UpperCAmelCase_							:       int 					= [
		    4_16, 4_16, 11_25, 11_25, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16
		]

		UpperCAmelCase_							:       List[str] 					= [
		    17_55, 10_61, 2_34, 17_55, 10_61, 17_55, 1_85, 2_90, 3_07, 3_07, 6_16, 6_16,
		    6_16, 6_16, 6_16, 6_16, 3_07, 2_90, 4_17, 17_55, 2_34, 17_55, 1_85, 2_90,
		    2_90, 2_90, 3_07, 6_16, 6_16, 6_16, 6_16, 6_16, 2_90, 2_34, 2_34, 17_55,
		    2_34, 2_34, 17_55, 2_34, 1_85, 1_85, 3_07, 6_16, 6_16, 6_16, 6_16, 2_90,
		    17_55, 17_55, 17_55, 2_34, 2_34, 17_55, 15_72, 2_90, 3_07, 6_16, 34, 6_16
		]
		UpperCAmelCase_							:       int 					= [
		    8_54, 8_42, 13_53, 1_14, 13_53, 8_42, 1_85, 8_42, 1_85, 1_14, 5_91, 8_42, 1_85,
		    4_17, 1_85, 8_42, 3_07, 8_42, 5_91, 8_42, 1_85, 8_42, 1_85, 8_42, 5_91, 8_42,
		    13_53, 8_42, 1_85, 8_42, 5_91, 8_42, 5_91, 1_14, 5_91, 8_42, 1_85, 8_42, 5_91,
		    89, 5_91, 8_42, 5_91, 8_42, 5_91, 4_17, 13_72, 8_42, 13_72, 8_42, 34, 8_42,
		    1_85, 89, 5_91, 8_42, 1_85, 8_42, 5_91, 6_32
		]

		UpperCAmelCase_							:       Optional[int] 					= [
		    14_89, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53
		]
		UpperCAmelCase_							:       Optional[Any] 					= [
		    14_89, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53,
		    6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 6_53, 18_53, 11_77, 15_36, 12_28,
		    7_10, 4_75, 14_89, 12_29, 12_24, 2_31, 12_24, 2_52, 14_34, 6_53, 4_75,
		    11_06, 18_77, 15_99, 12_28, 16_00, 16_83, 11_82, 18_53, 4_75, 18_64,
		    2_52, 12_29, 14_34, 20_01
		]

		UpperCAmelCase_							:       str 					= [
		    11_25, 11_25, 4_16, 11_25, 11_25, 4_16, 11_25, 11_25, 4_16, 4_16, 11_25, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16,
		    4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16, 4_16
		]
		UpperCAmelCase_							:       Any 					= [
		    4_91, 17_55, 34, 16_13, 17_55, 4_17, 9_92, 16_13, 2_22, 8_42, 13_53, 16_13,
		    8_44, 6_32, 1_85, 16_13, 8_44, 6_32, 1_85, 16_13, 1_85, 8_42, 6_77, 16_13,
		    1_85, 1_14, 13_53, 16_13, 3_07, 89, 8_44, 16_13, 3_07, 13_32, 2_34, 19_79,
		    3_07, 89, 13_53, 6_16, 34, 8_42, 1_85, 8_42, 34, 8_42, 1_85, 8_42,
		    3_07, 1_14, 1_85, 89, 34, 12_68, 1_85, 89, 34, 8_42, 1_85, 89
		]






		def 					_lowerCamelCase					(      self							, lowercase__						)				->				str:
				__A    =							JukeboxTokenizer.from_pretrained(lowercase__						)
				__A    =							tokenizer(**self.metas						)["input_ids"]
				return tokens






		@slow
		def 					_lowerCamelCase					(      self						)				->				int:
				__A    =							JukeboxModel.from_pretrained(self.model_id							, min_duration=0						).eval()
				__A    =							self.prepare_inputs(self.model_id						)

				set_seed(0						)
				__A    =							[torch.zeros(1							, 0							, dtype=torch.long						).cpu() for _ in range(3						)]
				__A    =							model._sample(lowercase__							, lowercase__							, [0]							, sample_length=60 * model.priors[0].raw_to_tokens							, save_results=lowercase__						)
				self.assertIn(zs[0][0].detach().cpu().tolist()							, [self.EXPECTED_OUTPUT_2, self.EXPECTED_OUTPUT_2_PT_2]						)

				set_seed(0						)
				__A    =							model._sample(lowercase__							, lowercase__							, [1]							, sample_length=60 * model.priors[1].raw_to_tokens							, save_results=lowercase__						)
				self.assertIn(zs[1][0].detach().cpu().tolist()							, [self.EXPECTED_OUTPUT_1, self.EXPECTED_OUTPUT_1_PT_2]						)

				set_seed(0						)
				__A    =							model._sample(lowercase__							, lowercase__							, [2]							, sample_length=60 * model.priors[2].raw_to_tokens							, save_results=lowercase__						)
				self.assertIn(zs[2][0].detach().cpu().tolist()							, [self.EXPECTED_OUTPUT_0, self.EXPECTED_OUTPUT_0_PT_2]						)






		@slow
		@skip("Not enough GPU memory on CI runners"						)
		def 					_lowerCamelCase					(      self						)				->				List[str]:
				__A    =							JukeboxModel.from_pretrained(self.model_id							, min_duration=0						).eval()
				__A    =							[i.cuda() for i in self.prepare_inputs(self.model_id						)]

				set_seed(0						)
				model.priors[0].cuda()
				__A    =							[torch.zeros(1							, 0							, dtype=torch.long						).cuda() for _ in range(3						)]
				__A    =							model._sample(lowercase__							, lowercase__							, [0]							, sample_length=60 * model.priors[0].raw_to_tokens							, save_results=lowercase__						)
				torch.testing.assert_allclose(zs[0][0].cpu()							, torch.tensor(self.EXPECTED_GPU_OUTPUTS_2						)						)
				model.priors[0].cpu()

				set_seed(0						)
				model.priors[1].cuda()
				__A    =							model._sample(lowercase__							, lowercase__							, [1]							, sample_length=60 * model.priors[1].raw_to_tokens							, save_results=lowercase__						)
				torch.testing.assert_allclose(zs[1][0].cpu()							, torch.tensor(self.EXPECTED_GPU_OUTPUTS_1						)						)
				model.priors[1].cpu()

				set_seed(0						)
				model.priors[2].cuda()
				__A    =							model._sample(lowercase__							, lowercase__							, [2]							, sample_length=60 * model.priors[2].raw_to_tokens							, save_results=lowercase__						)
				torch.testing.assert_allclose(zs[2][0].cpu()							, torch.tensor(self.EXPECTED_GPU_OUTPUTS_0						)						)






		@slow
		def 					_lowerCamelCase					(      self						)				->				Any:
				__A    =							"ArthurZ/jukebox_prior_0"
				__A    =							JukeboxPrior.from_pretrained(lowercase__							, min_duration=0						).eval().half().to("cuda"						)

				__A    =							self.prepare_inputs(lowercase__						)[0].cuda()
				__A    =							model.get_metadata(lowercase__							, 0							, 7680							, 0						)
				set_seed(0						)
				__A    =							model.sample(1							, metadata=lowercase__							, sample_tokens=60						)
				self.assertIn(outputs[0].cpu().tolist()							, [self.EXPECTED_GPU_OUTPUTS_2, self.EXPECTED_GPU_OUTPUTS_2_PT_2]						)



'''simple docstring'''







class       lowerCAmelCase			:




		def __init__(					self       ,    UpperCamelCase=None   ):
								_SCREAMING_SNAKE_CASE					=			data
								_SCREAMING_SNAKE_CASE					=			None




		def __repr__(					self   ):
								_SCREAMING_SNAKE_CASE					=			""
								_SCREAMING_SNAKE_CASE					=			self
								while temp:
														string_rep += F'<{temp.data}> ---> '
														_SCREAMING_SNAKE_CASE					=			temp.next
								string_rep += "<END>"
								return string_rep



def       _a		(						_SCREAMING_SNAKE_CASE		: Any	):

						# if elements_list is empty
						if not elements_list:
												raise Exception("The Elements List is empty"	)

						# Set first element as Head
						_SCREAMING_SNAKE_CASE					=			Node(elements_list[0]	)
						_SCREAMING_SNAKE_CASE					=			head
						# Loop through elements from position 1
						for data in elements_list[1:]:
												_SCREAMING_SNAKE_CASE					=			Node(_SCREAMING_SNAKE_CASE	)
												_SCREAMING_SNAKE_CASE					=			current.next
						return head


_snake_case					: List[Any]     			=					[1, 3, 5, 32, 44, 12, 43]
print(F"List: {list_data}")
print("""Creating Linked List from List.""")
_snake_case					: List[Any]     			=					make_linked_list(list_data)
print("""Linked List:""")




print(linked_list)