






"""simple docstring"""





import shutil
import tempfile
import unittest
from pathlib import Path
from shutil import copyfile

from transformers import SpeechaTextTokenizer, is_speech_available
from transformers.models.speech_to_text.tokenization_speech_to_text import VOCAB_FILES_NAMES, save_json
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_torch, require_torchaudio
from transformers.utils import FEATURE_EXTRACTOR_NAME

from .test_feature_extraction_speech_to_text import floats_list


if is_speech_available():
  from transformers import SpeechaTextFeatureExtractor, SpeechaTextProcessor


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







@require_torch
@require_torchaudio
@require_sentencepiece
class 						_a  (		unittest.TestCase       ):





   '''simple docstring'''






   def __lowercase							(       self)			->   List[str]:




          '''simple docstring'''




          lowercase__:							Tuple         =     tempfile.mkdtemp()

          lowercase__:							List[str]         =     ["<s>", "<pad>", "</s>", "<unk>", "▁This", "▁is", "▁a", "▁t", "est"]
          lowercase__:							Any         =     dict(zip(UpperCAmelCase_					, range(len(UpperCAmelCase_))))
          lowercase__:							Tuple         =     Path(self.tmpdirname)
          save_json(UpperCAmelCase_					, save_dir / VOCAB_FILES_NAMES["vocab_file"])
          if not (save_dir / VOCAB_FILES_NAMES["spm_file"]).exists():
                 copyfile(UpperCAmelCase_					, save_dir / VOCAB_FILES_NAMES["spm_file"])

          lowercase__:							List[Any]         =     SpeechaTextTokenizer.from_pretrained(self.tmpdirname)
          tokenizer.save_pretrained(self.tmpdirname)

          lowercase__:							int         =     {
              "feature_size": 24,
              "num_mel_bins": 24,
              "padding_value": 0.0,
              "sampling_rate": 16_000,
              "return_attention_mask": False,
              "do_normalize": True,
          }
          save_json(UpperCAmelCase_					, save_dir / FEATURE_EXTRACTOR_NAME)





   def __lowercase							(       self					, **UpperCAmelCase_)			->   List[str]:




          '''simple docstring'''




          return SpeechaTextTokenizer.from_pretrained(self.tmpdirname					, **UpperCAmelCase_)





   def __lowercase							(       self					, **UpperCAmelCase_)			->   Dict:




          '''simple docstring'''




          return SpeechaTextFeatureExtractor.from_pretrained(self.tmpdirname					, **UpperCAmelCase_)





   def __lowercase							(       self)			->   Optional[int]:




          '''simple docstring'''




          shutil.rmtree(self.tmpdirname)





   def __lowercase							(       self)			->   str:




          '''simple docstring'''




          lowercase__:							Union[str, Any]         =     self.get_tokenizer()
          lowercase__:							Union[str, Any]         =     self.get_feature_extractor()

          lowercase__:							str         =     SpeechaTextProcessor(tokenizer=UpperCAmelCase_					, feature_extractor=UpperCAmelCase_)

          processor.save_pretrained(self.tmpdirname)
          lowercase__:							List[Any]         =     SpeechaTextProcessor.from_pretrained(self.tmpdirname)

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

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





   def __lowercase							(       self)			->   Tuple:




          '''simple docstring'''




          lowercase__:							Dict         =     SpeechaTextProcessor(
              tokenizer=self.get_tokenizer()					, feature_extractor=self.get_feature_extractor())
          processor.save_pretrained(self.tmpdirname)

          lowercase__:							Tuple         =     self.get_tokenizer(bos_token="(BOS)"					, eos_token="(EOS)")
          lowercase__:							List[str]         =     self.get_feature_extractor(do_normalize=UpperCAmelCase_					, padding_value=1.0)

          lowercase__:							str         =     SpeechaTextProcessor.from_pretrained(
              self.tmpdirname					, bos_token="(BOS)"					, eos_token="(EOS)"					, do_normalize=UpperCAmelCase_					, padding_value=1.0)

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

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





   def __lowercase							(       self)			->   Any:




          '''simple docstring'''




          lowercase__:							Optional[int]         =     self.get_feature_extractor()
          lowercase__:							str         =     self.get_tokenizer()

          lowercase__:							List[Any]         =     SpeechaTextProcessor(tokenizer=UpperCAmelCase_					, feature_extractor=UpperCAmelCase_)

          lowercase__:							Any         =     floats_list((3, 1_000))

          lowercase__:							List[Any]         =     feature_extractor(UpperCAmelCase_					, return_tensors="np")
          lowercase__:							Optional[Any]         =     processor(UpperCAmelCase_					, 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 __lowercase							(       self)			->   Tuple:




          '''simple docstring'''




          lowercase__:							Optional[Any]         =     self.get_feature_extractor()
          lowercase__:							Optional[int]         =     self.get_tokenizer()

          lowercase__:							Dict         =     SpeechaTextProcessor(tokenizer=UpperCAmelCase_					, feature_extractor=UpperCAmelCase_)

          lowercase__:							int         =     "This is a test string"

          lowercase__:							List[Any]         =     processor(text=UpperCAmelCase_)

          lowercase__:							Optional[Any]         =     tokenizer(UpperCAmelCase_)

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





   def __lowercase							(       self)			->   List[Any]:




          '''simple docstring'''




          lowercase__:							Optional[Any]         =     self.get_feature_extractor()
          lowercase__:							Optional[Any]         =     self.get_tokenizer()

          lowercase__:							Tuple         =     SpeechaTextProcessor(tokenizer=UpperCAmelCase_					, feature_extractor=UpperCAmelCase_)

          lowercase__:							Union[str, Any]         =     [[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]

          lowercase__:							List[Any]         =     processor.batch_decode(UpperCAmelCase_)
          lowercase__:							Any         =     tokenizer.batch_decode(UpperCAmelCase_)

          self.assertListEqual(UpperCAmelCase_					, UpperCAmelCase_)





   def __lowercase							(       self)			->   Tuple:




          '''simple docstring'''




          lowercase__:							str         =     self.get_feature_extractor()
          lowercase__:							Union[str, Any]         =     self.get_tokenizer()

          lowercase__:							List[str]         =     SpeechaTextProcessor(tokenizer=UpperCAmelCase_					, feature_extractor=UpperCAmelCase_)

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














"""simple docstring"""





import doctest

import projectq
from projectq.ops import H, Measure






def 							A(    snake_case_						):
       """simple docstring"""





       lowercase__:							Dict         =     quantum_engine.allocate_qubit()
       H | qubit
       Measure | qubit
       return int(snake_case_						)


if __name__ == "__main__":
  doctest.testmod()

  # initialises a new quantum backend
  UpperCamelCase					=     projectq.MainEngine()

  # Generate a list of 10 random numbers
  UpperCamelCase					=     [get_random_number(quantum_engine) for _ in range(10)]

  # Flushes the quantum engine from memory
  quantum_engine.flush()

  print("""Random numbers""", random_numbers_list)






