


'''simple docstring'''

import unittest

from transformers import JukeboxTokenizer
from transformers.testing_utils import require_torch
class _lowerCamelCase			(		unittest.TestCase				):



		'''simple docstring'''







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







		@require_torch
		def   __lowerCAmelCase						(   self						:		Dict     )    ->					List[Any]:
			import torch

			__magic_name__			:       List[Any]	      =	JukeboxTokenizer.from_pretrained('openai/jukebox-1b-lyrics'     )
			__magic_name__			:       str	      =	tokenizer(**self.metas     )['input_ids']
			# fmt: off
			__magic_name__			:       Dict	      =	[
			    torch.tensor([[
			        0, 0, 0, 7169, 507, 9, 76, 39, 31, 46, 76, 27,
			        76, 46, 44, 27, 48, 31, 38, 38, 31, 44, 76, 32,
			        44, 41, 39, 76, 27, 40, 76, 27, 40, 46, 35, 43,
			        47, 31, 76, 38, 27, 40, 30, 64, 78, 76, 76, 76,
			        76, 76, 76, 76, 76, 23, 34, 41, 76, 45, 27, 35,
			        30, 76, 71, 20, 49, 41, 76, 48, 27, 45, 46, 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, 76, 76, 76, 76, 76, 76, 76,
			        19, 46, 27, 40, 30, 76, 35, 40, 76, 46, 34, 31,
			        76, 30, 31, 45, 31, 44, 46, 63, 76, 63, 76, 63,
			        76, 63, 76, 14, 31, 27, 44, 76, 46, 34, 31, 39,
			        64, 76, 41, 40, 76, 46, 34, 31, 76, 45, 27, 40,
			        30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76, 8,
			        27, 38, 32, 76, 45, 47, 40, 37, 76, 27, 76, 45,
			        34, 27, 46, 46, 31, 44, 31, 30, 76, 48, 35, 45,
			        27, 33, 31, 76, 38, 35, 31, 45, 64, 76, 49, 34,
			        41, 45, 31, 76, 32, 44, 41, 49, 40, 64, 78, 76,
			        76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76, 49,
			        44, 35, 40, 37, 38, 31, 30, 76, 38, 35, 42, 64,
			        76, 27, 40, 30, 76, 45, 40, 31, 31, 44, 76, 41,
			        32, 76, 29, 41, 38, 30, 76, 29, 41, 39, 39, 27,
			        40, 30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76,
			        20, 31, 38, 38, 76, 46, 34, 27, 46, 76, 35, 46,
			        45, 76, 45, 29, 47, 38, 42, 46, 41, 44, 76, 49,
			        31, 38, 38, 76, 46, 34, 41, 45, 31, 76, 42, 27,
			        45, 45, 35, 41, 40, 45, 76, 44, 31, 27, 30, 78,
			        76, 76, 76, 76, 76, 76, 76, 76, 23, 34, 35, 29,
			        34, 76, 51, 31, 46, 76, 45, 47, 44, 48, 35, 48,
			        31, 64, 76, 45, 46, 27, 39, 42, 31, 30, 76, 41,
			        40, 76, 46, 34, 31, 45, 31, 76, 38, 35, 32, 31,
			        38, 31, 45, 45, 76, 46, 34, 35, 40, 33, 45, 64,
			        78, 76, 76, 76, 76, 76, 76, 76, 76, 20, 34, 31,
			        76, 34, 27, 40, 30, 76, 46, 34, 27, 46, 76, 39,
			        41, 29, 37, 31, 30, 76, 46, 34, 31, 39, 64, 76,
			        27, 40, 30, 76, 46, 34, 31, 76, 34, 31, 27, 44,
			        46, 76, 46, 34, 27, 46, 76, 32, 31, 30, 66, 78,
			        76, 76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76,
			        41, 40, 76, 46, 34, 31, 76, 42, 31, 30, 31, 45,
			        46, 27, 38, 64, 76, 46, 34, 31, 45, 31, 76, 49,
			        41, 44, 30, 45, 76, 27, 42, 42, 31, 27, 44, 65,
			        78, 76, 76, 76, 76, 76, 76, 76, 76, 13, 51, 76,
			        40, 27, 39, 31, 76, 35, 45, 76, 15, 52, 51, 39,
			        27, 40, 30, 35, 27, 45, 64, 76, 11, 35, 40, 33,
			        76, 41, 32, 76, 11, 35, 40, 33, 45, 66, 78, 76,
			        76, 76, 76, 76, 76, 76, 76, 12, 41, 41, 37, 76,
			        41, 40, 76, 39, 51, 76, 23, 41, 44, 37, 45, 64,
			        76, 51, 31, 76, 13, 35, 33, 34, 46, 51, 64, 76,
			        27, 40, 30, 76, 30, 31, 45, 42, 27, 35, 44, 67,
			        78, 76, 76, 76, 76, 76, 76, 76, 76, 14, 41, 46,
			        34, 35, 40, 33, 76, 28, 31, 45, 35, 30, 31, 76,
			        44, 31, 39, 27, 35, 40, 45, 63, 76, 18, 41, 47,
			        40, 30, 76, 46, 34, 31, 76, 30, 31, 29, 27, 51,
			        78, 76, 76, 76, 76, 76, 76, 76, 76, 15, 32, 76,
			        46, 34, 27, 46, 76, 29, 41, 38, 41, 45, 45, 27,
			        38, 76, 23, 44, 31, 29, 37, 64, 76, 28, 41, 47,
			        40, 30, 38, 31, 45, 45, 76, 27, 40, 30, 76, 28,
			        27, 44, 31, 78, 76, 76, 76, 76, 76, 76, 76, 76,
			        20, 34, 31, 76, 38, 41, 40, 31, 76, 27, 40, 30,
			        76, 38, 31, 48, 31, 38, 76, 45, 27, 40, 30, 45,
			        76, 45, 46, 44, 31, 46, 29, 34, 76, 32, 27, 44,
			        76, 27, 49, 27, 51, 78, 76, 76, 76, 76, 76, 76,
			        76, 76]]     ),
			    torch.tensor([[0, 0, 0, 1069, 11]]     ),
			    torch.tensor([[0, 0, 0, 1069, 11]]     ),
			]
			# fmt: on
			self.assertTrue(torch.allclose(tokens[0]    ,	EXPECTED_OUTPUT[0]     )     )
			self.assertTrue(torch.allclose(tokens[1]    ,	EXPECTED_OUTPUT[1]     )     )
			self.assertTrue(torch.allclose(tokens[2]    ,	EXPECTED_OUTPUT[2]     )     )







		@require_torch
		def   __lowerCAmelCase						(   self						:		Union[str, Any]     )    ->					List[Any]:
			import torch

			__magic_name__			:       Union[str, Any]	      =	JukeboxTokenizer.from_pretrained('openai/jukebox-5b-lyrics'     )
			__magic_name__			:       List[str]	      =	tokenizer(**self.metas     )['input_ids']
			# fmt: off
			__magic_name__			:       Tuple	      =	[
			    torch.tensor([[
			        0, 0, 0, 1069, 11, -1, -1, -1, -1, 9, 77, 39,
			        31, 46, 77, 27, 77, 46, 44, 27, 48, 31, 38, 38,
			        31, 44, 77, 32, 44, 41, 39, 77, 27, 40, 77, 27,
			        40, 46, 35, 43, 47, 31, 77, 38, 27, 40, 30, 64,
			        79, 77, 77, 77, 77, 77, 77, 77, 77, 23, 34, 41,
			        77, 45, 27, 35, 30, 77, 72, 20, 49, 41, 77, 48,
			        27, 45, 46, 77, 27, 40, 30, 77, 46, 44, 47, 40,
			        37, 38, 31, 45, 45, 77, 38, 31, 33, 45, 77, 41,
			        32, 77, 45, 46, 41, 40, 31, 79, 77, 77, 77, 77,
			        77, 77, 77, 77, 19, 46, 27, 40, 30, 77, 35, 40,
			        77, 46, 34, 31, 77, 30, 31, 45, 31, 44, 46, 63,
			        77, 63, 77, 63, 77, 63, 77, 14, 31, 27, 44, 77,
			        46, 34, 31, 39, 64, 77, 41, 40, 77, 46, 34, 31,
			        77, 45, 27, 40, 30, 64, 79, 77, 77, 77, 77, 77,
			        77, 77, 77, 8, 27, 38, 32, 77, 45, 47, 40, 37,
			        77, 27, 77, 45, 34, 27, 46, 46, 31, 44, 31, 30,
			        77, 48, 35, 45, 27, 33, 31, 77, 38, 35, 31, 45,
			        64, 77, 49, 34, 41, 45, 31, 77, 32, 44, 41, 49,
			        40, 64, 79, 77, 77, 77, 77, 77, 77, 77, 77, 1,
			        40, 30, 77, 49, 44, 35, 40, 37, 38, 31, 30, 77,
			        38, 35, 42, 64, 77, 27, 40, 30, 77, 45, 40, 31,
			        31, 44, 77, 41, 32, 77, 29, 41, 38, 30, 77, 29,
			        41, 39, 39, 27, 40, 30, 64, 79, 77, 77, 77, 77,
			        77, 77, 77, 77, 20, 31, 38, 38, 77, 46, 34, 27,
			        46, 77, 35, 46, 45, 77, 45, 29, 47, 38, 42, 46,
			        41, 44, 77, 49, 31, 38, 38, 77, 46, 34, 41, 45,
			        31, 77, 42, 27, 45, 45, 35, 41, 40, 45, 77, 44,
			        31, 27, 30, 79, 77, 77, 77, 77, 77, 77, 77, 77,
			        23, 34, 35, 29, 34, 77, 51, 31, 46, 77, 45, 47,
			        44, 48, 35, 48, 31, 64, 77, 45, 46, 27, 39, 42,
			        31, 30, 77, 41, 40, 77, 46, 34, 31, 45, 31, 77,
			        38, 35, 32, 31, 38, 31, 45, 45, 77, 46, 34, 35,
			        40, 33, 45, 64, 79, 77, 77, 77, 77, 77, 77, 77,
			        77, 20, 34, 31, 77, 34, 27, 40, 30, 77, 46, 34,
			        27, 46, 77, 39, 41, 29, 37, 31, 30, 77, 46, 34,
			        31, 39, 64, 77, 27, 40, 30, 77, 46, 34, 31, 77,
			        34, 31, 27, 44, 46, 77, 46, 34, 27, 46, 77, 32,
			        31, 30, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77,
			        1, 40, 30, 77, 41, 40, 77, 46, 34, 31, 77, 42,
			        31, 30, 31, 45, 46, 27, 38, 64, 77, 46, 34, 31,
			        45, 31, 77, 49, 41, 44, 30, 45, 77, 27, 42, 42,
			        31, 27, 44, 65, 79, 77, 77, 77, 77, 77, 77, 77,
			        77, 13, 51, 77, 40, 27, 39, 31, 77, 35, 45, 77,
			        15, 52, 51, 39, 27, 40, 30, 35, 27, 45, 64, 77,
			        11, 35, 40, 33, 77, 41, 32, 77, 11, 35, 40, 33,
			        45, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77, 12,
			        41, 41, 37, 77, 41, 40, 77, 39, 51, 77, 23, 41,
			        44, 37, 45, 64, 77, 51, 31, 77, 13, 35, 33, 34,
			        46, 51, 64, 77, 27, 40, 30, 77, 30, 31, 45, 42,
			        27, 35, 44, 67, 79, 77, 77, 77, 77, 77, 77, 77,
			        77, 14, 41, 46, 34, 35, 40, 33, 77, 28, 31, 45,
			        35, 30, 31, 77, 44, 31, 39, 27, 35, 40, 45, 63,
			        77, 18, 41, 47, 40, 30, 77, 46, 34, 31, 77, 30,
			        31, 29, 27, 51, 79, 77, 77, 77, 77, 77, 77, 77,
			        77, 15, 32, 77, 46, 34, 27, 46, 77, 29, 41, 38,
			        41, 45, 45, 27, 38, 77, 23, 44, 31, 29, 37, 64,
			        77, 28, 41, 47, 40, 30, 38, 31, 45, 45, 77, 27,
			        40, 30, 77, 28, 27, 44, 31, 79, 77, 77, 77, 77,
			        77, 77, 77, 77, 20, 34, 31, 77, 38, 41, 40, 31,
			        77, 27, 40, 30, 77, 38, 31, 48, 31, 38, 77, 45,
			        27, 40, 30, 45, 77, 45, 46, 44, 31, 46, 29, 34,
			        77, 32, 27, 44, 77, 27, 49, 27, 51, 79, 77, 77,
			        77, 77, 77, 77, 77, 77]]     ),
			    torch.tensor([[0, 0, 0, 1069, 11, -1, -1, -1, -1]]     ),
			    torch.tensor([[0, 0, 0, 1069, 11, -1, -1, -1, -1]]     ),
			]
			# fmt: on
			self.assertTrue(torch.allclose(tokens[0]    ,	EXPECTED_OUTPUT[0]     )     )
			self.assertTrue(torch.allclose(tokens[1]    ,	EXPECTED_OUTPUT[1]     )     )
			self.assertTrue(torch.allclose(tokens[2]    ,	EXPECTED_OUTPUT[2]     )     )

