



"""simple docstring"""







import unittest

from transformers import AlbertTokenizer, AlbertTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


UpperCamelCase     =							get_tests_dir("""fixtures/spiece.model""")






@require_sentencepiece
@require_tokenizers
class       UpperCamelCase__			(   _lowerCAmelCase       ,		unittest.TestCase      ):

			"""simple docstring"""


			A__	:					Tuple							  =     AlbertTokenizer
			A__	:					Any							  =     AlbertTokenizerFast
			A__	:					List[str]							  =     True
			A__	:					Optional[Any]							  =     True
			A__	:					Tuple							  =     True


			def   snake_case__	(      self		)      ->	Any:
				super().setUp()

				# We have a SentencePiece fixture for testing
				A__											=					AlbertTokenizer(SCREAMING_SNAKE_CASE__		)
				tokenizer.save_pretrained(self.tmpdirname		)


			def   snake_case__	(      self						,	SCREAMING_SNAKE_CASE__		)      ->	Dict:
				A__											=					"this is a test"
				A__											=					"this is a test"
				return input_text, output_text


			def   snake_case__	(      self		)      ->	List[str]:
				A__											=					"<pad>"
				A__											=					0

				self.assertEqual(self.get_tokenizer()._convert_token_to_id(SCREAMING_SNAKE_CASE__		)						,	SCREAMING_SNAKE_CASE__		)
				self.assertEqual(self.get_tokenizer()._convert_id_to_token(SCREAMING_SNAKE_CASE__		)						,	SCREAMING_SNAKE_CASE__		)


			def   snake_case__	(      self		)      ->	Tuple:
				A__											=					list(self.get_tokenizer().get_vocab().keys()		)

				self.assertEqual(vocab_keys[0]						,	"<pad>"		)
				self.assertEqual(vocab_keys[1]						,	"<unk>"		)
				self.assertEqual(vocab_keys[-1]						,	"▁eloquent"		)
				self.assertEqual(len(SCREAMING_SNAKE_CASE__		)						,	30000		)


			def   snake_case__	(      self		)      ->	List[str]:
				self.assertEqual(self.get_tokenizer().vocab_size						,	30000		)


			def   snake_case__	(      self		)      ->	Optional[Any]:
				if not self.test_rust_tokenizer:
					return

				A__											=					self.get_tokenizer()
				A__											=					self.get_rust_tokenizer()

				A__											=					"I was born in 92000, and this is falsé."

				A__											=					tokenizer.tokenize(SCREAMING_SNAKE_CASE__		)
				A__											=					rust_tokenizer.tokenize(SCREAMING_SNAKE_CASE__		)
				self.assertListEqual(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__		)

				A__											=					tokenizer.encode(SCREAMING_SNAKE_CASE__						,	add_special_tokens=SCREAMING_SNAKE_CASE__		)
				A__											=					rust_tokenizer.encode(SCREAMING_SNAKE_CASE__						,	add_special_tokens=SCREAMING_SNAKE_CASE__		)
				self.assertListEqual(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__		)

				A__											=					self.get_rust_tokenizer()
				A__											=					tokenizer.encode(SCREAMING_SNAKE_CASE__		)
				A__											=					rust_tokenizer.encode(SCREAMING_SNAKE_CASE__		)
				self.assertListEqual(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__		)


			def   snake_case__	(      self		)      ->	str:
				A__											=					AlbertTokenizer(SCREAMING_SNAKE_CASE__						,	keep_accents=SCREAMING_SNAKE_CASE__		)

				A__											=					tokenizer.tokenize("This is a test"		)
				self.assertListEqual(SCREAMING_SNAKE_CASE__						,	["▁this", "▁is", "▁a", "▁test"]		)

				self.assertListEqual(tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__		)						,	[48, 25, 21, 1289]		)

				A__											=					tokenizer.tokenize("I was born in 92000, and this is falsé."		)
				self.assertListEqual(
				    SCREAMING_SNAKE_CASE__						,	["▁i", "▁was", "▁born", "▁in", "▁9", "2000", ",", "▁and", "▁this", "▁is", "▁fal", "s", "é", "."]		)
				A__											=					tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__		)
				self.assertListEqual(SCREAMING_SNAKE_CASE__						,	[31, 23, 386, 19, 561, 3050, 15, 17, 48, 25, 8256, 18, 1, 9]		)

				A__											=					tokenizer.convert_ids_to_tokens(SCREAMING_SNAKE_CASE__		)
				self.assertListEqual(
				    SCREAMING_SNAKE_CASE__						,	["▁i", "▁was", "▁born", "▁in", "▁9", "2000", ",", "▁and", "▁this", "▁is", "▁fal", "s", "<unk>", "."]						,	)


			def   snake_case__	(      self		)      ->	Union[str, Any]:
				A__											=					AlbertTokenizer(SCREAMING_SNAKE_CASE__		)

				A__											=					tokenizer.encode("sequence builders"		)
				A__											=					tokenizer.encode("multi-sequence build"		)

				A__											=					tokenizer.build_inputs_with_special_tokens(SCREAMING_SNAKE_CASE__		)
				A__											=					tokenizer.build_inputs_with_special_tokens(SCREAMING_SNAKE_CASE__						,	SCREAMING_SNAKE_CASE__		)

				assert encoded_sentence == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id]
				assert encoded_pair == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id] + text_a + [
				    tokenizer.sep_token_id
				]







			@slow
			def   snake_case__	(      self		)      ->	str:
				# fmt: off
				A__											=					{"attention_mask": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], "input_ids": [[2, 21970, 13, 5, 6092, 167, 28, 7103, 2153, 673, 8, 7028, 12051, 18, 17, 7103, 2153, 673, 8, 3515, 18684, 8, 4461, 6, 1927, 297, 8, 12060, 2607, 18, 13, 5, 4461, 15, 10538, 38, 8, 135, 15, 822, 58, 15, 993, 10363, 15, 1460, 8005, 4461, 15, 993, 255, 2328, 9, 9, 9, 6, 26, 1112, 816, 3260, 13, 5, 103, 2377, 6, 17, 1112, 816, 2782, 13, 5, 103, 10641, 6, 29, 84, 2512, 2430, 782, 18684, 2761, 19, 808, 2430, 2556, 17, 855, 1480, 9477, 4091, 128, 11712, 15, 7103, 2153, 673, 17, 24883, 9990, 9, 3], [2, 11502, 25, 1006, 20, 782, 8, 11809, 855, 1732, 19393, 18667, 37, 367, 21018, 69, 1854, 34, 11860, 19124, 27, 156, 225, 17, 193, 4141, 19, 65, 9124, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 14, 2231, 886, 2385, 17659, 84, 14, 16792, 1952, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], "token_type_ids": [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
				# fmt: on

				self.tokenizer_integration_test_util(
				    expected_encoding=SCREAMING_SNAKE_CASE__						,	model_name="albert-base-v2"						,	revision="6b6560eaf5ff2e250b00c50f380c5389a9c2d82e"						,	)









"""simple docstring"""







import math

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


UpperCamelCase     =							logging.get_logger(__name__)

UpperCamelCase     =							{
    """facebook/data2vec-base-960h""": """https://huggingface.co/facebook/data2vec-audio-base-960h/resolve/main/config.json""",
    # See all Data2VecAudio models at https://huggingface.co/models?filter=data2vec-audio
}






class       UpperCamelCase__			(   _lowerCAmelCase      ):

			"""simple docstring"""


			A__	:					List[str]							  =     "data2vec-audio"


			def __init__(      self						,	SCREAMING_SNAKE_CASE__=32						,	SCREAMING_SNAKE_CASE__=768						,	SCREAMING_SNAKE_CASE__=12						,	SCREAMING_SNAKE_CASE__=12						,	SCREAMING_SNAKE_CASE__=3072						,	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.1						,	SCREAMING_SNAKE_CASE__=0.1						,	SCREAMING_SNAKE_CASE__=0.0_2						,	SCREAMING_SNAKE_CASE__=1e-5						,	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__=16						,	SCREAMING_SNAKE_CASE__=19						,	SCREAMING_SNAKE_CASE__=5						,	SCREAMING_SNAKE_CASE__=0.0_5						,	SCREAMING_SNAKE_CASE__=10						,	SCREAMING_SNAKE_CASE__=2						,	SCREAMING_SNAKE_CASE__=0.0						,	SCREAMING_SNAKE_CASE__=10						,	SCREAMING_SNAKE_CASE__=0						,	SCREAMING_SNAKE_CASE__="sum"						,	SCREAMING_SNAKE_CASE__=False						,	SCREAMING_SNAKE_CASE__=False						,	SCREAMING_SNAKE_CASE__=256						,	SCREAMING_SNAKE_CASE__=(512, 512, 512, 512, 1500)						,	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__						,	)      ->	Dict:
				super().__init__(**SCREAMING_SNAKE_CASE__						,	pad_token_id=SCREAMING_SNAKE_CASE__						,	bos_token_id=SCREAMING_SNAKE_CASE__						,	eos_token_id=SCREAMING_SNAKE_CASE__		)
				A__											=					hidden_size
				A__											=					feat_extract_activation
				A__											=					list(SCREAMING_SNAKE_CASE__		)
				A__											=					list(SCREAMING_SNAKE_CASE__		)
				A__											=					list(SCREAMING_SNAKE_CASE__		)
				A__											=					conv_bias
				A__											=					num_conv_pos_embeddings
				A__											=					num_conv_pos_embedding_groups
				A__											=					conv_pos_kernel_size
				A__											=					len(self.conv_dim		)
				A__											=					num_hidden_layers
				A__											=					intermediate_size
				A__											=					hidden_act
				A__											=					num_attention_heads
				A__											=					hidden_dropout
				A__											=					attention_dropout
				A__											=					activation_dropout
				A__											=					feat_proj_dropout
				A__											=					final_dropout
				A__											=					layerdrop
				A__											=					layer_norm_eps
				A__											=					initializer_range
				A__											=					vocab_size
				A__											=					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
				A__											=					mask_time_prob
				A__											=					mask_time_length
				A__											=					mask_time_min_masks
				A__											=					mask_feature_prob
				A__											=					mask_feature_length
				A__											=					mask_feature_min_masks

				# ctc loss
				A__											=					ctc_loss_reduction
				A__											=					ctc_zero_infinity

				# adapter
				A__											=					add_adapter
				A__											=					adapter_kernel_size
				A__											=					adapter_stride
				A__											=					num_adapter_layers
				A__											=					output_hidden_size or hidden_size

				# SequenceClassification-specific parameter. Feel free to ignore for other classes.
				A__											=					classifier_proj_size

				# XVector-specific parameters. Feel free to ignore for other classes.
				A__											=					list(SCREAMING_SNAKE_CASE__		)
				A__											=					list(SCREAMING_SNAKE_CASE__		)
				A__											=					list(SCREAMING_SNAKE_CASE__		)
				A__											=					xvector_output_dim







			@property
			def   snake_case__	(      self		)      ->	List[str]:
				return math.prod(self.conv_stride		)




