





import unittest

from transformers import JukeboxTokenizer
from transformers.testing_utils import require_torch



class        _SCREAMING_SNAKE_CASE						(     unittest.TestCase   ):







 '''simple docstring'''
 lowercase_		=      JukeboxTokenizer
 lowercase_		=      {
     "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        ",
 }

 @require_torch
 def 							SCREAMING_SNAKE_CASE_ (self    :       Union[str, Any])	->Union[str, Any]:



   '''simple docstring'''



   import torch

   lowerCamelCase__:				Union[str, Any]        =JukeboxTokenizer.from_pretrained("openai/jukebox-1b-lyrics")
   lowerCamelCase__:				List[Any]        =tokenizer(**self.metas)["input_ids"]
   # fmt: off
   lowerCamelCase__:				Optional[int]        =[
       torch.tensor([[
           0, 0, 0, 7_169, 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, 1_069, 11]]),
       torch.tensor([[0, 0, 0, 1_069, 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 							SCREAMING_SNAKE_CASE_ (self    :       int)	->List[Any]:



   '''simple docstring'''



   import torch

   lowerCamelCase__:				Optional[Any]        =JukeboxTokenizer.from_pretrained("openai/jukebox-5b-lyrics")
   lowerCamelCase__:				str        =tokenizer(**self.metas)["input_ids"]
   # fmt: off
   lowerCamelCase__:				str        =[
       torch.tensor([[
           0, 0, 0, 1_069, 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, 1_069, 11, -1, -1, -1, -1]]),
       torch.tensor([[0, 0, 0, 1_069, 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]))








from __future__ import annotations

import inspect
import unittest

from transformers import ViTConfig
from transformers.testing_utils import require_tf, require_vision, slow
from transformers.utils import cached_property, is_tf_available, is_vision_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_tf_common import TFModelTesterMixin, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_tf_available():
     import tensorflow as tf

     from transformers import TFViTForImageClassification, TFViTModel


if is_vision_available():
     from PIL import Image

     from transformers import ViTImageProcessor



class        _SCREAMING_SNAKE_CASE						:







 '''simple docstring'''

 def __init__(self    :       Optional[Any]	,			UpperCAmelCase_    :       Optional[int]	,			UpperCAmelCase_    :       List[Any]=13	,			UpperCAmelCase_    :       Dict=30	,			UpperCAmelCase_    :       str=2	,			UpperCAmelCase_    :       Union[str, Any]=3	,			UpperCAmelCase_    :       Union[str, Any]=True	,			UpperCAmelCase_    :       List[str]=True	,			UpperCAmelCase_    :       Dict=32	,			UpperCAmelCase_    :       List[Any]=2	,			UpperCAmelCase_    :       List[str]=4	,			UpperCAmelCase_    :       List[str]=37	,			UpperCAmelCase_    :       List[str]="gelu"	,			UpperCAmelCase_    :       List[Any]=0.1	,			UpperCAmelCase_    :       Optional[Any]=0.1	,			UpperCAmelCase_    :       str=10	,			UpperCAmelCase_    :       str=0.02	,			UpperCAmelCase_    :       Optional[int]=3	,			UpperCAmelCase_    :       Dict=None	,			)	->Union[str, Any]:



   '''simple docstring'''



   lowerCamelCase__:				int        =parent
   lowerCamelCase__:				Any        =batch_size
   lowerCamelCase__:				List[str]        =image_size
   lowerCamelCase__:				Tuple        =patch_size
   lowerCamelCase__:				Tuple        =num_channels
   lowerCamelCase__:				Tuple        =is_training
   lowerCamelCase__:				Optional[int]        =use_labels
   lowerCamelCase__:				Dict        =hidden_size
   lowerCamelCase__:				Dict        =num_hidden_layers
   lowerCamelCase__:				Optional[Any]        =num_attention_heads
   lowerCamelCase__:				Union[str, Any]        =intermediate_size
   lowerCamelCase__:				List[str]        =hidden_act
   lowerCamelCase__:				Optional[Any]        =hidden_dropout_prob
   lowerCamelCase__:				str        =attention_probs_dropout_prob
   lowerCamelCase__:				str        =type_sequence_label_size
   lowerCamelCase__:				Optional[Any]        =initializer_range
   lowerCamelCase__:				Optional[int]        =scope

   # in ViT, the seq length equals the number of patches + 1 (we add 1 for the [CLS] token)
   lowerCamelCase__:				List[str]        =(image_size // patch_size) ** 2
   lowerCamelCase__:				Optional[Any]        =num_patches + 1

 def 							SCREAMING_SNAKE_CASE_ (self    :       Optional[Any])	->List[str]:



   '''simple docstring'''



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

   lowerCamelCase__:				List[str]        =None
   if self.use_labels:
     lowerCamelCase__:				Any        =ids_tensor([self.batch_size]	,			self.type_sequence_label_size)

   lowerCamelCase__:				List[str]        =self.get_config()

   return config, pixel_values, labels

 def 							SCREAMING_SNAKE_CASE_ (self    :       Optional[int])	->List[str]:



   '''simple docstring'''



   return ViTConfig(
       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	,			is_decoder=UpperCAmelCase_	,			initializer_range=self.initializer_range	,			)

 def 							SCREAMING_SNAKE_CASE_ (self    :       int	,			UpperCAmelCase_    :       int	,			UpperCAmelCase_    :       Optional[Any]	,			UpperCAmelCase_    :       Tuple)	->Tuple:



   '''simple docstring'''



   lowerCamelCase__:				List[str]        =TFViTModel(config=UpperCAmelCase_)
   lowerCamelCase__:				Tuple        =model(UpperCAmelCase_	,			training=UpperCAmelCase_)
   self.parent.assertEqual(result.last_hidden_state.shape	,			(self.batch_size, self.seq_length, self.hidden_size))

   # Test with an image with different size than the one specified in config.
   lowerCamelCase__:				Dict        =self.image_size // 2
   lowerCamelCase__:				List[str]        =pixel_values[:, :, :image_size, :image_size]
   lowerCamelCase__:				List[str]        =model(UpperCAmelCase_	,			interpolate_pos_encoding=UpperCAmelCase_	,			training=UpperCAmelCase_)
   lowerCamelCase__:				List[str]        =(image_size // self.patch_size) ** 2 + 1
   self.parent.assertEqual(result.last_hidden_state.shape	,			(self.batch_size, seq_length, self.hidden_size))

 def 							SCREAMING_SNAKE_CASE_ (self    :       Optional[Any]	,			UpperCAmelCase_    :       Tuple	,			UpperCAmelCase_    :       int	,			UpperCAmelCase_    :       Any)	->str:



   '''simple docstring'''



   lowerCamelCase__:				Any        =self.type_sequence_label_size
   lowerCamelCase__:				str        =TFViTForImageClassification(UpperCAmelCase_)
   lowerCamelCase__:				List[str]        =model(UpperCAmelCase_	,			labels=UpperCAmelCase_	,			training=UpperCAmelCase_)
   self.parent.assertEqual(result.logits.shape	,			(self.batch_size, self.type_sequence_label_size))

   # Test with an image with different size than the one specified in config.
   lowerCamelCase__:				Union[str, Any]        =self.image_size // 2
   lowerCamelCase__:				Dict        =pixel_values[:, :, :image_size, :image_size]
   lowerCamelCase__:				Tuple        =model(UpperCAmelCase_	,			interpolate_pos_encoding=UpperCAmelCase_	,			training=UpperCAmelCase_)
   self.parent.assertEqual(result.logits.shape	,			(self.batch_size, self.type_sequence_label_size))

   # test greyscale images
   lowerCamelCase__:				int        =1
   lowerCamelCase__:				List[str]        =TFViTForImageClassification(UpperCAmelCase_)
   lowerCamelCase__:				List[str]        =floats_tensor([self.batch_size, 1, self.image_size, self.image_size])
   lowerCamelCase__:				Any        =model(UpperCAmelCase_)
   self.parent.assertEqual(result.logits.shape	,			(self.batch_size, self.type_sequence_label_size))







 def 							SCREAMING_SNAKE_CASE_ (self    :       str)	->Union[str, Any]:



   '''simple docstring'''



   lowerCamelCase__:				Optional[Any]        =self.prepare_config_and_inputs()
   lowerCamelCase__  , lowerCamelCase__  , lowerCamelCase__:				Union[str, Any]        =config_and_inputs
   lowerCamelCase__:				Optional[Any]        ={"pixel_values": pixel_values}
   return config, inputs_dict



@require_tf
class        _SCREAMING_SNAKE_CASE						(     __SCREAMING_SNAKE_CASE   ,							__SCREAMING_SNAKE_CASE   ,							unittest.TestCase   ):







 '''simple docstring'''
 lowercase_		=      (TFViTModel, TFViTForImageClassification) if is_tf_available() else ()
 lowercase_		=      (
     {"feature-extraction": TFViTModel, "image-classification": TFViTForImageClassification}
     if is_tf_available()
     else {}
 )

 lowercase_		=      False
 lowercase_		=      False
 lowercase_		=      False

 def 							SCREAMING_SNAKE_CASE_ (self    :       List[str])	->Dict:



   '''simple docstring'''



   lowerCamelCase__:				int        =TFViTModelTester(self)
   lowerCamelCase__:				List[str]        =ConfigTester(self	,			config_class=UpperCAmelCase_	,			has_text_modality=UpperCAmelCase_	,			hidden_size=37)

 def 							SCREAMING_SNAKE_CASE_ (self    :       str)	->Tuple:



   '''simple docstring'''



   self.config_tester.run_common_tests()

 @unittest.skip(reason="ViT does not use inputs_embeds")
 def 							SCREAMING_SNAKE_CASE_ (self    :       List[str])	->Any:



   '''simple docstring'''



   pass

 @unittest.skip(reason="ViT does not use inputs_embeds")
 def 							SCREAMING_SNAKE_CASE_ (self    :       int)	->str:



   '''simple docstring'''



   pass

 def 							SCREAMING_SNAKE_CASE_ (self    :       Tuple)	->Optional[int]:



   '''simple docstring'''



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

   for model_class in self.all_model_classes:
     lowerCamelCase__:				int        =model_class(UpperCAmelCase_)
     self.assertIsInstance(model.get_input_embeddings()	,			(tf.keras.layers.Layer))
     lowerCamelCase__:				Tuple        =model.get_output_embeddings()
     self.assertTrue(x is None or isinstance(UpperCAmelCase_	,			tf.keras.layers.Layer))

 def 							SCREAMING_SNAKE_CASE_ (self    :       Union[str, Any])	->Dict:



   '''simple docstring'''



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

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

     lowerCamelCase__:				str        =["pixel_values"]
     self.assertListEqual(arg_names[:1]	,			UpperCAmelCase_)

 def 							SCREAMING_SNAKE_CASE_ (self    :       int)	->Union[str, Any]:



   '''simple docstring'''



   lowerCamelCase__:				Optional[int]        =self.model_tester.prepare_config_and_inputs()
   self.model_tester.create_and_check_model(*UpperCAmelCase_)

 def 							SCREAMING_SNAKE_CASE_ (self    :       Optional[Any])	->Any:



   '''simple docstring'''



   lowerCamelCase__:				List[str]        =self.model_tester.prepare_config_and_inputs()
   self.model_tester.create_and_check_for_image_classification(*UpperCAmelCase_)







 @slow
 def 							SCREAMING_SNAKE_CASE_ (self    :       Dict)	->List[Any]:



   '''simple docstring'''



   lowerCamelCase__:				Any        =TFViTModel.from_pretrained("google/vit-base-patch16-224")
   self.assertIsNotNone(UpperCAmelCase_)





def 					lowerCAmelCase_			(	)					->		Tuple:







  """simple docstring"""





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






@require_tf
@require_vision
class        _SCREAMING_SNAKE_CASE						(     unittest.TestCase   ):







 '''simple docstring'''

 @cached_property
 def 							SCREAMING_SNAKE_CASE_ (self    :       str)	->List[Any]:



   '''simple docstring'''



   return ViTImageProcessor.from_pretrained("google/vit-base-patch16-224") if is_vision_available() else None







 @slow
 def 							SCREAMING_SNAKE_CASE_ (self    :       Optional[int])	->Tuple:



   '''simple docstring'''



   lowerCamelCase__:				List[str]        =TFViTForImageClassification.from_pretrained("google/vit-base-patch16-224")

   lowerCamelCase__:				List[str]        =self.default_image_processor
   lowerCamelCase__:				Union[str, Any]        =prepare_img()
   lowerCamelCase__:				List[Any]        =image_processor(images=UpperCAmelCase_	,			return_tensors="tf")

   # forward pass
   lowerCamelCase__:				Dict        =model(**UpperCAmelCase_)

   # verify the logits
   lowerCamelCase__:				List[Any]        =tf.TensorShape((1, 1_000))
   self.assertEqual(outputs.logits.shape	,			UpperCAmelCase_)

   lowerCamelCase__:				List[Any]        =tf.constant([-0.2744, 0.8215, -0.0836])

   tf.debugging.assert_near(outputs.logits[0, :3]	,			UpperCAmelCase_	,			atol=1E-4)