import inspect
import unittest

from transformers import ViTMSNConfig
from transformers.testing_utils import require_torch, require_vision, slow, torch_device
from transformers.utils import cached_property, is_torch_available, is_vision_available

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


if is_torch_available():
			import torch
			from torch import nn

			from transformers import ViTMSNForImageClassification, ViTMSNModel
			from transformers.models.vit_msn.modeling_vit_msn import VIT_MSN_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
			from PIL import Image

			from transformers import ViTImageProcessor





class       _lowerCAmelCase   :




				def __init__(   self							,							_UpperCamelCase							,							_UpperCamelCase=13							,							_UpperCamelCase=30							,							_UpperCamelCase=2							,							_UpperCamelCase=3							,							_UpperCamelCase=True							,							_UpperCamelCase=True							,							_UpperCamelCase=32							,							_UpperCamelCase=5							,							_UpperCamelCase=4							,							_UpperCamelCase=37							,							_UpperCamelCase="gelu"							,							_UpperCamelCase=0.1							,							_UpperCamelCase=0.1							,							_UpperCamelCase=10							,							_UpperCamelCase=0.02							,							_UpperCamelCase=None							,							)							-> List[Any]:
							lowerCAmelCase_         =      parent
							lowerCAmelCase_         =      batch_size
							lowerCAmelCase_         =      image_size
							lowerCAmelCase_         =      patch_size
							lowerCAmelCase_         =      num_channels
							lowerCAmelCase_         =      is_training
							lowerCAmelCase_         =      use_labels
							lowerCAmelCase_         =      hidden_size
							lowerCAmelCase_         =      num_hidden_layers
							lowerCAmelCase_         =      num_attention_heads
							lowerCAmelCase_         =      intermediate_size
							lowerCAmelCase_         =      hidden_act
							lowerCAmelCase_         =      hidden_dropout_prob
							lowerCAmelCase_         =      attention_probs_dropout_prob
							lowerCAmelCase_         =      type_sequence_label_size
							lowerCAmelCase_         =      initializer_range
							lowerCAmelCase_         =      scope

							# in ViT MSN, the seq length equals the number of patches + 1 (we add 1 for the [CLS] token)
							lowerCAmelCase_         =      (image_size // patch_size) ** 2
							lowerCAmelCase_         =      num_patches + 1




				def 	__a		(   self	)							-> Union[str, Any]:
							lowerCAmelCase_         =      floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]	)

							lowerCAmelCase_         =      None
							if self.use_labels:
										lowerCAmelCase_         =      ids_tensor([self.batch_size]							,							self.type_sequence_label_size	)

							lowerCAmelCase_         =      self.get_config()

							return config, pixel_values, labels




				def 	__a		(   self	)							-> Optional[Any]:
							return ViTMSNConfig(
							    image_size=self.image_size							,							patch_size=self.patch_size							,							num_channels=self.num_channels							,							hidden_size=self.hidden_size							,							num_hidden_layers=self.num_hidden_layers							,							num_attention_heads=self.num_attention_heads							,							intermediate_size=self.intermediate_size							,							hidden_act=self.hidden_act							,							hidden_dropout_prob=self.hidden_dropout_prob							,							attention_probs_dropout_prob=self.attention_probs_dropout_prob							,							initializer_range=self.initializer_range							,							)




				def 	__a		(   self							,							_UpperCamelCase							,							_UpperCamelCase							,							_UpperCamelCase	)							-> str:
							lowerCAmelCase_         =      ViTMSNModel(config=_UpperCamelCase	)
							model.to(_UpperCamelCase	)
							model.eval()
							lowerCAmelCase_         =      model(_UpperCamelCase	)
							self.parent.assertEqual(result.last_hidden_state.shape							,							(self.batch_size, self.seq_length, self.hidden_size)	)




				def 	__a		(   self							,							_UpperCamelCase							,							_UpperCamelCase							,							_UpperCamelCase	)							-> str:
							lowerCAmelCase_         =      self.type_sequence_label_size
							lowerCAmelCase_         =      ViTMSNForImageClassification(_UpperCamelCase	)
							model.to(_UpperCamelCase	)
							model.eval()
							lowerCAmelCase_         =      model(_UpperCamelCase							,							labels=_UpperCamelCase	)
							print("Pixel and labels shape: {pixel_values.shape}, {labels.shape}"	)
							print("Labels: {labels}"	)
							self.parent.assertEqual(result.logits.shape							,							(self.batch_size, self.type_sequence_label_size)	)

							# test greyscale images
							lowerCAmelCase_         =      1
							lowerCAmelCase_         =      ViTMSNForImageClassification(_UpperCamelCase	)
							model.to(_UpperCamelCase	)
							model.eval()

							lowerCAmelCase_         =      floats_tensor([self.batch_size, 1, self.image_size, self.image_size]	)
							lowerCAmelCase_         =      model(_UpperCamelCase	)
							self.parent.assertEqual(result.logits.shape							,							(self.batch_size, self.type_sequence_label_size)	)




				def 	__a		(   self	)							-> Union[str, Any]:
							lowerCAmelCase_         =      self.prepare_config_and_inputs()
							lowerCAmelCase_      ,    lowerCAmelCase_      ,    lowerCAmelCase_         =      config_and_inputs
							lowerCAmelCase_         =      {"pixel_values": pixel_values}
							return config, inputs_dict





