


import unittest

from cer import CER


A :       Optional[int]						=   CER()







class      _lowercase					(				unittest.TestCase):


       """simple docstring"""




       def 		lowerCAmelCase	(  self				:     Optional[int]			):


             '''simple docstring'''



             lowerCamelCase__						:							Any       =    ["White House"]
             lowerCamelCase__						:							List[str]       =    ["white house"]
             # S = 2, D = 0, I = 0, N = 11, CER = 2 / 11
             lowerCamelCase__						:							List[str]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.1_8_1_8_1_8_1_8_1_8			) < 1E-6			)





       def 		lowerCAmelCase	(  self				:     Tuple			):


             '''simple docstring'''



             lowerCamelCase__						:							int       =    ["were wolf"]
             lowerCamelCase__						:							Tuple       =    ["werewolf"]
             # S = 0, D = 0, I = 1, N = 9, CER = 1 / 9
             lowerCamelCase__						:							Dict       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.1_1_1_1_1_1_1			) < 1E-6			)

             lowerCamelCase__						:							Optional[int]       =    ["werewolf"]
             lowerCamelCase__						:							Any       =    ["weae     wolf"]
             # S = 1, D = 1, I = 0, N = 8, CER = 0.25
             lowerCamelCase__						:							Union[str, Any]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.2_5			) < 1E-6			)

             # consecutive whitespaces case 1
             lowerCamelCase__						:							Any       =    ["were wolf"]
             lowerCamelCase__						:							int       =    ["were               wolf"]
             # S = 0, D = 0, I = 0, N = 9, CER = 0
             lowerCamelCase__						:							str       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.0			) < 1E-6			)

             # consecutive whitespaces case 2
             lowerCamelCase__						:							Dict       =    ["were   wolf"]
             lowerCamelCase__						:							Tuple       =    ["were               wolf"]
             # S = 0, D = 0, I = 0, N = 9, CER = 0
             lowerCamelCase__						:							Optional[int]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.0			) < 1E-6			)





       def 		lowerCAmelCase	(  self				:     Dict			):


             '''simple docstring'''



             lowerCamelCase__						:							Dict       =    ["werewolf"]
             lowerCamelCase__						:							Any       =    ["weaewolf"]
             # S = 1, D = 0, I = 0, N = 8, CER = 0.125
             lowerCamelCase__						:							str       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.1_2_5			) < 1E-6			)





       def 		lowerCAmelCase	(  self				:     Union[str, Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							List[Any]       =    ["werewolf"]
             lowerCamelCase__						:							Optional[int]       =    ["wereawolf"]
             # S = 0, D = 1, I = 0, N = 8, CER = 0.125
             lowerCamelCase__						:							Optional[int]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.1_2_5			) < 1E-6			)





       def 		lowerCAmelCase	(  self				:     Tuple			):


             '''simple docstring'''



             lowerCamelCase__						:							Tuple       =    ["werewolf"]
             lowerCamelCase__						:							List[Any]       =    ["wereolf"]
             # S = 0, D = 0, I = 1, N = 8, CER = 0.125
             lowerCamelCase__						:							Optional[int]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.1_2_5			) < 1E-6			)





       def 		lowerCAmelCase	(  self				:     Dict			):


             '''simple docstring'''



             lowerCamelCase__						:							Tuple       =    ["werewolf"]
             lowerCamelCase__						:							Any       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertEqual(__lowerCamelCase   , 0.0			)





       def 		lowerCAmelCase	(  self				:     List[str]			):


             '''simple docstring'''



             lowerCamelCase__						:							Dict       =    ["werewolf", "I am your father"]
             lowerCamelCase__						:							Optional[int]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertEqual(__lowerCamelCase   , 0.0			)

             lowerCamelCase__						:							Optional[int]       =    ["werewolf", "I am your father", "doge"]
             lowerCamelCase__						:							Optional[int]       =    ["werxwolf", "I       am your father", "doge"]
             # S = 1, D = 0, I = 0, N = 28, CER = 1 / 28
             lowerCamelCase__						:							List[str]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.0_3_5_7_1_4_2_8			) < 1E-6			)





       def 		lowerCAmelCase	(  self				:     Dict			):


             '''simple docstring'''



             lowerCamelCase__						:							Tuple       =    ["My hovercraft", "is full of eels"]
             lowerCamelCase__						:							Union[str, Any]       =    ["My hovercraft is full", " of eels"]
             # S = 0, D = 0, I = 2, N = 28, CER = 2 / 28
             # whitespace at the front of " of eels" will be strip during preporcessing
             # so need to insert 2 whitespaces
             lowerCamelCase__						:							int       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase   , concatenate_texts=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.0_7_1_4_2_8			) < 1E-6			)





       def 		lowerCAmelCase	(  self				:     Optional[Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							Any       =    ["我能吞下玻璃而不伤身体"]
             lowerCamelCase__						:							List[Any]       =    [" 能吞虾玻璃而 不霜身体啦"]
             # S = 3, D = 2, I = 0, N = 11, CER = 5 / 11
             lowerCamelCase__						:							Any       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.4_5_4_5_4_5_4_5_4_5			) < 1E-6			)

             lowerCamelCase__						:							Union[str, Any]       =    ["我能吞下玻璃", "而不伤身体"]
             lowerCamelCase__						:							Tuple       =    ["我    能 吞 下 玻 璃", "而不伤身体"]
             # S = 0, D = 5, I = 0, N = 11, CER = 5 / 11
             lowerCamelCase__						:							Optional[Any]       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertTrue(abs(char_error_rate - 0.4_5_4_5_4_5_4_5_4_5_4_5			) < 1E-6			)

             lowerCamelCase__						:							Tuple       =    ["我能吞下玻璃而不伤身体"]
             lowerCamelCase__						:							int       =    cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)
             self.assertFalse(__lowerCamelCase   , 0.0			)





       def 		lowerCAmelCase	(  self				:     Dict			):


             '''simple docstring'''



             lowerCamelCase__						:							Any       =    [""]
             lowerCamelCase__						:							Any       =    ["Hypothesis"]
             with self.assertRaises(__lowerCamelCase			):
                   cer.compute(predictions=__lowerCamelCase   , references=__lowerCamelCase			)


