




import unittest

from transformers import JukeboxTokenizer
from transformers.testing_utils import require_torch

class     __a(	unittest.TestCase  ):






    """simple docstring"""





    lowerCAmelCase         = JukeboxTokenizer
    lowerCAmelCase         = {
        '''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 				a__ ( self    )					->						str:
         import torch

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

         UpperCAmelCase_     :				List[Any]  =     JukeboxTokenizer.from_pretrained('''openai/jukebox-5b-lyrics'''    )
         UpperCAmelCase_     :				int  =     tokenizer(**self.metas    )['''input_ids''']
         # fmt: off
         UpperCAmelCase_     :				Dict  =     [
             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]    )    )





import functools
import operator

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


__a							     =					logging.get_logger(__name__)

__a							     =					{
    'facebook/wav2vec2-base-960h': 'https://huggingface.co/facebook/wav2vec2-base-960h/resolve/main/config.json',
    # See all Wav2Vec2 models at https://huggingface.co/models?filter=wav2vec2
}

class     __a(	_a  ):






    """simple docstring"""





    lowerCAmelCase         = '''wav2vec2'''





    def __init__( self  ,_SCREAMING_SNAKE_CASE=32  ,_SCREAMING_SNAKE_CASE=768  ,_SCREAMING_SNAKE_CASE=12  ,_SCREAMING_SNAKE_CASE=12  ,_SCREAMING_SNAKE_CASE=3_072  ,_SCREAMING_SNAKE_CASE="gelu"  ,_SCREAMING_SNAKE_CASE=0.1  ,_SCREAMING_SNAKE_CASE=0.1  ,_SCREAMING_SNAKE_CASE=0.1  ,_SCREAMING_SNAKE_CASE=0.0  ,_SCREAMING_SNAKE_CASE=0.0  ,_SCREAMING_SNAKE_CASE=0.1  ,_SCREAMING_SNAKE_CASE=0.1  ,_SCREAMING_SNAKE_CASE=0.02  ,_SCREAMING_SNAKE_CASE=1e-5  ,_SCREAMING_SNAKE_CASE="group"  ,_SCREAMING_SNAKE_CASE="gelu"  ,_SCREAMING_SNAKE_CASE=(512, 512, 512, 512, 512, 512, 512)  ,_SCREAMING_SNAKE_CASE=(5, 2, 2, 2, 2, 2, 2)  ,_SCREAMING_SNAKE_CASE=(10, 3, 3, 3, 3, 2, 2)  ,_SCREAMING_SNAKE_CASE=False  ,_SCREAMING_SNAKE_CASE=128  ,_SCREAMING_SNAKE_CASE=16  ,_SCREAMING_SNAKE_CASE=False  ,_SCREAMING_SNAKE_CASE=True  ,_SCREAMING_SNAKE_CASE=0.05  ,_SCREAMING_SNAKE_CASE=10  ,_SCREAMING_SNAKE_CASE=2  ,_SCREAMING_SNAKE_CASE=0.0  ,_SCREAMING_SNAKE_CASE=10  ,_SCREAMING_SNAKE_CASE=0  ,_SCREAMING_SNAKE_CASE=320  ,_SCREAMING_SNAKE_CASE=2  ,_SCREAMING_SNAKE_CASE=0.1  ,_SCREAMING_SNAKE_CASE=100  ,_SCREAMING_SNAKE_CASE=256  ,_SCREAMING_SNAKE_CASE=256  ,_SCREAMING_SNAKE_CASE=0.1  ,_SCREAMING_SNAKE_CASE="sum"  ,_SCREAMING_SNAKE_CASE=False  ,_SCREAMING_SNAKE_CASE=False  ,_SCREAMING_SNAKE_CASE=256  ,_SCREAMING_SNAKE_CASE=(512, 512, 512, 512, 1_500)  ,_SCREAMING_SNAKE_CASE=(5, 3, 3, 1, 1)  ,_SCREAMING_SNAKE_CASE=(1, 2, 3, 1, 1)  ,_SCREAMING_SNAKE_CASE=512  ,_SCREAMING_SNAKE_CASE=0  ,_SCREAMING_SNAKE_CASE=1  ,_SCREAMING_SNAKE_CASE=2  ,_SCREAMING_SNAKE_CASE=False  ,_SCREAMING_SNAKE_CASE=3  ,_SCREAMING_SNAKE_CASE=2  ,_SCREAMING_SNAKE_CASE=3  ,_SCREAMING_SNAKE_CASE=None  ,_SCREAMING_SNAKE_CASE=None  ,**_SCREAMING_SNAKE_CASE  ,)					->						Optional[int]:
         super().__init__(**_SCREAMING_SNAKE_CASE  ,pad_token_id=_SCREAMING_SNAKE_CASE  ,bos_token_id=_SCREAMING_SNAKE_CASE  ,eos_token_id=_SCREAMING_SNAKE_CASE    )
         UpperCAmelCase_     :				int  =     hidden_size
         UpperCAmelCase_     :				Tuple  =     feat_extract_norm
         UpperCAmelCase_     :				List[Any]  =     feat_extract_activation
         UpperCAmelCase_     :				str  =     list(_SCREAMING_SNAKE_CASE    )
         UpperCAmelCase_     :				Any  =     list(_SCREAMING_SNAKE_CASE    )
         UpperCAmelCase_     :				Tuple  =     list(_SCREAMING_SNAKE_CASE    )
         UpperCAmelCase_     :				Dict  =     conv_bias
         UpperCAmelCase_     :				str  =     num_conv_pos_embeddings
         UpperCAmelCase_     :				Any  =     num_conv_pos_embedding_groups
         UpperCAmelCase_     :				Tuple  =     len(self.conv_dim    )
         UpperCAmelCase_     :				Union[str, Any]  =     num_hidden_layers
         UpperCAmelCase_     :				Dict  =     intermediate_size
         UpperCAmelCase_     :				Any  =     hidden_act
         UpperCAmelCase_     :				Any  =     num_attention_heads
         UpperCAmelCase_     :				str  =     hidden_dropout
         UpperCAmelCase_     :				int  =     attention_dropout
         UpperCAmelCase_     :				Tuple  =     activation_dropout
         UpperCAmelCase_     :				List[str]  =     feat_proj_dropout
         UpperCAmelCase_     :				int  =     final_dropout
         UpperCAmelCase_     :				Union[str, Any]  =     layerdrop
         UpperCAmelCase_     :				Optional[Any]  =     layer_norm_eps
         UpperCAmelCase_     :				str  =     initializer_range
         UpperCAmelCase_     :				List[str]  =     vocab_size
         UpperCAmelCase_     :				Optional[int]  =     do_stable_layer_norm
         UpperCAmelCase_     :				Optional[int]  =     use_weighted_layer_sum

         if (
             (len(self.conv_stride    ) != self.num_feat_extract_layers)
             or (len(self.conv_kernel    ) != self.num_feat_extract_layers)
             or (len(self.conv_dim    ) != self.num_feat_extract_layers)
         ):
              raise ValueError(
                  '''Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =='''
                  ''' `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ='''
                  f''' {len(self.conv_dim    )}`, `len(config.conv_stride) = {len(self.conv_stride    )}`,'''
                  f''' `len(config.conv_kernel) = {len(self.conv_kernel    )}`.'''    )

         # fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
         UpperCAmelCase_     :				Optional[int]  =     apply_spec_augment
         UpperCAmelCase_     :				Tuple  =     mask_time_prob
         UpperCAmelCase_     :				Optional[Any]  =     mask_time_length
         UpperCAmelCase_     :				Union[str, Any]  =     mask_time_min_masks
         UpperCAmelCase_     :				Optional[Any]  =     mask_feature_prob
         UpperCAmelCase_     :				str  =     mask_feature_length
         UpperCAmelCase_     :				Dict  =     mask_feature_min_masks

         # parameters for pretraining with codevector quantized representations
         UpperCAmelCase_     :				Union[str, Any]  =     num_codevectors_per_group
         UpperCAmelCase_     :				Any  =     num_codevector_groups
         UpperCAmelCase_     :				Union[str, Any]  =     contrastive_logits_temperature
         UpperCAmelCase_     :				List[str]  =     feat_quantizer_dropout
         UpperCAmelCase_     :				Dict  =     num_negatives
         UpperCAmelCase_     :				List[str]  =     codevector_dim
         UpperCAmelCase_     :				List[str]  =     proj_codevector_dim
         UpperCAmelCase_     :				str  =     diversity_loss_weight

         # ctc loss
         UpperCAmelCase_     :				List[Any]  =     ctc_loss_reduction
         UpperCAmelCase_     :				List[str]  =     ctc_zero_infinity

         # adapter
         UpperCAmelCase_     :				Optional[Any]  =     add_adapter
         UpperCAmelCase_     :				Any  =     adapter_kernel_size
         UpperCAmelCase_     :				Optional[int]  =     adapter_stride
         UpperCAmelCase_     :				List[Any]  =     num_adapter_layers
         UpperCAmelCase_     :				Optional[Any]  =     output_hidden_size or hidden_size
         UpperCAmelCase_     :				Optional[int]  =     adapter_attn_dim

         # SequenceClassification-specific parameter. Feel free to ignore for other classes.
         UpperCAmelCase_     :				List[str]  =     classifier_proj_size

         # XVector-specific parameters. Feel free to ignore for other classes.
         UpperCAmelCase_     :				List[str]  =     list(_SCREAMING_SNAKE_CASE    )
         UpperCAmelCase_     :				int  =     list(_SCREAMING_SNAKE_CASE    )
         UpperCAmelCase_     :				Dict  =     list(_SCREAMING_SNAKE_CASE    )
         UpperCAmelCase_     :				Any  =     xvector_output_dim





    @property
    def 				a__ ( self    )					->						Any:
         return functools.reduce(operator.mul  ,self.conv_stride  ,1    )