@require_torch
class       _lowerCAmelCase   (      __a   , __a   , unittest.TestCase			):
				_lowercase     						=(ViTMSNModel, ViTMSNForImageClassification) if is_torch_available() else ()
				_lowercase     						=(
				    {'''feature-extraction''': ViTMSNModel, '''image-classification''': ViTMSNForImageClassification}
				    if is_torch_available()
				    else {}
				)

				_lowercase     						=False
				_lowercase     						=False
				_lowercase     						=False
				_lowercase     						=False




				def 	__a		(   self	)							-> Optional[int]:
							lowerCAmelCase_         =      ViTMSNModelTester(self	)
							lowerCAmelCase_         =      ConfigTester(self							,							config_class=_UpperCamelCase							,							has_text_modality=_UpperCamelCase							,							hidden_size=37	)




				def 	__a		(   self	)							-> Optional[int]:
							self.config_tester.run_common_tests()




				@unittest.skip(reason="ViTMSN does not use inputs_embeds"	)
				def 	__a		(   self	)							-> str:
							pass




				def 	__a		(   self	)							-> Any:
							lowerCAmelCase_      ,    lowerCAmelCase_         =      self.model_tester.prepare_config_and_inputs_for_common()

							for model_class in self.all_model_classes:
										lowerCAmelCase_         =      model_class(_UpperCamelCase	)
										self.assertIsInstance(model.get_input_embeddings()							,							(nn.Module)	)
										lowerCAmelCase_         =      model.get_output_embeddings()
										self.assertTrue(x is None or isinstance(_UpperCamelCase							,							nn.Linear	)	)




				def 	__a		(   self	)							-> Optional[Any]:
							lowerCAmelCase_      ,    lowerCAmelCase_         =      self.model_tester.prepare_config_and_inputs_for_common()

							for model_class in self.all_model_classes:
										lowerCAmelCase_         =      model_class(_UpperCamelCase	)
										lowerCAmelCase_         =      inspect.signature(model.forward	)
										# signature.parameters is an OrderedDict => so arg_names order is deterministic
										lowerCAmelCase_         =      [*signature.parameters.keys()]

										lowerCAmelCase_         =      ["pixel_values"]
										self.assertListEqual(arg_names[:1]							,							_UpperCamelCase	)




				def 	__a		(   self	)							-> str:
							lowerCAmelCase_         =      self.model_tester.prepare_config_and_inputs()
							self.model_tester.create_and_check_model(*_UpperCamelCase	)




				def 	__a		(   self	)							-> Any:
							lowerCAmelCase_         =      self.model_tester.prepare_config_and_inputs()
							self.model_tester.create_and_check_for_image_classification(*_UpperCamelCase	)




				@slow
				def 	__a		(   self	)							-> Union[str, Any]:
							for model_name in VIT_MSN_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
										lowerCAmelCase_         =      ViTMSNModel.from_pretrained(_UpperCamelCase	)
										self.assertIsNotNone(_UpperCamelCase	)






