import unittest

from transformers import JukeboxTokenizer
from transformers.testing_utils import require_torch

class        UpperCamelCase						(				unittest.TestCase				):
						a__		:List[Any]      =			JukeboxTokenizer
						a__		:Tuple      =			{
						    '''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        A_							(self						)				->				List[Any]:
												import torch

												UpperCamelCase_		:							Any  =		JukeboxTokenizer.from_pretrained("""openai/jukebox-1b-lyrics"""						)
												UpperCamelCase_		:							Any  =		tokenizer(**self.metas						)["""input_ids"""]
												# fmt: off
												UpperCamelCase_		:							List[str]  =		[
												    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        A_							(self						)				->				Union[str, Any]:
												import torch

												UpperCamelCase_		:							str  =		JukeboxTokenizer.from_pretrained("""openai/jukebox-5b-lyrics"""						)
												UpperCamelCase_		:							str  =		tokenizer(**self.metas						)["""input_ids"""]
												# fmt: off
												UpperCamelCase_		:							Union[str, Any]  =		[
												    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]						)						)









'''simple docstring'''



from ...configuration_utils import PretrainedConfig
from ...utils import logging


UpperCAmelCase					:			Tuple       =	logging.get_logger(__name__)

UpperCAmelCase					:			Any       =	{'ctrl': 'https://huggingface.co/ctrl/resolve/main/config.json'}







class 		lowerCAmelCase__  ( a   ):



 """simple docstring"""



 lowerCAmelCase__       = "ctrl"
 lowerCAmelCase__       = ["past_key_values"]
 lowerCAmelCase__       = {
     "max_position_embeddings": "n_positions",
     "hidden_size": "n_embd",
     "num_attention_heads": "n_head",
     "num_hidden_layers": "n_layer",
 }
 def __init__(						self   :			Tuple   ,				__SCREAMING_SNAKE_CASE   :			Tuple=246_534   ,				__SCREAMING_SNAKE_CASE   :			str=256   ,				__SCREAMING_SNAKE_CASE   :			Optional[Any]=1_280   ,				__SCREAMING_SNAKE_CASE   :			Dict=8_192   ,				__SCREAMING_SNAKE_CASE   :			Union[str, Any]=48   ,				__SCREAMING_SNAKE_CASE   :			Dict=16   ,				__SCREAMING_SNAKE_CASE   :			Union[str, Any]=0.1   ,				__SCREAMING_SNAKE_CASE   :			str=0.1   ,				__SCREAMING_SNAKE_CASE   :			Union[str, Any]=1E-6   ,				__SCREAMING_SNAKE_CASE   :			Tuple=0.02   ,				__SCREAMING_SNAKE_CASE   :			Tuple=True   ,				**__SCREAMING_SNAKE_CASE   :			Union[str, Any]   ,				)    ->					Tuple:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = vocab_size
      __SCREAMING_SNAKE_CASE      = n_positions
      __SCREAMING_SNAKE_CASE      = n_embd
      __SCREAMING_SNAKE_CASE      = n_layer
      __SCREAMING_SNAKE_CASE      = n_head
      __SCREAMING_SNAKE_CASE      = dff
      __SCREAMING_SNAKE_CASE      = resid_pdrop
      __SCREAMING_SNAKE_CASE      = embd_pdrop
      __SCREAMING_SNAKE_CASE      = layer_norm_epsilon
      __SCREAMING_SNAKE_CASE      = initializer_range

      __SCREAMING_SNAKE_CASE      = use_cache

      super().__init__(**__SCREAMING_SNAKE_CASE     )






