


import collections
import inspect
import unittest

from transformers import DonutSwinConfig
from transformers.testing_utils import require_torch, slow, torch_device
from transformers.utils import is_torch_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, _config_zero_init, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
    import torch
    from torch import nn

    from transformers import DonutSwinModel
    from transformers.models.donut.modeling_donut_swin import DONUT_SWIN_PRETRAINED_MODEL_ARCHIVE_LIST







class      _lowercase					:


       """simple docstring"""




       def __init__(  self				:     Any   , __lowerCamelCase				:     str   , __lowerCamelCase				:     Optional[int]=13   , __lowerCamelCase				:     Optional[Any]=32   , __lowerCamelCase				:     Dict=2   , __lowerCamelCase				:     Optional[int]=3   , __lowerCamelCase				:     Union[str, Any]=16   , __lowerCamelCase				:     Optional[int]=[1, 2, 1]   , __lowerCamelCase				:     Dict=[2, 2, 4]   , __lowerCamelCase				:     Optional[int]=2   , __lowerCamelCase				:     Union[str, Any]=2.0   , __lowerCamelCase				:     Optional[Any]=True   , __lowerCamelCase				:     Optional[Any]=0.0   , __lowerCamelCase				:     Tuple=0.0   , __lowerCamelCase				:     Tuple=0.1   , __lowerCamelCase				:     int="gelu"   , __lowerCamelCase				:     Union[str, Any]=False   , __lowerCamelCase				:     Union[str, Any]=True   , __lowerCamelCase				:     Any=0.0_2   , __lowerCamelCase				:     str=1E-5   , __lowerCamelCase				:     Optional[int]=True   , __lowerCamelCase				:     Optional[Any]=None   , __lowerCamelCase				:     Any=True   , __lowerCamelCase				:     Tuple=10   , __lowerCamelCase				:     Dict=8   , ):


             '''simple docstring'''



             lowerCamelCase__						:							Union[str, Any]       =    parent
             lowerCamelCase__						:							Dict       =    batch_size
             lowerCamelCase__						:							Optional[Any]       =    image_size
             lowerCamelCase__						:							int       =    patch_size
             lowerCamelCase__						:							str       =    num_channels
             lowerCamelCase__						:							List[Any]       =    embed_dim
             lowerCamelCase__						:							Optional[Any]       =    depths
             lowerCamelCase__						:							Any       =    num_heads
             lowerCamelCase__						:							Dict       =    window_size
             lowerCamelCase__						:							Tuple       =    mlp_ratio
             lowerCamelCase__						:							Union[str, Any]       =    qkv_bias
             lowerCamelCase__						:							List[str]       =    hidden_dropout_prob
             lowerCamelCase__						:							Optional[int]       =    attention_probs_dropout_prob
             lowerCamelCase__						:							Optional[Any]       =    drop_path_rate
             lowerCamelCase__						:							List[Any]       =    hidden_act
             lowerCamelCase__						:							Tuple       =    use_absolute_embeddings
             lowerCamelCase__						:							Tuple       =    patch_norm
             lowerCamelCase__						:							int       =    layer_norm_eps
             lowerCamelCase__						:							Optional[int]       =    initializer_range
             lowerCamelCase__						:							str       =    is_training
             lowerCamelCase__						:							Optional[Any]       =    scope
             lowerCamelCase__						:							Dict       =    use_labels
             lowerCamelCase__						:							Optional[Any]       =    type_sequence_label_size
             lowerCamelCase__						:							Dict       =    encoder_stride





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


             '''simple docstring'''



             lowerCamelCase__						:							str       =    floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]			)

             lowerCamelCase__						:							int       =    None
             if self.use_labels:
                   lowerCamelCase__						:							Tuple       =    ids_tensor([self.batch_size]   , self.type_sequence_label_size			)

             lowerCamelCase__						:							Optional[int]       =    self.get_config()

             return config, pixel_values, labels





       def 		lowerCAmelCase	(  self				:     Tuple			):


             '''simple docstring'''



             return DonutSwinConfig(
                 image_size=self.image_size   , patch_size=self.patch_size   , num_channels=self.num_channels   , embed_dim=self.embed_dim   , depths=self.depths   , num_heads=self.num_heads   , window_size=self.window_size   , mlp_ratio=self.mlp_ratio   , qkv_bias=self.qkv_bias   , hidden_dropout_prob=self.hidden_dropout_prob   , attention_probs_dropout_prob=self.attention_probs_dropout_prob   , drop_path_rate=self.drop_path_rate   , hidden_act=self.hidden_act   , use_absolute_embeddings=self.use_absolute_embeddings   , path_norm=self.patch_norm   , layer_norm_eps=self.layer_norm_eps   , initializer_range=self.initializer_range   , encoder_stride=self.encoder_stride   , )





       def 		lowerCAmelCase	(  self				:     Dict   , __lowerCamelCase				:     str   , __lowerCamelCase				:     List[str]   , __lowerCamelCase				:     List[str]			):


             '''simple docstring'''



             lowerCamelCase__						:							str       =    DonutSwinModel(config=__lowerCamelCase			)
             model.to(__lowerCamelCase			)
             model.eval()
             lowerCamelCase__						:							Union[str, Any]       =    model(__lowerCamelCase			)

             lowerCamelCase__						:							str       =    ((config.image_size // config.patch_size) ** 2) // (4 ** (len(config.depths			) - 1))
             lowerCamelCase__						:							str       =    int(config.embed_dim * 2 ** (len(config.depths			) - 1)			)

             self.parent.assertEqual(result.last_hidden_state.shape   , (self.batch_size, expected_seq_len, expected_dim)			)





       def 		lowerCAmelCase	(  self				:     int			):


             '''simple docstring'''



             lowerCamelCase__						:							str       =    self.prepare_config_and_inputs()
             (
                 (
                 lowerCamelCase__
             )       ,  (
                 lowerCamelCase__
             )       ,  (
                 lowerCamelCase__
             )       ,  
             )						:							Dict       =    config_and_inputs
             lowerCamelCase__						:							Any       =    {"pixel_values": pixel_values}
             return config, inputs_dict







@require_torch
class      _lowercase					(				lowercase__				,    lowercase__				,    unittest.TestCase):


       """simple docstring"""




       A__   		=     (DonutSwinModel,) if is_torch_available() else ()
       A__   		=     {"feature-extraction": DonutSwinModel} if is_torch_available() else {}
       A__   		=     True

       A__   		=     False
       A__   		=     False
       A__   		=     False





       def 		lowerCAmelCase	(  self				:     Optional[Any]			):


             '''simple docstring'''



             lowerCamelCase__						:							List[Any]       =    DonutSwinModelTester(self			)
             lowerCamelCase__						:							str       =    ConfigTester(self   , config_class=__lowerCamelCase   , embed_dim=37			)





       def 		lowerCAmelCase	(  self				:     Optional[int]			):


             '''simple docstring'''



             self.create_and_test_config_common_properties()
             self.config_tester.create_and_test_config_to_json_string()
             self.config_tester.create_and_test_config_to_json_file()
             self.config_tester.create_and_test_config_from_and_save_pretrained()
             self.config_tester.create_and_test_config_with_num_labels()
             self.config_tester.check_config_can_be_init_without_params()
             self.config_tester.check_config_arguments_init()





       def 		lowerCAmelCase	(  self				:     Optional[int]			):


             '''simple docstring'''



             return





       def 		lowerCAmelCase	(  self				:     int			):


             '''simple docstring'''



             lowerCamelCase__						:							str       =    self.model_tester.prepare_config_and_inputs()
             self.model_tester.create_and_check_model(*__lowerCamelCase			)





       def 		lowerCAmelCase	(  self				:     Dict			):


             '''simple docstring'''



             pass





       def 		lowerCAmelCase	(  self				:     List[Any]			):


             '''simple docstring'''



             lowerCamelCase__       ,  lowerCamelCase__						:							int       =    self.model_tester.prepare_config_and_inputs_for_common()

             for model_class in self.all_model_classes:
                   lowerCamelCase__						:							List[Any]       =    model_class(__lowerCamelCase			)
                   self.assertIsInstance(model.get_input_embeddings()   , (nn.Module)			)
                   lowerCamelCase__						:							Optional[int]       =    model.get_output_embeddings()
                   self.assertTrue(x is None or isinstance(__lowerCamelCase   , nn.Linear			)			)





       def 		lowerCAmelCase	(  self				:     Optional[int]			):


             '''simple docstring'''



             lowerCamelCase__       ,  lowerCamelCase__						:							List[Any]       =    self.model_tester.prepare_config_and_inputs_for_common()

             for model_class in self.all_model_classes:
                   lowerCamelCase__						:							List[str]       =    model_class(__lowerCamelCase			)
                   lowerCamelCase__						:							Tuple       =    inspect.signature(model.forward			)
                   # signature.parameters is an OrderedDict => so arg_names order is deterministic
                   lowerCamelCase__						:							List[Any]       =    [*signature.parameters.keys()]

                   lowerCamelCase__						:							Dict       =    ["pixel_values"]
                   self.assertListEqual(arg_names[:1]   , __lowerCamelCase			)





       def 		lowerCAmelCase	(  self				:     str			):


             '''simple docstring'''



             lowerCamelCase__       ,  lowerCamelCase__						:							List[Any]       =    self.model_tester.prepare_config_and_inputs_for_common()
             lowerCamelCase__						:							List[Any]       =    True

             for model_class in self.all_model_classes:
                   lowerCamelCase__						:							int       =    True
                   lowerCamelCase__						:							Union[str, Any]       =    False
                   lowerCamelCase__						:							Dict       =    True
                   lowerCamelCase__						:							Any       =    model_class(__lowerCamelCase			)
                   model.to(__lowerCamelCase			)
                   model.eval()
                   with torch.no_grad():
                         lowerCamelCase__						:							Dict       =    model(**self._prepare_for_class(__lowerCamelCase   , __lowerCamelCase			)			)
                   lowerCamelCase__						:							Tuple       =    outputs.attentions
                   lowerCamelCase__						:							Any       =    len(self.model_tester.depths			)
                   self.assertEqual(len(__lowerCamelCase			)   , __lowerCamelCase			)

                   # check that output_attentions also work using config
                   del inputs_dict["output_attentions"]
                   lowerCamelCase__						:							Optional[Any]       =    True
                   lowerCamelCase__						:							Any       =    config.window_size**2
                   lowerCamelCase__						:							Dict       =    model_class(__lowerCamelCase			)
                   model.to(__lowerCamelCase			)
                   model.eval()
                   with torch.no_grad():
                         lowerCamelCase__						:							List[str]       =    model(**self._prepare_for_class(__lowerCamelCase   , __lowerCamelCase			)			)
                   lowerCamelCase__						:							Union[str, Any]       =    outputs.attentions
                   self.assertEqual(len(__lowerCamelCase			)   , __lowerCamelCase			)

                   self.assertListEqual(
                       list(attentions[0].shape[-3:]			)   , [self.model_tester.num_heads[0], window_size_squared, window_size_squared]   , )
                   lowerCamelCase__						:							str       =    len(__lowerCamelCase			)

                   # Check attention is always last and order is fine
                   lowerCamelCase__						:							Union[str, Any]       =    True
                   lowerCamelCase__						:							List[str]       =    True
                   lowerCamelCase__						:							Union[str, Any]       =    model_class(__lowerCamelCase			)
                   model.to(__lowerCamelCase			)
                   model.eval()
                   with torch.no_grad():
                         lowerCamelCase__						:							Optional[int]       =    model(**self._prepare_for_class(__lowerCamelCase   , __lowerCamelCase			)			)

                   if hasattr(self.model_tester   , "num_hidden_states_types"			):
                         lowerCamelCase__						:							Union[str, Any]       =    self.model_tester.num_hidden_states_types
                   else:
                         # also another +1 for reshaped_hidden_states
                         lowerCamelCase__						:							str       =    2
                   self.assertEqual(out_len + added_hidden_states   , len(__lowerCamelCase			)			)

                   lowerCamelCase__						:							str       =    outputs.attentions

                   self.assertEqual(len(__lowerCamelCase			)   , __lowerCamelCase			)

                   self.assertListEqual(
                       list(self_attentions[0].shape[-3:]			)   , [self.model_tester.num_heads[0], window_size_squared, window_size_squared]   , )





       def 		lowerCAmelCase	(  self				:     int   , __lowerCamelCase				:     Dict   , __lowerCamelCase				:     str   , __lowerCamelCase				:     List[str]   , __lowerCamelCase				:     Optional[int]			):


             '''simple docstring'''



             lowerCamelCase__						:							Optional[int]       =    model_class(__lowerCamelCase			)
             model.to(__lowerCamelCase			)
             model.eval()

             with torch.no_grad():
                   lowerCamelCase__						:							Optional[Any]       =    model(**self._prepare_for_class(__lowerCamelCase   , __lowerCamelCase			)			)

             lowerCamelCase__						:							Union[str, Any]       =    outputs.hidden_states

             lowerCamelCase__						:							Any       =    getattr(
                 self.model_tester   , "expected_num_hidden_layers"   , len(self.model_tester.depths			) + 1			)
             self.assertEqual(len(__lowerCamelCase			)   , __lowerCamelCase			)

             # DonutSwin has a different seq_length
             lowerCamelCase__						:							Dict       =    (
                 config.patch_size
                 if isinstance(config.patch_size   , collections.abc.Iterable			)
                 else (config.patch_size, config.patch_size)
             )

             lowerCamelCase__						:							Union[str, Any]       =    (image_size[1] // patch_size[1]) * (image_size[0] // patch_size[0])

             self.assertListEqual(
                 list(hidden_states[0].shape[-2:]			)   , [num_patches, self.model_tester.embed_dim]   , )

             lowerCamelCase__						:							Optional[int]       =    outputs.reshaped_hidden_states
             self.assertEqual(len(__lowerCamelCase			)   , __lowerCamelCase			)

             lowerCamelCase__       ,  lowerCamelCase__       ,  lowerCamelCase__       ,  lowerCamelCase__						:							List[Any]       =    reshaped_hidden_states[0].shape
             lowerCamelCase__						:							str       =    (
                 reshaped_hidden_states[0].view(__lowerCamelCase   , __lowerCamelCase   , height * width			).permute(0   , 2   , 1			)
             )
             self.assertListEqual(
                 list(reshaped_hidden_states.shape[-2:]			)   , [num_patches, self.model_tester.embed_dim]   , )





       def 		lowerCAmelCase	(  self				:     str			):


             '''simple docstring'''



             lowerCamelCase__       ,  lowerCamelCase__						:							Optional[Any]       =    self.model_tester.prepare_config_and_inputs_for_common()

             lowerCamelCase__						:							List[Any]       =    (
                 self.model_tester.image_size
                 if isinstance(self.model_tester.image_size   , collections.abc.Iterable			)
                 else (self.model_tester.image_size, self.model_tester.image_size)
             )

             for model_class in self.all_model_classes:
                   lowerCamelCase__						:							int       =    True
                   self.check_hidden_states_output(__lowerCamelCase   , __lowerCamelCase   , __lowerCamelCase   , __lowerCamelCase			)

                   # check that output_hidden_states also work using config
                   del inputs_dict["output_hidden_states"]
                   lowerCamelCase__						:							Dict       =    True

                   self.check_hidden_states_output(__lowerCamelCase   , __lowerCamelCase   , __lowerCamelCase   , __lowerCamelCase			)





       def 		lowerCAmelCase	(  self				:     Dict			):


             '''simple docstring'''



             lowerCamelCase__       ,  lowerCamelCase__						:							List[Any]       =    self.model_tester.prepare_config_and_inputs_for_common()
             lowerCamelCase__						:							List[Any]       =    3

             lowerCamelCase__						:							str       =    (
                 self.model_tester.image_size
                 if isinstance(self.model_tester.image_size   , collections.abc.Iterable			)
                 else (self.model_tester.image_size, self.model_tester.image_size)
             )
             lowerCamelCase__						:							List[str]       =    (
                 config.patch_size
                 if isinstance(config.patch_size   , collections.abc.Iterable			)
                 else (config.patch_size, config.patch_size)
             )

             lowerCamelCase__						:							Union[str, Any]       =    image_size[0] + patch_size[0] - (image_size[0] % patch_size[0])
             lowerCamelCase__						:							Optional[int]       =    image_size[1] + patch_size[1] - (image_size[1] % patch_size[1])

             for model_class in self.all_model_classes:
                   lowerCamelCase__						:							Union[str, Any]       =    True
                   self.check_hidden_states_output(__lowerCamelCase   , __lowerCamelCase   , __lowerCamelCase   , (padded_height, padded_width)			)

                   # check that output_hidden_states also work using config
                   del inputs_dict["output_hidden_states"]
                   lowerCamelCase__						:							Any       =    True
                   self.check_hidden_states_output(__lowerCamelCase   , __lowerCamelCase   , __lowerCamelCase   , (padded_height, padded_width)			)





       @slow
       def 		lowerCAmelCase	(  self				:     Dict			):


             '''simple docstring'''



             for model_name in DONUT_SWIN_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
                   lowerCamelCase__						:							Optional[Any]       =    DonutSwinModel.from_pretrained(__lowerCamelCase			)
                   self.assertIsNotNone(__lowerCamelCase			)





       def 		lowerCAmelCase	(  self				:     List[str]			):


             '''simple docstring'''



             lowerCamelCase__       ,  lowerCamelCase__						:							List[str]       =    self.model_tester.prepare_config_and_inputs_for_common()

             lowerCamelCase__						:							Dict       =    _config_zero_init(__lowerCamelCase			)
             for model_class in self.all_model_classes:
                   lowerCamelCase__						:							Tuple       =    model_class(config=__lowerCamelCase			)
                   for name, param in model.named_parameters():
                         if "embeddings" not in name and param.requires_grad:
                               self.assertIn(
                                   ((param.data.mean() * 1E9).round() / 1E9).item()   , [0.0, 1.0]   , msg=f"Parameter {name} of model {model_class} seems not properly initialized"   , )






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]			)