def   lowerCamelCase__							(							):




			"""simple docstring"""


			lowerCAmelCase_         =      Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"							)
			return image





@require_torch
@require_vision
class       _lowerCAmelCase   (      unittest.TestCase			):




				@cached_property
				def 	__a		(   self	)							-> List[str]:
							return ViTImageProcessor.from_pretrained("facebook/vit-msn-small"	) if is_vision_available() else None




				@slow
				def 	__a		(   self	)							-> int:
							torch.manual_seed(2	)
							lowerCAmelCase_         =      ViTMSNForImageClassification.from_pretrained("facebook/vit-msn-small"	).to(_UpperCamelCase	)

							lowerCAmelCase_         =      self.default_image_processor
							lowerCAmelCase_         =      prepare_img()
							lowerCAmelCase_         =      image_processor(images=_UpperCamelCase							,							return_tensors="pt"	).to(_UpperCamelCase	)

							# forward pass
							with torch.no_grad():
										lowerCAmelCase_         =      model(**_UpperCamelCase	)

							# verify the logits
							lowerCAmelCase_         =      torch.Size((1, 1_000)	)
							self.assertEqual(outputs.logits.shape							,							_UpperCamelCase	)

							lowerCAmelCase_         =      torch.tensor([-0.0803, -0.4454, -0.2375]	).to(_UpperCamelCase	)

							self.assertTrue(torch.allclose(outputs.logits[0, :3]							,							_UpperCamelCase							,							atol=1e-4	)	)