if __name__ == "__main__":
    unittest.main()






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      _lowercase					(				unittest.TestCase):


       """simple docstring"""




       A__   		=     (JukeboxModel,) if is_torch_available() else ()
       A__   		=     "openai/jukebox-1b-lyrics"
       A__   		=     {
           "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
       A__   		=     [
           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
       ]

       A__   		=     [
           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
       ]

       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]

       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]

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

       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]
       A__   		=     [
           -0.0_492, -0.0_524, -0.0_565, -0.0_640, -0.0_686, -0.0_684, -0.0_677, -0.0_664,
           -0.0_605, -0.0_490, -0.0_330, -0.0_168, -0.0_083, -0.0_075, -0.0_051, 0.0_025,
           0.0_136, 0.0_261, 0.0_386, 0.0_497, 0.0_580, 0.0_599, 0.0_583, 0.0_614,
           0.0_740, 0.0_889, 0.1_023, 0.1_162, 0.1_211, 0.1_212, 0.1_251, 0.1_336,
           0.1_502, 0.1_686, 0.1_883, 0.2_148, 0.2_363, 0.2_458, 0.2_507, 0.2_531
       ]
       A__   		=     [
           0.0_256, -0.0_544, 0.1_600, -0.0_032, 0.1_066, 0.0_825, -0.0_013, 0.3_440,
           0.0_210, 0.0_412, -0.1_777, -0.0_892, -0.0_164, 0.0_285, -0.0_613, -0.0_617,
           -0.0_137, -0.0_201, -0.0_175, 0.0_215, -0.0_627, 0.0_520, -0.0_730, 0.0_970,
           -0.0_100, 0.0_442, -0.0_586, 0.0_207, -0.0_015, -0.0_082
       ]
       A__   		=     [
           0.0_415, 0.0_877, 0.0_022, -0.0_055, 0.0_751, 0.0_334, 0.0_324, -0.0_068,
           0.0_011, 0.0_017, -0.0_676, 0.0_655, -0.0_143, 0.0_399, 0.0_303, 0.0_743,
           -0.0_168, -0.0_394, -0.1_113, 0.0_124, 0.0_442, 0.0_267, -0.0_003, -0.1_536,
           -0.0_116, -0.1_837, -0.0_180, -0.1_026, -0.0_777, -0.0_456
       ]
       A__   		=     [
           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				:     Optional[int]			):


             '''simple docstring'''



             lowerCamelCase__						:							Tuple       =    JukeboxTokenizer.from_pretrained(self.model_id			)
             lowerCamelCase__						:							Dict       =    tokenizer(**self.metas			)["input_ids"]
             return tokens





       @slow
       def 		lowerCAmelCase	(  self				:     Optional[Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							Optional[int]       =    JukeboxModel.from_pretrained(self.model_id   , min_duration=0			).eval()
             lowerCamelCase__						:							Optional[Any]       =    self.prepare_inputs()

             set_seed(0			)
             lowerCamelCase__						:							List[str]       =    [torch.zeros(1   , 0   , dtype=torch.long			).cpu() for _ in range(3			)]
             lowerCamelCase__						:							Union[str, Any]       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [0]   , sample_length=40 * model.priors[0].raw_to_tokens   , save_results=__lowerCamelCase			)
             self.assertIn(zs[0][0].detach().cpu().tolist()   , [self.EXPECTED_OUTPUT_2, self.EXPECTED_OUTPUT_2_PT_2]			)

             set_seed(0			)
             lowerCamelCase__						:							Optional[Any]       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [1]   , sample_length=40 * model.priors[1].raw_to_tokens   , save_results=__lowerCamelCase			)
             self.assertIn(zs[1][0].detach().cpu().tolist()   , [self.EXPECTED_OUTPUT_1, self.EXPECTED_OUTPUT_1_PT_2]			)

             set_seed(0			)
             lowerCamelCase__						:							List[str]       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [2]   , sample_length=40 * model.priors[2].raw_to_tokens   , save_results=__lowerCamelCase			)
             self.assertIn(zs[2][0].detach().cpu().tolist()   , [self.EXPECTED_OUTPUT_0, self.EXPECTED_OUTPUT_0_PT_2]			)





       @slow
       def 		lowerCAmelCase	(  self				:     List[str]			):


             '''simple docstring'''



             lowerCamelCase__						:							str       =    False
             lowerCamelCase__						:							Any       =    JukeboxModel.from_pretrained(self.model_id   , min_duration=0			).eval()

             lowerCamelCase__						:							Optional[Any]       =    self.prepare_inputs()
             set_seed(0			)
             lowerCamelCase__						:							List[Any]       =    [torch.zeros(1   , 0   , dtype=torch.long			) for _ in range(3			)]

             lowerCamelCase__						:							Optional[int]       =    model.priors[0]
             lowerCamelCase__						:							List[str]       =    0
             lowerCamelCase__						:							List[str]       =    top_prior.get_music_tokens_conds(__lowerCamelCase   , start=__lowerCamelCase   , end=start + top_prior.n_ctx			)
             lowerCamelCase__						:							List[Any]       =    top_prior.get_metadata(labels[0].clone()   , __lowerCamelCase   , 1058304   , 0			)

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

             lowerCamelCase__       ,  lowerCamelCase__       ,  lowerCamelCase__						:							str       =    top_prior.get_cond(__lowerCamelCase   , __lowerCamelCase			)
             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				:     Optional[Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							Dict       =    False

             lowerCamelCase__						:							List[Any]       =    JukeboxModel.from_pretrained(self.model_id   , min_duration=0			).eval()
             set_seed(0			)
             lowerCamelCase__						:							int       =    torch.rand((1, 5120, 1)			)
             lowerCamelCase__						:							int       =    list(self.prepare_inputs()			)

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

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

             lowerCamelCase__						:							List[Any]       =    torch.cat((zs[1], torch.zeros(1   , 2048 - zs[1].shape[-1]			))   , dim=-1			).long()
             lowerCamelCase__						:							Union[str, Any]       =    [upper_a, upper_a, model.vqvae.encode(__lowerCamelCase   , start_level=0   , bs_chunks=waveform.shape[0]			)[0]]
             lowerCamelCase__						:							str       =    model._sample(
                 __lowerCamelCase   , __lowerCamelCase   , sample_levels=[2]   , save_results=__lowerCamelCase   , 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				:     Optional[Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							int       =    JukeboxModel.from_pretrained(self.model_id   , min_duration=0			).eval()
             set_seed(0			)
             lowerCamelCase__						:							Dict       =    torch.rand((1, 5120, 1)			)
             with torch.no_grad():
                   lowerCamelCase__						:							Optional[int]       =    model.vqvae.encode(__lowerCamelCase   , 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():
                   lowerCamelCase__						:							Tuple       =    model.vqvae.decode(__lowerCamelCase   , 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      _lowercase					(				unittest.TestCase):


       """simple docstring"""




       A__   		=     (JukeboxModel,) if is_torch_available() else ()
       A__   		=     "openai/jukebox-5b-lyrics"
       A__   		=     {
           "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
       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]

       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]

       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]

       A__   		=     [
           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
       ]
       A__   		=     [
           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
       ]

       A__   		=     [
           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
       ]
       A__   		=     [
           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				:     Tuple   , __lowerCamelCase				:     List[Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							str       =    JukeboxTokenizer.from_pretrained(__lowerCamelCase			)
             lowerCamelCase__						:							List[Any]       =    tokenizer(**self.metas			)["input_ids"]
             return tokens





       @slow
       def 		lowerCAmelCase	(  self				:     Tuple			):


             '''simple docstring'''



             lowerCamelCase__						:							List[str]       =    JukeboxModel.from_pretrained(self.model_id   , min_duration=0			).eval()
             lowerCamelCase__						:							Dict       =    self.prepare_inputs(self.model_id			)

             set_seed(0			)
             lowerCamelCase__						:							int       =    [torch.zeros(1   , 0   , dtype=torch.long			).cpu() for _ in range(3			)]
             lowerCamelCase__						:							Union[str, Any]       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [0]   , sample_length=60 * model.priors[0].raw_to_tokens   , save_results=__lowerCamelCase			)
             self.assertIn(zs[0][0].detach().cpu().tolist()   , [self.EXPECTED_OUTPUT_2, self.EXPECTED_OUTPUT_2_PT_2]			)

             set_seed(0			)
             lowerCamelCase__						:							List[Any]       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [1]   , sample_length=60 * model.priors[1].raw_to_tokens   , save_results=__lowerCamelCase			)
             self.assertIn(zs[1][0].detach().cpu().tolist()   , [self.EXPECTED_OUTPUT_1, self.EXPECTED_OUTPUT_1_PT_2]			)

             set_seed(0			)
             lowerCamelCase__						:							Tuple       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [2]   , sample_length=60 * model.priors[2].raw_to_tokens   , save_results=__lowerCamelCase			)
             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				:     Union[str, Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							Optional[Any]       =    JukeboxModel.from_pretrained(self.model_id   , min_duration=0			).eval()
             lowerCamelCase__						:							Optional[int]       =    [i.cuda() for i in self.prepare_inputs(self.model_id			)]

             set_seed(0			)
             model.priors[0].cuda()
             lowerCamelCase__						:							Tuple       =    [torch.zeros(1   , 0   , dtype=torch.long			).cuda() for _ in range(3			)]
             lowerCamelCase__						:							List[Any]       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [0]   , sample_length=60 * model.priors[0].raw_to_tokens   , save_results=__lowerCamelCase			)
             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()
             lowerCamelCase__						:							Dict       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [1]   , sample_length=60 * model.priors[1].raw_to_tokens   , save_results=__lowerCamelCase			)
             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()
             lowerCamelCase__						:							Tuple       =    model._sample(__lowerCamelCase   , __lowerCamelCase   , [2]   , sample_length=60 * model.priors[2].raw_to_tokens   , save_results=__lowerCamelCase			)
             torch.testing.assert_allclose(zs[2][0].cpu()   , torch.tensor(self.EXPECTED_GPU_OUTPUTS_0			)			)





       @slow
       def 		lowerCAmelCase	(  self				:     int			):


             '''simple docstring'''



             lowerCamelCase__						:							Tuple       =    "ArthurZ/jukebox_prior_0"
             lowerCamelCase__						:							Optional[Any]       =    JukeboxPrior.from_pretrained(__lowerCamelCase   , min_duration=0			).eval().half().to("cuda"			)

             lowerCamelCase__						:							Dict       =    self.prepare_inputs(__lowerCamelCase			)[0].cuda()
             lowerCamelCase__						:							Union[str, Any]       =    model.get_metadata(__lowerCamelCase   , 0   , 7680   , 0			)
             set_seed(0			)
             lowerCamelCase__						:							Optional[int]       =    model.sample(1   , metadata=__lowerCamelCase   , sample_tokens=60			)
             self.assertIn(outputs[0].cpu().tolist()   , [self.EXPECTED_GPU_OUTPUTS_2, self.EXPECTED_GPU_OUTPUTS_2_PT_2]			)


