

_lowerCamelCase       :     Dict           =							"\n# Transformers installation\n! pip install transformers datasets evaluate\n# To install from source instead of the last release, comment the command above and uncomment the following one.\n# ! pip install git+https://github.com/huggingface/transformers.git\n"

_lowerCamelCase       :     Optional[int]           =							[{"type": "code", "content": INSTALL_CONTENT}]
_lowerCamelCase       :     Dict           =							{
    "{processor_class}": "FakeProcessorClass",
    "{model_class}": "FakeModelClass",
    "{object_class}": "FakeObjectClass",
}








import json
import os
import shutil
import tempfile
import unittest

from transformers.models.wavaveca import WavaVecaCTCTokenizer, WavaVecaFeatureExtractor, WavaVecaProcessor
from transformers.models.wavaveca.tokenization_wavaveca import VOCAB_FILES_NAMES
from transformers.utils import FEATURE_EXTRACTOR_NAME

from .test_feature_extraction_wavaveca import floats_list





class       __UpperCAmelCase  ( unittest.TestCase		):



   def  __magic_name__					(							self							:  Dict		):
     UpperCAmelCase :							Tuple								=				'''<pad> <s> </s> <unk> | E T A O N I H S R D L U M W C F G Y P B V K \' X J Q Z'''.split(''' '''		)
     UpperCAmelCase :							List[str]								=				dict(zip(__A,	range(len(__A		)		)		)		)

     UpperCAmelCase :							int								=				{
         '''pad_token''': '''<pad>''',
         '''unk_token''': '''<unk>''',
         '''bos_token''': '''<s>''',
         '''eos_token''': '''</s>''',
     }
     UpperCAmelCase :							str								=				{
         '''feature_size''': 1,
         '''padding_value''': 0.0,
         '''sampling_rate''': 1_6_0_0_0,
         '''return_attention_mask''': False,
         '''do_normalize''': True,
     }

     UpperCAmelCase :							List[Any]								=				tempfile.mkdtemp()
     UpperCAmelCase :							str								=				os.path.join(self.tmpdirname,	VOCAB_FILES_NAMES['''vocab_file''']		)
     UpperCAmelCase :							Tuple								=				os.path.join(self.tmpdirname,	__A		)
     with open(self.vocab_file,	'''w''',	encoding='''utf-8'''		) as fp:
       fp.write(json.dumps(__A		) + '''\n'''		)

     with open(self.feature_extraction_file,	'''w''',	encoding='''utf-8'''		) as fp:
       fp.write(json.dumps(__A		) + '''\n'''		)



   def  __magic_name__					(							self							:  List[Any],	**__A							:  List[Any]		):
     UpperCAmelCase :							str								=				self.add_kwargs_tokens_map.copy()
     kwargs.update(__A		)
     return WavaVecaCTCTokenizer.from_pretrained(self.tmpdirname,	**__A		)



   def  __magic_name__					(							self							:  List[Any],	**__A							:  Union[str, Any]		):
     return WavaVecaFeatureExtractor.from_pretrained(self.tmpdirname,	**__A		)



   def  __magic_name__					(							self							:  Any		):
     shutil.rmtree(self.tmpdirname		)



   def  __magic_name__					(							self							:  str		):
     UpperCAmelCase :							Any								=				self.get_tokenizer()
     UpperCAmelCase :							Optional[int]								=				self.get_feature_extractor()

     UpperCAmelCase :							Tuple								=				WavaVecaProcessor(tokenizer=__A,	feature_extractor=__A		)

     processor.save_pretrained(self.tmpdirname		)
     UpperCAmelCase :							Union[str, Any]								=				WavaVecaProcessor.from_pretrained(self.tmpdirname		)

     self.assertEqual(processor.tokenizer.get_vocab(),	tokenizer.get_vocab()		)
     self.assertIsInstance(processor.tokenizer,	__A		)

     self.assertEqual(processor.feature_extractor.to_json_string(),	feature_extractor.to_json_string()		)
     self.assertIsInstance(processor.feature_extractor,	__A		)



   def  __magic_name__					(							self							:  Optional[int]		):
     UpperCAmelCase :							int								=				WavaVecaProcessor(tokenizer=self.get_tokenizer(),	feature_extractor=self.get_feature_extractor()		)
     processor.save_pretrained(self.tmpdirname		)

     UpperCAmelCase :							Dict								=				self.get_tokenizer(bos_token='''(BOS)''',	eos_token='''(EOS)'''		)
     UpperCAmelCase :							int								=				self.get_feature_extractor(do_normalize=__A,	padding_value=1.0		)

     UpperCAmelCase :							int								=				WavaVecaProcessor.from_pretrained(
         self.tmpdirname,	bos_token='''(BOS)''',	eos_token='''(EOS)''',	do_normalize=__A,	padding_value=1.0		)

     self.assertEqual(processor.tokenizer.get_vocab(),	tokenizer_add_kwargs.get_vocab()		)
     self.assertIsInstance(processor.tokenizer,	__A		)

     self.assertEqual(processor.feature_extractor.to_json_string(),	feature_extractor_add_kwargs.to_json_string()		)
     self.assertIsInstance(processor.feature_extractor,	__A		)



   def  __magic_name__					(							self							:  Union[str, Any]		):
     UpperCAmelCase :							Optional[Any]								=				self.get_feature_extractor()
     UpperCAmelCase :							Optional[int]								=				self.get_tokenizer()

     UpperCAmelCase :							Any								=				WavaVecaProcessor(tokenizer=__A,	feature_extractor=__A		)

     UpperCAmelCase :							Tuple								=				floats_list((3, 1_0_0_0)		)

     UpperCAmelCase :							Any								=				feature_extractor(__A,	return_tensors='''np'''		)
     UpperCAmelCase :							int								=				processor(__A,	return_tensors='''np'''		)

     for key in input_feat_extract.keys():
       self.assertAlmostEqual(input_feat_extract[key].sum(),	input_processor[key].sum(),	delta=1E-2		)



   def  __magic_name__					(							self							:  Union[str, Any]		):
     UpperCAmelCase :							Optional[Any]								=				self.get_feature_extractor()
     UpperCAmelCase :							Union[str, Any]								=				self.get_tokenizer()

     UpperCAmelCase :							List[Any]								=				WavaVecaProcessor(tokenizer=__A,	feature_extractor=__A		)

     UpperCAmelCase :							List[str]								=				'''This is a test string'''

     UpperCAmelCase :							Tuple								=				processor(text=__A		)

     UpperCAmelCase :							Tuple								=				tokenizer(__A		)

     for key in encoded_tok.keys():
       self.assertListEqual(encoded_tok[key],	encoded_processor[key]		)



   def  __magic_name__					(							self							:  Optional[int]		):
     UpperCAmelCase :							Tuple								=				self.get_feature_extractor()
     UpperCAmelCase :							int								=				self.get_tokenizer()

     UpperCAmelCase :							List[str]								=				WavaVecaProcessor(tokenizer=__A,	feature_extractor=__A		)

     UpperCAmelCase :							Any								=				[[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]

     UpperCAmelCase :							str								=				processor.batch_decode(__A		)
     UpperCAmelCase :							List[str]								=				tokenizer.batch_decode(__A		)

     self.assertListEqual(__A,	__A		)





   def  __magic_name__					(							self							:  int		):
     UpperCAmelCase :							Optional[int]								=				self.get_feature_extractor()
     UpperCAmelCase :							List[str]								=				self.get_tokenizer()

     UpperCAmelCase :							Any								=				WavaVecaProcessor(tokenizer=__A,	feature_extractor=__A		)

     self.assertListEqual(
         processor.model_input_names,	feature_extractor.model_input_names,	msg='''`processor` and `feature_extractor` model input names do not match''',	)





